跳转至

2026 年

【LLM 对齐系列】(五):Actor-Critic 架构与优势函数

上一篇文章中,我们介绍了 REINFORCE 算法——策略梯度定理的最简实现。REINFORCE 使用蒙特卡洛回报 \(G_t\) 作为学习信号,因此通常需要先采样完整轨迹,才能在时刻 \(t\) 得到对应的回报估计,这会带来较高的采样成本和较大的方差。

针对 REINFORCE 需要完整轨迹才能得到回报信号、从而带来信号延迟和高方差的问题,Actor-Critic 的核心改进是引入 Critic(价值函数近似器),用模型去估计 \(V_\pi(s)\)\(Q_\pi(s,a)\),并结合一步回报对价值进行递推估计,从而提供更及时的学习信号,而不必总是等到整条轨迹结束。进一步地,为了降低策略梯度方差,可以在更新中引入基线(Baseline);当使用价值函数 \(V(s)\) 作为基线并以优势函数进行更新时,就得到 Advantage Actor-Critic(A2C)。

本文作为 LLM 对齐系列的第五篇,将介绍价值函数、优势函数以及 Actor-Critic 架构的工作原理。这些概念是对 REINFORCE 的直接改进,更是理解 TRPO、PPO 等高级算法的必要基础。

cover

【LLM 对齐系列】(四):REINFORCE 算法:策略梯度的最简实现

上一篇文章中,我们推导出了策略梯度定理,它告诉我们如何计算目标函数的梯度,从而指导智能体不断进化。我们该如何将这个包含期望的梯度公式,转化为可以一行行写出的代码呢?本文作为 LLM 对齐系列的第四篇,将介绍策略梯度定理的一个算法实现:REINFORCE 算法。

REINFORCE 算法由 Ronald J. Williams 在 1992 年提出,是最简单、最直接的策略梯度算法。它的核心思想可以用一句话概括:通过采样轨迹来估计梯度,然后更新策略。理解 REINFORCE 是理解后续高级算法(如 PPO、GRPO)的基础。

cover

Python @overload 装饰器约束函数签名

Python 中的 @overload 装饰器用于向类型检查器声明:同一函数拥有不同的参数和返回值类型组合。其核心作用是让类型检查器能够根据调用时的实际参数值,推断出更精确的返回类型,从而避免不必要的类型断言或空值检查。它仅作用于静态类型分析阶段,不影响运行时行为。

本文介绍了 @overload 的使用动机、正确写法及类型检查效果对比。

cover