Playing Atari with Deep Reinforcement Learning
Human-level control through deep reinforcement learning
0 介绍
- 从深度学习角度看,监督学习其实是手动标注数据,然后进行学习。而强化学习是从稀疏的、有噪声的和延迟的奖励信号中学习。与监督学习中发现的输入和输出之间的直接联系相比,行动action和奖励reward之间的延迟可能长达数千个时间步timestep。
- 另外,大多数深度学习算法假设数据样本是独立同分布的,而强化学习中,我们通常会遇到高度同相关的序列状态。另外,在RL中,随着算法学习新的行为,数据分布会发生变化,对于假设固定底层分布的深度学习方法来说也是有问题的。
- 为了缓解相关数据和非平稳分布的问题,这里使用了经验回放机制。它随机抽样以前的数据,从而平滑过去行为的训练分布。
- 该网络不提供任何游戏特定的信息或手工设计的视觉特征,也不知道模拟器的内部状态;它只从视频输入、奖励和终端信号以及一系列可能的动作中学习——就像人类玩家一样。
- 智能体观察不到模拟器内部的状态,输入的只是图像。注意,通常情况下,游戏得分可能取决于整个行动和观察的前期序列;关于一个动作的反馈可能只有在经过数千个时间步之后才会被接收到。
- 最优动作价值函数遵循一个重要的恒等式,即Bellman方程。
- 许多强化学习算法背后的基本思想是估计动作值函数,使用Bellman方程作为迭代更新,Qi 1(s,a) = E [r + γ maxa ' Qi (s ',a ')|s, a]。
- 在优化损失函数Li (θi)时,来自前一次迭代的参数θi−1保持固定。注意,目标(label)取决于网络权重;这与监督学习的目标形成对比,后者(监督学习)在学习开始前就固定了。
- 注意,该算法是无模型的:它直接使用来自模拟器E的样本来解决强化学习任务,而不显式地构造E的估计。它也是off-policy:它学习贪婪策略a = maxa Q(s, a;θ),同时遵循保证充分探索状态空间的行为分布。在实际应用中,通常采用ε-贪婪策略来选择行为分布,该策略遵循概率为1 - ε的贪婪策略,选择概率为ε的随机行为。
1 DQN算法
几个改进点:
与标准的在线Q-learning[23]相比,这种方法有几个优点。
- 首先,经验的每一步都可能用于许多权重更新,这允许更高的数据效率。
- 第二,直接从连续的样本中学习效率低,因为样本之间的相关性强;随机抽样打破了这些相关性,因此减少了更新的方差(解释:由于连续的行为数据是相似的,如果不进行随机采样,那么可能会出现一段数据很相似,另外一段数据也很相似,但是不同段之间数据不相似,这就会导致模型一下子收敛到那个,一下子又收敛到另外一个地方,导致学习很不稳定,也就是方差很大。就比如cv中一下子都是猫的数据,一下子又都是狗的数据,那么这时候loss就会变动很大,模型很不稳定,可能狗的分类学好了,猫的分类又变差了)。
- 第三,在on-policy学习时,当前参数决定了下一个训练参数的数据样本。
- 例如,如果最大化动作是向左移动,那么训练样本将被左边的样本所支配;如果最大化动作切换到右边,那么训练分布也会切换。很容易看到不必要的反馈循环是如何产生的,参数可能会卡在一个糟糕的局部最小值,甚至是灾难性的发散[25]。
- 通过使用经验重放,行为分布在许多之前的状态上得到平均,平滑学习并避免参数中的振荡或发散。
- 在实践中,我们的算法只将最近的N个经验元组存储在重放内存中,并在执行更新时从D中均匀随机采样。
连续数据训练不稳定的通俗理解
- 由于连续的行为数据是相似的,如果不进行随机采样,那么可能会出现一段数据很相似,另外一段数据也很相似,但是不同段之间数据不相似,这就会导致模型一下子收敛到那个,一下子又收敛到另外一个地方,导致学习很不稳定,也就是方差很大。
- 比如cv中一下子都是猫的数据,一下子又都是狗的数据,那么这时候loss就会变动很大,模型很不稳定,可能狗的分类学好了,猫的分类又变差了。
- 又例如,如果最大化动作是向左移动,那么训练样本将被左边的样本所支配;如果最大化动作切换到右边,那么训练分布也会切换。很容易看到不必要的反馈循环是如何产生的,参数可能会卡在一个糟糕的局部最小值,甚至是灾难性的发散[25]。
2 数据处理和模型结构
数据处理:
游戏Atari的分辨率是210 x 160,这边会先进行剪裁和缩放,然后转为灰度图像。最后将最近4帧图像进行concat成4个channel的数据。最后是84x84x4的数据。
模型结构:
- 输入图像:84x84x4
- conv:16channel,8x8kernel size,strid 4,relu
- conv:32channel,4x4kernel size,strid 2,relu
- fc
3 loss
为什么经验回放可以用
为啥经验回放的数据可以用来训练,因为每条数据都是,action、state、reward、state2,可以发现有action,有reward,那么更具loss,就可以用来计算损失。
每次迭代都会使得q值预测的更准。
通俗的理解
之前玩游戏的经验也是可以拿来用的。通过经验可以知道在一个状态下做了某个动作是好还是坏。
模型在估计什么
模型预测的就是action value(q值)。然后根据贝尔曼公式上一个action value又等于 reward加上下个action value,所以模型就是一步步去迭代q值,
4 实验
奖励设置
因为不同游戏的分数差异很大,所以我们将所有积极奖励设置为1,所有消极奖励设置为−1,并保持0奖励不变。以这种方式削减奖励可以限制误差导数的规模,并更容易在多个游戏中使用相同的学习率。同时,它可能会影响我们的代理的性能,因为它不能区分不同大小的奖励。
训练参数
- 优化器:在这些实验中,我们取32的batch size,使用RMSProp算法。
- 采样策略:训练期间的行为策略是ε-贪婪,ε在前100万帧内线性退火,从1到0.1,之后固定在0.1。
- 回放池:我们总共训练了1000万帧,并使用了100万最近帧的重放记忆。
- 代理的目标是通过选择操作与模拟器进行交互这将使未来的回报最大化。我们的标准假设是未来的回报每一个时间步按因子c折现(c自始至终设置为0.99)
训练技巧
- 训练的时候不是在每一帧上面进行动作,而是每k帧做一次动作,然后选择的动作,作用在前面没选动作的帧。
- 比如,1,2,3,4帧游戏画面,我们1,2,3这几帧不进行q网络的推理也就是不选择行动。然后第4帧选择一个动作,然后把这个动作应用到1,2,3帧上。
- 因为运行模拟器一步所需的计算量要比让智能体选择一个动作少得多,所以这种技术允许代理多玩大约k次游戏,而不会显著增加运行时间。k要针对实际情况选择,看是否会影响游戏。
5 训练和稳定性
评估指标1:reward
在监督学习中,通过在训练集和验证集上对模型进行评估,可以很容易地跟踪模型在训练期间的性能。然而,在强化学习中,准确评估一个智能体在训练中的进展可能是具有挑战性的。
由于我们的评估指标是智能体在1场或几场比赛中平均获得的总奖励,所以我们在训练过程中定期计算它。平均总奖励指标往往非噪声很多,因为政策权重(q网络权重)的微小变化可能导致政策访问状态分布的巨大变化。
评估指标2:q值
另一个更稳定的指标是策略的估计动作价值函数Q,它提供了代理从任何给定状态遵循其策略可以获得多少折现奖励的估计。我们通过在训练开始前运行一个随机策略来收集一个固定的状态集(state集合),并跟踪这些状态的最大预测Q的平均值。
6 可视化value function
在游戏不同到时候 q 值也不一样,比如快打中目标的时候(B)q值变的非常大。而目标没有的时候(C)q值就很小了(因为q值是累计的reward,所以没有目标了那么肯定没有reward)。