1. 假设与问题设定
在深入推导之前,我们首先要明确问题背景。策略梯度方法通常在 Episodic 设定下进行分析。这意味着智能体(Agent)与环境的交互由一系列独立的“回合”(Trajectory 或 Episode)构成。例如,在雅达利游戏 Pong 中,一个回合就是从游戏开始到一方得分的完整过程。
我们将一个长度为 的轨迹 定义为一连串的状态、动作和奖励:
其中:
-
从初始状态分布中采样。 -
动作 根据我们想要优化的策略 采样,其中 是策略的参数。 -
新状态 根据环境的动力学模型 产生。
我们的目标是找到最优的策略参数 ,以最大化期望的总回报(可能是带折扣的)。形式上,我们的优化目标 是:
这里的 表示期望是基于策略 生成的轨迹计算的。 是折扣因子,用于平衡短期和长期奖励。
那么,如何找到最优的 呢?答案是经典的梯度上升法:
这里的关键挑战在于如何计算目标函数关于 的梯度 。
2. 推导策略梯度的两个关键工具
在正式计算梯度之前,我们需要掌握两个重要的数学技巧。
工具一:对数导数技巧 (Log-Derivative Trick)
这个技巧的绝妙之处在于,它允许我们将梯度算子 移到期望 内部。推导如下:
通过这个技巧,计算梯度的期望值问题,转化为了计算一个包含对数概率梯度的项的期望值。这非常有用,因为它使我们能够通过采样来估计梯度。
工具二:轨迹的对数概率梯度
接下来,我们需要计算轨迹 的对数概率 关于 的梯度。首先,轨迹 出现的概率是:
取对数并求梯度:
由于初始状态分布 和环境动力学 都不依赖于策略参数 ,它们的梯度为零。因此,上式简化为:
这个结果非常重要:轨迹的对数概率梯度只与策略网络本身有关,与环境模型无关!这使得我们可以在不知道环境具体如何工作的情况下优化策略。
3. 计算原始策略梯度
现在,万事俱备。我们将以上两个工具结合起来,计算我们的目标函数 的梯度。令 代表一条轨迹的总回报(为简化,暂时忽略折扣因子 )。
这个公式就是策略梯度定理的基础形式。它告诉我们,为了增加获得高回报轨迹的概率,我们应该朝着“使得高回报轨迹的动作对数概率增加”的方向更新参数 。
然而,这个朴素的梯度估计存在一个严重问题:高方差(High Variance)。单次回合的总回报 波动性很大,导致梯度估计非常不稳定,训练过程缓慢且难以收敛。
4. 引入基线以减少方差
为了解决高方差问题,我们需要对梯度公式进行一些巧妙的变形,并引入一个基线(Baseline)。
策略梯度的等价形式
首先,一个核心思想是:在时间步 的决策,不应该受到 之前所获得的奖励的影响。这被称为因果性(Causality)。基于此,我们可以将策略梯度公式重写为一种更合理的形式。
以下是三种等价的梯度表达形式(令 ):
-
(i) 是我们刚刚推导出的原始形式。 -
(ii) 利用了因果性。在时间 获得的奖励 不可能被未来的动作 () 影响,因此 的梯度只与 的动作有关。 -
(iii) 是对 (ii) 进行代数重排的结果。这个形式最常用,其中 被称为“未来回报总和”或“Reward-to-go”。它直观地告诉我们,在时间步 更新策略时,我们只关心从此刻起能获得多少回报。
插入基线
现在我们可以在公式 (iii) 中引入一个仅依赖于状态 的基线函数 :
这个基线的作用是什么?它为什么有效?
5. 理解基线
引入基线带来了两个巨大的好处:它在不引入偏差的情况下,显著降低了方差。
为什么基线是无偏的?
我们需要证明,添加的基线项的期望为零。即证明 。由于期望的线性,我们只需证明对任意时刻 :
推导如下:
现在我们来看内部的期望项 :
因为对数概率的梯度(即得分函数)的期望恒为零,所以整个基线项的期望为零。这证明了引入基线不会改变梯度的期望值,即它是无偏的。
为什么基线能降低方差?
我们来分析梯度估计中核心项的方差:。为了最小化这个方差,我们应该如何选择 呢?
这是一个经典的最小二乘问题。要最小化 ,最优的常数 就是 的期望值 。因此,能够最大程度降低方差的最优基线 应该是:
这正是状态值函数 的定义!它表示从状态 出发,遵循策略 能获得的期望回报。
直观上,减去一个基线相当于将奖励信号中心化。如果 Reward-to-go 高于当前状态的平均水平 ,我们就鼓励这个方向;如果低于平均水平,就抑制这个方向。这使得学习信号更加清晰,从而降低了方差。
6. 折扣因子和优势函数
引入折扣因子
在实践中,我们通常使用带折扣的回报。这既有数学上的便利,也符合直觉(未来的奖励不如眼前的奖励重要)。引入折扣因子 后,梯度公式近似为:
此时,最优的基线 也就变成了折扣版本的状态值函数 。
优势函数 (Advantage Function)
让我们更深入地审视一下梯度公式中的核心部分:。
-
是对状态-动作值函数 的一次蒙特卡洛采样估计。 表示在状态 执行动作 后,遵循策略 能获得的期望回报。 -
是对状态值函数 的估计。
这两者的差值,在强化学习中有一个专门的名字:优势函数 。
优势函数的直观含义是:在状态 下,选择动作 相对于平均选择的动作有多好。
因此,我们的策略梯度最终可以写成一个极其优雅和强大的形式:
这意味着,策略梯度的学习问题,在很大程度上可以归结为如何准确地估计优势函数。像 A2C/A3C、TRPO、PPO 等现代策略梯度算法,其核心创新点之一就在于如何设计出更好的优势函数估计器。
总结
通过本文,我们从最基本的目标函数出发,一步步推导出了现代策略梯度算法的核心公式。
-
核心思想:通过梯度上升直接优化参数化的策略。 -
关键技巧:利用对数导数技巧,将问题转化为通过采样进行梯度估计。 -
核心挑战:解决朴素梯度估计的高方差问题。 -
解决方案:引入因果性(Reward-to-go)并使用基线(如值函数 )进行方差缩减。 -
最终形式:策略梯度可以优雅地表示为对数策略梯度与优势函数的乘积的期望。