Sih对AC,A3C的总结。
Actor Critic在RL中的位置:
RL 按照value和policy分类:
- Value-Based:是预测某个state下所有Action的期望价值(Q值),之后通过选择最大Q值对应的Action执行策略,适合仅有少量离散取值的Action的环境
- Policy-Based:是直接预测某个state下应该采取的Action,适合高维连续Action的环境,更通用
按照model-based和model-free来分类:
- model-based:根据state和采取的action预测接下来的state,并利用这个信息训练强化学习模型(知道状态的转移概率)
- model-free:不需要对环境状态进行任何预测,也不考虑行动将如何影响环境,直接对策略或action的期望价值进行预测,计算效率非常高
回顾:
Value-Based & model-free
神经网络近似动作-值函数:使用参数 θ 来对动作-值函数进行近似Q(s,a,θ)
- One-step Q-learning:
- n-step Q-Learning:
one-step缺点:得到一个奖励r仅仅直接影响了得到该奖励的状态总做对(s,a)的值。其他state action pair的值仅仅间接的通过更新value Q(s,a)来影响,这使得学习过程缓慢,因为许多更新都需要传播一个reward给相关进行的states和actions。
n-step优点:一个奖励r直接影响先前n个state action pair,学习更有效。
tips:
动作-值函数:
Qπ(s,a)=E[Rt|st=s,a]状态价值函数:
Vπ(s)=E[Rt|st=s]
Policy-Based & model-free
直接将策略参数化:π(a|s;θ) ,通过迭代更新θ,使总奖励期望 E[Rt] 梯度上升
AC
一句话概括 Actor Critic 方法:
强化学习的分类可以分为以值函数为中心的和以策略为中心的算法,交叉部分就是actor-critic。
结合了 Policy Gradient (Actor) 和 Function Approximation (Critic) 的方法. Actor
基于概率选行为, Critic
基于 Actor
的行为评判行为的得分, Actor
根据 Critic
的评分修改选行为的概率(即策略).
Actor-Critic的形象解释为:演员在演戏的同时有评论家指点。这样演员就会演得越来越好。同时专家也在不断进步,也就是对演员的动作评价的更加的准确,共同进步,使得效果越来越好。
基于Actor-Critic策略梯度学习分为两部分内容:
Critic:参数化动作价值函数 Qw(s,a)
Actor:按照Critic部分得到的价值引导策略函数参数 θ 的更新。
Critic做的事情:策略评估,他要告诉个体,在由参数 θ 确定的策略 πθ 到底表现得怎么样。
Actor Critic 方法的优势:
可以进行单步更新, 比传统的 Policy Gradient 要快.(sih: PG是回合更新)
Actor Critic 方法的劣势:
取决于 Critic 的价值判断, 但是 Critic 难收敛, 再加上 Actor 的更新, 就更难收敛. 为了解决收敛问题, Google Deepmind 提出了 Actor Critic
升级版 Deep Deterministic Policy Gradient
. 后者融合了 DQN 的优势, 解决了收敛难的问题. Deep Deterministic Policy Gradient (DDPG) 就是以 Actor Critic
为基础.
具体算法
① 中,π(a|s;θ) 表示在st,θ的情况下选择动作atat的概率。概率的对数乘以该动作的总奖励Rt,对θ求梯度,以梯度上升的方式更新θ。该公式的意义在于,奖励越高的动作, 越努力提高它出现的概率。
但是在某些情况下,每个动作的总回报Rt都不为负,那么多有的梯度值都大于等于0,此时每个动作出现的概率都会提高,这在很大程度上减缓了学习的速度,而且使得梯度的方差也很大。因此需要对Rt 使用某种标准化操作来降低梯度的方差。
② 中,可以让Rt减 去一个基线b(baseline),b通常设为Rt 的一个期望估计,即bt(st)≈Vπ(st),通过求梯度更新θ,总奖励超过基线的动作的概率会提高,反之则降低,同时块还可以降低梯度方差(证明略)。这种方式被叫做Actor-Critic体系结构,其中策略π是actor,基线bt是critic。
③中,Rt−bt(st)可以使用动作优势函数Aπ(at,st)=Qπ(at,st)−Vπ(st)代替,因为Rt 可以视为Aπ(at,st)=Qπ(at,st)−Vπ(st)的估计,基线bt(st)视为Vπ(st)的估计。
A3C
A3C-Asynchronous Advantage Actor-Critic
将AC放到多个线程中同步训练,可以有效的利用计算机资源,提升训练效用。简单概括,就是:它会创建多个并行的环境,让多个拥有副结构的agent同时在这些并行环境上更新主结构中的参数。并行中的agent们互不干扰,而主结构的参数更新受到副结构提交更新的不连续性干扰,所以更新的相关性被降低,收敛性提高。
A3C解决了Actor-Critic难以收敛的问题,同时更重要的是,它提供了一种通用的异步的并发的强化学习框架,这个框架不止可以用于A3C,还能应用于其他的强化学习算法。
A3C的更新公式有两条,一条梯度上升更新策略π 的参数,如前面介绍的actor-critic结构:
∇θ′logπ(at|st;θ′)A(st,at;θ′,θ′v)其中,A(st,at;θ′,θ′v)是优势函数的估计(算法中表示为R−V(si;θ′v))):
A(st,at;θ′,θ′v)=k−1∑i=0γirt+i+γkV(st+k;θ′v)−V(st;θ′v)θ′是策略π 的参数,θ′v是状态值函数的参数。k是可以变化的,上届由n-step决定,即n。
在实际操作中,论文在该公式中加入了策略π 的熵项β∇θ′H(π(st;θ′))),防止过早的进入次优策略。
另一条公式是使用TD方式梯度下降更新状态值函数的参数,即算法中的∂(R−V(si;θ′v))2/∂θ′v.
未完待续…
Reference:
[1] A3C 总结 https://zhuanlan.zhihu.com/p/32596470
[2] Asynchronous Methods for Deep Reinforcement Learning