主题:让AI自我进化?斯坦福华人博士答辩视频火了,庞若鸣参与评审
量。在重写过程中,我们的提示词实际上就是:「这是一本书,你能像维基百科文章一样重写它吗」。我们有一组四个固定的提示词,并且我们迭代地将它们应用于本书。在这个过程中,我们可以看到虽然取得了一些成功,准确率有所提高,但斜率并不算陡峭,最终达到的最高点也不是很高。我们认为,重写数据之所以存在这种问题,是因为缺乏多样性。因为我们一遍又一遍地重复相同的提示词,我们所依赖的只是通过调整生成温度来让模型生成不同的数据,而当你经历 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 (监督微调)的目标对模型进行微调。在这个过程中,以图中相邻的一侧文档作为条件,试图最大化另一侧
回帖(0):全部回帖(0)»