当前位置: 首页 > news >正文

强化学习中的策略评估与改进:从理论到实践(二)

引言

强化学习 是机器学习中的一个领域,引入了一个代理(agent)的概念,这个代理必须在复杂环境中学习最优策略。代理通过其行为从环境中获得奖励,从而学习如何行动。强化学习是一个非常复杂的主题,与其他机器学习领域有很大不同。因此,它应该只在其他方法无法解决问题时才被使用。

强化学习的奇妙之处在于,相同的算法可以用来让代理适应完全不同的、未知的和复杂的条件。

注意:为了完全理解本文中的观点,强烈建议你先阅读本文系列的 第一部分,其中介绍了强化学习的主要概念。

关于本文

在 第一部分,我们介绍了强化学习的主要概念:框架、策略和价值函数。贝尔曼方程(Bellman Equation)通过递归建立价值函数之间的关系,是现代算法的核心。我们将在本文中通过学习如何使用它来找到最优策略,来理解它的强大之处。

本文基于 Richard S. Sutton 和 Andrew G. Barto 合著的著名书籍 《强化学习》 的第四章。我非常感谢作者为出版这本书所付出的努力。

解决贝尔曼方程

假设我们完全了解环境的动态特性,该环境包含 (|S|) 个状态,行动转移概率由策略 (\pi) 给出。在这种情况下,我们可以为该环境的 V 函数求解贝尔曼方程,这实际上是一个包含 (|S|) 个变量的线性方程组(如果是 Q 函数,则会有 (|S| \times |A|) 个方程)。

这些方程的解对应于每个状态的 v 值(或每对 ((状态, 行动)) 的 q 值)。

示例

让我们来看一个简单的环境示例,其中包含 5 个状态,T 是终止状态。蓝色数字表示转移概率,红色数字表示代理获得的奖励。我们假设代理在状态 A 中选择的相同行动(用水平箭头表示,概率 (p = 0.6))会导致 C 或 D 的不同概率(分别为 (p = 0.8) 和 (p = 0.2))。

示例转移图

示例的转移图。蓝色数字表示状态之间的转移概率,红色数字表示相应的奖励。

由于环境包含 (|S| = 5) 个状态,为了找到所有 v 值,我们需要解一个包含 5 个贝尔曼方程的方程组:

贝尔曼方程组

V 函数的贝尔曼方程组。

由于 T 是终止状态,其 v 值始终为 0,因此实际上我们只需要解 4 个方程。

方程组的解

方程组的解。

如果要解类似的 Q 函数方程组,难度会更大,因为我们需要为每对 ((状态, 行动)) 解一个方程。

策略评估

直接解线性方程组(如上例所示)是一种可能的方法,用于获得真实的 v 值。然而,由于算法复杂度为 (O(n^3)),其中 (n = |S|),这种方法并不高效,尤其是当状态数 (|S|) 很大时。相反,我们可以应用 迭代策略评估算法

  1. 随机初始化所有环境状态的 v 值(终止状态的 v 值必须为 0)。
  2. 使用贝尔曼方程迭代更新所有非终止状态。
  3. 重复步骤 2,直到前后 v 值的差异足够小(≤ (\theta))。

策略评估伪代码

策略评估伪代码。来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

如果状态数 (|S|) 是有限的,那么可以数学证明:在给定策略 (\pi) 下,通过策略评估算法得到的迭代估计值最终会收敛到真实的 v 值

对某个状态 (s \in S) 的 v 值进行单次更新称为 期望更新。之所以这样命名,是因为更新过程考虑了 (s) 的所有可能后续状态的奖励,而不仅仅是一个。

对所有状态进行一次完整的更新迭代称为一个 扫描

注意:算法并未规定在每次迭代中更新变量的顺序,但顺序可能会对收敛速度产生很大影响。

更新变体

策略评估算法中的更新方程可以用两种方式实现:

  • 使用 两个数组:从两个独立的数组中依次计算新值,旧值保持不变。
  • 使用 一个数组:立即覆盖计算出的值。因此,在同一次迭代中,后续更新会使用已覆盖的新值。

在实践中,覆盖 v 值是一种更优的更新方式,因为新信息一旦可用就会被用于其他更新,与使用两个数组的方法相比,v 值的收敛速度会更快。

算法并未规定在每次迭代中更新变量的顺序,但顺序可能会对收敛速度产生很大影响。

示例

描述

为了更好地理解策略评估算法在实际中的工作方式,让我们来看一个来自 Sutton 和 Barto 的书 的 4.1 节的例子。我们有一个 (4 \times 4) 的网格环境,代理在每一步中以相等的概率((p = 0.25))向四个方向(上、右、下、左)之一移动一步。

网格环境

代理从随机的迷宫单元格开始,并在每一步中向四个方向之一移动,每步的奖励 (R = -1)。A4 和 D1 是终止状态。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

如果代理位于迷宫的边缘,并选择向迷宫周围的墙壁方向移动,则其位置保持不变。例如,如果代理位于 D3 并选择向右移动,则它在下一步中仍保持在 D3。

除了位于 A4 和 D1 的两个终止状态外,每步移动到任何单元格的奖励都是 (R = -1),而终止状态的奖励为 (R = 0)。最终目标是计算给定的等概率策略下的 V 函数。

算法

让我们将所有 V 值初始化为 0,然后运行几次策略评估算法的迭代:

不同迭代的 V 函数

不同策略评估迭代中的 V 函数。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

在某个时刻,连续迭代之间的 v 值将不再发生变化,这意味着算法已经收敛到真实的 v 值。对于迷宫,给定等概率策略下的 V 函数如最后一个图的右侧所示。

解释

假设代理根据随机策略从单元格 C2 开始,其预期奖励为 -18。根据 V 函数的定义,-18 是代理在剧集结束时收到的总累积奖励。由于每一步移动都会增加 -1 的奖励,我们可以将 v 值 18 解释为 代理到达终止状态所需的预期步数

策略改进

乍一看,可能会觉得有些意外,但 V 函数和 Q 函数可以用来找到最优策略。为了理解这一点,让我们回到迷宫示例,我们已经计算了随机策略下的 V 函数。

例如,我们来看单元格 B3。根据我们的随机策略,代理可以从该状态以相等的概率向 4 个方向移动。它可能获得的预期奖励分别是 -14、-20、-20 和 -14。假设我们有机会修改该状态的策略。为了最大化预期奖励,难道不是应该总是向 A3 或 B4 移动吗?(在我们的情况下,这两个单元格的预期奖励最大,为 -14)。

从 B3 单元格出发的最优行动

从 B3 单元格出发的最优行动将导致 A3 或 B4,那里的预期奖励达到最大值。

这个想法很有道理,因为位于 A3 或 B4 会让代理有机会在一步之内完成迷宫。因此,我们可以将这条转移规则纳入 B3 的新策略中。然而,总是通过这种方式最大化预期奖励是否总是最优的呢?

确实,贪婪地转移到预期奖励最大的动作所对应的状态,会导致更好的策略

让我们继续这个例子,对所有迷宫状态执行相同的程序:

收敛的 V 函数及其对应的贪婪策略

收敛的 V 函数及其对应的贪婪策略。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

因此,我们得到了一个比旧策略更好的新策略。顺便说一下,我们的发现可以推广到其他问题,通过 策略改进定理,它在强化学习中起着至关重要的作用。

策略改进定理

表述

来自 Sutton 和 Barto 的书 的表述简洁地描述了这个定理:

假设 (\pi) 和 (\pi’) 是任意一对确定性策略,使得对于所有 (s \in S),

q π ( s , π ′ ( s ) ) ≥ v π ( s ) q_{\pi}(s, \pi'(s)) \geq v_{\pi}(s) qπ(s,π(s))vπ(s)

来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

那么策略 (\pi’) 必须至少和 (\pi) 一样好,或者更好。也就是说,它必须从所有状态 (s \in S) 获得更大或相等的预期回报:

v π ′ ( s ) ≥ v π ( s ) v_{\pi'}(s) \geq v_{\pi}(s) vπ(s)vπ(s)

来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

逻辑

为了理解定理的表述,假设我们有一个环境,并且我们已经计算了该环境下的 V 函数和 Q 函数,这些函数是根据策略 (\pi) 评估的。对于这个环境,我们将创建另一个策略 (\pi’)。这个策略将与 (\pi) 完全相同,唯一的区别是对于每个状态,它会选择导致相同或更大回报的动作。那么定理保证,策略 (\pi’) 下的 V 函数将比策略 (\pi) 下的 V 函数更好。

通过策略改进定理,我们总是可以通过 贪婪地 选择当前策略下每个状态的最大回报动作来推导出更好的策略。

策略迭代

给定任意初始策略 (\pi),我们可以计算它的 V 函数。这个 V 函数可以用来改进策略到 (\pi’)。有了这个策略 (\pi’),我们可以计算它的 V’ 函数。这个过程可以重复多次,以迭代地产生更好的策略和价值函数。

在有限状态的情况下,这个算法(称为 策略迭代)最终会收敛到最优策略和最优价值函数。

策略评估(E)和策略改进(I)之间的迭代交替

策略评估(E)和策略改进(I)之间的迭代交替。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

如果我们对迷宫示例应用策略迭代算法,那么最优的 V 函数和策略将如下所示:在这里插入图片描述

迷宫示例的最优 V 函数和策略。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

在这个设置中,通过获得最优的 V 函数,我们可以轻松估计根据最优策略到达终止状态所需的步数。

这个例子有趣的地方在于,我们只需要两次策略迭代就可以从头开始获得这些值(我们可以注意到,图片中的最优策略与我们在更新到相应 V 函数之前完全相同)。在某些情况下,策略迭代算法只需要很少几次迭代就可以收敛。
更复杂迷宫环境的最优 V 函数和策略

更复杂迷宫环境的最优 V 函数和策略。

价值迭代

尽管原始的策略迭代算法可以用来找到最优策略,但它可能会很慢,主要是因为策略评估步骤中需要进行多次扫描。此外,完全收敛到精确的 V 函数可能需要很多次扫描。

此外,有时并不需要获得精确的 v 值就可以产生更好的策略。前面的例子很好地证明了这一点:与其进行多次扫描,我们其实只需要进行 (k = 3) 次扫描,然后根据获得的 V 函数近似值构建策略。这个策略将与我们在 V 函数收敛后计算出的策略完全相同。

前三次迭代的 V 函数和策略评估

前几次迭代的 V 函数和策略评估。我们可以看到,从第三次迭代开始,策略不再改变。这个例子表明,在某些情况下,没有必要运行策略迭代的所有迭代。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

一般来说,是否可以在某个时刻停止策略评估算法呢?事实证明,答案是可以的!而且,甚至可以在策略评估的每一步中只进行一次扫描,结果仍然会收敛到最优策略。这种描述的算法称为 价值迭代

我们不会研究这个算法的证明。然而,我们可以注意到,策略评估和策略改进是两个非常相似的过程:它们都使用贝尔曼方程,唯一的区别是策略改进会取 max 操作以产生更好的动作。

通过迭代地进行一次策略评估扫描和一次策略改进扫描,我们可以更快地收敛到最优值。实际上,一旦连续 V 函数之间的差异变得微不足道,我们就可以停止算法。

异步价值迭代

在某些情况下,每次价值迭代步骤中只进行一次扫描可能会有问题,特别是当状态数 (|S|) 很大时。为了克服这一点,可以使用 异步 版本的算法:不是在整个扫描中系统地更新所有状态,而是 只更新一部分状态值,以任意顺序就地更新。此外,某些状态可以在其他状态更新之前被多次更新。

然而,最终所有状态都必须被更新,以便算法能够收敛。根据理论,所有状态必须被更新无限多次才能实现收敛,但在实践中,这个方面通常被忽略,因为我们并不总是需要获得 100% 最优的策略。

异步价值迭代存在不同的实现方式。在实际问题中,它们使得在算法的速度和准确性之间高效地进行权衡成为可能。

最简单的异步版本之一是:在策略评估过程中每次只更新一个状态。

广义策略迭代

我们已经研究了策略迭代算法。它的思想可以用来指代强化学习中的一个更广泛的术语,称为 广义策略迭代(GPI)

GPI 通过独立交替进行策略评估和策略改进过程来寻找最优策略。

几乎所有强化学习算法都可以归类为 GPI。

Sutton 和 Barto 提供了一个简化的几何图形,直观地解释了 GPI 的工作原理。假设一个二维平面,每个点代表一个价值函数和策略的组合。然后我们画两条线:

  • 第一条线包含对应于环境的不同 V 函数的点。
  • 第二条线代表与相应 V 函数相关的贪婪策略的集合。

策略改进向最优性点的几何可视化

策略改进向最优性点的几何可视化。图片由作者改编,来源:《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

每次我们为当前 V 函数计算一个贪婪策略时,我们都会更接近策略线,同时远离 V 函数线。这是合理的,因为对于新计算出的策略,之前的 V 函数不再适用。另一方面,每次我们执行策略评估时,我们都会向 V 函数线上的点的投影移动,从而远离策略线:对于新估计的 V 函数,当前策略不再是最优的。整个过程会重复进行。

随着这两个过程交替进行,当前的 V 函数和策略会逐渐改进,最终在某个时刻,它们会达到一个最优性点,这个点代表 V 函数线和策略线的交点。

结论

在本文中,我们探讨了策略评估和策略改进背后的主要思想。这两个算法的美妙之处在于它们能够相互协作以达到最优状态。这种方法只适用于完美环境中,即代理在所有状态和动作下的转移概率都是已知的。尽管有这个限制,许多其他强化学习算法仍然将 GPI 方法作为寻找最优策略的基础构建块。

对于具有大量状态的环境,可以应用多种启发式方法来加速收敛速度,其中一种方法包括在策略评估步骤中进行异步更新。由于大多数强化学习算法需要大量的计算资源,这种技术变得非常有用,它允许在速度和准确性之间进行有效的权衡。

资源

  • 《强化学习:导论》第二版 | Richard S. Sutton 和 Andrew G. Barto

相关文章:

  • zabbix 重置登录密码
  • Android Compose 层叠布局(ZStack、Surface)源码深度剖析(14)
  • Webug4.0靶场通关笔记11- 第15关任意文件下载与第16关MySQL配置文件下载
  • 力扣每日一题 ​838. 推多米诺​
  • VS调试技巧
  • Ubuntu 24.04 完整Docker安装指南:从零配置到实战命令大全
  • 【2025软考高级架构师】——案例分析总结(13)
  • 学习黑客分析案例
  • 基于stm32的四旋翼飞行器:MPU6050讲解 · 上(参数读取)
  • C语言中,sizeof关键字(详细介绍)
  • java Servlet Session 本身局限性解决方案
  • 【libuv】基于libuv的exe链接错误
  • Kubernetes(k8s)学习笔记(四)--入门基本操作
  • AI 采用金字塔(Sohn‘s AI Adoption Pyramid)
  • Linux操作系统从入门到实战(五)详细讲解Linux权限概念
  • Python Django基于小波变换的数字水印技术实现系统【附源码、文档说明】
  • Docker —— 技术架构的演进
  • Linux实验课二(重点:动态链接库,makefile使用)
  • 经典算法 求解台阶问题
  • 【RocketMQ NameServer】- NettyEventExecutor 处理 Netty 事件
  • 国铁集团:5月4日全国铁路预计发送旅客2040万人次
  • 五一假期前三日多景区客流刷新纪录,演艺、古镇、山水都很火
  • “仿佛一场追星粉丝会”,老铺黄金完成国内头部商业中心全覆盖,品牌化后下一步怎么走?
  • 五一期间全国高速日均流量6200万辆,同比增长8.1%
  • 金砖国家外长会晤落幕,外交部:发出了反对单边霸凌行径的“金砖声音”
  • 西夏文残碑等文物来沪,见证一段神秘灿烂的历史