本文首发于:行者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 ) ← Q ( s , a ) + α ( r + γ max a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ) 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) Q(s,a