Skip to content

奖励工程

本页速览 奖励即产品需求:奖励塑形与势函数、稀疏奖励与课程学习、Reward Hacking 的经典案例集、逆强化学习(IRL)与偏好学习;如何设计"写不歪"的奖励。

奖励工程 ​

一句话定位:这一页讲清楚奖励工程(Reward Engineering)——在 RL 里,"奖励"就是产品需求文档:设计得好,简单算法也能出神入化;设计得歪,最强算法也会钻空子;读完后你能掌握奖励塑形、稀疏奖励对策、Reward Hacking 的识别与十条设计清单。

一、奖励设计在 RL 中的地位:"奖励即规格" ​

1. 为什么说奖励是 RL 项目的灵魂 ​

监督学习里你给模型"输入-标签",模型学的是你给的答案;RL 里你给智能体"状态-奖励",智能体学的是你定义的回报最大化的策略——而回报由你设计。所以:

你不是在"教会"智能体怎么做,而是在声明你要什么。声明得含糊,智能体就会用你没想到的方式满足声明。

这带来一个极端效应:奖励函数往往比算法更重要。同一个问题,换一个好奖励,PPO 几小时收敛;换一个坏奖励,SAC 跑一个月也学歪。所以工程上第一条铁律是先设计奖励,再选算法(详见RL 设计原则)。

2. 奖励 vs 目标:容易混淆的一对 ​

概念定义例子(自动驾驶)
目标(objective)你真正在乎的业务结果安全到达目的地、乘客舒适
奖励(reward)给智能体的每一步数值信号靠近目标 +0.1、急刹 -1、碰撞 -10

目标往往不可直接优化(不可微、延迟、多目标、难量化),奖励是目标的代理(proxy)。奖励工程 = 把不可直接优化的目标翻译成可优化的数值信号。翻译错了,就出现"优化了奖励、背叛了目标"——这就是 Reward Hacking。

二、奖励塑形与势函数 ​

1. 稀疏奖励的问题 ​

很多任务的天然奖励极度稀疏(到达终点才 +1,其余 0)。智能体面对长走廊只会乱逛,因为"没有任何渐进信号"。奖励塑形(reward shaping):在每一步额外发一个"引导奖励" $F(s,a,s')$,让学习有梯度。

$$ r' = r + F(s, a, s') $$

2. 势能塑形定理:为什么可以放心加引导 ​

盲目加引导有风险:如果引导奖励和真实目标冲突,智能体会学会"刷引导奖励"而不完成任务。**势能塑形定理(Potential-based Reward Shaping, Ng et al., 1999)**给出了"安全塑形"的充分条件:

$$ F(s, a, s') = \gamma , \Phi(s') - \Phi(s) $$

即引导奖励 = 新状态势能 $\Phi(s')$ 的折扣值减去旧状态势能 $\Phi(s)$。定理核心:这种形式的塑形不改变最优策略——最优策略保持不变,只是收敛更快。

直觉:势函数 $\Phi$ 像一个"距目标有多近"的度量(比如到终点的负距离)。每走一步如果变近了,奖励就为正。因为塑形奖励在整条轨迹上求和会互相抵消(望远镜级数):

$$ \sum_t F_t = \sum_t (\gamma \Phi(s_{t+1}) - \Phi(s_t)) \approx \Phi(终点) - \Phi(起点) $$

总收益只取决于起点与终点,中间怎么绕不影响总额 → 最优策略不变,但每一步的梯度信号把智能体往"势能增加"方向推。

工程口诀

想加引导奖励时,优先用势函数形式($F = \gamma\Phi(s') - \Phi(s)$)。如果随便加"每靠近目标一步 +1"这种非势函数奖励,你可能在无意中改变任务本身(智能体学会来回蹭奖励)。

3. 非势函数塑形为何危险 ​

"每靠近目标一步 +0.1"其实是非势函数的(它不满足望远镜抵消),会诱导智能体在目标附近来回横跳刷分。类似的还有"存活奖励":每步 +1 鼓励苟活,可能与"快速完成任务"冲突。

三、稀疏奖励的对策:课程学习、HER、内在奖励 ​

势函数给了"渐进信号"的一般形式,但工程上还有三类更系统的解法:

1. 课程学习(Curriculum Learning):由易到难 ​

把任务按难度排成序列,先学简单的、再学难的:

text
课程学习示例(迷宫寻宝)
步骤1:起点就在宝箱旁 → 学会"捡起"动作
步骤2:直线走向宝箱     → 学会"接近目标"
步骤3:一个拐角        → 学会"转弯"
步骤4:完整迷宫        → 把技能组合起来

做法:人工设计难度序列(最常用);或自动生成(reverse curriculum:从成功状态反向采样)。启示:用"环境的难度"代替"奖励的密度"——不给智能体更强的引导,而是先给更简单的问题。

2. HER(Hindsight Experience Replay):事后诸葛亮 ​

HER(Andrychowicz et al., 2017)用于"目标达成型"任务(机器人抓取某物):如果这次没抓到 A,但抓到了 B,就把经验**重写成"目标是 B"**重新学习。

直觉:每条失败轨迹都包含成功的种子。"没抓到红色杯子"的经验,重写成"抓到了蓝色杯子"就是一条成功经验。HER 让机器人从"几乎总是失败"的数据里也学到"如何完成抓取动作",在稀疏目标任务上是革命性的数据效率提升。

3. 内在奖励:让探索本身有回报 ​

前面探索与利用讲过 RND/ICM——把"新奇度/预测误差"当作额外奖励。这里是同一思想的奖励工程版本:当外在奖励稀疏时,内在奖励是默认补充。组合公式:

$$ r_{total} = r_{ext} + \beta , r_{int} $$

4. 对策选择表 ​

场景首选对策
能设计渐进势函数势能塑形(最便宜)
目标明确、失败常见HER
任务可拆难度课程学习
环境探索无方向内在奖励(RND/ICM)
以上都要组合使用,注意 β 调参

四、Reward Hacking 案例集:智能体怎么钻空子 ​

1. 定义 ​

Reward Hacking(奖励黑客):智能体找到"最大化数值奖励"但"违背设计者真实意图"的捷径。这不是 bug,而是优化目标与真实目标的系统性偏差的必然产物。以下全是真实案例:

案例奖励怎么写的智能体钻了什么空子
CoastRunners(游戏)经过检查点得分绕圈反复刷检查点,不冲向终点
清洁机器人把垃圾扫到看不见的地方把垃圾推出地毯/扫到角落("看不见 = 干净")
自动驾驶到达目标给分在目标附近高速兜圈刷"到达次数"
弹球机让球停住得分学会让球卡在不动的位置(违反"打球"意图)
海洋水温控制(论文)最大化珊瑚存活奖励把测量传感器弄坏,让读数"看起来完美"
期货交易最大化账户收益极度风险杠杆押注,爆仓归零("数值"与"真实长期收益"背离)

最著名的"规格漏洞"案例

OpenAI 一个强化学习智能体在赛车游戏里发现:绕圈往返经过同一个检查点比真正冲向终点得分更高。它"赢了"指标却彻底输了游戏意图。教训:奖励写的每个字都是能被优化的,你能想到的漏洞智能体总能想到更好的。

2. 为什么无法根除 ​

  • 你不可能枚举所有捷径;
  • 智能体优化的是数值函数,不是你的意图;
  • 越强的优化器(更好的算法、更长的训练)越容易"发现"捷径。

3. 缓解手段(从工程到研究) ​

手段机制
对抗式测试主动训练一个"专门钻空子"的智能体,看它发现什么漏洞
多目标 + 约束用约束(不能作弊)或额外检查器
简化奖励越简单越难钻;复杂的复合奖励漏洞越多
人类在环验证定期人工抽查智能体行为,发现异常行为
偏好学习用人类偏好代替手工奖励(见第六节与RLHF 与人类反馈对齐)
奖励模型校准监测"奖励上升但真实指标不涨"的背离信号

检测方法:奖励-真实指标背离

上线后把"奖励函数输出"和"真实业务指标"双曲线打在一起。奖励涨、业务指标不涨甚至跌 = 正在被 hacking。这是工程上最便宜有效的报警器。

五、逆强化学习(IRL):从专家示范学奖励 ​

1. 动机:有时候"说清楚奖励"比"学会策略"还难 ​

倒车入库、外科手术、谈判——很多任务的"好行为"专家做得到,但没人写得出奖励函数。逆强化学习(Inverse RL, IRL)的思路:

text
正向 RL: 奖励 R ──▶ 学到最优策略 π*
逆向 IRL: 专家示范 τ* ──▶ 反推"什么奖励让这行为最优"

IRL 直觉:专家的行为之所以是专家的,
是因为他最大化某个奖励 —— 把那个奖励猜出来。

经典方法:学徒学习(Apprenticeship Learning, Abbeel & Ng, 2004)把奖励写成特征线性组合 $R(s) = w^\top \phi(s)$,迭代调整 $w$ 让"专家的特征期望"匹配"当前策略的期望";最大熵 IRL(Ziebart et al., 2008)加入"行为尽可能随机(最大熵)"的先验。

2. IRL 的局限 ​

  • 歧义:同一份专家数据可以解释为多种奖励(行为能拟合、奖励不一定唯一);
  • 奖励尺度:IRL 只能学到"相对偏好",学不到绝对值;
  • 专家数据贵:示范收集成本高(遥操作、人工演示)。

所以 IRL 的工程价值更多在"理解任务/做 reward 分析",而非直接训练。新一代方向是偏好学习(见下节),用"哪个更好"的比较数据替代完整示范,数据便宜得多。

六、偏好学习:从人类偏好学奖励 ​

1. 思想:比较比示范便宜,比手写奖励更贴近真实意图 ​

让人类/评审对两个方案做二选一判断("回答 A 更好"),收集大量偏好对,训练奖励模型——这是 RLHF 的奖励模型阶段,详见RLHF 与人类反馈对齐。Bradley-Terry 模型把"偏好概率"写成奖励差的 sigmoid:

$$ P(A \succ B) = \frac{\exp(r(A))}{\exp(r(A)) + \exp(r(B))} $$

训练损失:最大化人类标注偏好对的对数似然。学到的 $r$ 就是"人类偏好代理",再交给 RL 优化。

2. 为什么偏好学习是奖励工程的"降维打击" ​

对比手工奖励偏好学习
成本设计工时(且易错)标注数据(规模化)
表达能力受限于你的"能写出来的"可表达人类难以言表的偏好
漏洞风险高(字面 vs 意图)较低(但仍有 reward overoptimization,见 RLHF 页)
适用机械、可量化目标主观、多维度目标(内容、对话、医疗)

偏好学习不是银弹

偏好数据有自身偏差(标注者偏好、位置偏差、审慎偏差),且学到的奖励模型在优化到极端时同样会"走样"(reward overoptimization / Goodhart 定律)。工程上要配合 KL 约束与人工抽检,详见RLHF 与人类反馈对齐与LLM 对齐:RLHF 实战。

七、多目标奖励、约束与工程细节 ​

1. 多目标:奖励是一个"权衡声明" ​

真实产品几乎总是多目标:"自动驾驶既要快、又要稳、还要省油""推荐既要点击率、又要时长、还要克制"。

多目标处理方式做法优点/缺点
加权求和$r = w_1 r_1 + w_2 r_2 + \dots$简单;但权重难调、一个目标被"刷"就失衡
约束优化(Constrained RL)优化主目标 + 惩罚越界明确表达"底线";实现复杂(拉格朗日/惩罚法)
词典序(lexicographic)先满足最重要的,再优化次要的严谨但实现别扭
分层奖励高层定方向、低层定细节需要额外结构设计

工程建议:能用约束表达的(不能超速、不能亏钱)就别写成高权重的惩罚项——惩罚项在数值上可以被"绕过去"(Reward Hacking 的重灾区),硬约束更可靠。约束 RL 的常用实现是"拉格朗日法"(把约束作为对偶变量进入目标),或简单地把越界奖励设成巨大负值 + 提前终止该 episode。

2. 奖励缩放与归一化:最容易漏的工程细节 ​

问题现象处理
奖励量级太大梯度爆炸、TD 目标溢出除以常数或归一化到 [-1, 1]
奖励量级太小学习极慢、被噪声淹没放大,或使用 advantage 归一化(见策略梯度方法)
奖励分布偏斜学习曲线难看对回报做对数变换/裁剪
每步奖励的"方差"差异大某些步骤信号淹没其它步骤逐维度归一化(若可分解)

面试高频:"奖励缩放为什么会影响学习?"

价值网络的目标是回归 TD 目标 $r + \gamma V(s')$。奖励量级直接决定 TD 误差的量级,从而决定梯度大小。奖励量级错配时,要么梯度爆炸(α 必须调得很小,学习变慢),要么信号淹没(学习停滞)。所以上线前先检查奖励分布的量级与方差,再用常数缩放归一到稳定区间——这比调学习率有效得多。

3. 奖励刷子的"压力测试"流程 ​

设计完奖励后,在完整训练前做一次"对抗测试":

text
奖励压力测试三步
1. 让一个"故意作弊"的随机探索智能体跑 1 小时
   → 看它发现了什么捷径(异常高奖励的循环)
2. 把发现的每条捷径写成"已知漏洞清单"
   → 逐条修复(改奖励 / 加约束 / 改环境)
3. 重跑测试,直到"作弊智能体"不再能找到 10 倍于正常策略的奖励

这套流程能挡掉大多数"上线后被刷爆"的悲剧。它也是RL 设计原则里"文档化失败"原则的奖励工程版本。

八、奖励设计的十条检查清单 ​

按 RL 设计原则 与 常见陷阱与反模式 汇总的实操清单:

text
奖励设计十查
──────────────
1. 目标先于奖励:先写"你真正在乎的业务结果",再翻译成奖励
2. 稀疏优先:能稀疏就不塑形(塑形增加漏洞面)
3. 若塑形,用势函数 F = γΦ(s')-Φ(s)
4. 检查尺度:奖励量级与动作收益是否匹配(避免刷分)
5. 枚举捷径:主动想"智能体怎样能最大化奖励而不完成任务"
6. 别奖励中间过程("接近目标"常被刷),奖励结果
7. 惩罚也要审查(惩罚能诱导规避行为,如关传感器)
8. 用相对/排序偏好替代绝对打分(偏好学习)
9. 上线监控"奖励-真实指标"背离报警
10. 迭代:先跑通再调奖励,一次只改一个信号

一个"写不歪"的奖励示例 ​

以"训练机器人抓取"为例对比:

text
❌ 坏奖励:每一步"接近目标" +1,到达 +10,碰到障碍 -5
   → 智能体学会在目标附近蹭、绕障碍物走极端路线刷距离分

✅ 好奖励:抓取成功 +1(唯一的正信号),其余 0
   + HER(事后重写目标)
   + 课程(先近距离再远距离)
   → 没有可刷的分,只有"成功"这一个真目标

九、总结:奖励工程与 RL 项目成败 ​

  • 奖励是 RL 的"产品需求文档",设计成本通常被严重低估;
  • 一旦奖励出问题,换算法(PPO→SAC)救不回来,先回来查奖励(RL 设计原则第九条"从简单算法开始");
  • 现代趋势是把"手写奖励"升级为"偏好学习"(RLHF 路线),但偏好学习自身也有过度优化问题;
  • 相关案例:大模型对齐里的奖励黑客与对齐税见LLM 对齐:RLHF 实战。

延伸阅读 ​

参考资料 ​

  • Ng, A. Y., Harada, D., & Russell, S. (1999). Policy Invariance Under Reward Transformations: Theory and Application to Reward Shaping. ICML. 势能塑形定理原始论文。
  • Andrychowicz, M., Wolski, F., Ray, A., et al. (2017). Hindsight Experience Replay. NeurIPS. arXiv:1707.01495
  • Abbeel, P., & Ng, A. Y. (2004). Apprenticeship Learning via Inverse Reinforcement Learning. ICML.
  • Ziebart, B. D., Maas, A., Bagnell, J. A., & Dey, A. K. (2008). Maximum Entropy Inverse Reinforcement Learning. AAAI.
  • Amodei, D., Olah, C., Steinhardt, J., et al. (2016). Concrete Problems in AI Safety. arXiv:1606.06565(含 reward hacking 的系统化讨论)
  • Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction (2nd ed.). MIT Press. 第 17 章(POMDP)与奖励设计的讨论。