AI 编程的危险幻觉?——Jeremy Howard
摘要
Howard 认为,LLM 能够综合海量记忆材料,却会在训练分布之外骤然崩溃。 在给定框架内,它们很会“扮演理解”(cosplay understanding),但一到新颖的研发任务,就暴露出一道断裂,表现得“比愚蠢还糟”。这种能力具有可观的经济价值,但本质仍是跨越庞大语料库的插值,而不是可靠的外推。
AI 能写出专家大部分代码,却并未把软件工程的大部分工作自动化。 John Carmack 说,如今模型大概能代他打出90%的代码,但这并没有让他的生产力大幅提升,因为“打字从来就不是最慢的环节”;Howard 认为,把新系统拆解成可理解组件的能力才是稀缺技能,而 LLM “非常不擅长软件工程”。
人们感知到的编程杠杆,已经远远跑在可测量的实际产出之前。 主持人感觉自己独自使用 Claude Code 时生产力大约提高了50倍,但 Howard 说,他们的研究发现真正交付的高质量软件只有“微小提升”;METR 的结果更具杀伤力,因为开发者以为生产力上升,实际却下降了。这一落差也动摇了从精英、AI 原生团队外推失业预测的做法。
AI 编程之所以像老虎机,是因为提示词把随机奖励包装成了可控幻觉。 用户调整提示词、MCP 和 skills,“再拉一次杆”,偶尔得到的功能掩盖了不断累积的损失;两位嘉宾都描述过连续14小时的疲惫工作,而 Howard 说,最终产出中有很大一部分既没有被客户使用,也没有带来收入。
企业优化 AI 产出,可能是在改善今天的截距,却摧毁明天的斜率。 委派认知工作会侵蚀组织赖以适应变化的共享心智模型、设计判断和领域反馈;Howard 警告,团队如果不断积累不透明代码和“理解债务”,最终可能连自己的产品都无法维护。
看多逻辑最适用于真正由专家监督的、小型且边界明确的组件。 自动化可以移除受约束的认知负担——就像肺结节检测让放射科医生能够集中判断恶性程度——但 Howard 借助 AI 修复一个超过5,000行的 IPython kernel 后,得到了一段功能独特、却无人理解的代码,内存泄漏、协议变化以及是否应让公司押注其上的问题都没有答案。
Howard 认为,交互式、有状态的环境,是比自主代理更站得住脚的人机接口。 在 SolveIt 和 nbdev 中,人和模型共同操作实时对象、检查反馈,并为彼此构建工具;他说,自己离开这些会话时“精力充沛、快乐而充实”,而把整个代码仓库交给终端代理则会加剧人与工作的脱节。
Howard 对 AI 风险的核心判断是人类权力集中,而不是自主灭绝。 即便 AI 变得异常强大,把它集中在一家企业或一个政府手中,也会为追逐权力者制造最容易攻击的目标;对今天的系统,他最直接的担忧是人们“把自己变得无能”,而监控和隐私风险主要只是延续了政府与大型科技平台已经制造的问题。
精读
1. ULMFiT 让通用预训练具备可迁移性
Howard 说,ULMFiT 的前提是预训练语料必须是通用的。他认为 Quoc Le 和 Andrew Dai 早些时候已经探索过相关思路,却遗漏了这一承重条件;Wikipedia 提供了足够的广度,让语言模型学到可复用的表征,而不是局限于某一个狭窄领域。
起始架构是 Stephen Merity 的 AWD-LSTM,其极强的灵活性由5种正则化手段控制。Howard 重建了 Wikipedia 数据集,移除了经典 NLP 中的假设——包括未知词 token——然后用一块游戏显卡训练了一夜,大约8小时,“可能是2080 Ti之类的显卡”。
这套流程已经很像今天的3阶段范式:先在 Wikipedia 上预训练,用大约1小时适配影评,再用几分钟微调情感分类器。在一个约5,000条影评组成的高难度基准上,最后一步击败了高度专门化的模型,而那些模型的研究工作足以占满整段博士生涯。
fast.ai 的微调配方先训练最后一层,再逐步解冻前面的层,并设置差异化学习率,因为不同层的行为不同。Howard 还强调了一个常被忽略的细节:批归一化层必须适配,因为它们会改变并重新缩放网络;在 ULMFiT 中,最后两层在几秒内就接近了业界最佳水平。
2. 观察与直觉胜过把训练当成黑箱
Howard 承认微调可能损害通用表征,但认为这种风险被夸大了,因为实践者很少检查激活值或梯度。fast.ai 提供了整个网络的一览视图,让死神经元、失控行为以及训练失败所在的层级都能被直观看见,而不再神秘莫测。
他的研究方法不同于优先做消融实验的文化:在建立起对梯度行为的直觉后,“我预期有效的东西,几乎总是第一次就有效”。ULMFiT 的技术来自尝试看似合理的干预——分层学习率、渐进式解冻和归一化更新——然后观察系统实际发生了什么。
在讨论专业化时,主持人从人类学习出发,认为学习一个新的相关任务并不必然意味着忘掉另一个任务;他说,在2个有些相似的任务上训练的模型,“几乎总是比只训练其中一个任务的模型,在两项任务上都表现更好”。
3. 预测将文本压缩成抽象层级
Howard 将 ULMFiT 追溯到更早的视觉迁移学习和自监督预训练任务:遮住组织学切片的一部分并重建,再把同一逻辑带入语言领域。一个通用 ImageNet 模型早已在雕塑和建筑风格相关任务上取得业界最佳成绩;研究者只是没有想到,这套机制也能迁移到语言或基因组学。
他的基础判断是,准确预测下一个词需要嵌套式概念。预测一句关于1956年总统否决权的话,不只是回忆一个名字:模型需要关于总统、领导者、社会层级、人物和物体的抽象,并把它们压缩成“模型深处某个位置的抽象层级”。
Howard 推测,这会产生有用的功能性知识,但不意味着理解始终深刻。他把 LLM 描述为会“扮演理解事物”的系统:只要表现稳定,模拟智能与真正智能的区别并不重要;但一旦离开熟悉区域,模型突然无法遵守基本前提,这个区别就会变得刺眼。
4. LLM 的创造力是有硬边界的广阔插值
Howard 不接受“LLM 没有创造力”这一笼统说法。Piotr Wozniak 关于创造力源于记忆并重组大量事物的理论,很符合模型的优势;跨越几乎整个人类文本语料库进行组合,可以产生相当有原创感的结果。
边界在于外推:在训练分布之外,拟合出的函数可能像曲线越过已观测的二维数据后那样,“沿着狂野的方向消失在空间里”。Howard 在研发中每天都会遇到这种失败:模型可以瞬间从惊艳变得完全不可用,继续对话也毫无意义。
争议的具体案例是用 Rust 写成的 Anthropic C 编译器。主持人强调了它的测试脚手架和自主 critic 循环;Howard 则回应说,现有软件已经展示了如何通过这些测试,而把熟悉的编译器结构翻译成 Rust,本质上是“风格迁移问题”。他说,该代码库甚至复现了 Chris Lattner 如今认为是错误的、带有个人特色的 LLVM 选择。
5. 编程自动化不等于软件工程自动化
Howard 驳斥了 Dario Amodei 从 Anthropic 工程师外推至大规模开发者失业的观点,也不认同 Elon Musk 关于模型可以不依赖语言或库、直接生成机器码的说法。两者都把软件工程混同于“在 IDE 里敲代码”,而编程本身大体只是从规格说明到语法的转换。
Fred Brooks 的《No Silver Bullet》曾经回应过第四代语言带来的同类论断。Brooks 估计未来10年最多改善30%,因为录入代码从来不是核心难点;Howard 认为,即使去掉这个时间限制,论点依然成立。
模型或许能代 John Carmack 打出大约90%的代码,但并没有让他的生产力按比例提升。每当他要求模型设计一个此前没有被反复设计过的东西,模型就会返回一个表面相似的架构——恰好是他想摆脱的模式——而这种相似性可能掩盖“一场彻底的灾难”。
6. 委派可能掏空采用它的组织
主持人的组织层面警告是,知识具有具身性和视角性,依托人来承载和维护,并不会无摩擦地存储在 Wikipedia 或代码中。因此,委派认知任务会制造一个悖论:表面产出上升,但组织失去诊断边缘情况、调整流程和持续演进所需的共同理解。
主持人还指出,不使用的工程肌肉不会自行增长,反而可能萎缩。掌握今天的提示词、skills 或 AI CLI 框架属于“短命知识”,就像记住 AWS API 却不了解互联网;一家研究型创业公司的员工如果停止培养更深层的能力,最终会失败。
Howard 用自己2014年的医疗 AI 工作提供了自动化的反例。可靠地检测肺部 CT 扫描中可能存在的结节,并没有让放射科医生丧失技能;它移除了真正可自动化的负担,让医生可以集中精力判断恶性程度和治疗方案。关键标准在于,自动化是否让专家继续参与真正承载判断的部分。
当前的编程收益呈现两极化:完全的新手可以把小想法变成可运行的应用,而拥有数十年经验的人可以委派打字和研究工作。Howard 最担心的是拥有大约2至20年经验的开发者:如果不再编写大量代码,“你怎么从点 A 走到点 B?”
7. 专业能力需要摩擦,而非无摩擦完成
主持人把低摩擦委派称为“理解债务”:现实通常会反弹,错误迫使人修正,而反复设定约束会逐渐建立心智模型。据称,Anthropic 的一项学习研究发现,少数提出概念性问题的人仍在持续学习;大多数用户则因为任务完成变得过于容易,几乎没有学到东西。
Howard 将这一结果与“理想难度”联系起来。Anki 和 SuperMemo 等间隔重复系统会有意把回忆安排在即将遗忘的节点,此时提取记忆最费力,但记忆形成也最强;他用这种方式学习中文10年,即使超过15年没有认真学习,仍然保留了这门语言。
在自己的公司里,Howard 关心的不是 PR 或功能数量,而是人的能力是否在增长。借用 John Ousterhout 的说法,“一点点斜率,就能弥补大量截距”:最大化 AI 今天能交付的东西,可能提高当前产出,却把员工和公司都推上“走向淘汰的道路”。
8. 赌场式体验夸大感知生产力
主持人说,在自己理解且能够精确描述的领域独自工作时,使用 Claude Code 让他感觉生产力提高了大约50倍。Howard 的回应是经验性的:“没有人真的创造出了50倍的高质量软件”,而他们的研究发现,团队实际交付的东西只有“微小提升”。
Rachel 提供的赌博类比解释了其中机制。提示词、MCP 和 skills 营造出一种能动感,但用户最终只是拉动一根随机杆;没命中就调整提示词,再拉一次。间歇性出现的功能成为“伪装成赢钱的损失”(loss disguised as a win),与赌场刻意设计的激励机制如出一辙。
两位嘉宾都经历过连续14小时的 Claude Code 马拉松,以及随后被榨干的状态。Howard 说,很多早期拥护者只有在追问那一轮产出中有多少仍在使用、服务了客户或赚到了钱之后,才改变看法:“几乎所有钱都被 influencers 或 token 提供商赚走了。”
9. IPython kernel 的成功暴露新的所有权问题
Howard 最成功的案例涉及 IPython kernel 从 Version 6 迁移到 Version 7,这导致 Jupyter Notebook Classic 和他的 SolveIt 产品即使通过测试,也会随机崩溃。代码库超过5,000行,横跨线程、事件循环、IPython、ZMQ 和 debugpy,对他来说规模太大,无法快速理解。
大约2小时内,Codex 5.2——也可能是5.3,Howard 不确定刚刚上线的是哪个版本——无法解决问题;而每月200美元的 GPT-5.3 Pro 能够修复故障。随后他在大约2周内交替使用这2个模型,最终得到了一份他认为唯一正确实现 Version 7 协议变更的 Python Jupyter kernel。
这场胜利让他感到压力,而不是信心:“这是一段没人理解的代码。”他无法回答它是否会泄漏内存、能否扛住一次小的协议变化,或者是否藏着灾难性的边缘情况,因此也不知道是否应该让公司的产品押注在它上面。
测试之所以不够,是因为原 IPython kernel 团队的测试套件在真实下游产品已经出问题的情况下仍然全部通过。Howard 得出的结论是,IPython kernel 这个单元太大;开发重点应该转向寻找更小、可理解、拥有明确行为边界、真正能够被测试的组件。
10. 生成成本越低,组件设计越值钱
主持人提出了一个功能主义的乐观情景:如果专家理解领域、全面测试能够证明行为正确,那么实现细节或许已经不再重要。Howard 欢迎这个框架,因为它反而让软件工程——而不是代码生成——变得更加核心:必须有人找出正确的组件,定义它们的契约,并将它们组合成更大的系统。
Howard 花了大约20年才形成识别这些抽象的判断力。他看不到一条已经建立起来的路径,能够让人在没有大量亲手构建的情况下发展出这种判断;偏偏组织正鼓励中级开发者把这部分工作委派出去。
Howard 不认同“无法理解的分布式系统”代表软件工程的自然顶点。Instagram 和 WhatsApp 的小团队曾击败规模大得多的竞争者,而 Windows 和 macOS 的质量在5至10年间明显恶化;他将 Windows 11 与 NT kernel 时代对比,那时 Dave Cutler 会逐行审查代码。
11. 有状态的人机环境保留与工作的接触
Howard 偏好的模式源自 Smalltalk、Lisp、APL、Mathematica 和 notebook:人操作实时对象、检查对象,并通过即时反馈建立理解。他的 nbdev 系统把生产开发带入这一环境;他说,GitHub 统计数据显示,尽管自己从未做过全职程序员,他大约是澳大利亚生产力最高的程序员。
SolveIt 把人、AI 和计算机放进一个 Python 解释器里,三者都可以检查状态,并构建其他两者立即能够使用的工具。Howard 将其与 Claude Code 的逐行终端和文本文件接口对比,后者虽然强大,但在概念上仍接近40年前的环境。
主持人反驳说,熟练的 Claude Code 用户也能建立等价的反馈循环、可视化和用于区分结果的子代理检查。Howard 部分同意,但拒绝把默认失败归结为“能力问题”(skill issue):如果一个工具不会自然地让用户变得更有知识、更有连接感、更有能力,“那就是工具的问题”。
12. 探索式编程仍可交付严谨软件
Joel Grus 那场颇有趣的《我不喜欢 Notebook》(I Don’t Like Notebooks)演讲认为,notebook 破坏了可复现性和软件工程。Howard 则用《我喜欢 Notebook》(I Like Notebooks)回应,注明出处后重新使用 Grus 的幻灯片,以说明这些限制并非固有属性;真正的二分是活的探索与围绕“死代码、死文件”(dead code, dead files)建立的传统开发之间的区别。
主持人保留了实际层面的反对意见:cell 可能乱序执行,Git diff 可能很糟,生产环境仍然需要 CI/CD 和可重复的产物。Howard 的回答是修复工具链:nbdev 包含 CI 集成,而面向 notebook 的 merge driver 和 nbdime 提供 cell 级别的 diff 与冲突处理,不必放弃交互式媒介。
Howard 更深层的判断是,探索能够提升正确性。实现、示例、文档和测试可以共存于同一个可执行位置,而极小的工作增量会持续暴露行为;他说自己很少需要调试器,因为每一步都会在下一步出现前被检查——“没有给 bug 留空间”。
13. 控制权集中是 Howard 持久的 AI 风险论点
回顾自己与 Arvind 就“存在性风险”论断进行的反驳时,Howard 说,社群或许已经“基本赢下了”此前关于自主 AI 即将摧毁世界的争论。主持人把这种无法证伪、不断延期的说法比作末日邪教,除非它给出具体日期;Howard 则说,自己已经更新了判断,认为模型在受限且约束明确的领域内具备智能。
Howard 的论证并不依赖于否认 AI 未来可能拥有强大能力:即便 AI 变得异常强大,把它集中在一家企业或一个政府手中仍是最糟糕的应对方式。主持人将 AI 民主化比作历史上围绕写作、印刷和投票展开的斗争,当时既得利益者也曾以滥用风险为由维护排他性控制。
在当前技术条件下,Howard 最主要的担忧是人们停止成为有能力的人,从而“把自己变得无能”。隐私和监控依然是严重问题——他提到 Palantir,以及更早的数据经纪商 ChoicePoint 和 Acxiom——但 AI 主要是让本已拥有充足资源的组织更容易实施剥削,而不是创造底层的不平等。