Policy Gradient and Advantage Estimation

一、策略梯度推导 (Policy Gradient derivation)
策略优化的目标是找到一组参数
目标函数
我们的目标是最大化期望的累积奖励:
我们将一个状态-动作序列(即轨迹)表示为
目标函数可以写成对所有可能轨迹的期望:
其中
似然比策略梯度 (Likelihood Ratio Policy Gradient)
为了通过梯度上升来优化参数
- 对目标函数求导:
- 将梯度算子移入求和号内:
- 应用 "log-derivative trick" (即
): - 重新整理:
- 将分数形式转换为对数梯度形式:
这个最终的表达式 是梯度的一个期望形式 。
梯度估计
在实践中,我们无法遍历所有可能的轨迹。因此,我们通过从当前策略
这个估计是无偏的,即
直观理解
策略梯度的直观含义是:
- 对于回报
为正的轨迹,我们增大概率 ,即增大 。 - 对于回报
为负的轨迹,我们减小概率 ,即减小 。
这种方法即使在回报函数
二、时间分解 (Temporal decomposition)
在上一步中,策略梯度是基于整条轨迹的概率
分解路径概率的对数梯度
一条轨迹
的概率是初始状态概率、所有时间步的环境转移概率和策略概率的乘积: 其中 是环境动态,与策略参数 无关,而 是我们的策略,与 相关。 对其取对数,乘积就变成了求和:
对
求梯度。由于环境动态 和初始状态概率 都不依赖于 ,它们的梯度为零。因此,梯度表达式可以简化为: 将梯度算子移入求和号内:
最终的策略梯度估计
通过将上述分解后的结果代入我们之前的梯度估计公式,我们得到了一个更实用、无需知道环境动态模型的表达式:
这个估计仍然是无偏的,并且我们完全可以根据采样的轨迹数据(状态
三、基线缩减 (Baseline subtraction)
尽管我们推导出的策略梯度估计是无偏的,但它通常具有非常高的方差,这使得训练过程不稳定且效率低下。为了解决这个问题,我们可以引入一个“基线”(Baseline)来降低方差。
引入基线
我们从轨迹的回报中减去一个基线值
只要基线
我们只需证明减去项的期望为零:
利用时间结构
一个重要的观察是:在
结合基线,梯度估计器可以写成:
这里的基线
基线的选择
选择一个好的基线对于有效降低方差至关重要。常见的选择有:
- 常数基线:
- 最优常数基线:
。 - 时变基线:
。 - 状态相关的期望回报 (价值函数): 一个非常有效且常用的基线是状态价值函数
。 使用价值函数作为基线,意味着我们根据一个动作的回报比当前状态的期望回报好多少,来成比例地增加该动作的对数概率。这时, 被称为优势函数 (Advantage Function)。
四、价值函数估计 (Value function estimation)
为了使用状态价值函数
1. 蒙特卡洛估计 (Monte Carlo Estimation)
这种方法使用完整的轨迹来获取回报的经验样本作为
- 步骤:
- 使用当前策略
收集一批轨迹 。 - 对于每条轨迹中的每一个时间步
,计算从该点开始的实际累积回报(reward-to-go): 。 - 通过最小化预测值
与实际回报之间的均方误差来更新参数 。
- 使用当前策略
- 优化目标:
2. 自举法/时序差分估计 (Bootstrap Estimation / TD Estimation)
这种方法不依赖于完整的轨迹,而是使用贝尔曼方程,通过下一个状态的价值估计来更新当前状态的价值。这也被称为“拟合V迭代”(Fitted V iteration)。
贝尔曼方程:
步骤:
- 使用当前策略收集转换样本数据
(当前状态,动作,下一状态,奖励)。 - 使用“TD目标值”
作为当前状态价值 的学习目标。这里的 是用旧参数计算的下一状态的价值估计。 - 通过最小化“TD误差”
的平方来更新参数 。
- 使用当前策略收集转换样本数据
优化目标:
(这里的 是一个正则化项系数,防止更新步长过大)
五、优势函数估计 (Advantage Estimation (A2C/A3C/GAE))
策略梯度更新的核心是优势函数
这些方法通过使用一个“评论家”(Critic,即价值函数
1. 通过函数逼近降低方差
我们可以用不同的方式来估计Q值,从而得到不同偏差和方差的优势函数估计。
- 1步估计:
- 2步估计:
- k步估计:
- 蒙特卡洛估计 (无穷步):
2. A2C / A3C (优势行动家-评论家)
异步优势行动家-评论家(Asynchronous Advantage Actor-Critic)算法通常采用k步估计中的一种来计算目标Q值(例如使用5步回报)。这是一种在偏差(使用函数逼近
3. GAE (泛化优势估计)
泛化优势估计(Generalized Advantage Estimation)通过引入一个额外的参数
- GAE是所有k步回报的
指数加权平均。 - 这个思想与 TD(lambda) 和资格迹(eligibility traces)有关。
使用A3C或GAE的策略梯度算法流程
- 初始化策略网络
和价值网络 。 - 循环以下步骤:
- 收集数据: 在环境中执行当前策略,收集转换数据
。 - 计算优势函数: 使用收集的数据和当前价值网络
计算Q值的估计 (例如,使用k步回报或GAE),并由此得到优势函数估计 。 - 更新价值网络: 通过最小化预测值
与目标值 之间的误差来更新评论家(价值网络)的参数 。 - 更新策略网络: 使用计算出的优势函数估计
来更新行动家(策略网络)的参数 :
- 收集数据: 在环境中执行当前策略,收集转换数据
- 标题: Policy Gradient and Advantage Estimation
- 作者: Felix Christian
- 创建于 : 2025-07-01 11:57:05
- 更新于 : 2025-07-14 01:03:34
- 链接: https://felixchristian.top/2025/07/01/18-DeepRL_lecture3/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。