RL — DQN深度Q网络
电脑可以像人类一样玩视频游戏吗?2015年,DQN在许多Atari游戏中击败了人类专家。但是一旦涉及到复杂的战争策略游戏,人工智能的表现就不会很好。2017年,一支专业团队轻松击败了Starcraft 2中的DeepMind AI程序。
如DeepMind论文所述:
这是一个具有多个参与者互动的多主体问题。由于部分观察到地图,因此信息不完善;它具有很大的行动空间,涉及数百个单元的选择和控制;它具有很大的状态空间,必须仅从原始输入要素平面中观察到;而且它延迟了信用分配,需要数千步的长期策略。
让我们重新开始回到深度Q网络DQN的旅程。在下面的Seaquest游戏中,DQN独自学习如何读取分数,射击敌人以及从原始图像中救助潜水员。它还发现了我们可以将其称为策略的知识,例如何时将潜艇带到水面以吸收氧气。
Q学习
Q学习学习动作值函数Q(s,a): 在特定状态下执行动作的效果如何。例如,对于下面的棋盘位置,将棋子向前移动两步有多好。从字面上看,我们将标量值分配给这样做的好处。
Q称为动作值函数(或本文中的Q值函数)。
在Q学习中,我们建立一个内存表Q [ s,a ]来存储s和a的所有可能组合的Q值。如果您是国际象棋棋手,那是最好的招式。在上面的示例中,我们可能意识到将棋子向前移动两步具有最高的Q值。(对于国际象棋来说,内存消耗将太高。但是,让我们继续使用这种方法要更长一些。)
从技术上讲,我们从当前状态中采样一个动作。我们找出奖励R(如果有)和新状态s'(新董事会职位)。从内存表中,我们确定要执行的具有最大Q(s',a')的下一个动作a'。
在电子游戏中,我们通过击落敌人来得分(奖励)。在国际象棋游戏中,当我们获胜时,奖励是+1;如果我们输了,则奖励是-1。因此,仅给出一个奖励,并且需要一段时间才能获得它。
Q学习是关于创建备忘单Q。
我们可以单步走a,看看我们能得到什么奖励R。这将一步一步向前看。R + Q(s',a')成为我们想要Q(s,a)成为的目标。例如,假设所有Q值现在等于1。如果将操纵杆向右移动并获得2分,我们希望将Q(s,a)移近3(即2 + 1)。
在继续玩的过程中,我们维持Q的运行平均值。这些值将变得更好,并且通过一些技巧将使Q值收敛。
Q学习算法
以下是使Q与样本奖励匹配的算法。如果γ(折扣因子)小于1,则Q很有可能收敛。
但是,如果状态和动作的组合太大,则Q的内存和计算需求将太大。为了解决这个问题,我们切换到深度网络Q(DQN)来近似Q(s,a)。该学习算法称为Deep Q学习。使用新方法,我们可以概括Q值函数的逼近,而不用记住解。
与DL相比,RL面临哪些挑战?
在监督学习中,我们希望输入是独立的(独立且分布均匀),即
- 批次之间的样本是随机的,因此每个批次具有相同(或相似)的数据分布。
- 同一批次中的样品彼此独立。
如果不是这样,则该模型可能会在不同时间针对某些类别(或几组)的样本进行过拟合,并且该解决方案将无法推广。
此外,对于相同的输入,其标签不会随时间变化。输入和输出的这种稳定条件为监督学习的良好表现提供了条件。
在强化学习中,输入和目标在此过程中都会不断变化,并使训练变得不稳定。
目标不稳定:我们建立了一个深入的网络来学习Q的值,但是随着我们对事情的了解越来越多,其目标值也在不断变化。如下所示,Q的目标值取决于Q本身,我们正在追求一个非平稳目标。
iid:另一个问题与轨迹内的相关性有关。在训练迭代中,我们更新模型参数以将Q(s,a)移至更接近地面实况。这些更新将影响其他估计。当我们拉深网络中的Q值时,周围状态的Q值也将像网络一样被拉高。
假设我们只是获得奖励并调整Q网络以反映它。接下来,我们采取另一项措施。特别是如果我们使用原始图像表示状态,则新状态将看起来与最后一个状态相似。新检索的Q(s',a')将更高,并且无论新操作的优点如何,我们新的Q目标也将更高。如果我们用相同轨迹上的一系列动作来更新网络,则其作用会超出我们的预期。这破坏了学习过程的稳定性,听起来像狗在追尾巴。
培训RL的基本挑战是什么?在RL中,我们通常依赖于策略或价值函数来抽样操作。但是,随着我们更了解探索内容,这种情况经常发生变化。在玩游戏时,我们会更好地了解状态和动作的基本真理值。因此,我们的目标输出也在发生变化。现在,我们尝试为不断变化的输入和输出学习映射f!
幸运的是,输入和输出都可以收敛。因此,如果我们充分放慢输入和输出的变化,我们可能有机会对f建模,同时允许其演化。
解决方案
体验重播:例如,我们将最后一百万个转换(或视频帧)放入一个缓冲区中,并从该缓冲区中采样一小批大小为32的样本,以训练深度网络。这形成了足够稳定的输入数据集以进行训练。当我们从重播缓冲区中随机采样时,数据彼此之间更加独立,并且与iid更加接近
目标网络:我们创建两个深层网络θ-和θ。我们使用第一个检索Q值,而第二个包含训练中的所有更新。说了100,000次更新后,我们将θ-与θ同步。目的是临时确定Q值目标,因此我们没有可移动的目标。另外,参数变化不会影响θ-立即,因此,即使在输入可能不是100%IID,也不会错误地放大所提到其效果之前。
通过经验重放和目标网络,我们可以更稳定地输入和输出来训练网络,并且其行为更像是受监督的训练。
体验重播在DQN中具有最大的性能改进。目标网络的改进很重要,但没有重放那么重要。但是,当网络容量小时,它变得更加重要。
深度Q学习与经验重播
这是算法:
ϕ预处理最后4个图像帧以表示状态。为了捕获运动,我们使用四个框架表示状态。
实施细节
损失函数
让我们详细了解一些实现细节,以提高性能。DQN使用休伯损失(绿色曲线),其中损失是二次为小的值一,和线性为大的值。
引入Huber损失后,变化不大的变化通常会损害RL。
优化
RL训练对优化方法很敏感。简单的学习率进度表不够动态,不足以处理培训期间输入的变化。许多RL培训都使用RMSProp或Adam优化器。DQN受RMSProp培训。对“策略梯度”方法中使用高级优化方法也进行了大量研究。
ϵ贪心
DQN使用ϵ-greedy选择第一个动作。
为了改善训练效果,ϵ 使用以下策略从1开始并在前一百万帧中退火到0.1或0.05。
其中,m是可能采取的措施的数量。在训练开始时,我们统一选择可能的动作,但是随着训练的进行,我们会更频繁地选择最佳动作a *。这样一开始就可以进行最大程度的探索,最终转变为利用。
但是,即使在测试过程中,我们可以保持ε像0.05小的值。确定性策略可能会陷入局部最优状态。非确定性策略使我们能够突围而出,以达到更好的最佳效果。
建筑
这是DQN架构。我们将前面的最后4个视频帧作为数据,并将它们输入到卷积层中,然后将它们输入完全连接的层中,以计算每个动作的Q值。
在下面的示例中,如果我们不向上移动第3帧处的球拍,我们将错过球。正如DQN所预期的,与其他动作相比,向上移动操纵杆的Q值要高得多。
DQN的改进
DQN进行了许多改进。在本节中,我们将展示一些方法,这些方法将显示出明显的改进。
双DQN
在Q学习中,我们对Q的目标值使用以下公式。
但是,最大操作对Q估计产生正偏差。
从上面的示例中,我们看到最大Q(s,a)高于收敛值1.0。即最大操作高估Q。通过理论和实验,如果我们使用在线网络θ贪婪地选择动作并使用目标网络θ-来估计Q值,则DQN性能会提高。
优先体验重播
DQN均匀地从重播缓冲区采样过渡。但是,我们应该较少关注已经接近目标的样本。我们应该采样目标差距较大的过渡:
因此,我们可以从缓冲区中选择过渡
- 基于上面的错误值(错误率更高的拾取过渡更频繁),或者
- 根据错误值对它们进行排名,然后按等级选择它们(更频繁地选择等级越高的那个)。
有关采样数据方程式的详细信息,请参阅“ 优先体验重播”论文。
决斗DQN
在“决斗DQN”中,使用以下不同的公式计算Q,其中值函数V和状态相关的行动优势函数A如下:
相反,学习的Q,我们使用了两个不同的头上来计算V和一个。实验表明,该方法性能有所提高。DQN 仅针对特定操作更新状态的Q值函数。决斗DQN更新V,其他Q(s,a')更新也可以利用。因此,每个决斗DQN训练迭代被认为会产生更大的影响。
嘈杂的勘探网
DQN使用ϵ贪婪来选择操作。另外,NoisyNet可以通过在线性层中添加参数噪声来替代它,以帮助探索。在NoisyNet中,不使用ε-greedy。它使用贪婪方法从Q值函数中选择操作。但是,对于Q逼近器的完全连接层,我们在下面添加了可训练的参数化噪声以探索动作。向深层网络添加噪音通常比向ϵ-贪婪方法中的动作添加噪音等效或更好。
更多想法
DQN属于RL的重要一类,即价值学习。在实践中,我们经常将政策梯度与价值学习方法结合起来解决现实生活中的问题。