REINFORCE减去基线以后:梯度均值不变,方差为什么反而可能更大

47分钟前 2阅读

策略梯度实现里常出现“奖励减去基线”。这个减法允许改变样本更新的波动,同时保留想估计的梯度,但前提和数值效果要分开检查。基线满足无偏条件,并不代表它一定降低方差。下面只研究一个单状态、执行一次动作就结束的任务,让所有可能结果都能写在纸上。

REINFORCE减去基线以后:梯度均值不变,方差为什么反而可能更大

AI生成的概念示意图,展示共享参考线与两条动作路径;不是实际产品、训练界面或准确数值图。

先直接求出真正要估计的梯度

策略以概率p选择动作甲,以1−p选择乙。甲得到固定奖励4,乙得到0。用logit参数θ控制p,即p=1/(1+exp(−θ))。现在取p=1/4,对应θ=−ln3。期望奖励J=4p,所以对θ的真实导数为4p(1−p)=3/4。后面的各种随机估计,都要与这个0.75比较。

REINFORCE使用奖励乘以对数概率的导数。选中甲时,∂log p/∂θ=1−p=0.75;选中乙时,∂log(1−p)/∂θ=−p=−0.25。这里正负号来自策略概率的变化,不是人为给失败动作加惩罚。

不减基线时,一次梯度读数有两种:甲给出4×0.75=3,概率为1/4;乙给出0,概率为3/4。均值为0.75,方差为(1/4)×(3−0.75)²+(3/4)×(0−0.75)²=1.6875。单次读数甚至从不等于真实梯度,但仍是无偏估计。

同一条参考线,可以让两次读数靠近或远离

减去常数b后,甲的读数变为(4−b)×0.75,乙变为(0−b)×(−0.25)。两个读数的加权平均始终为0.75,因为b乘上的平均score为(1/4)×0.75+(3/4)×(−0.25)=0。这就是本例中基线不改期望的完整原因。

若取平均奖励作为基线,b=J=1,两个读数为2.25和0.25。均值仍为0.75,方差降到0.75。但平均奖励并非这里的最优常数:取b=3,两个动作都给出0.75,方差直接变为零。这是确定奖励、单参数小例的特殊结果,不能期待一般任务都能找到零方差基线。

再取一个很差的基线b=10,两个读数为−4.5与2.5。加权平均仍为0.75,方差却升到9.1875,比不减基线还大。只测试均值正确,无法发现这个基线造成的额外训练噪声;只看到某一次梯度变小,也不足以判断整体方差。

对这个标量梯度,最小化E[(R−b)²s²]即可得到最优常数b*=E[Rs²]/E[s²],其中s是score。代入本例,分子0.5625,分母0.1875,结果为3。score的平方为不同动作赋予了不同权重,因此最优值不必等于普通平均奖励。多参数模型还要先说明最小化哪种方差标量。

动作相关的“完美预测”会把信号一并删掉

假如基线在看见动作后取其奖励:甲取4,乙取0,那么每次R−b都为零,梯度估计永远为零。它确实消除了波动,却也消除了真实的0.75梯度。动作无关条件不能用“基线预测得很准”替代。

这里的条件是:给定当前状态,基线不依赖这次抽中的动作;在一般任务里,它当然可以随状态变化。一个基线若使用同批样本的奖励均值,也可能通过自身那条样本间接依赖所选动作,不能仅凭变量名叫baseline就套用无偏论证。留一均值、独立数据或专门修正各有条件,需要单独推导。

另一个边界出现在自动微分。若策略与价值预测共享参数,构造策略损失−logπ(a)×(R−b)时,通常应把优势项当作固定系数,停止从这一项穿过b的梯度。否则额外求导会加入logπ(a)∇b,已经不再是本文核验的估计器。价值模型的训练损失可以另算,并明确如何合并梯度。

用AI生成测试之前,先提供这张答案表

让AI分别实现两条独立路线:一条枚举甲乙,对各自梯度按策略概率加权;另一条直接对J(θ)=4σ(θ)作解析求导或中心差分。不要用同一段score函数同时充当被测实现与标准答案,否则同一个符号错误可能在两边互相遮掩。

测试至少包含b=0、1、3、10四组读数和方差,再增加动作相关b=R的失败对照。若使用随机采样验证,记录样本数和实际甲乙次数;有限样本平均不必恰好等于0.75。确定性枚举用于查实现,采样曲线用于观察波动,两者不应混为一种验收。

实际报告还需注明梯度针对θ还是p。若直接以p为参数,score和梯度尺度都会变化,最优常数的推导也要按新参数重做。把“基线取多少”与参数化、奖励范围及状态条件一起记录,才有可能复现实验中的方差变化。

资料核对日期:2026年10月3日。数值均为原创教学设定,使用本地独立程序复算;未进行真实模型训练或生产性能测试。

参考资料

OpenAI Spinning Up:策略梯度与基线


文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。