DQN和DDPG深度强化学习的2个算法

传统的强化学习算法适用于动作空间和状态空间都较小的情况,然而在实际的任务中,动作空间和状态空间往往都很大的,对于这种情况,传统的强化学习算法难以处理。而深度学习算法擅于处理高维的数据,两者结合之后的深度强化学习算法在很多任务中取得了非常不错的效果。这里主要介绍较为典型的深度强化学习算法。

Deep Q-Networks(DQN)

DQN 算法是在 Q-Learning 算法的基础上演变而来的,DQN 算法有多个改进版本,最早的版本是由 Mnih 等人于 2013 年提出的,如下所示。


前面介绍过利用函数去逼近 Q 值表(或 V 值表),DQN 算法是使用神经网络来逼近 Q 值函数的。另外,训练神经网络的数据要求是满足独立同分布的,而在参数 θ 没有收敛的情况下,在不同时刻获取的样本不满足这一关系,因此会导致网络的训练不稳定。为了解决这一问题,DQN 算法中还引入了“经验回放”机制。

在 DQN 算法中,在计算目标值 yj 时用的 Q 值网络和要学习的(用来产生五元组)那个网络是同一个,即在用希望学习的模型来生成动作,这样不利于模型的收敛。因此,Mnih 等人于2015年又提出了 DQN 的一种改进算法,算法如下所示。


在改进后的算法中,将计算目标值 yj 时用的 Q 网络和我们要学习的  网络分成了两个网络。Q 网络用来产生五元组,而  网络用来计算目标值yj。这里  网络的参数  不会迭代更新,因此需要每隔一定时间将 Q 网络的参数 θ 复制过来(Q 网络和  网络需要使用相同的网络结构)。改进后的 DQN 算法,除了增加了  网络,其余部分与改进前的 DQN 算法一致。

Deep Deterministic Policy Gradient(DDPG)

DDPG 算法结合了 Actor-Critic 算法和 DQN 算法,如下所示。


Actor 和 Critic 分别使用一个神经网络,参照 DQN 算法为每个网络再设置一个目标网络,训练过程同样借鉴了 DQN 的经验池。DDPG 算法与 DQN 算法在目标网络的更新上有所不同,DQN 算法中是每隔一段时间就将 Q 值网络直接赋给目标网络 ,而在 DDPG 算法中目标网络的参数是在缓慢更新的,以便提高网络的稳定性:
 
上式中,  是策略网络对应的目标网络的参数,  是 Q 值网络对应的目标网络的参数。