参考:https://zhuanlan.zhihu.com/p/26052182
本文将深度神经网络应用于Reinforcement Learning(RL)提出一种全新的算法名为Deep Q-Network(DQN),引入两个关键技术:experience replay与target network,解决了以往神经网络难以应用在强化学习的几个问题,并使用卷积神经网络CNN进行函数拟合,从而在Atari 2600游戏中利用图像快速训练。
过去曾有学者试图将深度神经网络与强化学习结合使用,但结果都不尽人意(不稳定不收敛),这是因为利用DNN训练的假设是样本独立同分布。而RL采集到的样本之间存在关联性,利用这些数据进行顺序训练自然效果极差
DQN整体算法框架与Q-learning相似,而Q-learning是一种off-policy、时间差分的算法。这里首先解释off-policy和时间差分的含义。off-policy是指输出动作的策略(产生样本的策略)与要评估的策略(进行改善的策略)不是同一个策略,例如Q-learning中使用 ϵ \epsilon ϵ贪婪策略输出动作,而要评估和改善的策略则是贪婪策略。
时间差分方法则是一种采用时间差分目标更新当前动作值函数的方法,Q-learning中TD目标为 r t + γ max a Q ( s t + 1 , a ) \boldsymbol r_t+\gamma \max \limits_{a}\boldsymbol Q(\bf s_{t+1}, \bf a) rt+γamaxQ(st+1,a)。
DQN对Q-learning的修改之处主要体现在以下三点:
利用CNN进行值函数拟合属于非线性拟合,其中使用一组参数θ来表示动作值函数,在神经网络中θ是每层网络的权重。如果用公式表示,则动作值函数为: Q ( s , a ; θ ) \boldsymbol Q(\bf s,\bf a;\boldsymbol θ) Q(s,a;θ) 。
注意,此时更新值函数就是更新参数θ,当网络结构确定下来时,θ就代表值函数。DQN使用的网络结构为3个卷积层和2个全连接层
DeepMind团体根据人睡觉时,海马体会将每一天的记忆重放给大脑皮层这一启发式机制,构造出了经验回放的神经网络训练方法,并以此打破强化学习样本的关联性。
训练流程
与Q-learning相比,此时利用TD目标更新的是参数θ,更新方法是梯度下降,
Q-learning梯度下降更新公式为:
θ t + 1 = θ t + α [ r + γ max a ′ Q ( s ′ , a ′ ; θ ) − Q ( s , a ; θ ) ] ∇ Q ( s , a ; θ ) \boldsymbol \theta_{t+1}=\boldsymbol \theta_t+\alpha[\boldsymbol r+\gamma \max_{a'}\boldsymbol Q(\bf s', \bf a'; \boldsymbol\theta)- \boldsymbol Q(\bf s, \bf a; \boldsymbol\theta)]\nabla \boldsymbol Q(\bf s, \bf a; \boldsymbol\theta) θt+1=θt+α[r+γa′maxQ(s′,a′;θ)−Q(s,a;θ)]∇Q(s,a;θ)
r + γ max a ′ Q ( s ′ , a ′ ; θ ) \boldsymbol r+\gamma \max\limits_{a'}\boldsymbol Q(\bf s', \bf a'; \boldsymbol\theta) r+γa′maxQ(s′,a′;θ)为TD目标,在计算 max a ′ Q ( s ′ , a ′ ; θ ) \max\limits_{a'}\boldsymbol Q(\bf s', \bf a'; \boldsymbol\theta) a′maxQ(s′,a′;θ)值时用到的参数为 θ \boldsymbol\theta θ
我们称计算TD目标时用到的网络为TD网络。以往使用神经网络逼近值函数时,计算TD目标的动作值函数所用的网络参数为 θ \boldsymbol\theta θ,与梯度计算中要逼近的值函数所用网络参数一样,这样很容易造成数据之间的关联性。
因此DeepMind提出单独设置TD网络,参数为 θ − \boldsymbol\theta^- θ−,计算值函数逼近的网络(称为当前网络)参数为 θ \boldsymbol\theta θ;当前网络每一步都对参数 θ \boldsymbol\theta θ进行更新,而隔固定步数将参数 θ \boldsymbol\theta θ直接复制给TD网络参数 θ − \boldsymbol\theta^- θ−作为TD网络的更新。
因此DQN的梯度下降更新公式为:
θ t + 1 = θ t + α [ r + γ max a ′ Q ( s ′ , a ′ ; θ − ) − Q ( s , a ; θ ) ] ∇ Q ( s , a ; θ ) \boldsymbol \theta_{t+1}=\boldsymbol \theta_t+\alpha[\boldsymbol r+\gamma \max_{a'}\boldsymbol Q(\bf s', \bf a'; \boldsymbol\theta^-)- \boldsymbol Q(\bf s, \bf a; \boldsymbol\theta)]\nabla \boldsymbol Q(\bf s, \bf a; \boldsymbol\theta) θt+1=θt+α[r+γa′maxQ(s′,a′;θ−)−Q(s,a;θ)]∇Q(s,a;θ)
两个关键技术:
经验回放:打破观察序列的相关性,满足深度网络使用要求;平滑数据分布中的变化,避免训练的振荡,提高采样数据利用效率;
使用单独网络生成TD目标:降低动作Q值与目标值的相关性,增强训练稳定性,并定期使用新参数更新旧参数。