Token Lab搜索

← RL 知识库
RL / 3 OF 8

策略梯度、基线与 Actor–Critic

理解奖励如何改变动作概率。

学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

理解机制

策略梯度提高与超越基线结果相关动作的对数概率。在标准假设下,不依赖采样动作的状态基线可降低方差,而不改变 score-function 梯度期望。Actor–Critic 学习价值估计来构造基线,也引入估计和 bootstrap 问题。

Text / 原始公式
∇J = E[∇log πθ(a|s) A(s,a)]
δₜ=rₜ₊₁+γ(1−dₜ)V(sₜ₊₁)−V(sₜ)
GAE: Âₜ=Σ(l=0..T−t−1) (γλ)^l [Π(j=0..l−1)(1−d_(t+j))] δ_(t+l)

机制图与逐步推导

从策略采样动作 → 观察奖励或回报 → 减去有效基线 → 更新 log 概率权重
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
θ双动作例子的策略 logit
σ(θ)动作 1 概率
b(s)本推导中不依赖动作的基线
  1. 动作奖励 0.8 与 0.2 时,θσθσθσθ。
  2. 求导 σθσθ。θ 时概率 0.5、期望奖励 0.5、梯度 0.15,小幅梯度上升会提高动作 1 概率。
  3. 基线在期望中抵消,因为 Σₐπππ。这要求基线不依赖采样动作。
实验检查点

θ 时将 Monte Carlo 梯度均值与精确 0.15 比较,增加样本应降低估计噪声。

LOCAL / SYNTHETIC / INTERACTIVE

改变一个变量,解释结果为什么变。

原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。

原创练习与分析

使用奖励 0.8 和 0.2 的双动作 bandit,动作 1 概率为 σ(θ)。期望奖励精确为 0.2+0.6σ(θ),导数为 0.6σ(θ)(1−σ(θ))。用多个种子比较采样梯度估计与解析基准。

依赖动作的基线通常需校正,不能随意减去一个函数就声称无偏。

负 advantage 表示动作总是不好吗?

不是。它表示在该上下文和估计器下低于基线,绝对奖励仍可能为正。

阅读依据与后续实践

PPO paper: policy-gradient background ↗
MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

使用 δ__(t+1)+γ(1−d_t)V(s_(t+1))−V(s_t),d 表示真正终止,不是采样截断。GAE 为到 T−1 的有限遮罩求和。基线不依赖动作,advantage 停止梯度;推导 ∇J 时明确折扣占用分布的归一化。

已复核公式条件、单位及算例。实现隔离一个数值机制,不训练完整策略,也不控制真实硬件。

运行前:预测一个边界情况

在 θ 用中心差分比较解析梯度 0.15。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node policy-gradient.mjs. 无需第三方运行依赖。

const solve=()=>{
const theta=0, p=1/(1+Math.exp(-theta));
return [.2+.6*p, .6*p*(1-p)];
};
const actual=solve();
const expected=[0.5,0.15];
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
参考输出——先预测再展开
[
  0.5,
  0.15
]

测试与迁移

在 θ 用中心差分比较解析梯度 0.15。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围