不久前,我的一位同事写了一篇文章,探讨了一个被称为 grokking(透悟)的非常规现象——延迟泛化能力。如果你在一个数据集上长时间训练一个模型,其 测试准确率 最终可以达到 100%,并且模型开始完美地解决潜在的任务。
听起来不错,对吧?但有一个问题:还没有人能够将grokking应用到实际任务中……直到现在。我们做到了,并且我们将在一个科学会议上发布我们的研究结果(预印本)。想知道我们是如何做到的,请继续阅读。
在2WikiMultiHopQA的比较任务上,平均准确率为:虽然GPT2-small的参数量最少,仅有1.24亿参数,但grokked版本却几乎达到了100%的准确率,甚至超过了最近发布的gpt-4o和o1-mini模型。“grokked版本”在这里几乎达到了100%的准确率,甚至超过了这些最近发布的gpt-4o和o1-mini模型。
搞懂了假设我们为一个AI算数助手收集了一些数据——大约有500个例子,例如,2 × 3 = 6,4 × 2 = 8,等等。我们用这些数据训练了一个模型,然后用它之前未曾见过的新例子进行测试,比如,10 × 10 = 100,或者 10 × 11 = 110。如果模型能够正确处理这些新例子的话,那么它就成功地泛化了。但如果它一个答案都答不对,就没有发生泛化——它很可能只是“背下了”训练数据。
泛化能力是指模型能够将其知识和技能应用于从未见过的新数据或情况的能力。
如果一个模型在训练数据上表现良好,但在测试数据上表现不佳,这通常被称为过拟合。为了避免这种情况,可以采取以下措施:扩大训练集、应用正则化技术或其他技术手段。
当有大量的训练数据——或者当正则化被应用时——模型无法将所有内容都死记硬背。它被迫找到更有效的解决方法。
不幸的是,增加数百万的新示例来扩展数据集或应用严格的正则化并不总是可行或实际的,即使你这样做了,这些方法也不总是能达到预期的效果。这自然引出了一个问题:有没有更好的方法来实现强大的泛化能力?
这就是“grokking”现象发挥作用的地方,这提供了一种完全不同的模型泛化方法。
精通是在小数据集上训练的模型中出现的延迟泛化现象。
对于模块化除法任务,模型在训练集上仅需100次迭代就能达到100%准确率,而在测试集上,则需要100万次迭代才能达到同样的效果。
从上面的图表可以看出,泛化延迟相当显著:模型在一千次迭代内记住了训练集,但要泛化到测试集上则需要一百万次迭代。
如果我们把这个过程应用到现代语言模型上,这些模型本身就需要几周或几个月的训练时间,那么grokking(理解过程)可能需要几十年。
因此,大型语言模型中grokking没有得到太多关注也就不足为奇了;它实在是不太实用。或者说,这是我们之前的想法…
一些研究成功地显著加快了grokking(一种深层次的理解和掌握)的过程,但其普遍性的问题仍未得到解答:grokking 并不发生在所有的任务上。此外,除了长时间训练外,目前还没有明确知道哪些具体条件是必需的,才能使这种深层次的理解和掌握出现。
最近有一篇论文(https://doi.org/10.48550/arXiv.2405.15071)对理解和掌握所需条件提供了一些见解。作者们创建了一个抽象数据集,旨在模拟需要 n 步推理的过程。他们的数据集包括比较和组合任务。
为了使理解更加容易,让我们将这个抽象数据集转换成更有实际意义的形式。
比如说,假设我们有一些原子事实(或基本事实):
- Alice嫁给了Bob
- Bob和Carol是好朋友
原子事实是简单且不可分割的陈述,不依赖于任何其他事实,独立存在。
因此,我们可以推导出一个这样的推断。
- Alice的丈夫的朋友叫Carol,也就是说,Carol是Alice丈夫的朋友。
推导出的事实是通过逻辑结合其他事实得出的。
作文题目
注意: 我们故意没有在问题中直接提到鲍比——否则,这个题目就会从一个多步骤的问题变成两个简单的一步问题。
在多步推理任务中,模型需要进行几个逻辑推理才能得出最后的答案。
比如,爱丽丝丈夫的朋友是谁这个问题
模型需要经历两个推理过程。
- 查查 Alice 嫁给了谁。
- 打听一下 Bob 和谁是朋友。
这通过实验证明了(https://doi.org/10.48550/arXiv.2405.15071),对于这类推理任务,grokking(注:一种特定的学习过程)仅在推断的事实与原子事实的比例达到一定数值时才会出现。在上述数据集中,比例为3.6,这意味着推断出的事实必须是原子事实的**3.6倍**!
可以想象,在现实世界的数据中,这样的比例极为少见。
为了更清楚地了解我们偏离了多少,让我们来看看用于训练大型语言模型(LLMs)的典型数据集——维基百科。打开任意一页,,数一下你看到的原子事实和推断出的事实的数量。
在一个随机页面上,我们发现了大约1,000个原子事实,只有12个推断出的事实。
我们还远远没有达到所需的比率!
左图:测试准确率随推断事实与原子事实比例的变化。可以看到,比例为3.6时(即每3.6个推断事实对应一个原子事实),模型无法达到收敛状态。通常,随着比例的增加,收敛速度加快。右图:测试准确率与数据集大小(分别为2,000、5,000和10,000个样本)的关系。来源:Wang等人,2024 图4
这在实际任务里管用吗?那就是我们问自己的问题——所以我们尝试了这种方法在_2WikiMultiHopQA_数据集上。这是一个从维基百科页面构建的数据集,涉及_n_步推理。
该数据集包括四种类型的任务:
- 比较
- 组成
- 推断
- 关联比较
为了简单起见,我们只关注了前两个方面。下面举几个例子:
我们来看一下比较
原子小知识:
- 卢浮宫在法国
- 埃菲尔铁塔也在法国
因此,我们就会问模型:卢浮宫和埃菲尔铁塔是否位于同一个国家?
组成
原子事实如下:
- 电影《先生出租》的导演名叫安德烈·胡内贝勒
- 安德烈·胡内贝勒在尼斯去世了
所以,我们会问模型一个问题,比如:“《先生出租车》的导演死在哪里了?”
即便在这一精心准备的资料集中,原子事实和推断事实的比例只有0.5!只有0.5!这意味着每个问题只有两个原子事实的支持。
那我们能做些什么呢?为了让模型真正学会解决这类任务,我们需要将这个比率提升到3.6以上的目标。我们通过生成合成的数据来实现这一点。
在进行比较任务时,数据生成相当简单;你可以比较很多事实,只要逻辑正确就可以。比如年龄、地点或时间等可以在同一组内部进行比较,但不能跨不同无关事实进行对比。这一切都相当容易处理,规则也相当简单。
但说到构成任务,事情就会变得复杂得多。
这个基于维基百科的数据集原先的样子是这样的:
但是如果这些原子事实甚至都没有联系,你能得出什么新的结论呢?
问题是当图如此稀疏时,没有办法生成新的推断的事实。首先,我们需要扩展现有的图表,使其有足够的基本事实来构建。
一种选择是从维基百科引入我们已有的实体的更多链接——但这在现实世界中并不总是可行。因此,我们选择了一种更通用的策略:生成合成关联。
与上面相同的图表,但有三个新的关系(虚线)。
我们将彼得·杰克逊送回了150年前的时光——这让我们能够获得更多信息,并达到要求的比率!
当然,这种方法确实可能会导致这种数据可能会出现错误,但在现阶段,我们更关心的是这种方法是否有效。从理论上讲,我们也可以生成更真实的合成数据,以最小化这种错误的风险。
为了测试,我们仅使用了真实的数据——没有加入任何合成的原子或推断的事实。
在我们论文中,您可以点击这里访问我们的论文,找到关于数据生成和训练设置的更详细解释。
成果我们使用了GPT-4o-mini将生成的数据从图形格式转换为自然语言文本。尽管我们尽了最大努力,模型有时并不能始终如一地完成任务,导致出现错误:有时候推断出的事实与原始事实不符,有时情况则相反,在一些情况下,转换的准确性低于预期。
对于我们进行的实验(https://doi.org/10.48550/arXiv.2504.20752),我们使用了未经过预训练的GPT2-small模型(约1.24亿个参数),仅用现有的原子事实和推断出的事实对其进行训练,使用了一块A100 GPU,经过了200,000个训练周期,批量大小为512。每个实验大约耗时12小时。
在我们深入讨论结果之前,还有件事:
在我们的研究中,我们把结构化和非结构化的原子数据(atomic data)区分为不同的类型。
对于结构化的数据,我们去除了所有冗余的文字信息,只保留了最简洁的事实内容。例如:
- 卢浮宫在法国。*
对于非结构化数据,我们直接使用了维基百科的原始段落,未做任何处理。在这里,信息往往是隐含的,包含大量细节和背景信息。例如:
- 卢浮宫是法国最古老且收藏丰富的博物馆,拥有丰富的收藏历史,可以追溯到……
我们一个个地来看看这些图表。
a) 在结构化对比任务(OOD测试)中的准确性。这张图对比了GPT2-small模型的两个版本:原始版本和“理解透彻的”版本(即用增强数据训练并实现了“grokking现象”的版本)。我们可以看到,这两个模型在处理OOD数据时的初始准确性几乎相同,很快就达到了100%。然而,之后出现了明显的差异:“理解透彻的”模型的准确性随着时间继续提高,而原始版本的准确性则保持不变。
b) 结构化的比较任务(同分布和异分布)的训练曲线。在这里,我们观察到在同分布(In-Distribution)和异分布样本上的表现非常接近:当模型在训练集上达到100%准确率后,测试集上的准确率仍然逐渐提高。
c) 结构化组合 任务。在此任务中,模型在ID(同分布数据)上几乎达到了完美的准确度,但在OOD(非同分布)数据上的准确率仍保持在较低水平且没有提高。这表明模型未能将组合技能泛化到训练中未见过的数据上。
d) 未做任何预处理的完整维基百科段落的无结构比较任务的训练曲线。由于此类数据的复杂性,模型在泛化到OOD数据上的能力受到了显著限制。然而,模型在ID数据上的准确度仍然随着时间显著提升。
摘要:我们的方法奏效了!“grokked”的GPT2-small版本的准确性一直高于原始模型,并且即使在达到训练数据100%准确率之后仍持续提高。对于结构化数据的任务,结果几乎在所有地方都非常出色,除了组合型OOD任务。对于非结构化数据(如完整的维基百科段落),在OOD比较测试中问题特别突出。
你可能还在好奇:什么是OOD(开放域)和ID(封闭域)?
ID(同分布) 指的是模型在训练过程中既见过原子事实也见过这些事实用法的那类问题。这并不意味着模型见过具体的测试问题,但它已经看过基于原子事实的各种组合。简单来说,彼得·杰克逊和他的妻子可能“被移入”测试集,但有关彼得·杰克逊和他的导演作品的问题依然在训练集中。
OOD(非分布) 简单来说,指的是模型在训练过程中只见过原子事实而未见过其用法的那类问题。
两个数据集上不同模型的指标。GPT-4o 和 o1-mini 与其他模型一样,都是在维基百科上训练的,这使得测试数据和非测试数据很难区分开。然而,尽管如此,在某些任务上,经过“grokked”处理的 GPT2 (grokked版本) 表现超过了所有其他模型,并达到了高达100%的准确率。
总结尽管我们已经在真实世界的数据集中成功确认了grokking现象的存在和有效性,但仍存在以下最紧迫的问题,在内。注:grokking是指“理解或掌握的过程”。
- 处理难度 未结构化的数据:
模型在信息以完整段落形式呈现且缺乏明确结构的任务上表现得差很多。 - 在某些OOD测试上的泛化问题:
尽管在训练中使用的事实组合方面取得了成功,模型在组合任务上无法将知识泛化到OOD数据中。
为什么会出现这个问题(2.)?我们有几种猜测。
- 在非结构化数据中,原子事实散落在文本中,并被大量噪声包围,这使得提取有效逻辑模式变得很困难。
- 随着更复杂的数据的引入,推导事实与原子事实的初始比例(3.6)已经不再足够。我们可能需要生成更多数据以确保grokking的稳定。
上述每个问题都很关键,值得进行深入研究,我们计划在不久的将来深入研究这些问题。
想支持我们的研究吗?这是我们在Hugging Face上的首次发布,我认为这确实探讨了一个非常有趣的问题。如果你想帮助传播关于grokking的知识,我们非常感谢您的一票支持!
👉 在这里投票 👈
文章还详细介绍了技术细节、数据集生成方法、训练设置等我们在这里未能详细覆盖的内容。
本文最初发表在[habr.com],现已被改编并整理以适应[medium.com]的需求。原文作者是Roman Abramov,我们曾合作发表了一篇论文。我在此代表他提交了这篇文章。
版权声明:所有内容归Roman Abramov所有,翻译仅为信息目的提供,属于合理使用范围。未经原作者许可,不得复制本文。
共同学习,写下你的评论
评论加载中...
作者其他优质文章