卷 VI · 上场CH 24深度 24/24

跑不出来的时候,先看这张表

最后一章不讲新东西,只把前面二十三章折成一张能用的表,外加三个你应该按顺序问自己的问题。

排障表三个问题全书收束

那张表

为什么「奖励层」排第一

这是这本书最想留给你的一条实践判断,值得单独说:

◆ 两种失败,一种会喊,一种不会

算法层的毛病会喊。NaN、发散、报错、Q 值单调涨到天上去——这些都在数值上留下痕迹,你盯着曲线就能发现。

奖励层的毛病不喊。损失在降,分数在涨,曲线漂亮得能直接放进论文——只有行为是错的

第 20 章那个「当场趴下刷姿态分」的小人,训练日志是这样的:最好分从第 3 代起稳定在 5.140,群体均值也稳定在 5.140,教科书级别的收敛曲线。前进距离一直是 0.000 米。

而我当时的第一反应是去调学习率。那是完全查错了层。

所以排查顺序应该反过来:先查那个不会喊的,再查那个会喊的。因为会喊的那个,你不查它也会自己找上你。

三个问题

如果这张表太长记不住,就记这三个问题。按顺序问,绝大多数事故会当场现形。

① 它真的能拿到奖励吗

最容易被跳过的一步,也是最便宜的一步。

# 五分钟,能省你几天的算力
hits = 0
for ep in range(1000):
    s, _ = env.reset()
    total = 0
    while True:
        s, r, term, trunc, _ = env.step(env.action_space.sample())  # 纯随机
        total += r
        if term or trunc: break
    if total > 0: hits += 1
print(f"随机策略 1000 局里拿到正奖励 {hits} 次")

如果是 0 次,别开训。先解决探索问题——课程学习、几条人类演示、势函数塑形,随便哪个都行,但必须先解决。(第 21 章)

② 它拿到的是我想给的那个吗

去看录像。

这一条没有替代品。奖励黑客在数值上是完美的——目标函数确实被最大化了,而且往往比正常行为最大化得更彻底、收敛得更快。

唯一的检测手段是把它渲染出来看一眼。三十秒,能省你三天。(第 20 章)

③ 有没有一种更省事的活法能拿更多分

这一问是唯一一个你必须替它想的——因为它一定会想到。

逐项过一遍你的奖励函数,问:这一项能被无限刷吗?特别警惕这三类写法:

  • 只看某一时刻的状态 → 改成按时间积分(第 20 章那个 bug)
  • 奖励某个可逆的状态变化(靠近、拿起、进入某区域)→ 改成势函数形式 γΦ(s') − Φ(s)
  • 用一个能无限重复的事件计数(撞到补给、碰到球)→ 加冷却,或者每个只算一次

全书,一页

一句话
01「AI 自己学会了」里,AI 做搜索,你做打分
02五个词描述完整个领域,其中只有奖励是你写的
03纯贪心必然完蛋,因为它没有机会发现自己错了
04探索该做多少,取决于你还剩多少局
05MDP 五样东西,两样是你写的,一样你永远拿不到
06γ 不是精度,是你替 agent 决定的耐心
07价值从终点往回一圈圈长出来(与 AIMA 逐位一致)
08贝尔曼方程只有一个加号:左边眼前,右边以后
09策略比价值先定下来,价值只是中间品
10不知道概率?走一万次取平均。代价:只学得会走过的地方
11拿估计更新估计,就不用等一局结束
12「不知道规则」和「学不到最优」是两回事
13SARSA 知道自己会犯错,所以离悬崖远一点
14表格装不下不是因为硬盘不够,是它学不会「相似」
15DQN 五个零件里只有一个是深度学习
16致命三角:奖励全为 0 也能炸到 10⁶
17不学价值直接学策略,绕开 max 就绕开了「动作必须可枚举」
18相信这批数据,但只相信一步之内
19五行 reward,五种生物,物理常数一个都没改
20它没有作弊,是你的规格写漏了
21用塑形的训练,用稀疏的验收;验收的尺子不能进训练
22奖励模型不是「什么是好回答」,是「标注员倾向于选哪个」
23造会走路的小人,需要的是一行写对了的 reward
24先查不会喊的那一层

最后

这本书的主线是两句话,现在再念一遍:

◆ 主线

你写的从来不是策略,是打分器。

而它会精确地最大化你写下的东西——不是你想要的东西。

前十八章那些算法会过时。DQN 已经很少有人用了,PPO 迟早也会被换掉,今天的 SOTA 五年后大概率只剩历史意义。

但那两句话不会过时。因为它们说的不是某个算法的性质,是「用一个数字去表达一个意图」这件事本身的性质

而这件事的适用范围,比强化学习大得多:

  • 你给团队定的 KPI,和团队实际会做的事
  • 推荐算法优化的点击率,和用户实际想要的内容
  • 游戏里的日常任务奖励,和「玩家玩得开心」
  • 考试分数,和「学会了」

每一条都是同一个结构:一个说不清楚的真实目标,一个可度量的代理指标,和一个会精确最大化后者的优化器。

经济学管这个叫古德哈特定律。强化学习只是把它加速了几百万倍——人类员工优化 KPI 要几个月,agent 几分钟就能把你的奖励函数榨干,然后把结果摆在你面前。

所以这本书最后想留下的,是一个习惯,而不是一套知识:

每次你写下一个「什么算好」的定义之后,停三秒,问一句:有没有一种更省事的活法,能拿到更高的分?

如果有,那它一定会找到。不是因为它坏,是因为它在做你让它做的事。

↩ 最后一次回到那个视频

那个小人还在屏幕上跑。

你现在知道它抽搐的时候在探索,摔倒的时候在学习,站起来的那一刻是标准差收缩到了某个值。

你也知道,它跑成什么样,在作者敲下那一行 reward 的时候就已经决定了——只是作者自己当时也不一定看得出来。

去写你自己那一行吧。然后记得看录像。