简单总结一下常见的强化学习算法,主要参考了下述文章:
DQN——PPO流程总结_ppo算法流程图_小葡萄co的博客-CSDN博客
算法 | on/off-policy | 连续/离散 | value/policy-based/AC | 确定/随机 | 相关人 | 时间 | 论文 | 知识点 |
DQN | off-policy | 离散 | value-based | 确定 | David Silver(Deepmind) | 2015 | Huma-level control through deep reinforcement learning | TD error更新Q网络 |
REINFORCE | on-policy | 离散/连续 | policy-based | 随机 | Richard S.Sutton(阿尔伯塔,Deepmind) | 2015 | Reinforcement Learning: An introduction | 策略梯度,原始推导强化学习(九)--Policy Gradient推导过程 - 知乎 |
PPO | 近on-policy | 离散/连续 | AC | 随机 | John Schulman(OpenAI) | 2017 | Proximal Policy Optimization Algorithms | 解决的策略梯度问题:(1)必须要完整序列才能算->引入TD error实现递推。(2)完全的on-policy,样本使用率低->重要性采样 |
DDPG | off-policy | 离散/连续?? | AC | 确定 | David Silver(Deepmind) | 2016 | Continuous Control with Deep Reinforcement Learning | 利用AC,策略网络直接出动作策略将DQN扩展到连续空间 [PARL强化学习]连续动作空间上求解RL——DDPG_强化学习 连续空间_陈千鹤的博客-CSDN博客 |
SAC | off-policy | 离散/连续 | AC | 随机 | Sergey Levine(UC Berkeley, Google Brain) | 2018 | Soft Actor-Critic Algorithms and Applications | 最大熵 |
A3C | on-policy | 离散/连续 | AC | 随机 | David Silver(Deepmind) | 2016 | Asynchronous Methods for Deep Reinforcement Learning | 平行宇宙异步计算(有人讨论这种做法其实没有太多必要)A3C算法详解 - 知乎 |
TD3 | off-policy | 离散/连续 | AC | 确定 | McGill University Canada University | 2018 | Addressing Function Approximation Error in Actor-Critic Methods | DDPG + 细节改进 |
1. On-policy vs Off-policy vs Offline
图解 RL/IL 问题范式(On-Policy、Off-policy、Offline/Batch、IL...)_佚失的诗篇的技术博客_51CTO博客
On-policy(同策略)学习策略和探索策略相同,所见即所得,好处是很直接,不太存在过估计这样的问题,缺点是样本利用率太低了。
Off-policy(异策略)学习策略和探索策略不同,好处是样本利用率高,可以用replay buffer反复利用历史数据,缺点是需要通过各类理论方法去解决策略不同带来的估计偏差。
Offline:上面On-policy,Off-policy的叫法还是主要指Online的训练,即数据还是由要学习的策略探索来的,只不过off-policy中可能用的不是当前策略,而是历史策略探索得来,但是Offline即完全摒弃了交互的方法来得到数据。专门有个流派了:离线强化学习(Offline RL)系列1:离线强化学习原理入门_@RichardWang的博客-CSDN博客
2. 随机策略 vs 确定策略
随机策略:策略表示成了分布的形式\( \pi (a | s_t)\),自带随机性,训练过程中也是优化整体分布参数,如均值方差
确定策略:策略直接由状态得出\( a = \mu(s_t)\)
3. 关键trick
(1)重要性采样
把on-policy转变为off-policy的技巧,强化学习中的重要性采样(Importance Sampling) - 知乎
(2)重参数化
解决从分布中采样动作的这种操作不可导的问题,https://www.cnblogs.com/initial-h/p/9468974.html#re-parameterization-trick
4. 算法细节补充
(1)PPO
为什么ppo优于policy gradient? - 知乎 演变历史:策略梯度->自然策略梯度->TRPO->PPO
强化学习之 PPO 算法_ppo算法_发呆的比目鱼的博客-CSDN博客 细节原理
关键点:
- 重要性采样将on-policy的policy gradient转变为off-policy,但是为了使得整个过程有效,需要引入新老策略的KL散度(目标函数里要减 \( - \beta KL \) ?,因为强化学习里写目标函数里,有时会用最大化的目标函数)
- 为何是AC?因为式子里的优势函数要通过V来计算,所以迭代里需要Actor和Critic协同。
5. 调参技巧 -- 实践出真知
(1)各类算法的特点
深度强化学习:如何在AI工程实践中选择合适的算法?_我爱计算机视觉-商业新知
(2)算法和调参技巧