RL 算法总结
常用算法介绍
离散的动作空间 discrete action space的算法
动作是离散的,一般是判断简单的操作,怎么操作能使得分更高。
常用网络
估计Q值期望
- DQN(Deep Q Network)Q网络代替Q表,使强化学习可以预测连续状态空间。
- DDQN(Double DQN)DQN最优化操作会传播高估误差,所以DDQN同时训练两个Q network并选择较小的Q值用于计算TD-error时间差分误差,降低高估误差。(TD3也用了多个网络来避免高估计误差)
- Dueling DQN,Dueling DQN 使用了优势函数 advantage function(A3C也用了):它只估计state的Q值,不考虑动作,好的策略能将state 导向一个更有优势的局面。在某些state下,Dueling DQN 能在只收集到一个离散动作的数据后,直接得到准确的估值。优点:当某些环境中,存在大量不受action影响的state,此时Dueling DQN能学得比DQN更快。
- D3QN(Dueling Double DQN)。Dueling DQN 与Double DQN 相互兼容,一起用效果很好。简单,泛用,没有使用禁忌。任何一个刚入门的人都能独立地在前两种算法的基础上改出D3QN。在论文中使用了D3QN应该引用DuelingDQN 与 DoubleDQN的文章
- Noisy DQN,探索能力稍强。Noisy DQN 把噪声添加到网络的输出层之前值。原本Q值较大的动作在添加噪声后Q值变大的概率也比较大。这种探索比epslion-greedy随机选一个动作去执行更好,至少这种针对性的探索既保证了探索动作多样,也提高了探索效率。
估计Q值分布
- Distributional RL 值分布RL(C51,Distributional Perspective RL): C表示Categorical,51表示他们将值分布划分51个grid,拟合值函数的分布。在DQN中,Q Network 拟合了Q值的期望,期望可以用一个数值去描述,比较简单。在这个值分布DQN中,Q Network 拟合了Q值的分布,Q值分布的描述就要麻烦一些了,但是训练效果更好。
- QR-DQN(分位数回归 Quantile Regression),使用N个分位数去描述Q值分布(这种方法比C51划分51个grid的方法更妙,我推荐看 QR-DQN - Frank Tian。
- Rainbow DQN,上面提及的DQN变体很多是相互兼容的,因此 David Sliver 他们整合了这些变体,称为Rainbow。
- Ape-X DQN(Distributed Prioritized Experience Replay),也是 David Sliver 他们做的。使用了Distributed training,用多个进程创建了多个actor去与环境交互,然后使用收集到的数据去训练同一个learner,用来加快训练速度。Prioritized Experience Replay(优先经验回放 PER 下面会讲)。Ape-X通过充分利用CPU资源,合理利用GPU,从而加快了训练速度。注意,这不等同于减少训练总步数。NVIDIA 有一个叫 Apex的库,用于加速计算。
- Ape-X DPG(Distributed Prioritized Ex