A3C

来自testwiki
imported>InternetArchiveBot2022年8月6日 (六) 17:32的版本 (补救5个来源,并将0个来源标记为失效。) #IABot (v2.0.8.9)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Multiple issues A3C(Asynchronous Advantage Actor-Critic)是由Google DeepMind团队于2016年提出的一种基于异步梯度的深度强化学习框架(Asynchronous Methods for Deep Reinforcement Learning),利用了多线程同时并行运行的特点,让多个Actor(演员)并行训练而定期与全局参数同步。该方法在Atari游戏和3D迷宫等方面都有不错的效果。

符号

符号 含义
sS 状态。
aA 动作。
rR 回报。
St,At,Rt 一个轨迹中第个时间步对应的状态、动作以及回报。偶尔使用st,at,rt代替。
γ 折扣因子;用于惩罚未来回报中的不确定性。
Gt 累积回报;或者说累积折扣回报。
P(s,r|s,a) 在当前状态下采取动作后转移到下一个状态并得到回报的概率。
π(a|s) 随机策略(智能体行为逻辑);πθ(.)代表由参数化的策略。
μ(s) 确定性策略;虽然也可以把确定性策略记为π(s),但是采用一个不同的字母可以让我们更容易分辨一个策略到底是确定性的还是随机的。π或者μ都是强化学习算法要学习的目标。
V(s) 状态-值函数衡量状态的期望累积回报;Vω(.)代表由ω参数化的状态-值函数。
Vπ(s) 当智能体遵循策略时状态的期望累积回报;。V(π)(s)=𝔼aπ[Gt|St=s]
Q(s,a) 动作-值函数,与状态-值函数类似,但是它衡量在状态下采取动作后的期望累积回报;代表由参数化的动作-值函数。
Qπ(s,a) Vπ(s)类似,当智能体遵循策略π时,在状态s下采取动作a后的期望累积回报;

Qπ(s,a)=𝔼aπ[Gt|St=s,At=a]

A(s,a) 优势函数,;A(s,a)=Q(s,a)V(s)可以认为优势函数是加强版本的动作-值函数,但是由于它采用状态-值函数作为基准使得它具有更小的方差。


[1]

优势函数

A(s,a)=Q(s,a)V(s)=r(s,a)+γ𝔼sp(s|s,a)[V(s)V(s)]r(s,a)+γ(V(s)V(s))

当选取k步TD后,在A3C中由于有参数θ,θv,优势函数可改写为:

A(st,at;θ,θv)=i=0k1γirt+i+γkV(st+k;θv)V(st;θv)[2]

算法流程

异步优势Actor-Critic - 每个Actor-Learner线程的伪代码如下:

  1. 定义全局参数向量θθv以及全局计数器T=0
  2. 定义线程自身参数向量θθ'v,初始化线程步数计数器t1
  3. TTmax:
    1. 重置梯度:dθ0dθ'v0
    2. 将线程自身的参数向量与全局参数向量同步:θ=θθ'v=θv
    3. 令线程计数器tstart=t并随机采样一个初始状态st
    4. 当(st!=终止状态)且ttstarttmax:
      1. 根据当前线程的策略选择当前执行的动作atπθ(at|st)执行动作后接受回报rt并转移到下一个状态st+1
      2. 更新t以及T:t=t+1并且T=T+1
    5. 初始化保存累积回报估计值的变量:R={0,if s=sterminalV(st,θ'v),non-terminal st
    6. 对于i{t1,...,tstart},执行:
      1. Rri+γR
      2. 累积关于参数θ的梯度:dθdθ+θlogπ(ai|si;θ)(RV(si;θv))
      3. 累积关于参数θ'v的梯度:dθvdθv+(RV(si;θv))2θv
    7. 分别使用dθdθv异步更新θθv

[3]

改进

Asynchronous Methods for Deep Reinforcement Learning Template:Wayback中作者还将熵(H(π(st,θ)))加到目标函数中以避免收敛到次优确定性解,这是由于在最大化熵的过程中会避免分布过于集中,包含熵在内的完整目标函数梯度如下[4]

θlogπ(at|st;θ)(RtV(st;θv))+βθH(π(st;θ))

其中H为熵函数,β是用于控制熵正则化项的超参数。

论文

[1] Template:Wayback

代码实现

[2] Template:Wayback

参考资料