Why Code, Why Now: Learnability, Computability, and the Real Limits of Machine Learning

该论文提出基于信息结构的五级可学习性层级,通过区分表达性、可计算性与可学习性,论证了代码生成因具备稠密可验证反馈而比强化学习更易扩展,并指出机器学习进展的上限取决于任务本身的可学习性而非单纯依赖模型规模。

Zhimin Zhao

发布于 Tue, 10 Ma
📖 2 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文的核心观点非常有趣,它挑战了目前人工智能界的一个普遍迷信:“只要模型够大、算力够强,什么难题都能解决。”

作者赵志民(Zhimin Zhao)认为,有些任务之所以难,不是因为我们的“大脑”(AI 模型)不够聪明,而是因为任务本身的“土壤”不适合学习

为了让你轻松理解,我们可以把 AI 学习比作**“教一个学生做题”**。

1. 为什么写代码(Code)比玩强化学习(RL)更容易?

想象一下,你在教两个不同的学生:

  • 学生 A(代码生成): 你让他写一段代码。

    • 反馈机制: 只要他写错了一个标点符号,编译器会立刻报错,并精准地告诉你:“第 15 行,第 3 个字符错了,这里少了一个分号。”
    • 特点: 反馈是密集的、局部的、绝对的。就像做数学题,答案对就是对,错就是错,而且老师能立刻指出哪一步错了。
    • 结果: 学生学得飞快,因为每一次错误都是宝贵的“错题本”,能让他立刻修正。
  • 学生 B(强化学习,比如让 AI 下棋或控制机器人): 你让他玩一个游戏。

    • 反馈机制: 他走了一万步,最后游戏输了。老师只说了一句:“你输了。”
    • 特点: 反馈是稀疏的、模糊的。老师不知道是他第 1 步走错了,还是第 500 步走错了,或者是第 9999 步走错了。
    • 结果: 学生很迷茫。他可能会为了“赢”而作弊(比如卡进地图 BUG),而不是真正学会怎么下棋。这就是所谓的“奖励信号太稀疏”。

结论: 代码之所以能突飞猛进,是因为它自带一套“完美的纠错系统”。而很多强化学习任务,就像是在黑暗中摸索,只有最后才知道是死是活,中间过程全是迷雾。

2. 学习的五个等级(从“不可能”到“完美”)

作者提出了一个**“学习难度金字塔”**,根据你能得到的反馈质量,把任务分成了 5 个等级:

  • Level 0:完全瞎猜(无反馈)

    • 比喻: 就像让你猜一个完全封闭盒子里的球是什么颜色,而且无论你怎么猜,盒子都不会给你任何反应。
    • 例子: 停机问题(判断一个程序会不会永远跑下去)。无论你怎么算,有些问题在数学上就是无法通过观察来确定的。
    • 结局: 无论模型多大,都没用
  • Level 1:猫鼠游戏(对抗性反馈)

    • 比喻: 就像在和一个会读心术的对手下棋。你刚学会一种策略,对手立刻改变规则来针对你。你追得越紧,目标跑得越快。
    • 例子: 优化搜索引擎排名。一旦你发现怎么刷排名,系统就更新算法,你的策略瞬间失效。
    • 结局: 系统永远无法稳定收敛,越学越乱
  • Level 2: noisy 的噪音(有噪音的反馈)

    • 比喻: 就像在嘈杂的房间里听人说话。虽然能听到声音,但偶尔会听错。只要听得够多,统计一下,还是能猜出大概意思。
    • 例子: 识别猫和狗的照片(有时候光线不好,猫看起来像狗)。
    • 结局: 可以学,但需要大量数据来消除噪音。这是目前大多数 AI 成功的地方。
  • Level 3:只给正面例子(间接反馈)

    • 比喻: 老师只给你看“正确的句子”,从来不告诉你“错误的句子”长什么样。你只能慢慢摸索,只要不犯错就行,但不知道是不是只有这一种写法。
    • 例子: 语言学习。你读了很多书,学会了说话,但你不知道语法的完整边界在哪里。
    • 结局: 可以学会生成 valid 的内容,但很难完全理解规则。
  • Level 4:完美裁判(直接反馈)

    • 比喻: 就像做数学题,有一个标准答案,而且能立刻验证对错。
    • 例子: 代码编译、数学证明验证。
    • 结局: 最理想的学习环境,进步可预测且稳定。

代码生成的成功秘诀: 它虽然是在 Level 3(只给正确代码训练),但它背后有 Level 4 的编译器做“裁判”。一旦生成错误,编译器立刻报错(Level 4 反馈),这让学习过程变得极其高效。

3. 三个关键概念的区别

作者区分了三个容易混淆的概念,我们可以用**“造房子”**来比喻:

  1. 可表达性 (Expressibility):

    • 问题: 你的工具箱里有没有能造出这栋房子的图纸?
    • 现状: 现在的 AI 模型(神经网络)工具箱太丰富了,理论上什么房子都能画出来。
    • 陷阱: 工具箱太丰富反而不好,因为图纸太多,你根本不知道哪张是对的。
  2. 可计算性 (Computability):

    • 问题: 有没有一个具体的步骤(算法),能一步步把房子造出来?
    • 现状: 有些问题(如停机问题)在数学上就是没有步骤能解决的。
    • 关系: 能造出来的房子,不一定有步骤能造出来。
  3. 可学习性 (Learnability):

    • 问题: 给你一堆砖头和图纸碎片,你能学会怎么造出这栋房子吗?
    • 核心观点: 这是最难的一关。哪怕你有图纸(可表达),也有步骤(可计算),但如果没人告诉你哪里错了(缺乏反馈结构),你就永远学不会。

4. 为什么“堆算力”行不通了?

现在的流行观点是:“只要数据够多、模型够大,AI 就能解决所有问题。”

作者说:大错特错。

  • 比喻: 如果你是在 Level 0(完全瞎猜)或 Level 1(猫鼠游戏)的领域里,你就算给 AI 装上 100 个大脑,它也只是更快地犯错,或者更快地陷入死循环
  • 真相: 很多任务之所以难,是因为它们的信息结构不支持学习。就像你无法通过“多读几遍”来学会怎么在完全黑暗的房间里走路一样。
  • 代码为什么行? 因为代码的结构(语法、逻辑)本身就是高度结构化、可验证的。AI 只是利用了这种结构,而不是靠“死记硬背”或“暴力计算”。

5. 未来的出路在哪里?

既然不能只靠“堆模型”,我们该怎么办?作者给出了四个建议:

  1. 拆解任务: 把一个大难题拆成无数个小问题。比如,不要试图让 AI 直接写一个完美的操作系统,而是让它预测“下一个字符”是什么。小问题容易学,组合起来就是大能力。
  2. 设计更好的反馈: 不要只给“对/错”的结论。要给“哪里错了、为什么错”的详细诊断。就像老师批改作业,不能只打个大叉,要圈出具体错误。
  3. 降低目标: 不要追求“完美最优解”,先追求“局部正确”。一步步来,积少成多。
  4. 重新编码问题: 把那些“看起来不可学”的问题,转化成“可学”的代理问题。
    • 例子: 我们没法直接教 AI“什么是好诗”,但我们可以教它“预测下一个字出现的概率”。通过这种转换,原本不可学的问题变成了可学的。

总结

这篇论文告诉我们:AI 的瓶颈不在于“模型不够大”,而在于“任务本身难不难学”。

代码之所以成功,是因为它自带一套严密的纠错和验证系统,让 AI 能像学生做数学题一样,一步步进步。而很多其他领域(如复杂的现实世界决策),缺乏这种结构,导致 AI 即使再聪明,也像是在迷雾中乱撞。

未来的突破,不在于制造更大的“大脑”,而在于找到那些结构清晰、反馈明确的问题,或者把复杂问题重新包装成容易学习的形式

一句话总结: 别问“我的模型够不够强”,先问“这个问题本身,值得学吗?能学会吗?”