没人看着的时候,模型学会了
2022 年 1 月,OpenAI 的一个小模型正在学模运算。按惯例,训练准确率打满、损失走平,实验就该停了——过拟合之后继续烧算力,没有意义。但有人去休假,忘了关。模型在机器上独自跑着,一遍遍刷那套它早就刷满分的训练题。后来有人回来瞄了一眼曲线,愣住了:这个模型在测试集上,突然满分了。
这个故事是团队负责人 Alethea Power 当年晚些时候在会议上讲的。论文本身对此只字未提——Power、Burda、Edwards、Babuschkin、Misra 五人 2022 年 1 月挂出的那篇论文里,没有休假,没有忘关,只有干干净净的实验结果。细节靠口口相传。但现象是真的:他们给这个「先死记硬背、后突然开窍」的过程起了个名字,grokking,词出自罗伯特·海因莱因 1961 年的科幻小说《异乡异客》,一个火星语,意思是「懂到骨髓里」。
一个 2022 年的小模型,几万行随机初始化的权重,为什么会在所有人都放弃它之后突然学会?接下来这三段,是三个递进的答案。
第一步:先确认这不是运气
论文用的任务是模 97 除法:给模型看 a 和 b 两个数,让它输出 a÷b mod 97。每个 0 到 96 的余数是一个独立符号,训练数据只给全部题目的一半。
曲线的样子很怪。训练准确率在一千步以内就贴近满分——模型把见过的每道题都背下来了。但验证集(它没见过的另一半题)上的准确率长期趴在随机水平。按照所有经典教科书,此刻就该停了:这是教科书级的过拟合。
怪的是后面。一万步,没动静。十万步,几乎看不到任何泛化的迹象。到接近一百万步的时候,验证准确率拉到了满分。模型在没有新数据、没有新信号、只有同一套训练题反复刷的情况下,从死记硬背切换成了真正的规则。
这不是过拟合「过了头变好了」,而是模型在背书之外,一直在悄悄地做另一件事——只是没有任何一个常规指标能看见它。
第二步:打开盒子,里面是一套三角函数
一年后,Neel Nanda 做了一件更狠的事:把一个 grokked 的模型完整拆开,逐个权重读它到底学会了什么。
他的任务设置是模 113 加法,训练数据只给全部数对的 30%。拆开之后看到的答案,大概是在这个领域见过的人最意外的发现之一。
模型先把每个数字表示成圆上的一个点——确切说,是一组不同频率的波。频率不是随便选的,它主要用了五个频率:14、35、41、42、52。给定两个数 a 和 b,模型不看「a 加 b」这个算式本身,而是让 a 的波和 b 的波各自旋转,然后用一条三角恒等式把两个波合并:
cos(w(a+b)) = cos(wa)·cos(wb) − sin(wa)·sin(wb)
模 113 的加法,被翻译成了圆上的旋转合成。最后再经过一步逆变换,把波读回数字。用这五个频率的近似去拟合模型内部的打分,能解释 95% 的方差——也就是说,这套「傅里叶圆周加法器」不是模型行为的一小部分,它几乎就是模型的全部。
值得强调的是 Nanda 自己写下的那句话:这个算法完全由梯度下降学到。没有人设计它,没有人鼓励它走这条路,Nanda 自己事先也不知道会有这个算法——他是拆开权重才发现的。一个小模型,在没人看的地方,自己发明了一套用波做算术的机器。
第三步:「突然」其实是尺子太粗
回到那个最自然的疑问:既然它一直在学,为什么曲线是平的,然后突然竖起来?
Nanda 把训练过程切成三段,用可解释的工具逐段看。0 到 2 千步:纯背书,记忆电路成型。2 千到 9 千步:泛化电路(那套三角函数机器)逐步搭建——这一步发生在一个内部指标上,测试准确率上完全看不见。9 千到 13 千步:清理——模型把背书用的那部分杂乱权重逐步剪掉。清理完成后,测试准确率才跳起来。
也就是说,测试准确率的那道「悬崖」其实是两个独立事件的合并:电路早就建成了,测试集迟迟不涨分,是因为记忆电路还挡在路上产生干扰。等它被拆干净,分数才一次性回落到位。从「电路建成」到「考分上涨」之间隔着好几千步的施工期——只是施工期的进度,考试分数这个尺子量不到。
这引出了 Nanda 那篇论文真正的方法论贡献:找到能连续度量进度的指标。他构造了「restricted loss」——把模型输出里对应某个频率的波手动抹掉再算损失。如果模型真的在用五频率圆周算法,抹掉任何一个频率都会让损失暴涨;这个损失随训练平滑下降,早早在测试分数还是随机水平的阶段,就已经显示模型在稳步靠近正确算法。考试是阶跃函数,施工日志是连续的。「突然」是读数方式的问题,不是学习方式的问题。
同一年 MIT 的 Omnigrok 论文从另一头逼近了同一件事。它把损失画在权重范数的轴上:训练损失是一条 L 形曲线,测试损失是一条 U 形曲线。weight decay 是一股持续把权重范数往回拉的力量,训练就是在 L 的坡上往下滑,同时沿着 U 的槽底横着走。什么时候走到 U 的谷底,什么时候泛化。grokking 的「晚」,就是这段沿谷底的横走比想象中长得多。这个图景还给出一个反直觉的预言:加大初始化的尺度,可以直接消除 grokking——模型不再先背书后开窍,而是从头就学得又对又稳。顿悟不是这种小模型的宿命,是一组特定超参配出来的现象。它可以被诱导(Omnigrok 把它搬到了图像、语言和分子任务上),也可以被拆除。
一条更大的线
回头看,这个故事里最值得带走的,不是模型有多神奇,而是测量有多重要。测试准确率是一把只能在两个位置读数的尺子:随机,或者满分。拿着它,你只能看见跳跃。换一把连续的尺子——受限损失、权重范数——同一段训练就变成了一条平缓的爬坡,跃迁之前每一步都在动。
顺带一提,那些步数本身就说明了「突然」有多相对:原始论文里,泛化发生在十万到一百万步之间;Nanda 的设置里,整个过程两千到一万三千步收工;如今一张消费级显卡复现一次训练只要几十秒。换硬件、换超参、换尺子,同一件事从「玄学顿悟」变成了「可以排进日程的施工」。
Nanda 拆开模型时,五个频率的波在权重里安静地转着。它们不是在那一次测试准确率跳起时才出现的——它们在数千步之前就已经一个一个立起来了,只是没有人问过它们。
信源:Power et al., Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets(arXiv:2201.02177,2022-01-05);Nanda et al., Progress measures for grokking via mechanistic interpretability(arXiv:2301.05217,ICLR 2023 spotlight;任务为模 113 加法、30% 数据,频率 [14, 35, 41, 42, 52],五频率近似解释 95% logits 方差,三阶段划分见其 Alignment Forum 长文);Liu et al., Omnigrok(arXiv:2210.01117,LU 机制与初始化消去 grokking);休假故事出自 Power 的会议口述,论文原文无此细节;grok 词源出自海因莱因 1961 年《异乡异客》。
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。