让AI自我进化?斯坦福华人博士答辩视频火了,庞若鸣参与评审,庞明教授
时间: 2026-03-05 18:25作者: 大森靖子编辑|Panda
昨天,Thinking Maching Lab 研究者、斯坦福大学博士生 Zitong Yang 正式完成了他的博士论文答辩,课题为「持续自我提升式 AI」(Continually self-improving AI),并且他在答辩完成后很快就放出了自己的答辩视频,从中我们可以看到他对未来 AI 发展路径的系统性探索。针对当前模型在训练后权重静态化、高质量人类数据面临枯竭,以及新算法发现高度依赖人力这三大局限,他提出了明确的解决方案。
https://x.com/ZitongYang0/status/2029034067992437139
在本次答辩中,Zitong Yang 主要分享了三个核心研究方向。
首先是「合成持续训练」范式,团队利用实体图合成数据生成技术,让模型在预训练之后依然能持续学习小众领域知识,同时避免灾难性遗忘。
其次是探索预训练能力的自我提升,通过「合成引导预训练」技术,让模型自主挖掘庞大文档间的潜在结构与关联,进一步优化自身的预训练效果并显著降低事实错误率。
最后,他展示了「迈向 AI 设计 AI」的潜力,通过构建包含代码库和价值函数的独立研究环境,引入演化搜索机制,让模型自主提出算法思路、编写代码并运行实验。
Zitong Yang 在总结中指出,正如爱因斯坦创造的场方程能够预言连其本人最初都无法接受的宇宙膨胀一样,人类基于算法过程所创造出的智能体,也完全拥有进化出超越创造者智能水平的必然性
其答辩委员会的阵容也非常强大,主席为斯坦福大学电气工程、计算机科学与管理科学教授 Stephen Boyd,另外还包括斯坦福大学计算机科学教授 Percy Liang、数学和统计学教授 Emmanuel Candès、计算机科学助理教授 Tatsunori Hashimoto 以及前段时间刚刚离开 Meta 加入 OpenAI 的庞若鸣。
这条推文也收获了诸多行业大佬的点赞,包括 Thinking Maching Lab CEO、前 OpenAI CTO Mira Murati 和 PyTorch 之父 Soumith Chintala 等。
下面是对 Zitong Yang 答辩内容的整理。
-
题目:Continually self-improving AI
地址:https://zitongyang.github.io/slides/ZitongYang_defense_slides.pdf
持续自我提升式 AI
我本次答辩的题目是「持续自我改进式 AI」,首先我想尝试定义一下我想要构建的系统。
所谓持续自我改进式 AI 系统,是指一旦被创造出来,就能自主且持续地进行自我改进,并且其改进效果要优于人类创造者对它的改进。
为了使这个定义更加精确和实用,我认为我们应该从一些假设出发,缩小我们所讨论的 AI 系统的范围,这样我们提出的主张也会更加严谨。因此,在本次演讲中,我们探讨的 AI 系统仅限于满足以下两个假设的情况。
第一个假设是参数化的,即 AI 系统基于一个或多个神经网络,知识被存储在一组明确定义的参数权重中;第二个假设是 AI 系统必须经过预训练。AI 系统经历了一个资源密集型的预训练阶段,在这个阶段中,它接收包含大部分或全部人类知识的训练信号,并将其转化为参数权重。
在这两个假设下,持续自我改进式 AI 应该具备三个特性:
-
在初始预训练阶段之后,系统能够继续获取新知识并融入其参数权重中,而不会灾难性地遗忘旧知识。
系统能够生成自身的训练信号,并且通过学习这种自生成的信号所带来的提升,要超越学习人类生成信号所带来的提升。
系统能够自主设计学习算法,以便从其训练信号中进行学习。
一旦我们确立了这些假设,这个定义就是精确的。这些假设的初衷显然是为了涵盖我们今天所见到的所有大型语言模型(LLM)或相关范式。但是,它们排除了早期国际象棋游戏中那种硬编码的智能。
为什么需要持续自我改进式 AI?
那么,为什么我们希望 AI 系统具备这三种能力呢?我认为这源于人类创造者固有的三个局限性。
首先,在人类创造它们之后,它们的权重是静态的。
在与 ChatGPT 或 Claude 的典型对话中,一开始你可能有 100 轮对话,然后你会经历一个上下文压缩阶段,试图总结到目前为止的对话。在这之后,如果你试图问 AI 之前发生过什么,它不会有完美的记忆,因为随着上下文变长,压缩是一个非常容易丢失信息的有损过程。但对于人类记忆来说,也许你在前 100 轮对话后睡了一觉,你的记忆转移到了大脑的其他部分,然后你还能隐约记得你之前谈论过的一些事情。
第二个局限性是在有限的人类数据下进行扩展。
在左边,我们展示了 Scaling Law。X 轴代表语言模型训练的 token 数量,Y 轴代表测试损失。在右边,我们有 Epoch AI 的预测:随着时间的推移,前沿语言模型所使用的 token 数量正迅速逼近互联网上公开可用的 token 总量。当然,人们正试图购买和获取私有领域的数据。但同样的逻辑依然适用,即人类数据是有限的,并且随着我们想要训练越来越深的神经网络,这些数据正在被耗尽。
第三,当前的 AI 系统在某种意义上受限于人类所能发现的算法。
如果我们思考一下人类是如何提出算法的:它经历了一个产生想法的过程(例如最大似然估计),然后进行实验(这可能是编写代码或进行数学推导),最终你得到一些研究成果;随后其他人在此基础上继续研究,这个循环再次开始。这个过程极其依赖人力,并且成本非常高昂。因此,我们发现的仅仅是所有可能算法中的一个子集,而我们希望利用 AI 本身来使这个过程自动化。
接下来将从以下这三个方面展开:
持续知识获取:合成持续训练范式
第一个方面:持续知识获取。
在此之前,我想说明一下,本论文包含了四篇文章,所有这些都是与合作者的共同研究成果,特别是那些标注了同等贡献的合作者。在这段旅程中能与各位共事,我感到非常荣幸。
为了在训练后不断获取新知识,我们提出了这种名为「合成持续训练(Synthetic continuing)」的范式。
这里的目标是,我们希望将来自仅包含少量源文档的小众领域的知识教授给语言模型。
随之而来的一个自然的问题是:为什么这个过程必须使用合成数据?
我们提出了以下观察:如果没有合成数据,知识可能是稀疏的。
如果我们对比模型对线性代数的知识,与对 GitHub 上新发布的一个代码库的了解程度,模型对线性代数有着极其完美的记忆和深入的理解;但如果你问它关于这个新代码库的问题,比如抽象和 token 计算机之间的关系是什么,模型可能甚至不理解这个问题在问什么。通过这种对比我们发现,模型从各种各样的互联网数据中获取线性代数知识,这些数据包括许多教科书、讲义、关于线性代数习题的在线讨论,甚至包括 GitHub 上奇异值分解的代码实现,而对于新发布的代码库来说,这种多样化的表征根本不存在。这就是我们为什么需要合成数据的原因。
为了将这个提案转化为具体的实验设置,我们需要两样东西来确保实验的严谨性。
-
第一,我们需要收集一些小众领域的源文档,并且这不能是语言模型已经知道的内容。
第二,我们需要一个任务来测试模型对这些源文档的了解程度,以便我们追踪进展。在本文中,我们使用了该团队构建的 QuALITY 数据集,它同时满足源文档和问答任务这两个标准。
关于源文档,它是一个包含 265 本专业书籍的数据集,总计约 180 万个 token,这些内容都是模型未曾接触过的。至于测试部分,它包含约 4000 个高质量的多项选择问答题。这使得评估和解析变得非常简单,并且题目数量足够大,可以获得可靠的信号。
有了这两个设置,回顾一下我们的目标:我们希望模型在不提供上下文书籍的情况下回答问题。所以这就好比是一场闭卷考试。源文档是高质量的书籍,任务是闭卷问答。
在这个设置下,我们评估了一些静态模型,以了解该任务的难度。
这是四选一的选择题,所以随机瞎蒙的准确率是 25%。我们要微调的模型是 Llama 3 基础模型,它开箱即用的准确率只有 39%。一个顺理成章的做法是直接在原始数据本身上进行微调。我们称之为原始的持续预训练,我们发现准确率实际上略有下降。这是因为 token 的数量实在太少了,除非你进行合理数量的回放(replay),否则你的 batch 设置和学习率规划都没有被正确设定。此外,我们还有两个来自闭源模型的静态参考, GPT-3.5 和 GPT-4,我们看到它们的准确率分别在 44% 和 45% 左右,所以这是一个模型拥有一定相关知识的基准测试,它不是完全随机的,但也绝对达不到 60% 之类的水平。
那么问题来了,我们该如何生成合成数据呢?
我们考虑的一个非常简单的基准做法,就是直接重写这篇论文提出的文档。让我们来看看它的表现。
在这里的图表中, X 轴是我们在重写过程中生成的合成 token 的数量。在重写过程中,我们的提示词实际上就是:「这是一本书,你能像维基百科文章一样重写它吗」。我们有一组四个固定的提示词,并且我们迭代地将它们应用于本书。在这个过程中,我们可以看到虽然取得了一些成功,准确率有所提高,但斜率并不算陡峭,最终达到的最高点也不是很高。
我们认为,重写数据之所以存在这种问题,是因为缺乏多样性。因为我们一遍又一遍地重复相同的提示词,我们所依赖的只是通过调整生成温度来让模型生成不同的数据,而当你经历 200 或 300 次迭代后,你得到的数据基本上是一样的。
实体图合成数据生成
它缺乏多样性,这就是为什么我们提出了这种称为「实体图(EntiGraph)合成数据生成」的数据增强技术。
实体图的操作方式在精神上类似于单纯的重写,但它通过一个两阶段的过程增强了这一操作。我们首先从这里的源文档开始,这些源文档就像是来自 QuALITY 书籍的示例,然后我们将从书中提取实体。在这里,我们只需提示语言模型:「这是源文档,书中有哪些核心实体能帮助我很好地理解这篇文章?」模型会输出一个字符串列表。然后我们应用关系描述的提示词,我们只需随机抽取实体的一个子集。接着,我们让模型描述这些实体之间的关系。模型会生成诸如「在某某背景下,这两个实体之间的相互作用是……」之类的内容,这就能让我们拥有用于训练的多样化数据。
所以它与重写之间的区别在于,在提示词中你总是在改变实体;当你在提示词中改变一个 token 时,这是一个非常非线性的过程,因为你实际上是在改变词向量,模型的输出会有很大的差异,因此你获得了多样化的语料用于合成持续训练,这就是它在实践中的运作方式。
我们看到,随着我们生成越来越多的 token,问答的准确率不断提高,并且它有一个好得多的截距。此外,其斜率也远优于参考基准。因此,这就是最终的成果:如果正确使用合成数据,可以产生极具规模效应的改进。
以上是闭卷考试部分的主要结果。接下来,我们考虑一个不同的任务 —— 开卷问答,这是一个非常自然的任务。这里我们看第二行,关于书籍访问权限:闭卷、开卷、闭卷、开卷。这意味着,当你向模型提出有关 QuALITY 的问题时。「闭卷」意味着你不提供任何上下文;而「开卷」意味着你提供问题所依据的确切书籍文本,然后让模型来回答问题。开卷考试有点像测试模型的阅读理解能力,就像 SAT 考试一样。对于我们继续进行实验的 Llama 3 API 模型,我们和之前一样以 39% 的准确率起步,而开卷测试将其提升到了 60%,这是非常高的。
对于实体图方法,在闭卷情况下,我们的准确率大约是 56%,虽然这并没有完全填补与开卷测试的差距,但我们发现,如果你将开卷方法和持续预训练结合起来,实际上能得到最好的结果。这意味着它们的改进是互补的。
这张表格传达的意义是,合成持续预训练加上检索工具可以带来更好的效果归因。我认为这非常有意义,因为在实践中,假设你想为你的公司或业务设计一个语言模型,你要抓住任何可以提升性能的机会,你应该设计所有最好的方法,比如合成训练,或者结合工具使用,设计出最佳的可用工具以获得最佳性能。我认为这可能是未来将开源语言模型适配到个性化应用场景的一种范式。
预训练能力的自我提升
这就解决了我们期望的第一个特性,即我们希望模型在回到人类创造者手中后能够持续获取知识。第二点是,我们希望自我改进模型本身的预训练能力。
在此之前,我想谈谈为什么我们要在意这里的训练。我致力于这个项目的原因源于我在 o1 论文发表时积累的 s1 经验。那是推理还非常新颖的时候,大约在 2024 年的 9 月或 10 月。我记得在那个时候,AI 推理这种事情还很难想象。所以当时的猜测是,他们肯定耗费了大量资源(比如人工标注)来构建这个模型。
但我们在这篇论文中展示的是,仅仅对 10,000 条思维链数据执行监督微调,就能提供达到 o1-preview 级别的能力。这是 s1 和 o1-preview 之间的对比。这让我意识到,后训练能力就像是对预训练知识的一种极其奇妙的泛化。
因此,从某种意义上说,预训练才是主心骨。困惑度揭示了模型能力的核心,它通常与预训练的数据规模和模型规模有更大的相关性。因此,为了见证真正的自我改进,你必须看到在训练层面上的自我改进,而不仅仅是我们之前项目中看到的中期训练或后训练层面的改进。
既然我们的目标是解决预训练问题,我们先停下来思考一下:预训练中的知识到底从何而来?
为了回答这个问题,我提出了这样一个思想实验。假设世界上只有 5 个 token : A、B、C、D 和 E,而我们用于训练的文本文档只是像这种格式的随机字符串,所以在每个位置,我们都在这些 token 中均匀随机地采样一个字符,因此它不是一个马尔可夫链。它就像一个完全平稳的过程。
如果我们用 Transformer 语言模型在这些文本上执行下一个 token 预测,我们将看不到任何有意义的学习信号,因为在初始化时,模型会给每个 token 分配 20% 的概率。这与你的训练数据所规定的概率是一样的。所以当你在训练时,你实际上并没有学到任何东西。
但这显然不是自然语言文本的样子。自然语言文本比随机字符串拥有更多的结构。在撰写这篇论文的过程中,共同作者之间进行了许多有趣的讨论,探讨这种结构究竟是什么。
我将这些讨论总结为两种互补的观点。
一种统计学观点是,将自然语言中的 token 视为从某种分布中抽取的随机变量,并且这些 token 彼此之间存在统计相关性。
另一种更偏向计算层面的观点,即更接近香农最初提出的理论是,自然语言文本具有允许其被压缩的模式,而下一个 token 预测本质上是在进行信源编码以压缩文本。但抛开具体观点不谈,无论是统计学还是计算学的视角, token 之间确实存在使得模型能够学习的结构性相关性。
所以,如果预训练的知识就是来源于此,我认为,在当前的预训练范式中,遗漏了一个丰富但未被充分利用的相关性来源。即现有的互联网文档之间存在极其丰富的相关性。
例如,《哈利・波特》这本书与三年后其电影版剧本之间的相关性;或者《Attention is All You Need 》这篇论文与 GPT-2 代码库之间的相关性。比如在代码的第 91 行,它实现了点积注意力机制,而在《 Attention is All You Need 》论文中的某个地方,他们确切地用英语写了「dot-product attention」。因此,英文短语「dot-product attention」与 Python 代码实现之间存在着这种相关性。
合成引导预训练
我们将要采用的技术是,希望通过合成数据等手段来利用这种跨文档的相关性。鉴于我们要使用合成数据,我们必须确保我们所看到的是预训练能力的普遍引导提升,而不仅仅是从教师模型中进行的知识蒸馏。 因此,我们会遵循以下三个步骤:
-
首先,我们使用固定数量的数据从头预训练一个语言模型;
然后,在不引入任何新文本的情况下,我们将该模型微调为一个合成数据生成器。
最后,我们将真实数据和合成数据结合起来重新预训练语言模型,以此来提升性能。
如果我们能成功验证这条流水线,我们就看到了一种对预训练能力的真正自我改进。这正是「合成引导预训练(Synthetic Bootstrap Pre-training)」。
为了实施这项技术,它包含了三个操作步骤。
第一步,我们进行这种最近邻词向量编码计算。我们使用了 DCLM 数据集的一个子集,然后将其输入到 Qwen 6 的 embedding 模型中,我们就会得到类似这样的结果。这些词向量会对相似度进行编码。例如, Transformer 的论文将会在距离上非常靠近它的 PyTorch 实现代码。
接下来的第二步是,将这些相邻的文档连接成图,并执行合成微调。
合成微调的具体做法是:把一个经过预训练的检查点作为语言模型的初始化状态(这里的预训练检查点指的是已经在所有真实数据上训练过的模型);然后通过类似 SFT (监督微调)的目标对模型进行微调。
在这个过程中,以图中相邻的一侧文档作为条件,试图最大化另一侧相邻文档的对数概率。这里需要说明的是,每一个源文档(d1)可能对应多个目标文档(d2)。这个过程会极大程度地增加模型的熵,例如,如果每个 d1 对应 20 个 d2,那么在逻辑回归下,最大似然估计的分布就会像黑墙一样,将均匀的概率质量分配给每一个文档。因此,经过这种微调后,你的模型会处于极高熵的状态。
在这个过程之后,因为模型存在很多误差,所以在我们生成合成数据时,我们不使用任何花哨的提示词技巧,只是直接使用温度为 1 的设置,对你所拥有的所有真实文档反复应用温度为 1 的生成过程。
举例来说,如果你有一篇不那么长的小说,你会得到一段对这篇小说的合成评论。这就能让你获得极其多样化的合成内容。
为了让大家了解在这种类似于无条件生成范式下生成的内容是什么样子的,这里展示一个我们训练中的例子。在左侧,这是一份来自 DCLM 数据集的真实文档。它讨论了圣地亚哥的咖啡馆,基本上是列出了不同的咖啡馆。
而右侧的合成文档,内容开始像是在讲述一趟圣地亚哥之旅,然后它开始把焦点转向浓缩咖啡机,而浓缩咖啡机并非源文档关注的内容。也就是说,模型完全自主地想出了这个主意,这也展示了合成内容的多样性。我们还有另一篇不同的合成文章,试图将圣地亚哥的咖啡馆与纽约进行对比,而「纽约」这个词根本没有在真实文档中出现过。这就是为了让大家体会一下这种生成过程会呈现出什么样的感觉。在我们准备好所有这些真实数据和合成数据之后,我们将用它们混合在一起来进行训练。
这就是「合成引导预训练」算法层面的内容。接下来为了将其付诸实践,我们需要一个实验设计。
对于这个设置,你主要需要三个组件:数据模型架构评估基准
关于数据我们之前已经讨论过了;在架构方面,我们使用了 Llama 3 的架构,并额外加上了 QK LayerNorm,我们发现这有助于稳定训练过程;在评估方面,我们采用了六项问答准确率、 Few-shot 问答准确率以及三项困惑度评估,这些都是常用于预训练阶段的指标。在这个设置下,我们进行了计算量匹配的对比:我们的基准是通过简单的重复来复用固定数量的数据。这非常直接明了。对于合成引导预训练,我们以基准为参考,控制了两个变量。
-
首先是相同的数据,我们没有使用任何额外的数据源,否则就成作弊了。
其次,我们控制了训练的计算量,以确保整个过程的总训练周期是相同的。我在这里要强调的是,我们并没有控制总的绝对计算量,比如生成合成数据的所有推理成本等。从这个角度来看,合成引导预训练(SBPT)使用了更多的算力,我们仅仅是控制了预训练阶段的计算量。
区别在于,每当基准方法试图重复数据时,我们使用的是合成数据,而不是简单的复制。最后,为了将 SBPT 和基准测试的性能置于更广的背景下比较,我们还引入了 Oracle 过程:在这里我们不再控制对相同数据的访问限制,但我们依然控制使用相同的计算量。这个作为参考的 Oracle 基准可以使用无限的真实数据。 所以它试图模拟这样一种情况:如果数据永远增长下去会发生什么。
让我们先从更能反映定性结果的训练动态开始,试图直观地告诉你它是如何运作的。
X 轴代表训练 token 的数量, Y 轴代表在 OpenWebText2 上的测试损失。一开始我们可以看到, Oracle 和基准测试的表现很相似,但它们都不及合成引导预训练的效果。我认为它们两者表现相似是很有道理的,因为基准方法只是单纯的重复数据,当你的训练计算量不大时,它们的表现或多或少是一样的。但随后基准方法就会饱和。当 Oracle 的损失继续下降时,基准方法的曲线开始变平,这是因为它一遍又一遍地重复相同的训练信号。它再也无法从中获取新知识了。但是,到了最后阶段, Oracle 和合成引导预训练都继续以近似线性的方式进行扩展。这是定性层面的结果。接下来,我们来看一个更具定量性质的结果表。
这个表格包含三个主要列。这里的 200B 指的是总的训练 token 长度,也就是模型被训练了多久,而 1 万亿相当于 5 倍的训练量。
在第一列中,我们使用了一个 3B 参数的模型;在第二列中,我们固定了 3B 参数模型,但将训练计算量放大到了 1 万亿 token ;在第三列中,我们固定了 1 万亿 token 的训练计算量,但将模型规模放大到了 6B 参数。
我们看到的关键结论是,如果我们观察问答准确率的平均提升情况,包括 SBPT 和 Oracle 相对于基准的相对提升,在所有这三种情况下,我们都看到了可以由 Oracle 实现的约 30% 的提升,所以这种改进是非常一致的。有趣的是,我们发现在某些基准测试中, 6B 参数、 1 万亿 token 的模型已经几乎像是一个可用的语言模型了,这相当于 Llama 计算量的一半,理应如此,这意味着我们能改进的空间应该更少了。但是,在某些基准测试中,我们实际上在 6B 参数的处理条件下看到了更大的提升。这是因为你的合成数据生成器也变得更强大了。它的幻觉变少了。正是这个观察将我们引向了关于自我改进预训练能力的最后一张结果表。
在这里,我们希望考察的是合成数据的质量。这张表包含四行,前三行分别代表了我们实验中的一种设置。即 200B-3B 、 1T-3B 、 1T-6B,最后一行是真实数据。
这里我们采用的通用范式是,因为我们试图评估数据集的某项属性,而该数据集非常庞大。因此,我们会对一部分文档进行子采样,然后使用像现成的 GPT 模型那样,编写一些评分标准来检测文档中是否存在重复内容,或者是否包含不符合事实的信息。我们发现,随着模型规模的扩大,生成的数据质量也更好,而且这些合成数据并不仅仅是简单的复述。在表格的各列中,我想重点强调「非事实」这一列,我认为这非常令人兴奋。因为对于合成数据而言,事实性始终是一个难题。在 200B 规模下,我们看到,事实错误率甚至达到了 50%。存在着大量的幻觉。当你把训练计算量增加 5 倍时,非事实的比例显著下降;当你把模型规模增大一半时,这一比例进一步降低。虽然它还没有达到完全比肩真实数据的水平,但我认为这种从 3B 到 6B 的下降非常有趣。因为事实性在某种程度上,取决于模型掌握了多少关于世界的知识。
如果你只是将训练数据规模从第一列增加到第二列,这是令人惊讶的,因为模型看到了更多独特的数据,它拥有更多的世界信息。但当你增加模型规模时,环境的总熵是相同的。你所做的,只是花费更多的计算能力,从环境中提取信息。如果熵是守恒的,但这允许你拥有更低的事实错误率。我认为这是一个非常有意思的结果。
自我训练能力的部分就讲到这里。这表明我们可以普遍地提升语言模型的预训练能力。
迈向 AI 设计 AI
在最后一部分,我想展示的是「迈向 AI 设计 AI」的方向。
从根本上说,我们现在在做的是试图让语言模型来做我们的工作。
我想先探讨这样一个哲学问题:为什么我们期望 AI 在 AI 研究领域能做得更好?
我想追溯到这个科学方法论。Fisher 提出了科学进步的两阶段过程:首先提出假设,在提出假设之后,你需要做两件事:进行实验,然后试图证伪这个假设。这带来了一个非常严谨的科学过程。例如,你可能会说你无法证伪牛顿定律,但你不能理所当然地假设牛顿定律是绝对正确的。后来,我们有了爱因斯坦的理论,那只是因为在当时的实验条件下,你无法证伪牛顿定律而已。这意味着科学的本质就是运行实验和产生想法。
不用说,对于语言模型来说,产生想法就像写文本一样简单。所以它能够做到,只是校准度还不够。
更有趣的部分在于运行实验。如果你看看当前 AI 领域的状态,首先, AI 的进展非常依赖基准测试驱动,比如 ImageNet 或其他各种基准数据集;其次, AI 实验最终都会具体化为编写代码,而编写代码正是计算机极其擅长的事情。我们可以看到 SWE-bench 的准确率随着时间推移,从最初的 20% 一路上升,几乎饱和到了 80%。
这意味着,运用 AI 来推动 AI 科学本身的发展,拥有强大的第一性原理支撑。
为了使模型能够做到这一点,我将引入「研究环境」的概念。它提供了一个简洁的抽象,告诉你进行 AI 实验需要什么。我们先从一个更通用的研究环境开始。
它实际上有两个属性:其一,是传递给语言模型的上下文,用于描述任务是什么;其二,是一个价值函数,你向它输入一个想法(表现为一段字符串),它会输出一个数字,来指示这个想法的优劣程度。而对于 AI 研究环境而言,实现方式非常直接了当。
至于上下文,它应该包含代码库属性。也就是说,要告诉你一个研究问题是什么,只需要告诉你相关的 GitHub 仓库是什么,或者你的实验所操作的核心代码是什么。
另一件事是,为了评估价值函数,你还需要一个沙盒来分配运行实验所需的资源。因此,你将资源(例如一块 H100 GPU)分配给沙盒。随后,沙盒首先执行这段代码差异,在 AI 研究的背景下,正是这段代码将你的想法具体化了。接着,沙盒会执行 run 命令,然后运行评估脚本。你可以通过精心设计你的环境,使得评估脚本的标准输出正是你所关心的最终奖励信号。
所以,在这个抽象概念之下,让我们首先具体谈谈我们实现了哪些 AI 研究环境。
-
我们进行了预训练实验,其代码库只是一个执行 GPT-2 预训练的独立 Python 脚本。我们投入的资源是 8 张 A100 GPU。这主要用于基准测试目的,因为排行榜上的评价指标是在此资源限制下,测试损失达到 3.28 所需的时间。
至于后训练环境,我们有这个使用 GRPO 算法进行数学推理的任务。其代码库是在 GSM8K 数据集上进行训练,并在 MATH500 数据集上进行测试。这实际上取自斯坦福 CS336 课程的作业。在资源方面,我们使用了一张单卡 Blackwell GPU,以便在单个设备上实现采样器和训练器底层权重的无缝切换。
这就消除了大量繁杂的工程障碍。最终的评估指标是使用人工验证的 MATH 测试准确率。一旦有了这样一个研究环境,我很喜欢自动化的 AI 研究员的运作方式,它首先会经历这四个步骤的过程。
就像从可操作化提议的阶段开始,研究员内部拥有一个被称为构思器的组件。所以,首先你要获取研究环境的上下文,将其输入给构思器,生成你关心的想法。然后,你调用研究员类内部的执行器。你把上下文(在这个场景下是指研究环境的代码库)以及构思器生成的想法提供给它。这会输出代码差异,然后你就可以运行实验了。于是,你用生成的代码差异来调用研究环境的价值函数,它会返回这个想法的性能表现。同时,在另一侧,你也保留了这个想法的记录。这样你就会积累一张实验经验清单,接着时不时地,你可以从这些实验结果中进行学习。
想象一下,这个「学习 API」有点像是在更新研究员的一些内在特质。对于这个「学习 API」或构思器的更新,可以采用强化学习的方法,这意味着将修改研究员内部神经网络的参数权重;它也可以像是一个演化搜索过程,维护一个类似实验结果清单的库。在本次演讲的范畴内,我将只聚焦于演化搜索的部分。
我们把「学习结果」的过程实现为一个迭代的测试时搜索过程。
这个测试时搜索所做的是,它一轮一轮地运行实验;在运行了一些实验之后,它会把过去的想法保存在一个库中。有了研究员内部的这个想法库,当它想要生成一个新想法时,可以执行以下两项操作之一。
-
它可以通过结合结果列表中高价值想法的优势,来利用现有的好想法;
它也可以进行探索,尝试生成与结果列表中已有想法截然不同的全新想法。
因此,这变成了一个搜索问题。以下是搜索的最终核心结果:我们可以看到,后训练任务的初始准确率是 48%,而我们的搜索方法将其提升到了 69%。而 CS336 课程排行榜上的最好成绩是 68%。所以,这像是在一种非常弱的意义上,击败了最好的人类成绩。在预训练方面,我们确实取得了一些进展,将时间从 36 分钟优化到了 90 分钟,但排行榜上的成绩实在太惊人了。排行榜的成绩大约是 2.1 分钟。
所以在那个案例中,它并没有达到超人类的水平。
作为这一部分的总结,我想将其与 s1 项目中的预算强制技术联系起来。让我们稍微转换一下话题,谈谈用于数学推理的测试时缩放。
在数学推理中,这里的关键点在于如何强迫模型思考比常规 token 数量更长的时间。假设你想强制模型思考超过 10,000 个 token,如果不采用预算强制技术,模型会先生成一个开始思考的 token,接着生成最初的 500 个 token,然后就会生成一个结束思考的 token。但是有了这项预算强制技术,你可以去掉那个结束思考的 token,并强行追加一个逗号,然后模型就会继续思考下去。
因此,无论是算法搜索还是预算强制,从原则上讲,我们都在类似编写一个非常简单的循环,强迫模型一直运行下去。
我们观察到了一个非常一致的规律:不管是算法搜索还是写循环让模型强行思考,单纯地扩展测试时计算量都能带来性能提升,但它们都会非常迅速地达到性能瓶颈。另一个观察结果是,无论是在测试时搜索,还是在测试时推理中,都存在一种模式:串行搜索比并行搜索更加强大。
在左图中,这是在 nanoGPT 任务上的表现,最佳选择和多数投票并没有带来有意义的提升,但搜索方法却能带来持续一致的改进。这与推理任务中的情况十分相似:多数投票虽然有正的斜率,但提升不大,而串行搜索则大幅提高了这个斜率。
所以我认为,这里反映出复用具有一定的价值,这就好比一条法则:串行计算比并行计算更有价值。
我认为这正是其价值的体现。在结束实验结果部分的讨论之前,我还没有展示任何定性结果,即模型到底能生成什么类型的想法。
在这里,我想向你们展示一个我非常喜欢的想法,尽管它的准确率并不是非常高。
这个想法产生于使用 GRPO 进行数学推理的任务中。它提议通过维护一个包含数学事实、定义和中间结果的上下文缓冲区,来创建一个「数学工作记忆模拟」。
随着模型逐步解决问题,这个缓冲区也会随之更新,并为后续的推理步骤提供额外的上下文。这就模拟了人类在进行复杂计算时,如何维持和利用工作记忆的过程。令我惊讶的第一件事是,模型能够非常准确地将这个想法编写成可执行的代码。
它的具体做法是,引入了一个名为「上下文缓冲区」的类。这个类本质上有两个方法:添加上下文和基于查询获取上下文。在 RL 训练循环中,它会初始化该缓冲区。对于每一个提示词,它都会尝试从缓冲区中获取上下文,并将检索到的上下文附加到提示词中。
这样一来,在解决数学问题时,这就好比在考试情境中直接给你提示。该方法的性能比基准提升了 10%,虽然不是最好的结果,但我真的非常喜欢它,因为我个人也有一个类似的缓冲区。我实际上有一本手写的笔记本,里面记录了各种数学技巧,比如裂项相消、 epsilon 球空间、琴生不等式以及何时使用它们。所以我非常高兴能看到它提出了与我在做的事情非常类似的方法,而且像 GPT-4 这样的模型竟然能够将其实现出来。
结语:超越人类的必然性
关于持续自我改进式 AI 的三个方面的主要结果就讲到这里。接下来,我想进入结语部分,内容可能稍微有点形而上。
在演讲的开头,我们明确了这个定义:持续自我改进式 AI 所能实现的改进,要比人类创造者所能达到的改进更好。我之所以这么说,是为了保持严谨,这样这个主张就能被我们现有的实验结果所证实。但就目前而言,我们看到 AI 胜过人类的方式,主要是通过用数量堆叠来克服质量上的限制。
这种机制非常无趣。如果我们看一下这张图,基准模型是在有限的人类数据上训练的。你问 AI 能否扩展得更好,但事实是,首个检查点的初始损失表明,人类生成的数据质量依然更好。只是因为 AI 的数据是无限的,它可以通过数量来弥补质量上的不足。
另外,这是我们团队的 Weights & Biases 实验面板,你可以看到,对于研究人员来说,可能只跑了 13 个或 9 个实验,但对于 AI 执行的实验来说,我们看到的是 5,000 个甚至 30,000 个实验记录。如果一个人类博士生下周来找导师,他不可能说「好的,我上周测试了 30,000 个想法」。虽然我无法预见未来,但根据我们目前的结果,人类研究员依然具有更强的构思能力,只不过 AI 研究员工作得太努力、太不知疲倦了,所以它能霸榜 CS336 的排行榜。
是的。因此我认为,AI 社区里的人们真正关心的问题是:AI 是否能够自我改进,并变得比它的创造者更强大?
因为我目前没有这方面的实验结果,所以我想从物理学中一个完全正交的视角,来解释为什么我认为这是可能的,甚至几乎是必然的。
我想向你们展示爱因斯坦是如何以一种安静而精确的方式,创造了一个超越他自身认知的理论的。
首先,我们可以将一个理论视作一种生命,因为它能够进化、能够变异,它有自己的生命力。爱因斯坦创造的场方程就比他本人更聪明。
起初,爱因斯坦提出了广义相对论的场方程,这个方程在未经修改的状态下,已经精准地预言了宇宙正在膨胀。然而在 1910 年代,当时的科学界普遍笃信宇宙是静止且永恒的。为了迎合这种时代观念,爱因斯坦在 1917 年主动修改了自己的方程,硬生生地让它计算出一个静止的宇宙。直到 1929 年,哈勃通过天文观测证实了宇宙确实在膨胀,而且其规律与爱因斯坦最初那版未修改的方程所预测的一模一样。爱因斯坦后来坦言,那次修改是他一生中「最大的错误」。
也就是说,当一个理论被创造出来的那一刻,它就拥有了生命并开始演化。就像当爱因斯坦写下那个场方程的那一刻,该方程就已经编码了一个当时没有任何人类能够理解的真理。
通过类比,我认为人类确实可以创造出比自身更聪明的 AI,而不仅仅是像我刚才说的那种依靠数量优势。
因此,从某种意义上说,我对「AI 能否超越人类」这个问题的回答是:从一开始我们就不该问这个问题。
仅仅因为某样东西是我们创造的,没有任何理由去断定它就不能超越我们。
我认为那种认为它不能超越人类的逻辑,源于一种子集逻辑。这就好比:我们人类拥有一组规模为 10 的能力集,而我创造了一个拥有我能力子集的次级存在,所以它永远无法超越我。但是,目前创造 AI 的方式非常具有算法性,比如在海量数据上进行训练。这种过程与爱因斯坦推导并创造出超越自己认知的物理方程的过程极其相似。这种问题一开始就不该被提出。所以我坚信,答案绝对是肯定的