通过增强学习达到人类控制的水平
本文实验成果
将算法应用到 Atari 2600 游戏中,使用像素点和游戏分数作为输入,我们的 DQN
机器人展示了一个可以和专业玩家相比较的水准,在 49 个游戏中在超过半数的
游戏中可以达到人类的分数的 75%。
实现该成果的策略
创建一个全新的 Agent,基于 Deep Q-network,能够直接从高维的原始输入数据
中通过 End-to-End 的增强学习训练来学习策略.代理通过一些列的观察、动作和
回馈来进行交互。我们代理的目标是选择一个能够使未来的积分最高的的动作.
本文的目标
单一的算法解决某个领域的多类有挑战性的工作,也就是通用的人工智能。Deep
Q-network(DQN)是本文提出的核心算法。
实现方法
结合深度卷积神经网络(DNN)和增强学习(Q-learning)
遇到的困难
增强学习的困难在其很容易不稳定甚至发散。不稳定的原因,主要是数据的相关
性太强导致小的权值更新会导致策略大的变化。
解决办法
1.我们使用生物学启发而来的一种机制叫做经验延迟,它会把数据随机化,因此
这样会删除观测数据之间的相关性并且平滑数据数据分布
2.我们使用一个迭代更新算法调整 Q 函数向目标值的方向,而且是周期性的更
新,从而可以降低和目标之间的相关性。
3.虽然也存在其他算法,但不如我们的算法,原因是他们对于非常大的神经网络
会非常低效.
DQN 的突出表现
使用 t-SNE 算法来可视化高维数据,相似的 state 会放在接近的位置。有时候可
能 state 不相似,但期望的 reward 相近。结论是
这个网络能够从高维的原始输入中学习支持可适应规则的表征。
能够发现相对长的策略,虽然依然无法应对很长策略的游戏
预处理:
由于该算法是直接处理 Atari 游戏的裸数据,一帧是 210×160 个像素点,128
色,数据量非常大,对计算能力和记忆存储量提出了很高的要求。我们提前进行
预处理是为了减低输入量的维度和对 Atari 仿真器进行一些处理。首先,对单帧
进行编码,对每个像素的颜色值取最大值(在已编码的帧和之前的帧中,比如 m
帧,m=4,m 也可以设为 3 或 5),这样可以消除由于闪烁造成的部分图像的缺失。
第二部,我们从 RGB 帧中提取 Y 通道的数据(即亮度数据)并重新调整为 84×84
的数据。
模型架构(结合图):
我们使用的结构是,输入状态,输出该状态下每个动作的 Q 值。
结构图如图 1 所示。其中神经网络的输入是由预处理之后的结果—84×84×4 的
图像;第一层隐含层包括 32 个 8×8 的滤波器,步幅是 4,后面跟一个非线性整
流器(a rectifier nonlinearity);第二层隐含层包括 64 个 4×4 的滤波器,
步幅是 2,后面加一个非线性整流器;第三层隐含层包括 64 个 3×3 的滤波器,
步幅是 1,后面跟一个整流器;最后一个隐含层是全连接,包含 512 个整流单元;
输出层是线性全连接层,输出的个数是 action 的个数。
训练细节:
在 Atari 游戏中检验 DQN 算法时,网络结构、学习算法和超参数的设定都没有变,
唯一变得是 reward,并且将 reward 值修剪在-1~1 之间。
在这个实验中,我们使用了 RMSProp 算法,最小的学习步数是 32,策略是ε
-greedy 算法,在前一百万帧数据中,ε从 1 线性下降到 0.1,之后保持固定不
变。我们一共训练了大约 5 千万帧数据,记忆库的容量是一百万帧。
本实验借用了之前训练 Atari 算法时的技巧,使用了跳帧技巧,即不是每一帧都
看、选择动作、学习,而是跳过几帧,在这跳过的几帧中选取的动作跟这几帧之
前的动作相同。
DQN 算法中所采用的超参数的数值见 extended data table1。
最终评价方式:
策略为ε-greedy,其中ε=0.05,用训练好的 DQN 参数来进行测试,玩每个游戏
30 遍,每遍最长 5 分钟,每次的初始状态都是随机取。评价的目的是为了减少
过拟合的程度。
算法基本流程
1)初始化 replay memory D,容量是 N 用于存储 训练的样本
2)初始化 action-value function 的 Q 卷积神经网络 ,初始的参数θ随机
3)初始化 target action-value function 的卷积神经网络,结构和 Q 的一样,
参数θ∗ −初始等于 Q 的参数
For episode = 1,M do
初始化状态系列 s1,并对其进行预处理得到 4 * 84 * 84 的视频帧
for t=1,T do // 每个 episode 篇章训练一定的时间
根据概率 e(很小)选择一个随机的动作
或者根据当前的状态输入到当前的网络中 (用了一次 CNN)计算出每个动作的 Q
值,选择 Q 值最大的一个动作(最优动作)
执行上面的动作 a 就可以得到 reward(得分)以及下一个图像
那么下一个状态就往前移动一帧,依然是 4 帧的图像,再次处理得到新的网络输
入
存储(上一个状态,使用的动作,得到 reward,下一个状态)数据 到 replay memory
来做训练
接下来从 D 中随机选取一个存储的数据来训练网络
计算当前状态的目标 action-value,根据 bellman 公式得到:
如果 episode 结束,那么就是得到的 reward,如果没有结束,那么就将下一个
处理好的状态输入到网络,使用 target 网络 参数(上面的 3)),得到最大的
Q 值,然后按下面公式计算: (用第二次 CNN)
接下来就是计算当前状态和动作下的 Q 值,将当前处理好的状态输入到网络,选
择对应的动作的 Q 值。(用第三次 CNN)
根据 loss function 通过 SGD 来更新参数
每 C 次迭代后更新 target action-value 网络的参数为当前的参数
end
end
总结
我们致力于利用单一的算法解决某个领域的多类有挑战性的工作,也就是通用的
人工智能.创建一个全新的 Agent,基于 Deep Q-network,能够直接从高维的原始
输入数据中通过 End-to-End 的增强学习训练来学习策略.这个工作在高维数据
输入和动作输出之间建立了桥梁,使得人工智能代理可以有擅长一些列的挑战性
的工作。