文章首先提出了一个要在真实世界中使用强化学习所面临的难题就是:必须从高维度的环境输入中得到其重要特征,并概括之前的经验来应对新的情况。
为此他们提出的解决办法就是,基于DQN构建一个新的Agent,能从高维的输入中通过建立端到端的强化学习来进行训练,从而构建出一个通用的人工智能算法。
核心思想
在此之前,用神经网络等非线性逼近器去逼近动作值函数通常是不稳定的。其原因有:
(1)观察结果的序列相关性;
(2)对于Q函数的一个很小的更新都会很明显的影响策略,从而影响数据分布;
(3)动作值函数Q和目标值函数r + γ*Q(s’,a’)的相关性。
解决方案:
1. 根据深度神经网络的性质-多层神经元能从原数据中提取更加抽象的数据表达,其最具代表性的网络就是CNN。Agent的目标就是选择做出能使以后收益最大化的动作,使用CNN来拟合最优的动作估值函数。
2. replay memory:每个时间步将经验 et = (st, at, rt, st+1)存入数据集D,然后训练时随机取样minibatch,这样做的优点有:
(1)消除了序列的相关性,减少了更新的方差。
(2)学习的速度更快。
(3)消除了当前的参数决定了下一个参数训练的数据样本的情况。
3. 使用Q-学习的迭代方式:使用一个迭代更新算法调整Q函数(r + γ*max Q(s’, a’))向目标值的方向,而且是周期性的更新(冻结神经网络权重来获取target Q的方式。),从而可以降低和目标之间的相关性。
算法如下:
解释如下:
初始化要本容量为N 的replay memory D 用于存储训练样本。
随机初始化Q学习网络中的参数θ(该网络用于学习出下一刻所要做出的动作)
初始化target 网络(其结构与Q学习网络一致)其初始参数θ-的值和Q学习网络初始化θ的值一样(该网络主要为Q学习网络提供目标的y值,从而计算出loss,进行参数更新)
For episode = 1,M do
初始化序列S1,并对其进行预处理得到4*84*84的数据。 //其中4为视频的帧数,也就是4张图片,也可以去3或5等其他的数;84*84是将原数据进行预处理之后的结果。
for t=1,T do //为每个episode训练一定的时间
根据概率e选择一个随机动作或者把当前状态输入到网络中在输出的计算结果中选择一个Q值最大的动作。
执行上一步的动作,得到系统得分和动作后的图像。
让St+1等于St,at,xt+1,并用于预处理同样的方式对其进行处理。
将(上一个状态,做的动作,得到的得分,下一个状态)放入D中。
从D中随机选出minibatch大小的数据进行训练网络。
如果episode在这时结束,yj等于当前状态的记录系统得分rj,如果没有结束,那么就将下一个状态和动作输入到target网络中,得到最大的Q值,然后公式计算yi。
然后计算出loss,并进行梯度下降进行Q学习网络中的参数更新。
每进行C步,就将Q学习网络中的参数更新到target中。
End
End
从算法上可以看出一共有两个DQN网络,其中target网络是制造Q学习网络的学习目标的,Q学习网络是实际训练的。
DQN网络结构为:首先输入是4张进行过预处理的图片,之后有3层的CNN连接,最后是两层全连接层,每个隐藏层后都跟着一个relu function对其激活,输出的节点个数与可能存在的动作数相等。
结果:
最后DQN这个模型在Atari 2600 游戏中只用像素点和游戏中的得分来作为输入,在其中49个游戏中取得了与人类职业选手相当的结果。
领取专属 10元无门槛券
私享最新 技术干货