【强化学习】Actor-Critic
原文链接:https://www.yuque.com/yahei/hey-yahei/rl-actor_critic
可作为参考资料的是机器学习深度学习(李宏毅) - Actor-Critic的教学视频。
Actor with Critic
以agent-based的形式作为主体,并结合value-based的方法进行整合;传统的改进方法依然能够发挥作用。
AC: Actor-Critic
回顾Policy Gradient方法的基本原理,在该方法中梯度的计算公式如下:
\nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}}\left(\sum^{T_n}_{t'=t} \gamma^{t'-t} r_{t'}^n - b \right) \nabla \log p\left(a_{t}^{n} | s_{t}^{n}, \theta\right)
其中G^n_t = \sum^{T_n}_{t'=t} \gamma^{t'-t} r_{t'}^n表示从时间步t到t_n的加权奖励总和。在实际训练过程中通常只能采集有限数量的样本数据,并且这些样本数据往往具有较大的方差性。为了缓解这一问题我们可以考虑使用期望值来代替采样的结果即:
E[G^n_t] = Q^{\pi_\theta}(s_t^n, a_t^n)
其中Q^{\pi_\theta}(s_t^n, a_t^n)恰好就是这个期望值;而根据贝尔曼方程我们有:
E[Q^{\pi_\theta}(s_t^n, a_t^n)] = V^{\pi_\theta}(s_t^n)
基于此我们可以将期望值作为基准项(baseline)代入梯度更新公式从而得到更为稳定的估计结果:
该公式\nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}}\left(Q^{\pi_\theta}(s_t^n, a_t^n) - V^{\pi_\theta}(s_t^n) \right) \nabla \log p\left(a_{t}^{n} | s_{t}^{n}, θ\right)代表了Actor-Critic方法的核心基础性框架,并整合了基于策略(policy-based)与基于值函数(value-based)的双重机制。
A2C: Advantage Actor-Critic
在KaTeX解析过程中遇到错误,请检查输入内容是否符合预期格式
此外,在设计架构时还可以让Actor与Critic共享一部分浅层网络结构(即共用一个子网络),从而进一步简化网络的整体结构及其训练流程

此外通过施加关于action的熵约束来规范actor的行为结果鼓励该actor采取动作使其具有较高的熵值从而提升探索的效果
A3C: Asynchronous Advantage Actor-Critic
相比AC而言,A2C虽然简化了许多,但确实存在一定的局限性,毕竟其收敛速度较慢难以满足实际需求。为此,A3C团队提出了一种基于并行优化的新方法,这种方法能够显著提升训练效率。其基本思路较为直观:通过不同计算设备上的前向传播与反向传播相结合,利用一个全局共享的公共网络来进行权重更新

具体来说,
- 将Global Network的所有权重参数复制到每个Worker的本地网络中。
- 各个工人分别从环境中采样数据后进行交互操作,并计算相应的梯度值。
- 完成梯度计算的所有工人会将各自的计算结果返回给全局网络用于参数更新;具体来说,在任何时刻只要有工人完成当前轮次的梯度计算,则该工人就会立即使用自己的结果更新全局模型;因此无需等待所有工人的数据即可开始下一轮迭代。
- 每隔一定时间周期后系统会自动同步一遍全局模型到各工人的本地网络中。
Critic with Actor
基于价值的方法作为主体,并将策略网络整合到该体系中。常见的Q学习改进技巧在此仍然也适用。
Pathwise Derivative Policy Gradient
参考GAN的训练思路,并采用Actor网络作为优化器来求解优化目标\pi^{\prime}(s)=\arg \max _{a} Q^{\pi}(s, a)
- 《Deterministic Policy Gradient Algorithms, presented at the ICML 2014 conference》
- 《Research on continuous control and deep reinforcement learning, presented at the ICLR 2016 conference》

(阶段一:训练Critic)

(阶段二:冻结Critic,训练Actor)
具体而言,在每一个episode的每一个时间步t,
分别用符号表示为:训练的值函数和目标值函数表示为 Q ,\hat Q ;
同时用符号表示为:训练策略和目标策略分别表示为\pi ,\hat\pi 。
| Q Learning | Pathwise Derivative Policy Gradient |
|---|---|
| 根据和状态s_t采取动作a_t,将(s_t, a_t,r_t,s_{t+1})四元组塞入buffer | 根据 和状态s_t采取动作a_t,将(s_t, a_t,r_t,s_{t+1})四元组塞入buffer |
| 在buffer中随机抽样组成batch | 在buffer中随机抽样组成batch |
| 以r_{t}+\max _{a} \hat{Q}\left(s_{t+1}, a\right)为目标来训练Q(s_t,a_t) | 以为目标来训练Q(s_t,a_t) |
| 冻结,以最大化为目标来训练 | |
| 每迭代一定次数后,用Q的权重更新\hat{Q} | 每迭代一定次数后,用Q的权重更新\hat{Q},用的权重更新 |
