DQN学习笔记
参考:1.莫烦什么是DQN
2强化学习:DQN与Double DQN讨论
3实战深度强化学习DQN-理论和实践
DQN(深度神经网络)是Q learning 与神经网络结合的产物。
1.传统的Q learning
先回顾一下传统的Q learning 算法。
Q learning 是异策略时间差分算法:
Q learning最重要的两个概念是异策略和时间差分。
异策略是指动作策略(选择动作的策略)和评估更新的策略不是同一个。如算法所示,动作策略是ε \varepsilonε 贪婪策略,目标策略是最大贪婪策略。
(注:这里的ε \varepsilonε是一个变化的值比较合理,这个值在一开始比较大,是为了让agent充分探索环境并得到反馈,越到后面,这个值应该越小,也就是说,agent通过不断学习,会使得其行为逐渐优化,变的越来越靠谱,所以应当适当减小ε \varepsilonε的值)
时间差分方法是指利用时间差分目标来更新当前行为值函数。在算法中,时间差分目标是:
r t + γ max a Q ( s t + 1 , a ) {r_t} + \gamma \mathop {\max }\limits_a Q({s_{t + 1}},a)rt+γmaxQ(st+1,a)
公式中,Q(s,a) 我们可以称做Q估计值,即我们当前估计的Q值,而r t + γ max a Q ( s t + 1 , a ) {r_t} + \gamma \mathop {\max }\limits_a Q({s_{t + 1}},a)rt+γamaxQ(st+1,a)称为Q target,即我们使用贝尔曼方程加贪心策略认为实际应该得到的奖励,我们的目标就是使我们的Q值不断的接近Q-target值。
2.为什么要与神经网络融合?
在q learning中,我们采用Q表来存储每个状态state和动作action。而对于实际中的问题,比如玩游戏,agent的状态和动作实在是太多了,如果全部采用表格的形式来存储这些,就需要花费相当大的内存,且不一定够,另外,在每次在这些大数据中搜索对应的状态和动作也是一件极为麻烦的事情。
神经网络处理这些事情很拿手。一种方法是可以将状态state和动作action作为神经网络的输入,经过网络分析计算后产生Q值。这样我们就没有必要用表格去记录Q值,而是直接通过网络生成Q值。第二种方法是只输入状态值,输出所有的动作的Q值,然后在选择最大q值对应的动作。
可以想象,神经网络接受外部的信息, 相当于眼睛鼻子耳朵收集信息, 然后通过大脑加工输出每种动作的值, 最后通过强化学习的方式选择动作。如下图所示:
3.DQN的特点
DQN主要有三大特点:
- DQN利用深度卷积神经网络逼近值函数
- DQN利用经验回放机制训练强化学习
- DQN独立设置了目标网络来单独处理时间差分
3.1 DQN利用深度卷积神经网络逼近值函数
如下图所示为DQN的行为值函数逼近网络。与线性逼近不同,线性逼近指值函数由一组基函数和一组与之对应的参数相乘得到,值函数是参数的线性函数。而DQN的行为值函数利用神经网络逼近,属于非线性逼近。虽然逼近方法不同,但都属于参数逼近。请记住,此处的值函数对应着一组参数,在神经网络里参数是每层网络的权重,我们用θ表示。用公式表示的话值函数为Q(s,a;θ)。请留意,此时更新值函数时其实是更新参数θ,当网络结构确定时,θ就代表值函数。DQN所用的网络结构是三个卷积层加两个全连接层,整体框架如下图所示。
3.2 )DQN利用经验回放机制训练强化学习
当人类睡觉的时候,海马体会把一天的记忆重放给大脑皮层。利用这个启发机制,DeepMind团队的研究人员构造了一种神经网络的训练方法:经验回放。
在标准的Q learning算法中没见过这个replay memory。引入它的优势是打破了(s,a,r,s’)的相关性。
在训练神经网络时,存在的假设是训练数据是独立同分布的,但是通过强化学习采集的数据之间存在着关联性,利用这些数据进行顺序训练,神经网络当然不稳定。如果不打乱顺序,每次更新时会使估算的值比较偏。
经验回放可以打破数据间的关联,如下图所示,在强化学习过程中,智能体将数据存储到一个数据库中,再利用均匀随机采样的方法从数据库中抽取数据,然后利用抽取的数据训练神经网络。
比如说我们用dqn玩游戏的时候,采集的图片信息是一个连续的时间序列,样本之间具有连续性,如果每次得到样本就更新Q值,受样本分布的影响,效果会不好。我们可以先将样本存起来,然后随机采样。
3.3 DQN独立设置了目标网络来单独处理时间差分
与表格型的Q learning算法不同,利用神经网络对值函数进行逼近时,价值函数更新的是θ。DQN利用了卷积神经网络。其更新方法是梯度下降法,更新公式变为了:
θ t + 1 = θ t + α [ r + γ max a Q ( s ′ , a ′ ; θ ) − Q ( s , a ; θ ) ] ∇ Q ( s , a ; θ ) {\theta _{t + 1}} = {\theta _t} + \alpha \left[ {r + \gamma \mathop {\mathop {\max }\limits_a Q(s',a';\theta ) - Q(s,a;\theta )}\limits_{} } \right]\nabla Q(s,a;\theta )θt+1=θt+α[r+γamaxQ(s′,a′;θ)−Q(s,a;θ)]∇Q(s,a;θ)
其中,r + γ max a Q ( s ′ , a ′ ; θ ) r + \gamma \mathop {\mathop {\max }\limits_a Q(s',a';\theta )}\limits_{}r+γamaxQ(s′,a′;θ)
为时间差分目标。
在计算max a Q ( s ′ , a ′ ; θ ) \mathop {\mathop {\max }\limits_a Q(s',a';\theta )}\limits_{}a