自学习人工智能agent(三):深度(双重)Q学习!

点击上方关注,All in AI中国

作者:Artem Oppermann

自学习人工智能agent(三):深度(双重)Q学习!

我们希望让深度Q学习(Deep Q-Learning)再次伟大。这是关于自学人工智能agent系列的文章第三部分。

自学人工智能代理系列文章目录:

  • 第一部分:马尔可夫决策过程漫谈自学习人工智能代理:马尔可夫决策过程(第一部分)
  • 第二部分:深度Q学习自学AI代理续集:深度Q学习
  • 第三部分:深度(双重)Q学习(本文)
  • 第四部分:持续行动空间的政策梯度
  • 第五部分:决斗网络(dueling network)
  • 第六部分:异步Actor-Critic Agent
  • ...

0.简介

在"自学习人工智能agent(Self Learning AI-Agents)"系列的第二篇文章中,我介绍了深度Q学习这种算法,可用于训练人工智能在离散动作空间中的表现和解决任务。然而,这种方法并非没有缺点,将可能降低人工智能agent的性能。

在文中,我将介绍深度Q学习的一个常见问题,并展示如何将vanilla实现扩展到我们称之为双重Q学习(Double Deep Q-Learning),这通常会为人工智能代理提供更好性能。

你如何练习深度双Q学习?

自学习人工智能agent(三):深度(双重)Q学习!

这个OpenAI的Gym CartPole问题的例子是通过这里介绍的双重Q学习算法解决的。可以在我的GitHub存储库中找到详细记录的源代码。我选择了CartPole作为一个例子,因为这个问题的训练时间非常短,你可以很快重现它。复制存储库并执行run_training.py以启动算法。https://towardsdatascience.com/self-learning-ai-agents-part-ii-deep-q-learning-b5ac60c3f47

1.动作值函数(action-value function)

在本系列的前两部分中,我介绍了动作值函数Q(s,a)作为人工智能代理通过从状态s开始,执行动作a,然后遵循某个策略π所获得的预期回报G_t。

自学习人工智能agent(三):深度(双重)Q学习!

式1 动作值函数Q(s,a)

等式的右边部分也称为时间差异目标(TD-Target)。 TD-Target是代理为状态s中的动作a获得的直接奖励r和折扣价值Q(s',a')的总和,a'是代理将在下一个状态s中采取的动作。

Q(s,a)告诉代理在特定状态s中可能的动作a的值(或质量)。给定状态s,在动作值函数计算,该状态下每个可能动作a_i的质量/值作为标量值。更高的质量意味着在给定目标方面采取更好的行动。对于人工智能代理来说,可能的目标可能是学习如何走路或如何与人类棋手下棋。

遵循贪婪策略w.r.t(Q,s,a),意味着采取动作a'导致Q(s,a')的最高值导致Bellmann最优性方程,其给出Q(s,a)的递归定义(看第一篇文章)。 Bellman方程也可用于递归计算任何给定动作或状态的所有值Q(s,a)。 https://towardsdatascience.com/self-learning-ai-agents-part-i-markov-decision-processes-baf6b8fc4c5f

自学习人工智能agent(三):深度(双重)Q学习!

式2贝尔曼(Bellmann)最优性方程

在本系列的第二篇文章中,引入了时间差异学习作为估计Q(s,a)值的更好方法。时间差异学习的目标是使TD目标与Q(s,a)之间的距离最小化,这表明Q(s,a)在给定环境中朝向其真实值的收敛。这被称为Q学习。

https://towardsdatascience.com/self-learning-ai-agents-part-ii-deep-q-learning-b5ac60c3f47

2.深度Q网络

我们已经看到神经网络方法被证明是一种更好的估计Q(s,a)的方法。主要目标保持不变。它是Q(s,a)和TD-Target(或Q(s,a)的时间距离)之间距离的最小化。该目标可以表示为误差损失函数的最小化:

自学习人工智能agent(三):深度(双重)Q学习!

式3平方误差损失函数

在深度Q学习中,TD-Target y_i和Q(s,a)由两个不同的神经网络分别估计,这两个神经网络通常称为目标网络和Q网络。参数θ(i-1)(权重、偏差)属于目标网络,而θ(i)属于Q网络。

根据动作策略μ(a | s)选择人工智能代理的动作。另一方面,贪婪目标策略π(a | s)仅选择用于计算TD目标的最大Q(s,a)的动作a'。

自学习人工智能agent(三):深度(双重)Q学习!

图1目标和Q网络。s是当前状态而s'是下一个状态

误差损失函数的最小化可以通过在深度学习中使用的通常的梯度下降算法来实现。

3.深度Q学习的问题

深度Q学习有时会学习不切实际的高动作值,因为它包括估计动作值的最大化步骤,这倾向于高估低估值,因为它可以在TD-Target y_i的计算中看到。

自学习人工智能agent(三):深度(双重)Q学习!

在实践中,过高估计是否会对人工智能代理的表现产生负面影响,这仍然是一个或多或少的悬而未决的问题。过度乐观的价值估计不一定是他们自己的问题。如果所有值都是一致地高,则保留相对动作偏好,并且我们不期望得到的策略更糟。

然而,如果过高的估计不统一,并且没有集中在我们希望了解更多信息的状态,那么它们可能对最终策略的质量产生负面影响。

自学习人工智能agent(三):深度(双重)Q学习!

4.双重深度Q学习

双Q学习的想法是通过将目标中的最大动作分解为动作选择和动作评估来减少过高估计。

在vanilla实现中,动作选择和动作评估是耦合的。我们使用目标网络(Target-Network)来选择动作,同时估计动作的质量。这是什么意思?

目标网络为状态s中的每个可能动作a_i计算Q(s,a_i)。贪婪策略决定了选择动作a_i的最高值Q(s,a_i)。这意味着目标网络选择动作a_i,同时通过计算Q(s,a_i)来评估其质量。双Q学习试图将这两个程序相互分离。

在双重深度Q学习中,TD-Target看起来如下:

自学习人工智能agent(三):深度(双重)Q学习!

正如我们所见,目标中的最大动作消失了。当具有参数θ(i-1)的目标网络评估动作的质量时,动作本身由具有参数θ(i)的Q网络确定。此过程与深度Q学习的vanilla实现形成对比,其中目标网络负责动作选择和评估。

新的TD-Target y_i的计算可以通过以下步骤进行总结:

  • Q-Network使用下一个状态s'来计算状态s'中每个可能的动作a的质量Q(s',a)
  • 应用于Q(s',a)的argmax操作选择属于最高质量的动作a *(动作选择)
  • 选择属于动作a *(由Q网络确定)的质量Q(s',a *)(由目标网络确定)用于计算目标。(动作评估)

自学习人工智能agent(三):深度(双重)Q学习!

图2代理通过不同状态的路径

双Q学习的过程可以在图表中再次可视化,以便进一步理解(图2)。人工智能代理在状态s开始。它基于先前的一些计算知道Q(s,a_1)和Q(s,a_2)在该状态下可能的两个动作的质量。这决定采取动作a_1,并最终进入状态s'。

Q网络计算在这种新状态下可能的动作的质量Q(s',a_1')和Q(s,a_2')。选择操作a_1'是因为它根据Q网络产生最高质量。

现在可以使用图2中的等式计算状态s中动作a_1的新动作值Q(s,a1),其中Q(s',a_1')是由目标确定的a_1'的评估。

5.实证结果

在参考文献[1] David Silver等人的实践中,在几款Atari 2600游戏中测试了深度Q网络(DQN)和深度双重Q网络(双DQN)。这两种方法的人工智能代理实现的归一化分数以及可以比较的人类表现如图3所示。该图还包含Double DQN的调整版本,其中执行了一些超参数优化。但是,此版本的DQN不在此处。

我们可以清楚地注意到,这两个不同版本的双DQN在这个领域取得了比它的vanilla实现更好的性能。

自学习人工智能agent(三):深度(双重)Q学习!

图3 Atari 2600游戏的表现

自学习人工智能agent(三):深度(双重)Q学习!

相关推荐