自学AI代理续集:深度Q学习

记住:给定当前状态s,Q-Network计算动作值Q(s,a),同时,目标网络使用下一个状态s'来计算TD目标的Q(s',a)

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

在关于深度强化学习的多部分系列的第二部分中,我将向您介绍AI代理如何学习在具有离散动作空间的环境中表现的有效方法。

自学AI代理系列- 目录

§ 第一部分:马尔可夫决策过程(本文)

§ 第二部分:深度Q学习(Q-Learning)

§ 第三部分:深入(双重)Q学习(Q-Learning)

§ 第四部分:持续行动空间的政策梯度

§ 第五部分:决斗网络(dueling network)

§ 第六部分:异步角色评论代理

...

深度Q-Learning - 目录

0.简介

1.时序差分学习

2. Q学习

2.1开启和关闭政策

2.2贪婪策略(Greedy Policy)

3.深度Q学习

3.1目标和Q网络

3.2ε-贪婪策略

3.3勘探/开发困境

3.4经验回放伪算法

4.深度Q学习与经验回放伪算法

0.简介

在本系列的第一篇文章中,我向您介绍了马尔可夫决策过程的概念,它是深度强化学习的基础。为了完全理解以下主题,我建议您回顾第一篇文章。漫谈自学习人工智能代理:马尔可夫决策过程(第一部分) 自学习人工智能代理第一部分:马尔可夫决策过程

通过Deep-Q Learning,我们可以编写可以在具有离散动作空间的环境中运行的AI代理。离散动作空间指的是明确定义的动作,例如,向左或向右,向上或向下移动。

Atari的突破是具有离散动作空间的环境的典型示例。AI

图1. Atari的突破作为离散动作空间的一个例子

代理可以向左或向右移动。每个方向的运动都以一定的速度发生。

Atari的突破是具有离散动作空间的环境的典型示例。AI

如果代理人可以确定速度,那么我们将拥有一个具有无限可能动作的持续动作空间(具有不同速度的运动)。将来会考虑这个案例。

1.动作价值函数

在上一篇文章中,我介绍了动作价值函数Q(s,a)的概念,由公式1给出。1.作为提醒,动作值函数被定义为AI代理通过从状态s开始,采取行动a然后遵循策略π而获得的预期回报。

记住:直观地说,策略π可以被描述为代理根据当前状态选择某些动作的策略。

Eq. 1动作价值函数

Q(s,a)告诉代理在特定状态s中可能的动作a的值(或质量)。给定状态s,动作值函数计算该状态下每个可能动作ai的权重/值作为标量值(图1)。更高的质量意味着在给定目标方面能采取更好的行动。

图1给定状态s,Q(s,a)有很多动作和适当的值

如果我们在Eq中执行期望运算符E. 1我们获得了一种新形式的动作值函数,我们在这里处理概率。Pss'是从状态s到下一个状态s'的转换概率,由环境决定。π(s'| a')是策略或数学上讲给定状态s的所有动作的分布。

Eq. 2 Q(s,a)的另一种形式包含概率

1. 时序差分学习

我们深度Q-Learning的目标是解决动作值函数Q(s,a)。我们为什么要这样?如果AI代理知道Q(s,a),那么给定的目标(比如赢得国际象棋比赛与人类玩家或玩Atari的突破)可以被视为已经解决。其原因在于,Q(s,a)的知识将使代理能够确定任何给定状态下任何可能动作的权重。因此,代理可以相应地进行操作。

Eq. 2给出了一个递归解决方案,可用于计算Q(s,a)。但是,由于我们正在考虑递归并且使用该等式处理概率是不实际的。相反,我们必须使用所谓的时序差分(TD)学习算法来迭代地求解Q(s,a)。

在TD学习中,我们将状态s中的每个动作a的Q(s,a)更新为估计的返回R(t + 1)+γQ(s(t + 1),a(t + 1))(等式3) )。估计回报也称为TD-Target。对于环境中的任何状态-动作对,迭代地执行此更新规则并多次执行,会得到正确的动作值Q(s,a)。

Eq. 3 Q(s,a)的更新规则

TD-Learning算法可以通过以下步骤进行总结:

通过将Q(s_t,a_t)添加到TD-Target和Q(s_t,a_t)之间的差值来更新先前的Q(s_t,a_t),α是学习速率

1.1时序差异

让我们更详细地讨论TD算法的概念。在TD学习中,我们考虑Q(s,a)的“时序差异” - Q(s,a)的两个“版本”之间的差异,在我们在状态s中执行动作a之前和之后的时间之间分隔一次。

采取行动之前:

请看图2.假设AI代理处于状态s(蓝色箭头)。在状态s中,他可以采取两种不同的动作a_1和a_2。基于来自先前时间步骤的计算,代理知道在该状态下两个可能动作的动作值Q(s,a_1)和Q(s,a_2)。

图2状态s中的代理知道每个可能的Q(s,a)

采取行动后:

根据这些知识,代理商决定采取行动a_1。采取此行动后,代理人处于下一个状态s'。对于行动a_1,他会得到即时的回报r,代理人可以再次采取两个可能的行动a'_1和a'_2,他们从之前的一些计算中再次知道行动值。

如果你看方程式Eq.1中Q(s,a)的定义。你会发现在状态s'中我们现在有了新的信息,我们可以用它来计算Q(s,a_1)的新值。该信息是针对最后状态中的最后一个动作接收的直接奖励R以及代理将在该新状态中采取的动作的Q(s',a')。Q(s,a_1)的新值可以根据图3中的等式计算。等式的右边也是我们称之为TD-Target的。TD目标与Q(s,a_1)的旧值或“时间版本”之间的差异称为时间差。

记住:在TD学习期间,我们计算任何可能的动作值Q(s,a)的时间差异,并使用它们同时更新Q(s,a),直到Q(s,a)收敛到它的真实值。

图3采取行动后的状态s'中的代理a_1

2. SARSA

应用于Q(s,a)的TD-Learning算法通常称为SARSA算法(State-Action-Reward-State-Action)。SARSA是一种称为on-policy算法的特殊学习算法的好例子。

之前我介绍了策略π(a | s)作为从状态s到动作a的映射。此时您应该记住的一件事是,on-policy算法使用相同的策略来获取Q(s_t,a_t)的动作以及Q的动作(s(t + 1),a_(t + 1) ))在TD-Target中。这意味着我们正在同时遵循和改进相同的政策。

3. Q-Learning

我们终于到达了文章的核心,我们将讨论Q-Learning的概念。但在此之前,我们必须看一下被称为非策略算法的第二种特殊算法。您可能认为Q-Learning已经属于这种算法,实际上这与SARSA等策略上的算法有所区别。

要了解非策略算法,我们必须引入另一个策略μ(a | s)并将其称为行为策略。行为策略确定针对所有t的Q(s_t,a_t)的动作a_t~μ(a | s)。就SARSA而言,行为政策将是我们遵循的策略,并且,我们尝试同时进行优化。

在非策略算法中,我们有两个不同的策略μ(a | s)和π(a | s),μ(a | s)是行为,π(a | s)是所谓的目标策略。当行为策略用于计算Q(s_t,a_t)时,目标策略仅用于在TD-Target中计算Q(s_t,a_t)。 (这个概念在下一节中会更全面,在那里进行实际计算)

请记住:行为政策为所有Q(s,a)选择动作。相反,目标策略仅确定用于计算TD目标的动作。

我们实际上称之为Q-Learning算法是一种特殊情况,其中目标策略π(a | s)是贪婪的w.r.t. Q(s,a),这意味着我们的策略是采取导致Q值最高的行动。这产生了以下目标政策:

Eq. 4贪婪目标策略w.r.t Q(s,a)

在这种情况下,目标策略称为贪婪策略。贪婪政策意味着我们只挑选导致最高Q(s,a)值的行动。这个贪婪的目标策略可以插入到动作值Q(s,a)的等式中,其中我们遵循随机策略π(a | s):

Eq.5将贪婪策略插入Q(s,a)

贪婪策略为我们提供了最佳的动作值Q *(s,a),因为根据定义,Q *(s,a)是Q(s,a),它遵循最大化动作值的策略:

Eq. 6最优Q(s,a)的定义

方程式中的最后一行就是我们在上一篇文章中得出的Bellman最优性方程。该等式用作递归更新规则以估计最佳动作值函数Q *(s,a)。

然而,TD学习仍然是找到Q *(s,a)的最佳方式。在贪婪策略下,Eq. 3中Q(s,a)的TD-learning更新步骤变得更加简单,如下图所示:

Eq. 7贪婪策略的TD学习更新规则

具有贪婪目标策略的Q(s,a)的TD-Learning算法可归纳为以下步骤:

考虑前面的图(图3),其中代理在状态s'中着陆并且知道该状态中可能的动作的动作值。遵循贪婪的目标策略,代理将采取具有最高动作值的动作(图4中的蓝色路径)。该策略还为Q(s,a_1)(图中的等式)提供了新值,根据定义,它是TD-Target。

Eq.8遵循贪婪策略计算Q(s,a_1)

我们终于到达了这篇文章的标题得到它的序言深度- 我们最终使用深度学习。如果您查看Q(s,a)的更新规则,您可能会发现如果TD-Target和Q(s,a)具有相同的值,我们不会获得任何更新。在这种情况下,Q(s,a)收敛到真实的行动值并实现目标。

这意味着我们的目标是最小化TD-Target和Q(s,a)之间的距离,这可以用平方误差损失函数(公式10)表示。通过通常的梯度下降算法可以实现这种损失函数的最小化。

Eq.10平方误差丢失功能

3.1目标和Q网络

在Deep-Q学习TD-Target中,y_i和Q(s,a)由两个不同的神经网络分别估计,这两个神经网络通常被称为Target-和Q-Networks(图4)。目标网络的参数θ(i-1)(权重,偏差)对应于较早时间点的Q网络的参数θ(i)。这意味着Target-Network参数会及时冻结。它们在使用Q-Network的参数进行n次迭代后得到更新。

记住:给定当前状态s,Q-Network计算动作值Q(s,a)。同时,目标网络使用下一个状态s'来计算TD目标的Q(s',a)。

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

研究表明,使用两种不同的神经网络进行TD-Target和Q(s,a)计算可以使模型具有更好的稳定性。

3.2ε-贪婪政策

当目标策略π(a | s)仍然是贪婪策略时,行为策略μ(a | s)确定AI代理所采取的动作a_i,因此Q(s,a_i)(由Q网络计算)必须被插入平方误差损失函数。

行为策略通常被选为ε-Greedy。利用ε-贪婪策略,代理在每个时间步骤选择具有固定概率ε的随机动作。如果ε的值高于随机生成的数字p,0≤p≤1,则AI代理从动作空间中选择随机动作。否则,根据倾斜的动作值Q(s,a)贪婪地选择动作:

Eq.11ε-贪婪政策的定义

选择ε-贪婪政策作为行为政策μ解决了勘探/开发贸易的两难选择。

3.3勘探/开发

关于采取哪些行动的决策涉及一个基本选择:

在利用方面,代理根据行为政策μ采取最佳行动。但这可能会导致问题。也许有时会有另一种(替代)行动可以通过状态序列在更好的路径中产生(长期),但如果我们遵循行为政策,则可能不采取这种替代行动。在这种情况下,我们利用当前的政策,但不会探索其他替代行动。

ε-贪婪策略通过允许AI代理以特定概率ε从动作空间中采取随机动作来解决该问题。这称为勘探,通常,ε的值随着时间的推移而降低,根据Eq.12.这里n是迭代次数。减少ε意味着在训练开始时我们尝试探索更多的替代路径,而最终,我们让政策决定采取哪些行动。

Eq.12随着时间的推移减少ε

3.4经验回放

在过去,可以证明,如果Deep-Q学习模型实现经验回放,则估计TD-Target和Q(s,a)的神经网络方法变得更加稳定。经验回放只不过是存储元组的内存

在训练神经网络时,我们通常不使用最新的元组。相反,我们从经验回放中随机抽取来计算TD-Target,Q(s,a)并最终应用梯度下降。

3.5具有经验的深度Q学习回放伪算法

以下伪算法实现了具有经验重放的Deep-Q学习。我们之前讨论过的所有主题都以正确的顺序包含在此算法中,具体如何在代码中实现。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029A1KW8B00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券