深度强化学习—DQN网络

中谈到了Q-learning,本文继续研究DQN网络。DQN(Deep Q-Learning)是深度强化学习(Deep Reinforcement Learning,DRL)的开山之作,是由Deep Mind提出将深度学习与强化学习结合起来从而实现从感知(Perception)到动作( Action )的端对端(End-to-end)学习的一种全新的算法。

Deep Reinforcement Learning

在普通的Q-learning中,当状态和动作空间是离散且维数不高时,可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,使用Q-Table通常是不可行的。

深度强化学习—DQN网络

以计算机玩Atari游戏为例,要求输入210x160像素的原始图像数据,然后输出几个按键动作,然后让计算机自己玩游戏。那么这种情况下,到底有多少种状态呢?有可能每一秒钟的状态都不一样。因为,从理论上看,如果每一个像素都有256种选择,那么就有:

深度强化学习—DQN网络

这样的天文数字是不可能通过表格来存储状态的,解决办法就是价值函数近似(Value Function Approximation)。本质上就是用一个函数来近似Q值的分布,所以,也可以说是

深度强化学习—DQN网络

深度神经网络可以自动提取复杂特征,因此,面对高维且连续的状态使用深度神经网络作为近似函数是一种比较好的方法。DRL是将深度学习(DL)与强化学习(RL)结合,直接从高维原始数据学习控制策略。而DQN是DRL的其中一种算法,它要做的就是将卷积神经网络(CNN)和Q-Learning结合起来,CNN的输入是原始图像数据(作为状态State),输出则是每个动作Action对应的价值评估Value Function(Q值)。

DQN算法原理

DQN使用神经网络来近似值函数,即神经网络的输入是state s,输出是Q(s,a),∀a∈A(action space)。通过神经网络计算出值函数后,DQN使用ϵ−greedy策略来输出action;环境接收到此action后会给出一个奖励Reward及下一个observation;然后我们根据Reward去更新值函数网络的参数。接着进入下一个循环,如此反复,直至我们训练出了一个好的值函数网络。

深度强化学习—DQN网络

DQN的Loss Function

深度强化学习—DQN网络

这里就是使用了Q-Learning要更新的Q值作为目标值,有了目标值,又有预测值Q(s,a;ω),那么偏差就能通过均方差来进行计算。

DQN算法流程

NIPS 2013版

深度强化学习—DQN网络

Nature 2015版

深度强化学习—DQN网络

Experience Replay

经验池的功能主要是解决相关性及非静态分布问题。具体做法是把每个时间步agent与环境交互得到的转移样本 {s(t),a(t),r(t),s(t+1)}储存到回放记忆单元,要训练时就随机拿出一些(minibatch)来训练(随机抽取就避免了相关性问题),

Nature 2015的改进

Nature 2015版本的DQN中提出使用另一个网络(暂且称为TargetNet)产生Target Q值。具体地,Q(s,a;θi)表示当前网络MainNet的输出,用来评估当前状态动作对的值函数;Q(s,a;θi−)表示TargetNet的输出,代入求 TargetQ值的公式中得到目标Q值。根据上面的Loss Function更新MainNet的参数,每经过N轮迭代,将MainNet的参数复制给TargetNet。引入TargetNet后,在一段时间里目标Q值使保持不变的,一定程度降低了当前Q值和目标Q值的相关性,提高了算法稳定性。


分享到:


相關文章: