> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 强化学习算法全景
- URL: https://www.hubwiz.com/blog/reinforcement-learning-algorithmic-landscape/
- Published: 2025-06-13T22:55:32.000Z
- Updated: 2025-06-13T22:55:32.000Z
- Description: 强化学习是机器学习的一个分支，近年来作为一种在不同应用领域中高效获取技能的方法正迅速获得关注。在这篇文章中，我们将提供一个全面的概述，既提供高层次的视角，又详细探讨底层数学推导和算法的具体内容。
- Author: admin
- Tags: MODEL-ZOO, REINFORCEMENT LEARNING, #Import 2026-10-14 14:41

强化学习是机器学习的一个分支，近年来作为一种在不同应用领域中高效获取技能的方法正迅速获得关注。从优化广告投放到使机器人能够进行操作，以及改进大型语言模型的响应，其潜力被广泛预测。该领域涵盖了丰富的算法，包括基于模型和无模型技术、策略梯度方法以及Q学习方法。对于初学者来说，即使有监督学习的基础，这个动态的景观也可能令人望而生畏。

在这篇文章中，我们将提供一个全面的概述，既提供高层次的视角，又详细探讨底层数学推导和算法的具体内容。我们还将对所有方法在离散和连续环境中的完整基准测试结果进行展示，并提出一些未解决的问题和推荐读物供感兴趣的读者参考。

## 1、引言

强化学习（RL）是机器学习的一个分支，在其中学习是在现实环境中通过交互完成的，这种环境可以是学习得到的或手动设计的。这种通过学习所需行为（例如安全驾驶汽车或赢得国际象棋比赛）的交互性需要探索解决方案空间中的不同可能解，这反过来将导致更稳健的学习，因为它原则上可以超越人类的表现。

这种学习由称为**奖励信号** *r(s,a)* 的标量信号指导，它定义了在给定输入状态 *s* 中执行动作 *a* 的可取程度。在这方面，强化学习是一个框架，用于学习具有长期和短期特性行为的物理行为，并判断其是否是连续还是离散。

> 简而言之，RL 是一种代理模型（正在学习的演员模型）的试错学习方法，其基于这样的理念：奖励或惩罚代理的行为会增加其在未来近期内避免或重复此行为的概率。对于广告投放任务来说，这意味着鼓励那些带来更多点击的策略，而对于国际象棋游戏来说，这意味着鼓励获胜策略。

## 2、基本概念

强化学习是一种广泛使用的机器人、网络代理和游戏中行动实体的学习方法。例如在控制机械臂进行拾取和放置任务或在环境中规划移动机器人路径以到达目的地的任务中，或者如这里演示的例子，这些例子基于以下两个环境：

- `Doors`：网格世界**离散**环境，任务是在一个单元格网格内移动红色方块，通过固定的门（通道）到达特定已知的目的地单元格，如图1所示。

![](https://www.hubwiz.com/blog/content/images/2025/06/image-195.png)

图1：用于[上一篇文章](https://www.rlbyexample.net/posts/hands-on-imitation-learning/?ref=hubwiz.com)的Doors环境。

- `Walker2d`：在`dm_control`套件包中定义的标准环境之一，代表一个标准的2D**连续**基准环境，任务是教双足代理站立并以目标速度行走，如图2所示。

![](https://www.hubwiz.com/blog/content/images/2025/06/image-196.png)

![](https://www.hubwiz.com/blog/content/images/2025/06/image-197.png)

图2：来自[dm\_control](https://github.com/google-deepmind/dm%5Fcontrol?ref=hubwiz.com)环境的Walker环境（由随机动作控制）及其规格。

我们将利用这两个先前的环境来演示强化学习问题中的基本量。

## 3、马尔可夫决策过程

要将RL应用于一个问题，首先应满足**马尔可夫性质**，即系统属性定义为“当前时间步*t*的状态*s*包含预测所需动作*a*的所有必要信息，而不依赖于以前的状态”。如果一个过程满足这一标准，则可以称之为马尔可夫决策过程（MDP）。在MDP中，如图3所示，应定义以下量：

- **状态空间** *S*：一个变量空间，包含代理在环境中可能遇到的所有可能情况。这个空间可以是连续的（如在`Walker`环境中）或离散的（如在网格世界环境中）。

> 值得一提的是，这个状态变量应该仅设置为代理在部署期间可访问的值，因此当某些实际状态值未被观察时，提出了修改版本的MDP（部分可观测MDP），从而定义观察空间O（状态空间的部分子集）。例如，在教授机器人导航时的实际状态包括环境的完整地图。然而，如果机器人只能看到周围固定范围内的部分地图，那么必须通过定义观察变量来缩短状态，以便学习最优现实解决方案。

- **动作空间** A：包含所有可能动作的空间，也可以是连续的（例如定义应用于Walker机器人关节的力）或离散的（定义网格世界环境中下一个单元格）。

![](https://www.hubwiz.com/blog/content/images/2025/06/image-198.png)

- **奖励函数** *r(s,a,s′)*：它是函数 *r: S × A × S′→ R* 返回一个标量值，用于鼓励或阻止在特定状态下采取特定动作*a*。

> 例如，如果我们想让机器人行走，我们可以考虑奖励机器人的高度以及向前的速度。这些量都可以作为状态的一部分，因此通常将奖励设置为状态的函数\*r(s\_t)。在网格世界环境中，奖励可以直接根据代理是否到达目的地来条件化（稀疏信号）。但另一种可能性是直接奖励代理与目的地的距离（密集信号）。每种稀疏与密集奖励的具体差异和使用案例超出了本文综述的范围。有关更多信息，请参阅\[6\]。

- **转移概率** *P*：定义了代理在给定动作*a\_t*下从状态*s\_t*转移到状态*s\_t+1*的概率。
- **折扣因子** *γ*：用于计算回报*R*的参数，下面将解释。其值范围为\*\[0,1\]\*。
- **策略函数** *π\_θ*：定义所需行为的函数，可以是**确定性的**：每个特定输入状态只给出一个动作*π\_θ : S → A*，或者是**随机性的**：在动作空间上给出一个概率分布*π\_θ : A × S → \[0,1\]*，每次从这个分布中抽取新的随机样本时，下一个动作*a\_t*可以不同*a\_t ∼ π\_θ(s\_t)*，*θ*这里是策略参数集，在深度RL模型的情况下，*θ*将是神经网络参数。
- **初始状态s\_0** 分布 ρ：其中s\_0 ∼ ρ 定义了代理的起始状态。

除了这些量之外，这里还需要定义一些在RL中更重要的概念，如图所示：

![](https://www.hubwiz.com/blog/content/images/2025/06/image-199.png)

图3：不同的价值函数及其相互关系。

- **代理**：这是执行任务的主要演员模型。其行为由策略*π\_θ*驱动。例如，在国际象棋游戏中，代理是玩家，在导航任务中，它是四处移动的机器人。值得注意的是，*代理*和*策略*有时可以互换使用，尽管它们的意义略有不同，因为策略代表代理遵循的策略。
- **环境**：它表示代理活动的周围结构，并且根据独立模型自行演化。例如，国际象棋棋盘和棋子代表国际象棋游戏的环境，而机器人周围的环境包括重力场代表其环境。这些环境模型还有助于构建模型的奖励信号。

> 环境可以是确定性的，其中代理的每个动作都会精确地导致一个已知的下一状态s′，就像在网格世界环境中移动一样，或者它可以是随机的，其中每个动作可能会以不可预测的方式导致不同的输出，比如向机器人致动器添加随机噪声，导致略微不同的输出。在这种最后一种情况下，前面定义的转移概率P在学习策略时起着至关重要的作用。

- **轨迹** *τ = { (s\_0,a\_0) , ⋯ , (s\_N−1,a\_N−1) }.* 这是代理策略*π\_θ*在时间线上采取的一系列有序状态-动作步骤。它可以限制为*N*时间步长或无限大，所以*N → +∞*。此外，起始状态*s\_0*是从独立定义的分布*ρ*中采样的，如上所述。

> *轨迹可以在某些上下文中称为*rollout*或*episode\*。

- **回报** 也称为*收益*，是训练RL代理的关键概念，因为它定义了任务优化的目标，应最大化。它对于轨迹***τ***的计算是步骤上的折扣奖励总和：

其中*γ*是上面定义的因素。

- **优化目标**：在RL中，我们希望学习一个策略模型*π\_θ*，使其在每个轨迹上获得尽可能大的回报。换句话说，我们希望在给定策略参数*θ*下最大化回报的期望值。

如果我们定义\*J(π)\*为：

那么我们可以这样说最优策略是：

- **价值函数** *V(s\_t)*：该函数以当前状态*s\_t*为输入，并计算在遵循当前策略时未来轨迹的预期回报输出。即：

> \*在此方面，该函数可以被视为期望回报J(π)的泛化，因为它可以从任何所需的初始状态开始而不是初始状态。

- **状态-动作价值函数（Q函数）*Q\_π(s\_t,a\_t)***：该函数也是价值函数的泛化，允许从给定的状态和动作对开始，然后遵循当前策略：

如果我们将Q公式展开使用回报的折扣奖励公式，则得到：

但我们可以在期望值括号中移除第一个奖励值，因为其值在给定状态和动作时是固定的：

我们注意到这里的第二项等同于价值函数，所以我们可以说：

这个最后的方程被称为*贝尔曼方程*，在训练Q学习方法如DQN中起着关键作用。

值得注意的是，前面定义的最优策略*π\* = argmax⁡\_π J(π)也可以用Q函数表示为π\*(s) = argmax⁡\_a Q\*(s,a)*。

- **优势函数** *A(s,a)*：这是一个与特定状态下采取的特定动作相关的函数，显示该动作相对于该状态下其他可能动作的优势程度。它与价值和Q函数直接相关，如下：

> 值得注意的是，中性动作（与其他动作的期望值完全相等）将给我们一个优势值为0。一个坏的动作会导致负的优势，一个好的动作将在其优势值中表现为正值。这种归一化的值尺度使得优势函数在策略梯度训练方法中成为理想的函数，因为它可以比使用价值或Q函数（其值具有非零均值）导致更稳定的训练。

## 4、强化学习方法分类

总的来说，我们可以将强化学习方法分为*基于模型*或*无模型*：

- 在基于模型的方法中，除了策略模型外还学习环境模型。这里的优势在于，由于代理可以访问实际的环境模型，因此可以更确定地预测和规划其未来的轨迹。这可以减少达到一定学习水平所需的交互次数，与无模型方法相比。这类方法的例子包括[模型预测控制（MPC）](https://www.sciencedirect.com/science/article/abs/pii/0005109889900022?ref=hubwiz.com)，专家迭代和数据增强。
- 在无模型的方法中，模型不学习环境模型，而是与模拟环境交互。这种方法更容易设计和实施，因此是最常用的RL方法。此外，在基于模型的方法中，环境模型是近似值，因为它从轨迹中学习，因此在学习过程中引入了额外的误差。

另一个对RL方法进行分类的标准是基于其学习方法，可以是*基于价值*或*基于策略*：

- 在基于策略的方法（也称为*策略梯度*方法）中，目标是最大化策略模型*J(π)下的期望回报，但使用不同于贝尔曼的不同公式。具体来说，最大化遵循最高回报轨迹的概率，这将在下面解释。这些方法几乎总是在线策略*，意味着模型从最新的策略模型轨迹中更新自己。这是对RL方法进行分类的一个关键区别，因为它影响了通过训练旧但未完全探索的状态来探索替代解决方案的能力。这类方法的例子包括REINFORCE、Vanilla策略梯度\[3\]、TRPO\[11\] 和 PPO\[10\]。

> 基于策略的方法优化策略以直接最大化期望回报，因此它比基于价值的方法更稳定和健壮，但它需要更多的交互并且应该在线策略下学习。值得一提的是，一些基于策略的方法也会学习一个价值函数，如PPO等演员评论家方法。

- 在基于价值的方法中，间接利用之前介绍的*Q(s,a)价值函数来学习策略模型。该函数基于贝尔曼方程从保存先前探索轨迹的回放缓冲区中学习（称为目标网络的延迟副本），这使得这些方法成为离线策略*方法，如Deep Q-Network，在[DQN](https://arxiv.org/abs/1312.5602?ref=hubwiz.com)中引入。然后，最优策略将基于该函数。这类方法的例子包括[Dueling DQN](https://proceedings.mlr.press/v48/wangf16.pdf?ref=hubwiz.com)、DDPG\[7\]、TD3\[8\]、SAC\[9\] 和 Rainbow DQN\[12\]。

> 基于价值的方法并不总是保证最优收敛\[3\]，因为它优化了间接目标Q函数满足贝尔曼方程，但它比基于策略的方法需要更少的交互来学习，并且由于其离线策略学习，可以更好地探索以避免局部最小值。基于价值方法的一些其他变体包括学习附加策略模型以学习具有连续动作的任务，如DDPG\[7\]及其在TD3\[8\]和SAC\[9\]中的扩展。

![](https://www.hubwiz.com/blog/content/images/2025/06/image-200.png)

图4：最著名的基于策略梯度和基于价值的RL方法的主要公式。

在接下来的内容中，我们将探索最著名的无模型方法，包括其主要公式的推导及其实际优缺点。我们还将简要解释这些方法的一些其他变体，突出其主要逻辑，同时引用其原始论文。所有这些算法的清晰和模块化实现都可以在[CleanRL库](https://github.com/vwxyzjn/cleanrl?ref=hubwiz.com)\[4\]中找到，我们也将将其适应于基准测试部分的实验中。

## 5、基于价值的方法

最著名的基于价值的学习方法是DQN：**深度Q网络**（DQN），在[DQN](https://arxiv.org/abs/1312.5602?ref=hubwiz.com)中引入，并且其连续变体为**深度确定性策略梯度**（DDPG），在\[7\]中引入。在这两种方法中，Q网络是递归地从滚动轨迹中学习以满足贝尔曼方程。最优策略将基于该Q网络（对于DQN）和单独的策略模型（对于DDPG）。

### 5.1 DQN /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/dqn.py?ref=hubwiz.com)/

*深度Q网络*是一种算法，基于目标Q网络的滚动轨迹来估计Q函数*Q(s,a)*，目标Q网络是另一个具有延迟更新的网络，用于保持学习稳定并避免训练中的局部最小值。即，使用DQN进行训练涉及以下步骤：

- 初始化两个具有相同架构的Q网络，分别代表实际Q网络和目标Q网络，具有(state-action)输入和N个输出，其中N是离散动作空间的大小，表示每个动作的值。此外，初始化一个空的缓冲区（存储每个步骤的状态-动作-奖励-下一状态的内存结构），这可以简单地是一个特定大小的*列表*或*数组*。

> 主要任务是*Q\_target*找到延迟版本的Q模型的期望回报。

- 执行随机探索（可能遵循epsilon贪婪，其中一定比例的动作是随机的，其余动作将遵循当前Q模型）。
- 将状态-动作-奖励-下一状态保存在回放缓冲区中
- 从回放缓冲区中随机采样一批（这有助于更好的探索），并根据以下公式计算均方损失：

> 其中*d*是一个标志，指示步骤是否终止该情节，在这种情况下，期望的*Q*值将为0。此外，计算损失时应冻结*Q\_target*，因为更新仅发生在*Q*上。这种当前*Q*与期望*Q*之间的差异也称为**时间差（TD）**。

- 通过*Q*反向传播，并偶尔从*Q*更新*Q\_target*（新权重可能是当前权重和新权重的线性组合）。

### 5.2 DDPG /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/ddpg%5Fcontinuous%5Faction.py?ref=hubwiz.com)/

深度确定性策略梯度\[7\]是DQN的一种修改版本，用于处理连续动作空间的任务，如控制机械臂关节，其中指出在连续空间中提取\*max⁡\_a Q(s,a)\*的梯度很困难。因此引入了一个独立的策略模型来计算动作。DDPG的其他主要特点如下：

- 如DQN一样，*Q*模型根据贝尔曼方程使用`̀MSE`损失进行更新。不同之处在于，实际动作作为输入使用目标策略模型*aₙₑₓₜ=μ\_target(sₙₑₓₜ)*，其中*μ\_target*是目标策略模型，更新频率低于主策略模型μ。即损失为：
- 策略模型将被更新以最大化其在任何状态下的动作值。即最小化损失*−Q(s,μ(s))*，其中*Q*应冻结，*μ*不应。
- 两者*Q\_target*​和*μ\_target*将更新频率更低。
- 一些参考资料\[3\]建议在策略输出中添加高斯噪声以增强探索。
- 回放缓冲区的大小在这里是一个重要参数，因为太大的记忆会导致学习过旧经验缓慢，而太小的尺寸会导致快速收敛到次优解而缺乏足够的探索。

### 5.3 TD3 /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/td3%5Fcontinuous%5Faction.py?ref=hubwiz.com)/

双延迟深度确定性策略梯度\[8\]是由以下事实激发的：在DQN中估计Q值是有偏的，偏向较高的值，由于损失公式，这可能导致对*Q*的乐观评估。为了避免这种偏差，TD3建议添加另一个**双胞胎** *Q2*网络及其自己的目标网络 *Q2\_target​*，其中：

- 两个*Q*网络并行训练，其中仅考虑其目标网络中*Q*的最低估计值以更新两个网络，这有助于避免偏向较高*Q*值的偏差。新的损失公式为：
- 对于更新策略网络μθμθ​，仅使用第一个*Q*网络，即*loss=−Q1(s,a)*
- *Q*目标网络在这里更新频率低于DDPG（因此名称中的**延迟**）以稳定学习。

### 5.4 SAC /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/sac%5Fcontinuous%5Faction.py?ref=hubwiz.com)/

在**软演员评论家**\[7\]中，通过沿用TD3和DDPG的策略熵正则化增强了探索。也就是说，策略模型将在动作空间上产生一个分布（例如高斯分布）而不是单一的确定性值。这允许从该分布中随机采样动作，并且策略熵也可以直接优化。即，对TD3进行以下更改：

- 根据最大熵原则最大化熵，基本上说明：

> 给定定义系统已知信息的约束集，最佳表示该系统的概率分布是最大化香农熵的分布，**受限于**满足这些约束。

这种策略的高熵也将增强探索。即对于从状态*s*得出的动作分布*π(s)*，熵公式为：

这可以表述为在策略分布下的log的期望值：

这定义了将在下面的损失公式中使用的术语。

- 策略损失将包括这个熵项，这将优化两个双胞胎Q网络中较低的Q估计值（与TD3不同，后者始终使用第一个*Q1*）：

其中*α*是熵项的调节参数。

- 双胞胎*Q*损失标签也将纳入熵作为：
- 由于分布是随机的，无法通过对从策略中采样的随机样本进行反向传播。这就是为什么需要**重新参数化技巧**来计算梯度并更新网络。因此，不是在输出中使用完整的高斯分布，我们可以形成样本作为：

其中*μ*和*σ*分别是用于均值和标准差的神经网络，而***ε***是从正态分布中随机采样的变量，当我们反向传播样本时可以忽略它。

在\[3\]中，提议使用挤压高斯分布作为策略输出分布，因为它将上述采样输出通过`tanh`函数。

值得注意的是，SAC中使用单独的网络来表示标准差*σ(s)作为状态的函数，这是SAC的独特特征，而在PPO或TRPO（如下文所述）中，该值作为独立变量固定为模型的一部分。原因完全是实验性的；根据‘Spinning Up in RL’\[3\]，直接使用σ*值在SAC中效率不高。

- SAC与TD3或DDPG的另一个区别是没有目标策略网络，更新*Q*网络的下一个动作来自主策略模型*μ\_theta*。
- *α*的值可以在训练期间固定或变化，以在早期鼓励高熵探索，而在后期限制它以允许快速收敛。在CleanRL中，其初始值设置为0.2。

## 6、状态-动作-奖励-状态-动作（SARSA）

此RL方法可以简单地看作是DQN的**在线策略变体**。因为它基于价值（更新Q函数），但使用当前策略下的最后一个访问的状态-动作对，而不是像DQN那样从回放缓冲区中采样。即，它更新其Q函数如下：

### 6.1 C51（分布强化学习） /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/c51.py?ref=hubwiz.com)/

在这个分支的强化学习中，价值函数估计返回值为分布而不是单个值。论文\[13\]（称为C51）提出了贝尔曼方程的修改分布公式来学习*Q*函数。因此，不是一个*Q*值，而是返回值以多个可能值的分布形式表示。具体的数学讨论详见论文\[13\]，因此这里将跳过以保持文章范围。

值得一提的是，C51在Atari环境上的评估超过了DQN，显示出比原始DQN更好的学习效果。

### 6.2 DQN Rainbow /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/rainbow%5Fatari.py?ref=hubwiz.com)/

在2018年的**Rainbow**论文\[12\]中，提出了DQN的最佳实践框架修改是什么。这个问题的动机是因为许多DQN的修改版本已经出现，但它们结合在一起的效果未知。因此，这篇论文建议了几种经过验证的DQN算法改进作为综合RL框架（因此命名为*Rainbow*），在几个Atari环境和几种设置下证明了显著的学习速度和性能提升。具体来说，利用情节回报代替训练时间步长，显示其样本效率比最好的基线提高了5倍。以下更改构成了Rainbow框架：

**Dueling DQN**

在[Dueling DQN](https://proceedings.mlr.press/v48/wangf16.pdf?ref=hubwiz.com)中，*Q*网络由两部分组成：价值网络*V(s)和优势网络A(s,a)*，其中*Q(s,a)将找到为V(s)+A(s,a)*。这种公式相较于普通的DQN有一些优势：

- 估计每个状态的价值，将允许更好的泛化到未见过的相似状态。
- 强制所有动作在给定状态上的平均值为0，将允许更好的泛化到政策采取的动作以外的其他动作（即*max⁡\_a Q\_π(s,a)*）。

**分布DQN**

Rainbow整合了返回的分布表示，与上面提到的C51完全一致。

**Double DQN**

在更新Q网络的DQN损失中，[Hasslet等2015](https://proceedings.mlr.press/v48/wangf16.pdf?ref=hubwiz.com)指出标签将集中在给定策略（由目标网络表示）下最高价值的动作上，如下所示：

这将导致学习的Q网络的过高估计偏差。因此，该论文建议遵循实际Q网络下的最佳动作，但取其值自*Q\_target*​网络。这种修改显著减少了估计偏差并带来了更好的性能。因此，新的损失将为：

**优先经验回放（PER）**

在[Prioritized Experience Replay](https://arxiv.org/pdf/1511.05952?ref=hubwiz.com)中，指出DQN中从回放缓冲区随机采样**不是最佳采样方法**，因为有些样本在学习策略方面可能更有价值，因此应该更多地利用。

为了评估每个样本的学习潜力，[PER](https://arxiv.org/pdf/1511.05952?ref=hubwiz.com)提出了利用时间差误差，即*Q*的L1损失作为：

作为该数量的近似值。然后这些值将被归一化以定义回放缓冲区上所有样本的采样分布，根据此分布采样学习批次。或者可以根据其学习值对样本进行排序，然后其顺序将定义采样的概率。

然而，PER引入的一个问题是**偏差**，因为在采样过程中它没有反映环境状态-动作的真实分布，有些样本的概率会更高。为了解决这个问题，PER利用了一种统计方法叫做**重要性采样**，这基本上修改了缓冲区中样本的概率，使其在整个环境空间中更加均匀。即无偏的回放缓冲区（长度*L*）将每个元素的概率设置为*1/L​*。因此，我们将此概率乘以PER分布以获得修改后的新分布：

其中*b*是一个校准参数，用于定义修改的程度，\*P\_new(i)\*应在之后再次归一化以找到新的分布。

对于DQN，PRE已被证明在Atari基准上比普通DQN更具样本效率。

**Noisy Net**

在[Noisy Net](https://arxiv.org/pdf/1706.10295?ref=hubwiz.com)中，神经网络的结构不同，即权重和偏置受到受控高斯噪声的影响，作为输入本身的函数。这种噪声有助于随机化动作并导致更好的探索。

这种由均值和方差定义的高斯噪声由表示同一输入的子模块控制（状态和动作）。这将帮助调整网络训练过程中的噪声级别，因为它在频繁访问的状态中会被**忽略**，而在未探索的状态中则不会。这导致了在状态空间中新区域的有效探索。

**多步学习**

这种DQN的修改规定在贝尔曼方程中取下一*N*步的折扣奖励而不是一步，因此更新将为：

这种改变有一些优点：

- 每个样本在缓冲区中的学习效率更高，导致更好的样本效率，因为每个样本现在包含*N*步。
- 长期学习段将允许代理更快地学习，特别是在奖励延迟的环境中。
- 学习段的长度将允许在偏差和方差之间更好地平衡模型，较短的轨迹具有高方差（容易出错），而从较长轨迹学习具有更大的偏差（灵活性降低）。

此外，滚动、回放缓冲区和DQN中的奖励应相应修改以启用这种多步学习。

## 7、策略梯度方法

正如我们之前解释的，RL代理的主要目标是最大化其长期期望回报。因此，我们必须找到一个策略*π*，在生成的轨迹下期望回报*J(π\_θ​)最大化。换句话说，我们需要找到其参数集θ*，其中：

所以我们可以更新它们为：

这是应该训练的直接目标，而之前在DQN和DDPG中，我们尝试通过估计的*Q*值间接估计*θ*。然而，在RL方法的**策略梯度分支**中（我们将在以下部分回顾），这个确切目标被优化，因为它在学习稳定性方面具有优势。

然而，策略梯度方法比其基于价值的对应方法需要更多的交互来学习。

### 7.1 主优化公式（REINFORCE）

如果我们想要表达期望回报相对于策略参数的梯度，我们将其公式替换为：

这可以表示为：

但我们知道：

所以，我们可以这样说：

这个最后的公式表明我们应该最大化每个步骤的概率，基于包含该步骤的整个轨迹的回报。但这不是最优的，因为当前步骤会影响轨迹的未来部分而不是前面的部分，所以\*R(τ)*被替换为从当前时刻*t’\*到轨迹结束的截断回报（或\[3\]称为“回报到去”）：

所以对于每个由状态-动作对定义的步骤，我们需要最小化损失：

这个最后的公式是**REINFORCE**算法的损失表达式，其中一个基本的策略梯度方法。

### 7.2 Vanilla策略梯度

在\*J(π\_θ​)*的最后一个公式中，我们注意到我们可以从截断回报的总和中任意添加或减去状态的函数，仍然能够收敛。实际上，如果我们选择这个函数为价值函数*V(s)\*并从中减去，我们将能够减少学习中的方差，因为这种减法的均值为0。所以这个减法将是：

但这个“回报到去”的公式是不是让我们想起了什么？它类似于前面定义的*Q*函数。实际上，如果我们在*Q*公式中考虑*γ=1*，它就是直接等价的。如果我们利用这个注释，我们可以看到减法实际上是前面定义的优势函数*A(s,a) = Q(s,a) − V(s)*。所以目标的完整公式将是：

这个最后的公式是Vanilla策略梯度中使用的公式。这种使用优势函数的公式在更近期的策略梯度方法中持续存在，如TRPO和PPO。

这里剩下的一个问题是如何估计价值函数以计算优势。它的值实际上是通过独立模型*Vϕ​(s)估计的，该模型具有独立参数ϕ*。即使用计算出的滚动回报和价值模型输出之间的均方误差损失`MSE`。

### 7.3 PPO /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/ppo.py?ref=hubwiz.com)/ 和TRPO

通过直接利用最后的目标，我们忽略了学习策略的一个重要要求；即，模型在训练周期之间不应该经历大的梯度变化；否则，它很容易漂移到次优解并导致性能不佳。为了强制执行此条件，像**信任域策略优化（TRPO）**\[11\]或**近端策略优化（PPO）**\[10\]这样的方法通过用旧版本策略模型*pi\_theta\_k*的比率替换日志来修改此目标，如下所示：

其中*D\_kl*是旧策略参数集与新策略参数集之间的Kullback-Leibler散度，*δ*是一些阈值参数。

这个目标如何被强制执行正是PPO和TRPO方法的区别所在：

- TRPO试图近似“信任域”（因此名称），同时考虑发散约束。数学提取保证了收敛性，但实现起来比PPO更难，这是我们在这个帖子中关注的重点。
- PPO采用更简单的方法，而且在某些任务上表现甚至优于TRPO。具体来说，它可以通过在优化公式中添加惩罚来惩罚策略的大更新，或者直接在训练期间剪裁策略模型的梯度以限制变化在一定范围内。

在PPO的剪裁变体中，强制执行两个约束：

- 第一个是剪裁优化公式中的策略比率在上限和下限之间，如下所示：
- 第二个是每当检测到策略变化的大Kullback-Leibler发散值时，提前停止训练，以避免性能的灾难性下降。

在PPO中，价值损失和策略损失（加上熵损失）都被加总并作为一个综合损失反向传播，如CleanRL实现中所做的那样。

算法1显示了从\[3\]中获取的PPO-clip的详细步骤。

![](https://www.hubwiz.com/blog/content/images/2025/06/image-201.png)

图5：PPO伪代码来自[Spinning up in RL](https://spinningup.openai.com/en/latest/%5Fimages/math/e62a8971472597f4b014c2da064f636ffe365ba3.svg?ref=hubwiz.com) \[3\]。

### 7.4 PPG /[CleanRL脚本](https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/ppg%5Fprocgen.py?ref=hubwiz.com)/

在[*阶段策略梯度（PPG）*](https://arxiv.org/abs/2009.04416?ref=hubwiz.com)中，通常的演员-评论家更新类似于PPO；然而，引入了另一个*辅助评论家*模型，该模型与其策略网络共享基础模型，而主要评论家模型仍然是一个独立的网络。

这种修改有助于稳定评论家的学习，并加快交互次数；这有助于提高样本效率与PPO相比。然而，由于引入了额外的模型，更新本身可能会更慢。

## 8、其他RL领域

- **分布强化学习**：如前面在C51\[13\]中所示，分布强化学习是一个有前途的RL分支，显示出优于“非分布性”替代方法的优越性，尤其是在理解结果全谱对有效决策至关重要的场景中。本质上，它不仅仅是知道平均奖励是多少，还要知道你获得不同奖励水平的可能性有多大。
- **多智能体强化学习**：许多现实世界的场景并不是关于单一代理与静态环境交互，而是涉及多个代理——无论是协作机器人、竞争游戏玩家，甚至是自动驾驶车辆——都在同时学习并相互影响。在这种情况下，孤立地优化单个演员完全忽略了这些动态交互。这就需要针对*多智能体*情况量身定制的修改学习方法。一个多智能体RL的常见策略是[集中训练分散执行（CTDE）](https://arxiv.org/abs/1706.02275?ref=hubwiz.com)。这种方法在训练期间让所有代理一起拥有全局信息的完全访问权限，但在部署时配置它们独立执行各自的策略。这里的目标是找到所有策略的“共同最优状态”——一个点，其中没有任何代理可以通过单方面改变策略来改善其结果。这个共同状态通常在多智能体系统理论中被描述为均衡，例如前面的定义适用于纳什均衡。*多智能体RL是一个计划在未来文章中探索的主题，所以请务必关注*。
- **模仿学习和逆强化学习**：模仿学习，也称为**从演示中学习**，提供了一种RL的替代方法。而不是手动定义奖励函数，代理直接从专家演示中学习——一个人类或其他熟练代理采取的状态-动作对的数据集来训练奖励。目标是模仿专家的行为，有效地通过模仿学习策略。这对模仿现实世界行为非常有帮助，其中手动设计高效的奖励是一项非常具有挑战性的任务。模仿学习有两个主要分支：行为克隆（直接映射状态到动作）和逆强化学习（如[GAIL](https://arxiv.org/abs/1606.03476?ref=hubwiz.com)）。[这里之前的帖子](https://medium.com/data-science/hands-on-imitation-learning-from-behavior-cloning-to-multi-modal-imitation-learning-11ec0d37f4a2?ref=hubwiz.com)对此主题进行了深入探讨。确保查看。
- **元强化学习（Meta-RL）**：如果我们有一个复杂的任务，如自动驾驶，与其让代理直接在一个巨大而多样**恭喜🎉**，你成功熬过了这篇文章。这意味着你已经对强化学习中最常见的主题有了很好的理解；然而，正如你之前看到的那样，其他有趣的话题在这篇文章中还没有完全涵盖。以下推荐的阅读材料和参考文献列表可能是继续这段旅程的一个很好的起点。

---

原文链接：[The Reinforcement Learning Algorithmic Landscape](https://levelup.gitconnected.com/the-reinforcement-learning-algorithmic-landscape-577ade2cc485?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处