DDPG 算法的论文理解与优化

Updated on with 1,856 views

介绍

DDPG(Deep Deterministic Policy Gradient)深度确定性策略梯度算法,是一种强化学习算法。最近在这个算法的原理和应用。

谷歌最早提出这个算法的时候,主要是解决 DQN 算法高维状态空间的问题。DQN 擅长解决的是离散的低维动作空间,而它无法解决高维连续的动作空间。(例如物理控制任务)

DDPG 论文中举了一个例子:一个7个自由度的人类手臂,每个关节粗略的离散化为:{-k, 0, k},那么它的动作空间达到了3^7=2187,这还是粗粒度的情况,若是细粒度的情况,维度会导致维度爆炸。

而在 DQN 的基础上,DDPG 结合了 DQN 的两个优势:1. 从 experience replay buffer 中采用并离线学习样本的相关性;2. 通过一个 Target-Q 网络来提供一致的 TD backup,使用 fixed target 思想。

所以就有了下面这个网友绘制的图,DQN 虽然不能完全算是 Critic 网络,但可以看成如此。对于每个状态下执行的 Action 给出一个 Q-value,最终取最大的 Q-value。而 DDPG 需要同时输入状态和动作,解决连续的动作空间,

image.png

实现

它是有两组 Actor-Critic 网络组成的,顾名思义,Actor——演员,其实就是输出动作的网络,Critic——评论家,则是评判某个状态下动作好坏的网络。

那么四个网络分别的作用如下:

  • Current Actor:负责策略网络的迭代,用于根据当前状态生成动作策略
  • Current Critic:负责价值网络的迭代,用于评估智能体在当前状态下采取当前动作策略的 Q值
  • Target Actor:根据经验回放池生成动作策略,通过软更新的方式复制 Current Actor 的参数
  • Target Critic:评估智能体在目标状态下采取目标动作策略的 Q值,通过软更新的方式复制 Current Critic 的参数

动作价值函数:

image.png

贝尔曼方程:

image.png

原先的贝尔曼方程输出的是多个动作的概率,由于是确定性策略,需要做的动作只会有一个,所以可以改成一个恒定的 Q值:

image.png

Critic 网络的更新,用 off-policy 即可:

image.png

Actor 梯度更新:

image.png

输出动作时增加噪声:

image.png

完整的伪代码如下:

image.png

问题

训练过程中难免会遇到问题,例如:

  1. 训练没法朝着奖励最大的方向收敛
  2. 输出的决策动作总是取到边界值

解决

解决这些问题查询了许多资料,归结下来有以下几点:

  1. 在输出决策动作时加入噪声可以提高探索的空间,但需要注意的是,在 Critic 收敛之后,噪声需要适当降低,已收集最优数据
  2. 系统环境和奖励的设计是否合理,奖励需要足够 tricky,才能有很好的效果
  3. 经验回访池的 buffer 大小设计的是否合理,过小会导致学习的特征不够明显
  4. 在学习之前需要填充一些经验,开始可以尽可能多,最后我选择了10%(填充10%经验池)

在实用上述解决办法后,都取得了比较满意的效果,有时可能是多种因素造成的问题,需要逐个分析排除,在强化学习的路上愿一帆风顺!!!


标题:DDPG 算法的论文理解与优化
作者:Jeffrey

Responses
取消