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
神经网络近似动作-值函数:使用参数 $\theta$ 来对动作-值函数进行近似$Q(s,a,\theta)$
- 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:
动作-值函数:
状态价值函数:
Policy-Based & model-free
直接将策略参数化:$\pi(a|s;\theta)$ ,通过迭代更新$\theta$,使总奖励期望 $E[R_t]$ 梯度上升
AC
一句话概括 Actor Critic 方法:
强化学习的分类可以分为以值函数为中心的和以策略为中心的算法,交叉部分就是actor-critic。
结合了 Policy Gradient (Actor) 和 Function Approximation (Critic) 的方法. Actor
基于概率选行为, Critic
基于 Actor
的行为评判行为的得分, Actor
根据 Critic
的评分修改选行为的概率(即策略).
Actor-Critic的形象解释为:演员在演戏的同时有评论家指点。这样演员就会演得越来越好。同时专家也在不断进步,也就是对演员的动作评价的更加的准确,共同进步,使得效果越来越好。
基于Actor-Critic策略梯度学习分为两部分内容:
Critic:参数化动作价值函数 $Q_w(s, a)$
Actor:按照Critic部分得到的价值引导策略函数参数 $\theta $ 的更新。
Critic做的事情:策略评估,他要告诉个体,在由参数 $\theta$ 确定的策略 $\pi_{\theta}$ 到底表现得怎么样。
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
为基础.
具体算法
① 中,$\pi(a|s;\theta)$ 表示在st,θ的情况下选择动作atat的概率。概率的对数乘以该动作的总奖励$R_t$,对$θ$求梯度,以梯度上升的方式更新$θ$。该公式的意义在于,奖励越高的动作, 越努力提高它出现的概率。
但是在某些情况下,每个动作的总回报Rt都不为负,那么多有的梯度值都大于等于0,此时每个动作出现的概率都会提高,这在很大程度上减缓了学习的速度,而且使得梯度的方差也很大。因此需要对$R_t$ 使用某种标准化操作来降低梯度的方差。
② 中,可以让$R_t$减 去一个基线b(baseline),b通常设为$R_t$ 的一个期望估计,即$b_t(s_t) \approx V^\pi(s_t)$,通过求梯度更新θ,总奖励超过基线的动作的概率会提高,反之则降低,同时块还可以降低梯度方差(证明略)。这种方式被叫做Actor-Critic体系结构,其中策略π是actor,基线$b_t$是critic。
③中,$R_t - b_t(s_t)$可以使用动作优势函数$A^\pi(a_t,s_t) = Q^\pi(a_t,s_t) - V^\pi(s_t)$代替,因为$R_t$ 可以视为$A^\pi(a_t,s_t) = Q^\pi(a_t,s_t) - V^\pi(s_t)$的估计,基线$b_t(s_t)$视为$V^\pi(s_t)$的估计。
A3C
A3C-Asynchronous Advantage Actor-Critic
将AC放到多个线程中同步训练,可以有效的利用计算机资源,提升训练效用。简单概括,就是:它会创建多个并行的环境,让多个拥有副结构的agent同时在这些并行环境上更新主结构中的参数。并行中的agent们互不干扰,而主结构的参数更新受到副结构提交更新的不连续性干扰,所以更新的相关性被降低,收敛性提高。
A3C解决了Actor-Critic难以收敛的问题,同时更重要的是,它提供了一种通用的异步的并发的强化学习框架,这个框架不止可以用于A3C,还能应用于其他的强化学习算法。
A3C的更新公式有两条,一条梯度上升更新策略$\pi$ 的参数,如前面介绍的actor-critic结构:
其中,$A(s_t,a_t;\theta’,\theta’_v)$是优势函数的估计(算法中表示为$R-V(s_i;\theta’_v))$):
$\theta’$是策略$\pi$ 的参数,$\theta’_v$是状态值函数的参数。k是可以变化的,上届由n-step决定,即n。
在实际操作中,论文在该公式中加入了策略$\pi$ 的熵项$\beta\nabla_{\theta’}H(\pi(s_t;\theta’)))$,防止过早的进入次优策略。
另一条公式是使用TD方式梯度下降更新状态值函数的参数,即算法中的$\partial (R-V(s_i;\theta’_v))^2 / \partial\theta’_v$.
未完待续…
Reference:
[1] A3C 总结 https://zhuanlan.zhihu.com/p/32596470
[2] Asynchronous Methods for Deep Reinforcement Learning