本文首发于:行者 AI
Q 学习(Q-Learning)算法是提出工夫很早的一种异策略的时序差分学习办法;DQN 则是利用神经网络对 Q-Learning 中的值函数进行近似,并针对实际问题作出改良的办法;而 DDPG 则能够视为 DQN 对连续型动作预测的一个扩大;本文将从定义比照剖析 DQN 和 DDPG,更好地了解二者的算法区别与分割。
本文首先通过简介 DQN 和 DDPG 波及的常见概念,接着从 DQN 开始剖析了解其算法流程,而后进一步地剖析 DDPG,最初总结二者的区别与分割。本文次要分为以下三个局部:
(1)相干概念简介
(2)DQN 的算法剖析
(3)DDPG 的算法剖析
1. 相干概念简介
DQN 和 DDPG 解决的问题不同,DQN 用于解决离散动作问题,而 DDPG 则是在其根底上扩大用于解决间断动作问题;所以首先咱们须要明确连续型动作和离散型动作的区别,以及二者在工程上是如何实现的。
1.1 离散动作
简略的了解,离散动作是能够被分类的动作,比方向上、向下、停火、停火等动作;在理论工程中,咱们应用分类类型的激活函数去示意它们,比方 softmax:
如上图所示,输出 x 通过任意神经网络后,最初一层网络层应用 softmax 激活函数,将网络输入分为 n 个动作类;这样就能够输入离散的动作了。
1.2 间断动作
离散动作是可被分类的动作,那么间断动作就是一个间断的值,比方间隔、角度、力度等示意确切的值。间断动作不可分类,因而在理论工程中,咱们应用返回值类型的激活函数去示意它们,比方 tanh:
如上图所示,输出 x 通过任意神经网络后,最初一层网络层应用 tanh 激活函数,将网络输入为一个区间化的值 value;这样就能够输入间断的动作了。
2. DQN
2.1 DQN 面临的问题
DQN 是利用神经网络对 Q-Learning 中的值函数进行近似,并针对实际问题作出改良的办法。然而咱们并不能进行简略的代替,比方定义一个分类神经网络:
而后在定义一个相似 Q-learning 的 loss 函数,比方:$Q(s, a) \leftarrow Q(s, a)+\alpha\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right)$,而后再间接进行优化。这样的形式是行不通的。
在理论的工程中,DQN 的实现会遇到许多艰难,其中最显著的就是:
(1)样本利用率低
(2)训练失去的 value 值不稳固
其中问题(1)是序列决策的通病,因为序列决策具备紧密的上下文分割,因而一段很长的样本只能算一个样本,从而导致了样本利用率低。
问题(2)是因为网络输入的 Q 值会参加动作 action 的抉择,而抉择的动作与环境交互后产生新的状态持续送入 Q 网络训练;这造成了 网络参数的输入指标会持续参加网络参数的训练。这导致了 Q 网络输入不稳固。
2.2 解决形式
面对以上两个问题,DQN 别离采纳了以下两种形式解决:
(1)教训回放(Experience Replay),即构建一个教训池(Replay Buffer)来去除数据相关性;教训池是由智能体最近的经验组成的数据集。
(2)指标网络解冻(Freezing Target Networks),即在一个时间段内(或者说固定步数内)固定指标中的参数,来稳固学习指标。
整个 DQN 的性能构造能够用下图示意:
首先向 Q 网络中输出由动作、状态、处分和完结标记组成的数据,网络输入一个预测值 Q_predict,接着依据该值抉择动作 action 传入环境中进行交互,而后失去新的状态值 s’,持续送入训练。
同时,每次与环境交互的后果也会存入固定长度的教训池中;每隔 C 步再从 Q 网络复制一个构造和参数雷同的 Target_Q 网络,用来稳固输入指标,Target_Q 网络从教训池中采样数据,输入一个稳固的目标值 Q_target = $r+\gamma Q_{target}\left(\boldsymbol{s}, \boldsymbol{s}^{\prime}, \boldsymbol{a}, \boldsymbol{r}\right)$,其中 $r$ 为处分函数值,$\gamma$ 是处分的折扣率,$Q_{target}\left(\boldsymbol{s}, \boldsymbol{s}^{\prime}, \boldsymbol{a}, \boldsymbol{r}\right)$ 是 Target_Q 网络的输入值。
整个 DQN 的 loss 函数间接取两个预测值 Q_predict 和 Q_target 的均方误差。
具体的算法流程如下:
3. DDPG
在已知了 DQN 算法的根底上,再来看 DDPG 就很简略了。实质上 DDPG 思路没变,然而利用变动了;DDPG 相比于 DQN 次要是解决连续型动作的预测问题。通过下面的简介,咱们能够晓得,动作是间断还是离散,在实现上的区别仅在于最初激活函数的抉择上。因而,DDPG 在继承了 DQN 的算法上,作出了一些改良。
间接上算法构造:
比照 DQN 的算法结构图,不难发现:DDPG 在 DQN 的根底上减少了一个 Policy 网络及其 Policy_target 网络,用来输入一个间断值;这个间断值其实就是间断动作 action。剩下的思路和 DQN 简直一样。
不同之处在于,最初的 loss 函数尽管仍是求两个预测值 Q_predict 和 Q_target 的均方误差,然而因为 Q_predict 和 Q_target 的值是须要 Policy 网络及其 Policy_target 网络的输入别离求得的。所以须要在 Q_predict 和 Q_target 中内嵌入两个策略网络的 loss 函数,如上图所示。
比照 DQN,将其算法稍作更改就能够失去一个较为具体的 DDPG 算法流程:
说完了 DDPG 相较于 DQN 的扩大,再说说继承。显然的,DDPG 继承了 教训回放(Experience Replay) 和 指标网络解冻(Freezing Target Networks) 两种形式用来解决雷同的问题。
4. 总结
本文以比照的视角别离剖析了 DQN 和 DDPG 两种算法,能够看出:
(1)二者都采纳了教训回放(Experience Replay)和 指标网络解冻(Freezing Target Networks)两种形式去解决样本、目标值不稳固的问题。
(2)二者的算法构造十分相似,都是雷同的流程,只是 DDPG 在 DQN 的根底上多了一些 Policy 系列网络的操作。
(3)二者的 loss 函数实质上是雷同的,只是 DDPG 退出了 Policy 网络用来输入间断动作值,因而须要再向原 MSE 中嵌入 Policy 网络的 loss 函数。
综上,本文得出了 DDPG 本质上是 DQN 的一种在间断动作上的扩大算法这一论断。通过比照也能够看出,DDPG 与 DQN 有着极高的算法相似性,并不只如 DDPG 论文中所说的脱胎于 DPG 算法。
本文对于 DQN 和 DDPG 两种算法的比照了解就到这里,下一篇中咱们会从代码动手,对着两种算法进行实现,敬请期待!
5. 参考
[1] 邱锡鹏《NNDL》
[2] Continuous control with deep reinforcement learning
[3] Playing Atari with Deep Reinforcement Learning