🧠 第一章 AI入门:认识人工智能模型训练
📄 一句话概括

同一个算法、同一套参数:6 步任务(729 条路径)试 12000 次学会了,成功率 1.00; 20 步任务(34.9 亿条路径)试 12000 次,一次都没撞对,成功率 0.00。 卡住的不是算法,是奖励太稀疏。

📝 本节和前面几节的关系

上一节说 GPT 靠猜下一个字成功。但「猜字猜得准」不等于「会推理」。 这一节讲怎么用「只要结果对不对」这种最省事的信号,把推理能力推上去。

一、监督学习要过程,强化学习只要结果

想让模型学会一道题的解法,最直接的办法是给它看正确的解法——这叫监督学习。 每一条标注都是「第一步这样、第二步这样」。 问题是这玩意儿贵。 一道数学题的完整推导要人写十几分钟,而且很多题的解法不止一种,你标了一种,模型就只会那一种。 强化学习换个思路:不告诉它过程,只告诉它结果对不对。 模型自己试,试对了加分,试错了不加分, 让它自己去撞。 这个信号便宜到几乎不要钱——答案对不对,程序一秒就能判。 代价是模型得试很多次,而且必须撞到过正确答案,才谈得上学。

二、奖励一稀疏,试错就失灵

Demo 里做了两组对照,算法和参数完全一样,只改路径长度。 6 步、每步 3 选:一共 729 条路径,其中 1 条得分。随机撞对的概率 0.14%。 试了 12000 次,第 1959 次第一次撞对,最后成功率 1.00。 20 步、每步 3 选:一共 34.9 亿条路径,1 条得分。撞对概率 2.9e-10。 试了 12000 次,一次都没撞到,成功率停在 0.00。 为什么差别这么大?不是算法坏了,是没有奖励就没有方向。 每次尝试都是 0 分,梯度只能告诉你「刚才那条路不行」,而不告诉你「该往哪儿改」。 这个差距在真实任务上更夸张。一道高考压轴题的中间分支是天文数字,硬啃稀疏奖励,模型永远撞不到。

三、三种解法,思路是同一个:把长路拆短

思维链。 要求模型先把步骤写出来,再给答案。 20 步的大判断被拆成20 个小判断,每一步的正确率都能被单独评估。 过程奖励。 不只给最终答案打分,每一步也对一次分。 这需要额外的判别模型或者规则,成本高但信号密。 预训练打底。 先用海量文本让模型有基本判断力,再在「答案对不对」这种稀疏奖励上继续推。 这样它不至于从零开始乱撞。 真实的大模型三条都用了。 这也是为什么「从零开始纯强化学习」在工程上不成立——不是理论不行,是算力扛不住那个探索成本。 顺带说清一件事:强化学习不会让模型「知道更多事实」,它改的是「在已有的知识里怎么选路」。 所以一个知识本身有缺的模型,强化学习之后还是缺——只是答得更「像那么回事」了。

四、为什么这条路值得走

因为推理过程本身没法穷举标注。人可以标「这道题答案是多少」,但没法穷举「所有正确的推导路径」。 强化学习恰好只要前者。它让模型在「结果对」这个稀疏约束下,自己长出走法——包括人没想到的走法。 所谓「涌现」,多半来自这里。 代价也很实在:训练不稳定、对超参敏感、算力消耗大。 所以工业界的顺序永远是「先监督到及格,再强化往上推」,不会反过来。 对训练师的启示是:当你发现标注成本降不下来的时候,该问的不是「能不能少标点」, 而是「这个任务的奖励信号能不能自动算出来」。能自动算,就能从监督切到强化。

五、动手 Demo:6 步学会了,20 步一次都没撞到

写一个最小的策略梯度(REINFORCE):模型在每一步按概率选一个动作, 走完整条路之后只收到一个 0 或 1 的奖励。 跑两组对照——6 步任务(729 条路径)和 20 步任务(34.9 亿条路径),都是 12000 次尝试, 看最后学成什么样。

def run(ns, good, epochs=12000, lr=0.9):
    th = np.zeros((ns, 3))          # 每步三个动作的分数
    base = 0.0
    for ep in range(epochs):
        acts = [int(r.choice(3, p=softmax(th[t:t+1])[0]))
                for t in range(ns)]
        rew = 1.0 if tuple(acts) in good else 0.0
        base = 0.99 * base + 0.01 * rew      # 滑动平均当基线
        adv = rew - base                     # 比平均好还是差
        for t in range(ns):
            g = -softmax(th[t:t+1])[0]
            g[acts[t]] += 1.0
            th[t] += lr * adv * g
    return th

实跑输出:

--------------------------------------------------------------------
强化学习:奖励一稀疏,试错就失灵——这才是推理任务的真难点
--------------------------------------------------------------------
  做法       路径长度   试了多少次     第一次撞对   最后成功率
  -----------------------------------------------------------
  监督学习   6 步              800              —   1.00
  强化学习   6 步            12000           1959   1.00
  强化学习   20 步           12000   一次都没撞到   0.00

  两个强化学习的行,**算法一模一样、参数一模一样**,只换了路径长度。
  6 步那个任务有 729 条路径、1 条能得分,随机撞对的概率 0.14%——所以它能学会,最后成功率 1.00。
  20 步那个任务有 34.9 亿条路径、只有 1 条能得分,随机撞对的概率是 2.9e-10——一万两千次全扑空,成功率停在 0.00。
  这不是算法坏了,是**奖励太稀疏的时候,试错根本没有方向**:每一次尝试都是 0 分,梯度只能告诉你「刚才那条路不行」,而不告诉你「该往哪儿改」。
  **这就是「真·推理任务」卡住的地方。** 一道高考压轴题的正确推导只有几条,但中间过程的分支是天文数字。硬啃稀疏奖励,模型永远撞不到。

  工程上的解法有三种,思路是同一个:**把长路拆短,让奖励变密。**
  ① 思维链                 要求模型先写步骤,把 20 步的大判断拆成 20 个小判断
  ② 过程奖励               不只给最终答案打分,每一步也对一次分
  ③ 预训练打底             先用海量文本让它有基本判断力,再从及格线往上推
  真实的大模型三条都用了:预训练 + 监督微调先到及格线,再用强化学习在「答案对不对」这种稀疏奖励上继续推。**从零开始纯强化学习,是走不通的。**

  再补一句监督学习和强化学习的分工,这是本节的重点:
  监督学习要的是**过程**——你得指认「第一步选 A、第二步选 B」,标一条就贵一条,而且只能学人写过的路径。
  强化学习只要**结果**——「这条整路对不对」,一个 0/1。便宜到几乎不要钱,还能试出人没想到的走法。
  代价写在上面那张表里:**结果信号越稀疏,要试的次数越多。**

第一行「监督学习」是拿 800 轮交叉熵训出来的,成功率 1.00——因为它每一轮都被告知了正确答案。 后两行是强化学习。6 步那行 12000 次里第 1959 次第一次撞对,最后成功率 1.00; 20 步那行 12000 次一次都没撞到。 「第一次撞对」和「学会」是两件事。撞对只是运气,要把「采样成功率」拉到 50% 以上,才算真的学到了。 这张表把两个数分开放,就是为了让它俩别混。 注意 base 这个滑动平均——它是「基线」。没有它,所有奖励都是正的时候梯度会一起把概率往上推; 有了它,只有「比平时好」的动作才被强化。这是 REINFORCE 最容易被漏掉的一行。

30 秒实验

  1. 把 20 步那组的尝试次数从 12000 加到 100 万, 成功率先别指望——先算一下随机撞对的期望次数(概率 2.9e-10),你会发现要几百亿次。
  2. 给 20 步任务加「过程奖励」:每走对一步给 0.1 分。 重跑,会看到它突然学得动了——这就是「奖励密度」的威力。
  3. 把 6 步任务的路径改成 12 步,看成功率怎么掉。 中间某个长度上你会发现它从「能学会」突然变成「学不会」,那就是临界点。

常见误区

  1. 「强化学习不需要数据」。它不需要标注,但要海量试错。 试错次数乘以每次的算力,就是它的数据成本,往往更贵。
  2. 「强化学习能让模型学会新知识」。它只能优化「怎么用已有的知识」,知识本身的缺失得靠预训练补。
  3. 「奖励稀疏就多加几次随机探索」。探索次数是指数级的,多加几次没用。 正确做法是把奖励变密(过程奖励、思维链拆解),不是硬怼次数。
自测三问(点开对答案) 1. 为什么 20 步任务学不会,而 6 步任务能学会? —— 因为随机撞对的概率差了几个数量级(0.14% 对 2.9e-10)。 没有奖励就没有梯度方向,12000 次尝试里一次正样本都没有,模型拿不到任何「该往哪改」的信号。 2. 「第一次撞对」和「学会」差在哪? —— 第一次撞对可能是运气——参数刚好指向了那条路,但采样时仍会偏出去。 「学会」指的是采样成功率显著高于随机,说明策略真的变了。 3. 为什么工业界不直接从零开始强化学习? —— 探索成本扛不住。 要先靠预训练和监督微调把模型推到「有一定概率答对」的水平,稀疏奖励才有东西可强化。 **从零开始,连一次正样本都撞不到。**

强化学习解决「会不会推」。下一节解决另一个毛病:模型不知道答案的时候,为什么会编一个出来。

相关笔记