文章目录
- 一、介绍
- 二、关于此文章
- 三、无模型方法与基于模型的方法
- 四、V函数估计
- 4.1 基本概念
- 4.2 V-功能
- 五、Q 函数估计
- 5.1 V函数概念
- 5.2 优势
- 5.3 Q函数
- 六、勘探与勘探的权衡
- 七、结论
一、介绍
从赌场到人工智能:揭示蒙特卡罗方法在复杂环境中的强大功能
强化学习是机器学习中的一个领域,它引入了必须在复杂环境中学习最优策略的智能体的概念。智能体从其行为中学习,这些行为在给定环境状态的情况下产生奖励。强化学习是一个困难的话题,与机器学习的其他领域有很大不同。这就是为什么只有当给定的问题无法解决时才应该使用它。
在本文中,我们将发现蒙特卡罗算法。与标准方法相比,它们的优雅之处在于它们不需要任何有关环境动态的知识。这方面有很大的不同,因为在现实生活中,我们通常不知道状态之间所有可能的转换概率。
注意。为了充分理解本文中包含的概念,强烈建议熟悉强化学习的主要概念以及本系列前两篇文章中介绍的策略改进方法。
二、关于此文章
在第 1 部分中,我们介绍了强化学习的主要概念:框架、策略、值函数和贝尔曼方程。
在第 2 部分中,我们了解了 GPI 方法,该方法旨在通过政策评估和政策改进之间的交替来找到最佳政策。
尽管我们在第 2 部分中学到了重要的原则,但它们仅适用于动态完全已知的完美环境。当没有给出转移概率 p(s’, r | s, a) 时(大多数现实生活中的问题都是这种情况),搜索最优策略变得更加困难。
幸运的是,强化学习中存在一些技术,可以在不使用环境动态知识的情况下优化策略。蒙特卡罗方法就是这种算法的例子。
本文基于 Richard S. Sutton 和 Andrew G. Barto 撰写的《强化学习》一书的 Chapter 5。我非常感谢为本书的出版做出贡献的作者的努力。
注意。本文的源代码可在 GitHub 上找到。顺便说一句,该代码生成未在 GitHub 笔记本中呈现的 Plotly 图表。如果要查看关系图,可以在本地运行笔记本或导航到存储库的结果文件夹。
ML-medium/monte_carlo/blackjack.ipynb 在 master ·slavafive/ML-培养基
这是一个存储库,其中的机器学习算法的代码和笔记本可从我的 Medium 博客中获得。…
github.com
三、无模型方法与基于模型的方法
在强化学习中,术语模型是指智能体用来预测环境对其行为的反应的任何内容。
强化学习算法可分为两类:
-
基于模型:使用模型在采取行动之前计划行动的方法。
无模型:没有模型的方法。该算法试图学习将操作与各自的回报相关联。
我们在上一篇文章中研究的算法是基于模型的方法的一个例子,因为智能体使用给定转移概率 p(s’, r | s, a) 的估计值。 -
蒙特卡洛 (MC) 方法既不估计也不使用 p(s’, r | s, a),因此它们与模型无关。相反,他们从经验中学习——状态、行动和奖励的序列。通过使用给定的智能体轨迹,他们平均近似期望值并使用 GPI 来获得最佳策略。
在本文中,我们将只关注情节任务。在MC方法的背景下,它们更容易学习,因为经验是独立于每个情节获得的。可用的剧集越多,可用于更好地近似值函数的信息就越多。
四、V函数估计
4.1 基本概念
根据定义,状态的 v 值对应于代理从该状态开始接收的预期回报。根据代理的经验信息,我们可以平均访问该州后的所有退货。这样,计算出的平均值将表示状态的 v 值。
获得更多关于经验的信息是非常有益的,因为我们可以计算出更多状态回报的平均值,从而提高整体近似值。
基于智能体在一集中可以多次处于同一状态的事实,存在两个版本的 MC 算法用于 V 函数估计:
首次访问MC方法:仅考虑首次访问一个州的返回;
每次访问 MC 方法:考虑所有访问一个州期间的返回。
首次访问 MC 方法伪代码。资料来源:强化学习。引言。第二版 |理查德·萨顿(Richard S. Sutton)和安德鲁·巴托(Andrew G. Barto)
首次就诊MC算法在该领域得到了更多的研究。
当访问次数趋于无穷大时,根据大数定律,两种方法都收敛到实数 V 函数。
例:我们将看一个流行的赌场游戏的例子——二十一点。
规则
游戏的目标是在不超过 21 分的情况下获得比庄家更多的分数。规则很简单:给玩家发两张牌,庄家亮出他的一张牌。然后玩家必须做出以下两个决定之一:
命中:玩家拿一张额外的牌,这张牌的价值被添加到玩家的分数中。如果玩家的分数大于 21,那么他们就输掉了比赛。玩家可以随心所欲地继续击球。
棍子:玩家不再拿牌,把回合传给庄家。庄家继续拿牌,直到他们获得 17 分或更多分。如果庄家的分数大于 21,则玩家赢得比赛。如果庄家的分数在 17 到 21 之间,则得分较高的人赢得比赛,而另一个人输掉比赛。如果积分相同,则有平局。
这些卡具有下表中所示的以下值:
二十一点卡值。最上面的一行是扑克牌,最下面一行是扑克牌的值。
A是一张特殊的游戏卡:如果总分不超过21,则算作11(在这种情况下,A称为可用);否则,A 计为 1。
状态定义
玩家在二十一点中的决定仅取决于三个因素:
玩家当前得分(12 到 21 之间);
玩家是否有可用的王牌(二进制值);
庄家对显示牌的分数(介于 2 到 11 之间)。
这就是为什么将状态集 S 声明为包含这三个变量的所有可能元组的组合是合乎逻辑的。为简单起见,我们不会担心玩家分数低于 12 的琐碎状态,因为在这种情况下,玩家击球始终是最佳状态。结果,我们只有 10 ⋅ 2 ⋅ 10 = 200。与大多数强化学习问题相比,这种状态的数量很低。对于蒙特卡罗算法,计算值函数应该相对容易。
首次访问的 MC 与二十一点中的每次访问 MC 相同,因为每个游戏状态在每一集中只能访问一次。
4.2 V-功能
下图显示了蒙特卡洛算法在策略下 5 ⋅ 10⁶ 迭代时估计的 V 函数,根据该策略,玩家只有在达到 20 分时才会坚持。
政策的 V 函数,根据该函数,如果玩家达到 20 分,则坚持下去。横轴表示玩家的牌数,纵轴表示庄家的第一张牌。庄家的 A 用 1 表示。
以下是我们可以做出的一些有趣的观察:
只有在达到 20 岁后才坚持的总体政策表现不佳。只有当玩家的分数为 20 或 21 时,玩家才有优势的仅有两种情况发生。例如,如果玩家有 18 张牌,并拿了另一张牌,他们很可能会超过 21(通过获得任何价值为 4 或更大的牌)并输掉游戏。
两张热图的颜色结构非常相似。然而,如果玩家的分数超过 21,可用 A 的存在会给玩家带来“第二次机会”。因此,具有可用 ace 的案例的相应 v 值高于没有可用 ace 的案例。
对于具有可用 A 的游戏,获得的 v 值不太精确。这可以通过以下事实来解释:这些情况在二十一点中发生的频率较低。一个可能的解决方案是生成更多的剧集。
从理论上讲,我们可以使用动态规划算法来估计二十一点状态,但这要困难得多。例如,假设玩家有 13 分。为了计算该状态的 v 值,我们需要从 14 到 21 点的所有转移概率,这很难使用概率公式估计,因为有太多可能的博弈组合。
五、Q 函数估计
5.1 V函数概念
在基于模型的方法中,估计的 V 函数足以找到最优策略:通过处于任何状态,我们总是可以选择一个动作,使得动作的奖励(由 p(s’, r | s, a)给出)和下一个状态的回报之和将是最大的。
在无模型方法(即 MC 情况)中,仅具有 V 函数是不够的。我们在这里错过的组件是在每个状态下选择任何操作的奖励。因此,我们不能通过采取某种行动来估计整体回报。同时,我们不能使用贝尔曼方程来建立 v 值和 q 值之间的关系:在这种情况下,我们仍然需要 p(s’, r | s, a)。
克服这个问题的一个优雅技巧是以稍微不同的角度看待问题。我们可以将所有可能的状态和动作对 (s, a) ∈ S x A 视为状态。为了找到这些状态的值,我们可以利用 MC 方法进行 V 函数估计!该 V 函数的计算将等价于原始问题中的 Q 函数估计。
用于估计 Q 函数的 MC 方法的思想包括计算对给定(状态、操作)对的所有访问期间的平均回报。
特别是,为了应用首次访问 MC 方法,我们可以推导出访问标准:如果访问状态 s 并在其中选择了操作 a,则访问状态-操作对 (s, a)。
5.2 优势
与我们在上一篇文章中介绍的动态规划方法相比,用于估计价值函数的蒙特卡罗方法具有显着的优势:
每个状态都是独立估计的,不依赖于其他状态的值;
更新单个状态的算法复杂性取决于剧集数,而不是状态总数。由于由我们来定义平均最终结果的集数,因此即使状态总数很高,我们也有更大的灵活性;
与动态规划相比,使用 MC 方法的优势之一是计算值函数的算法复杂性仅取决于集数,而不取决于状态数。
从理论上讲,在许多环境设置中,几乎不可能估计每种状态和动作的转移概率来获得环境的动态。同时,MC方法不需要这些信息,并且可以从易于生成的观察结果中优雅地学习。
例
让我们继续前面的二十一点示例,但这次是 Q 函数估计。
5.3 Q函数
正如我们已经知道的,二十一点中有两种可能的动作:击打和坚持。如果我们将它们添加到可能的状态中,我们将得到 200 ⋅ 2 = 400(状态、操作)对。这使得蒙特卡罗算法可以很容易地估计给定策略下的任何 Q 函数。
下图显示了随机策略的 Q 函数,其中 p(hit) = p(stick) = 0.5。
随机策略的 Q 函数。横轴表示玩家的牌数,纵轴表示庄家的第一张牌。庄家的 A 用 1 表示。
与前面的场景一样,有和没有可用 A 的图表彼此相似,只是可用 A 为玩家提供了更高的获胜机会。
总体 q 值最低的图表适用于在没有可用 ace 的情况下击中的动作。造成这种情况的两个因素是,首先,通过击球,玩家已经面临被破坏的风险,其次,玩家有 50% 的机会(根据我们的政策)再次击球,这大大增加了输掉比赛的机会。因此,21 个玩家点数的最后一列由所有 -1 组成,因为在所有这些情况下,玩家都会通过击球来保证输掉比赛。
六、勘探与勘探的权衡
注意。在了解了如何评估 Q 函数之后,讨论如何找到最优策略是合乎逻辑的。然而,在这样做之前,我们需要继续几个重要的概念,这些概念将帮助我们构建一个有效的算法。
目前,我们在当前的 Q 函数估计方法中面临一个主要问题:大量的总对(状态、动作)可能永远不会被访问。如果策略是确定性的,那么对于给定状态,它可能总是在以下学习迭代中贪婪地只选择一个操作。因此,我们将永远无法探索其他可能带来更高回报的(状态、行动)货币对。
如果代理只能从状态执行相同的单个操作,则策略称为确定性策略。此类策略将概率 1 分配给此操作,将 0 分配给该状态的所有其他操作。如果不满足此条件,则该策略称为随机策略。
所描述的问题是勘探和开采权衡的经典公式。一方面,我们希望利用最佳行动来获得尽可能高的回报。另一方面,我们需要探索所有可能的行动,以确定哪些行动会带来更大的回报。
这就是为什么有必要在开发和勘探之间争取适当的平衡。说到蒙特卡罗方法,有几种方法,下面将介绍其中一种。
例
想象一下,一个智能体在下面的迷宫中学习最佳策略。代理人的目标包括收集最大可能的回报。
迷宫示例。如果策略被贪婪地更新,那么代理很可能不会在 D2 暴露奖励。
代理从 A1 开始,可以在每次迭代中朝任何方向移动。终端状态位于 A3 并给出奖励 R = 1。除此之外,在 D2 处还有一个很大的奖励 R = 10,我们显然希望代理收集。同时,在C1处有一个孔。如果代理在那里,则剧集结束,奖励 R = -3 将提供给代理。踏入其他单元格会带来奖励 R = 0。
最佳策略包括在 D2 处收集奖励,然后在 A3 处导航到最终状态。不幸的是,如果勘探和开采之间的平衡没有得到适当调整,情况并非总是如此。
也就是说,如果智能体总是贪婪地选择具有最大回报的动作,那么在前几次迭代之一之后,它可能会发现路径 A1-A2-A3 是唯一的最优路径,而无需探索任何其他选项。
在另一种情况下,代理最初可以向右移动,但如果它位于 C1,则策略评估会将负状态或状态操作值分配给 C1 周围的单元格。如果策略是贪婪的或探索率非常小,那么代理将永远不会探索 D2 的奖励。
探索开始
探索更多(状态、动作)对的最简单方法之一是在每种可能的组合(状态、动作)中多次显式开始剧集,以便在极少数情况下仍能获得平均值。另一种方法包括对每个剧集的起始状态进行随机抽样,所有状态的概率均为非零。这种方法称为探索开始。
探索开始技术使(状态、动作)对的分布更加一致,并增加了在罕见环境情况下观察回报的机会。
尽管探索开始很简单,但它有一个相当大的缺点:代理与环境交互的实际数据分布可能与用于探索开始的数据分布有很大不同。因此,代理可能会根据虚幻数据分布学习最佳策略。因此,学习到的策略在实际环境中不会是最优的。
七、结论
在本文中,我们介绍了蒙特卡罗方法,这些方法在强化学习中非常有用。与上一部分讨论的策略改进算法相比,它们在不了解其动态的情况下在环境中优化策略的能力使它们适用于许多问题。
然而,我们只讨论了估计 V 函数和 Q 函数的方法,并没有详细介绍用于搜索最优策略的完整蒙特卡罗算法,因为我们必须首先解决勘探和开发之间的平衡问题。为此,我们将在下一部分中介绍ε贪婪策略,将它们与探索开始方法相结合,并对当前版本的算法进行一些改进。