强化学习主流算法有Q-learning、Sarsa、Deep Q learning、Policy Gradients、Actor Critic等等,每种算法都有其特点。
根据莫烦老师的教学视频,将各个算法特点进行总结。方便自己之后科研工作中针对不同问题特点选择算法,同时加深理解记忆。
RL算法总结
Q-learning
- Q表:state+action->value;会从 Q 表中选value较大的action施加在环境中来换取reward
- 动作空间离散
- Off-policy离线学习(说到但不一定做到)
- 单步更新法
- value-based
Sarsa
- Q表(和Q-learning相同)
- 动作空间离散
- On-policy在线学习(说到做到型)
- 单步更新法:在环境中每走一步,就更新一次自己的行为准则
- value-based
Sarsa-lambda
- 回合更新法:在环境中走了一个回合(多步),再更新自己的行为准则
- lambda取1,就是回合更新。
- lambda取值[0,1]。
- 如果说 Sarsa 和 Qlearning 都是每次获取到 reward, 只更新获取到 reward 的前一步;那 Sarsa-lambda 就是更新获取到 reward 的前 lambda 步。如果 lambda = 0, Sarsa-lambda 就是 Sarsa, 只更新获取到 reward 前经历的最后一步。如果 lambda = 1, Sarsa-lambda 更新的是 获取到 reward 前所有经历的步。
- value-based
Deep Q Network
- 融合神经网络和Q learning
- 使用神经网络代替Q表,解决状态过多导致的Q表过大的问题。
- 有两个神经网络:Q_eval(Q估计中的),Q_next(Q现实中的)
- value-based
- 离散的动作空间
Double DQN
- 解决Q-learning中的Qmax导致的过估计(overestimate)问题
- 修改Q_target算法(Q_next)
- value-based
Dueling DQN
- 它将每个动作的 Q 拆分成了[ state 的 Value ]加上[ 每个动作的 Advantage].
- value-based
Policy Gradient
- policy-based
- 连续的动作空间
- 回合更新
Actor Critic
- 合并了以值为基础 (比如 Q learning) 和 以动作概率为基础 (比如 Policy Gradients) 两类强化学习算法。
- Actor:Policy Gradient;
Critic:Q-learning等value-based学习法 - Actor-Critic 涉及到了两个神经网络, 而且每次都是在连续状态中更新参数, 每次参数更新前后都存在相关性, 导致神经网络只能片面的看待问题, 甚至导致神经网络学不到东西.
- 能进行单步更新
- 难收敛
Deep Deterministic Policy Gradient(DDPG)
- DDPG = Actor Critic+DQN
- 提高了 Actor Critic 的稳定性和收敛性.
- 连续动作空间
- 输出的不是行为的概率,而是具体的行为(策略函数)
Asynchronous Advantage Actor-Critic(A3C)
- 将 Actor-Critic 放在了多个线程中进行同步训练
- 速度提升
Distributed Proximal Policy Optimization(DPPO)
- PPO:解决 Policy Gradient 不好确定 Learning rate (或者 Step size) 的问题. 因为如果 step size 过大, 学出来的 Policy 会一直乱动, 不会收敛, 但如果 Step Size 太小, 对于完成训练, 我们会等到绝望. PPO 利用 New Policy 和 Old Policy 的比例, 限制了 New Policy 的更新幅度, 让 Policy Gradient 对稍微大点的 Step size 不那么敏感.
- DPPO:PPO单线程->多线程=DPPO