1.为什么需要DDPG?
强化学习的概念在这不再赘述,是一个agent在与环境不断交互,采用action得到reward,为了达到最大的累计奖励值的过程。所以强化学习的核心在于学习根据当前agent的state采用action的策略。
大家都很熟悉的算法有Q-learning(Deep Q Learning)、SARSA,但是这两种方法针对的动作空间都是离散的,即有限的。从Q-learning到DQN,不过只是将状态动作的评估函数从离散空间用神经网络映射到了连续空间,没有解决动作离散这个问题,如果将动作空间分得太细,会导致动态空间过大,难以收敛。在实际生活中,有很多问题是连续得,比如机器人的控制信号,无人驾驶中的方向旋转角度等,所以有了PG到DPG到DDPG的发展。
2.先说PG和DPG。
- PG是用一个概率函数,将原先的策略PI映射到一个连续的概率空间。这与DQN在Q-learning上改进有点相似。
通过一个概率分布函数 πθ(st|θπ), 来表示每一步的最优策略, 在每一步根据该概率分布进行action采样,获得当前的最佳action取值;本质上是个随机过程,所以学习到的也是个随机策略。
- DPG
DPG是Deterministic Policy Gradient,即确定策略,每一步的行为都用策略函数u获得最大值。
所以为什么需要DPG?
- PG在学习完成之后,在使用时仍然需要对学到的最优策略分布函数PI进行采样,才可以获得action的具体值,然而action通常是高维的,在高维空间采样频繁非常消耗计算力。
- 在PG的学习过程中,每一步计算policy gradient都需要在整个action space进行积分:
这个积分通常用Monte Carlo采样来进行估计,仍然需要在高维的action空间采样,费时费力。
我们换一种思路,我们常常想获取最大的action,可以直接求argmaxQ,一步求解,仍然是在高维、连续的action上采样,费事费力。
在这之前,业界普遍认为,环境模型无关(model-free)的确定性策略是不存在的,在2014年的DPG论文中,D.Silver等通过严密的数学推导,证明了DPG的存在,然后将DPG算法融合进actor-critic框架,结合Q-learning或者Gradient Q-learning这些传统的Q函数学习方法,经过训练得到一个确定性的最优行为策略函数。
3.什么是DDPG?
Q-learning的相关概念和做法我们不再这赘述和回顾,DDPG中有个和DQN相同的神经网络,用卷积神经网络来拟合Q,并且如何衡量一个策略μ的表现:用一个函数J来衡量,我们叫做performance objective,针对off-policy学习的场景,定义如下:
这个定义很直观,就是正在这个状态空间中根据u选择动作能够取得的动作状态值的和,用这个来衡量策略函数u的价值。
训练目标有两个: 最大化Jβ(μ),同时最小化Q网络的Loss。
online 和 target 网络结合的方式。
这里值得一提的是,OPENAI提出,在参数空间上添加噪声比在动作空间上添加要好得多。一个常用的噪声是 Ornstein-Uhlenbeck 随机过程(OU过程WIKI)。
以往的实践证明,如果只使用单个”Q神经网络”的算法,学习过程很不稳定,因为Q网络的参数在频繁gradient update的同时,又用于计算Q网络和策略网络的gradient, 参见下面等式(1),(2),(3).
基于此,DDPG分别为策略网络、Q网络各创建两个神经网络拷贝,一个叫做online,一个叫做target:
在训练完一个mini-batch的数据之后,通过SGA/SGD算法更新online网络的参数,然后再通过soft update算法更新 target 网络的参数。soft update是一种running average的算法:
优点:target网络参数变化小,用于在训练过程中计算online网络的gradient,比较稳定,训练易于收敛。
代价:参数变化小,学习过程变慢。
所以DDPG的框架如下:
参考文章: