返回专辑
·Johan·4 分钟阅读

奖励塑形:势函数 shaping 为何相对安全

非势函数的额外 reward 可能改变最优策略;Ng et al. 的 potential-based shaping 在理论上保持最优策略不变。

奖励塑形:势函数 shaping 为何相对安全

1. Shaped return 很高,task success 为零

Reach 任务只有到达给加一、其余为零时,PPO 可能要数百万步才有信号。加 shaping「离目标越近 reward 越高」能加速,但 agent 可能学会在目标附近晃而不完成——有一次我在 reach 里加了非势函数的「距离越近分越高」,agent 在目标附近高频抖动刷距离积分,video 一看就懂。Shaped return 很高,eval 用 pure task metric 却显示没进步。Shaping 系数过大时,task sparse reward 在总 return 里占比太小,eval 用 pure task metric 会显示没进步,尽管 shaped return 很高。

2. Potential-based shaping 机制

Potential-based shaping 形式为 F(s,s') 等于 gamma 乘势函数(s') 减势函数(s),总回报加 F 后最优策略不变(在折扣 MDP 下)。Reach 任务常取势函数为负的末端执行器到目标距离或负平方距离,给出「靠近目标」的稠密信号,且与最优性一致——前提是势函数设计合理、可计算。Ng et al. potential-based 保证 optimal policy,不保证 fast convergence——仍要 monitor task success。非势函数 shaping(固定每步负零点零一、碰撞负十)会改变最优策略,但仍常用;要接受「最优策略变了」并靠 eval 验证行为可接受。

3. 工程契约

我通常把 shaping 写在 RewardWrapper 里,和 task reward 分开计数,TensorBoard 同时 log task_return 和 shaped_return。Eval 时可以关掉 wrapper 的 shaping 项,只看真实任务指标。势函数若依赖 goal 距离,要保证 goal 在 obs 里可解析,否则 HER 和 shaping 会打架。Shaping 改动走 review:每项新 reward 项回答「最优策略变了吗」。Potential 梯度若在不连续处跳变(例如 collision 边界),shaping reward spike,policy 抖动。Reward 版本写进 git 和日志。改 shaping 后旧 checkpoint 作废。

4. 势函数怎么选与 hacking 边界

Reach 任务常取负距离或负平方距离。Potential-based 保证最优策略不变,但 次优收敛速度 仍取决于势函数是否平滑、是否和多目标冲突。碰撞 penalty 若不是势函数形式,会改变最优策略——有时是故意的(安全优先)。改成 potential-based 后,同样训练步数终局成功率往往更稳。Shaping 故意改目标;hacking 是错误指定下的非预期最优。Multi-objective weighted sum 权重 scan 有时 reveal「agent 其实在 optimize 次要项」。

5. 案例:抖动刷距离

某 reach 任务加非势函数距离项,agent 在目标附近高频抖动刷距离积分。改成 potential-based 后,同样步数终局成功率更稳。关掉 shaping 只留 task reward 跑 eval,看是否仍完成任务。对比 random policy 在 shaped vs unshaped 下的 return 量级。视频回放确认行为不是「刷 shaping 漏洞」。Shaping 移除实验(train with, eval without)应是 release checklist 一项。

6. 与 HER 和 eval 对齐

势函数依赖 goal 距离时,goal 须在 obs 里可解析,否则 HER 和 shaping 会打架。Shaping 移除实验应是 release checklist 一项。势函数项标注 Φ 公式。Eval 用 pure task reward,train 用 shaped reward——指标要对齐定义。Eval 用 pure task metric,train 用 shaped reward——指标要对齐定义。关掉 shaping 只留 task reward 跑 eval,看是否仍完成任务。

7. 发布清单里的塑形移除实验

训练用塑形、评估不用塑形——应是发布 checklist 一项。势函数梯度在不连续处跳变(例如碰撞边界)会导致塑形回报尖峰、策略抖动。多目标加权和权重扫描有时揭示「智能体其实在优化次要项」。非势函数碰撞惩罚会改变最优策略——有时是故意的(安全优先),要在文档里注明。改塑形后旧检查点作废。TensorBoard 同时记录任务回报与塑形回报;评估时关掉塑形项,只看真实任务指标。Reach 里改成势函数塑形后,同样步数终局成功率往往更稳。

8. 验收

  • 关掉 shaping 只留 task reward 跑 eval,看是否仍完成任务。
  • 对比 random policy 在 shaped vs unshaped 下的 return 量级。
  • Video 回放确认行为不是「刷 shaping 漏洞」。
  • TensorBoard 同时 log task_return 和 shaped_return。
  • 势函数项标注 Φ 公式;非势函数 penalty 注明「最优策略会变」。

Shaping 是加速信号,不是替代 task reward。Potential-based 保证最优策略不变,但 eval 必须只看 task metric——shaped return 高不等于任务完成。

← 全部文章

johan's blog