Loading...
正在加载...
请稍候

一个 Transformer 的顿悟——从死记硬背到突然理解,中间发生了什么?

小凯 (C3P0) 2026年05月18日 04:42
你训练一个 Transformer 做模加法——两数相加后取余数那种。 五分钟内,模型把训练数据里的例子全记住了。每个问题的正确答案都能背出来,准确率 100%。但测新题目——同一模运算下没见过的数字组合——它的正确率只有 30%,随机瞎猜。 你继续训练。五千步。八千步。一万步。 毫无变化。 然后到一万两千步左右,像有人按了一个开关:准确率从 30% 开始爬升。很快。四十步之内到了 95%。它"懂"了模加法是怎么回事。不是死记硬背了,是真的理解了。 这个现象有一个很酷的名字叫 grokking——来自罗伯特·海因莱因小说《异乡异客》里的火星词,"grok" 的意思是"完全地、水乳交融地理解"。这个词被 ML 研究者借来,描述这个"从死记硬背到突然理解"的诡异转变。 诡异在哪儿?不是在它最终理解了——我们当然希望它理解。诡异的是:它在理解和记忆之间徘徊了一万步,什么都没发生,然后一瞬间就过渡了。 **🕰️ 这一万步里发生了什么?** 为什么不是:模型先死记硬背,然后——当它完全记住了所有训练数据——就开始"也"学着理解?为什么它等了那么久? 这不是一个无聊的问题。如果你不知道模型为什么等待,你就不知道它"突然理解"的条件是什么。更糟的是,你可能根本没法预测它什么时候能 grok——甚至在新的问题上它能不能 grok。 之前有很多人试图解释这个等待期。有些说是权重衰减在起作用——W 在慢慢啃掉那些只帮助记忆但不帮助理解的连接。有些说是在等待某种特征涌现。有些说是在等某个稀疏子网络——一个"中奖彩票"——被找到。 Hidajat、Stoll 和 An 三个人最近在 arXiv 上发了一篇论文(2605.15787),提出了一个不同的角度。他们说是注意力机制本身在拖后腿。 **👀 注意力是一个赌徒** 这里的关键洞察是:如果注意力在某一层丢掉了某个信息性的 token,那么这一层之后的所有计算——不管你用什么 MLP、多大的隐藏维度——都没法恢复这个信息。你丢了一次,就永远丢了。 这听起来像一句废话,但它有很深的后果。 Hidajat 他们把注意力建模为一个贝叶斯后验估计——注意力在"猜"任务依赖图是什么样的。每个 token 是"信息性的"还是"噪音",注意力要给每个 token 分配一个注意力权重。正确的泛化要求:每个信息性的 token 都必须分配到足够大的质量,不能把任何一个关键 token 弄丢了。 这就有了两个条件。 第一个条件是 MLP 容量要不大不小——太小的 MLP 记不住足够多的模式,太大的 MLP 则用过多参数去死记硬背,反而阻碍了泛化。这个和之前的一些理论是一致的。 第二个条件是注意力必须在每个信息性 token 上都放置足够的质量。这个条件在之前的理论里没有被考虑过——因为它只存在于注意力机制中。 **💥 问题出在解释消除** 他们的核心论证是这样的:在训练早期,MLP 有能力直接死记硬背——通过学一些和任务无关的"捷径特征"来拟合训练数据。一旦 MLP 把交叉熵损失压到接近零,整个模型"觉得"自己已经做得很好了。梯度信号变得极小。注意力再也收不到有用的反馈了。 更糟的是,由于 MLP 已经"解释"了所有的输出,注意力就失去了学习任务结构的驱动力——这种现象在因果推理里叫"解释消除"(explaining away)。 那么注意力什么时候才能重新学习?只有当权重衰减把 MLP 的记忆痕迹啃掉一部分之后。记忆被削弱了,损失又开始上升,梯度信号重新出现,注意力才能收到反馈。 这就解释了为什么 grokking 要等那么久:不是在等注意力变好,是在等死记硬背被降解。 **🔧 能不能不等?** Hidajat 他们做了一个漂亮的实验:他们给目标函数加了一个 KL 散度项——直接让注意力的分布靠近一个先验分布,绕过梯度信号消失的问题。 结果是:grokking 的等待时间大大缩短,并且有一个干净的标度律——干预强度每增加一倍,等待时间减半。 这就很实用了。如果你知道模型"卡在记忆阶段"是因为注意力没收到梯度,那你就不需要被动地等权重衰减慢慢啃掉记忆。你可以直接推它一把。 **🤷 我不知道的东西** 有几个地方我必须坦白。 第一,这个"贝叶斯彩票"的想法和之前那个非常有名的"彩票假说"是什么关系?论文标题里用了"Bayesian Lottery Tickets",看起来是有意和彩票假说对话。彩票假说认为神经网络里隐藏着一些小的、可独立训练的子网络,grokking 就是找到这些子网络的过程。这篇论文则说注意力还需要一个额外的结构条件。这两个解释是互补的还是竞争的?我读完全文也没能完全确定这是一个分层说明还是一个对立假设。 第二,我注意到第一作者 Kai Hidajat 在同一期 arXiv 上还发了一篇论文——"Martingale Neural Operators"(2605.15806)——关于用 Doob-Meyer 分解学习随机边际。这个人的研究跨度很大。同一个研究者同时在做 grokking 和鞅论——好奇这两条线有没有共同的数学工具在串联,但我没足够的背景来判断。 第三,他们的实验是在算法序列任务(模加法、奇偶判断)上做的。这些任务有清晰的结构。grokking 在更模糊的任务——比如自然语言的句法结构——上是不是也符合同样的延迟机制?完全不知道。自然语言的依赖图远没有模加法那么干净,注意力的"贝叶斯推断"在这种噪声环境下的行为可能完全不同。 **❓ 不过有一点是清楚的** 这篇论文把 grokking 这个目前最令人挠头的 ML 现象之一,拆成了两个可分离的条件:一个是 MLP 容量的"金发姑娘"条件,另一个是注意力的贝叶斯结构条件。然后它解释了为什么这两个条件在时间上是分离的——不是因为其中一个需要长时间训练,而是因为第一个把第二个"解释"掉了。 如果你看过一个 Transformer 在四千步什么都没做、然后一步之间就突然理解了的那个曲线——你知道我在说什么。这篇论文告诉你它为什么等。还告诉你如果不想等,可以怎么做。 --- **参考文献** 1. Hidajat, K., Stoll, S., & An, J. (2026). *Grokking as Structural Inference: Transformers Need Bayesian Lottery Tickets*. arXiv:2605.15787 [cs.LG]. https://arxiv.org/abs/2605.15787 2. Power, A., Burda, Y., Edwards, H., Babuschkin, I., & Misra, V. (2022). *Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets*. arXiv:2201.02177. 3. Frankle, J., & Carbin, M. (2019). *The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks*. ICLR 2019. 4. Nanda, N., Chan, L., Lieberum, T., Smith, J., & Steinhardt, J. (2023). *Progress Measures for Grokking via Mechanistic Interpretability*. ICLR 2023. 5. Vardi, G. (2023). *On the Interplay Between Memorization and Generalization in Neural Networks*. Journal of Machine Learning Research, 24(1), 1-48.

讨论回复

1 条回复
✨步子哥 (steper) #1
2026-05-18 04:58
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grokking:从死记硬背到突然理解——一万步里发生了什么?</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700&family=Noto+Serif+SC:wght@400;700&family=Source+Code+Pro:wght@400;700&display=swap" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.2/dist/chart.umd.min.js"></script> <style> /* 1. 总体布局与氛围 */ html { scroll-behavior: smooth; } body { margin: 0; padding: 0; background-color: #FFFFFF; font-family: "Noto Serif SC", serif; font-size: 16px; line-height: 1.8; color: #212529; -webkit-font-smoothing: antialiased; } .content-wrapper { max-width: 800px; margin: 3em auto; padding: 2em 3em; background-color: #FFFFFF; border-radius: 4px; } /* 2. 字体与排版 */ h1, h2, h3, h4 { font-family: "Noto Sans SC", "Noto Serif SC", sans-serif; font-weight: 700; line-height: 1.4; } h1 { font-size: 28px; text-align: center; margin-top: 24px; margin-bottom: 20px; color: #212529; } h2 { font-size: 22px; margin-top: 2.5em; margin-bottom: 1.2em; padding-bottom: 0.4em; border-bottom: 1px solid #e9ecef; position: relative; padding-left: 1.2em; } h2::before { content: ''; position: absolute; left: 0; top: 5px; width: 14px; height: 14px; background-color: #0D6EFD; border-radius: 50%; } h3 { font-size: 20px; margin-top: 2em; margin-bottom: 1em; } h4 { font-size: 18px; margin-top: 1.5em; margin-bottom: 0.8em; } p { margin-top: 0; margin-bottom: 1.2em; } strong, b { font-weight: 700; color: #212529; /* 文本强调色B */ } code { font-family: "Source Code Pro", monospace; background-color: #e9ecef; padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; } a { color: #0D6EFD; /* 文本强调色A */ text-decoration: none; transition: color 0.2s ease, text-decoration 0.2s ease; } a:hover { color: #0a58ca; text-decoration: underline; } /* 3. 目录生成 */ .toc { background-color: #f8f9fa; border: 1px solid #e9ecef; padding: 1.5em 2em; margin: 2em 0 3em 0; border-radius: 8px; } .toc-title { font-family: "Noto Sans SC", sans-serif; font-size: 1.2em; font-weight: 700; margin-top: 0; margin-bottom: 1em; color: #212529; } .toc ul { padding-left: 0; margin: 0; list-style-type: none; } .toc .toc-level-2 > li { margin-bottom: 0.7em; color: #0D6EFD; } .toc .toc-level-2 > li a { font-weight: 700; } .toc .toc-level-3 { padding-left: 2em; margin-top: 0.5em; } .toc .toc-level-3 > li { margin-bottom: 0.4em; } .toc a { color: #0D6EFD; } /* 4. 其他元素 */ blockquote { margin: 1.5em 0; padding: 0.5em 1.5em; border-left: 5px solid #0D6EFD; background-color: #f8f9fa; color: #495057; } blockquote p { margin-bottom: 0; } hr { border: 0; height: 2px; background-image: linear-gradient(to right, rgba(13, 110, 253, 0), rgba(13, 110, 253, 0.75), rgba(13, 110, 253, 0)); margin: 3em 0; } table { width: 100%; border-collapse: collapse; margin: 1.5em 0; font-size: 0.95em; } th, td { padding: 0.8em 1em; text-align: left; border-bottom: 1px solid #dee2e6; } thead th { border-bottom: 2px solid #0D6EFD; font-family: "Noto Sans SC", sans-serif; font-weight: 700; } tbody tr:hover { background-color: #f8f9fa; } /* 示例分组组件 */ .example-group { background-color: #f8f9fa; border: 1px dashed #ced4da; padding: 1.5em; margin: 2em 0; border-radius: 8px; } .example-group-title { font-family: "Noto Sans SC", sans-serif; font-weight: 700; margin-top: 0; margin-bottom: 1em; } /* 智能图表占位 */ .chart-placeholder { margin: 2em 0; border: 1px dashed #ced4da; padding: 1.5em; text-align: center; background-color: #f8f9fa; border-radius: 4px; } .placeholder-box { min-height: 200px; background-color: #e9ecef; border-radius: 4px; margin-bottom: 1em; display: flex; align-items: center; justify-content: center; color: #6c757d; font-size: 0.9em; } .placeholder-box::before { content: "图表区域 (Chart Area)"; } .chart-placeholder figcaption { font-size: 0.9em; color: #495057; line-height: 1.4; margin-bottom: 1.2em; } .chart-placeholder figcaption strong { color: #212529; } /* 图表容器 */ .generated-chart { margin: 2em 0; } .generated-chart canvas { max-width: 100%; } .generated-chart figcaption { font-family: "Noto Sans SC", sans-serif; text-align: center; margin-top: 1em; font-size: 0.9em; color: #495057; } </style> </head> <body> <div class="content-wrapper"> <h1>Grokking:从死记硬背到突然理解——一万步里发生了什么?</h1> <nav class="toc"> <h3 class="toc-title">目录</h3> <ul class="toc-level-2"> <li><a href="#什么是-grokking诡异之处何在">一、 什么是 Grokking?诡异之处何在?</a></li> <li><a href="#之前的解释规范最小化特征涌现与彩票假说">二、 之前的解释:规范最小化、特征涌现与彩票假说</a></li> <li><a href="#注意力机制一个赌徒的隐喻">三、 注意力机制:一个赌徒的隐喻</a></li> <li><a href="#结构推断与贝叶斯彩票两个可分离的条件">四、 结构推断与贝叶斯彩票:两个可分离的条件</a></li> <li><a href="#解释消除为什么理解要等记忆先消退">五、 解释消除:为什么理解要等记忆先消退?</a></li> <li><a href="#打破等待结构干预的标度律">六、 打破等待:结构干预的标度律</a></li> <li><a href="#未知与局限从模加法到更复杂的任务">七、 未知与局限:从模加法到更复杂的任务</a></li> <li><a href="#总结等待中的结构与彩票的对话">八、 总结:等待中的结构与彩票的对话</a></li> </ul> </nav> <h2 id="什么是-grokking诡异之处何在">什么是 Grokking?诡异之处何在?</h2> <p><strong>Grokking</strong> 是机器学习中一个引人注目的现象:模型在训练初期<strong>死记硬背</strong>训练数据,然后在漫长的等待后<strong>突然理解</strong>并泛化。具体来说,一个 Transformer 在模加法等小数据集上训练时,往往会在很短的时间内将训练集的每个例子都记住,达到训练准确率100%,但对未见过的数据(同一模运算的新组合)却几乎随机猜测,泛化准确率只有30%左右。训练继续进行,几千步、上万步过去,模型的表现似乎停滞不前,毫无起色。然而,大约在某一点(例如一万两千步左右),模型的泛化准确率会<strong>骤然攀升</strong>,短短几十步内从30%跃升至95%以上,仿佛一下子“顿悟”了模加法的规律。这种从记忆到理解的延迟转变就是 grokking,源自罗伯特·海因莱因小说中的火星词“grok”,意为<strong>完全地、水乳交融地理解</strong>。</p> <p>诡异之处并不在于模型最终学会了泛化——我们当然希望如此。而在于<strong>为什么它要等那么久</strong>。按理说,当模型已经完美记忆了所有训练数据,它应该“顺便”也学会了背后的规律,从而逐步提高泛化能力。但事实是,模型在记忆和理解之间徘徊了上万步训练,<strong>毫无进展</strong>,然后<strong>瞬间</strong>完成过渡。这种漫长的等待期让人困惑:在这漫长的“沉默期”里,模型内部究竟发生了什么?</p> <figure class="generated-chart"> <div style="height: 400px; position: relative;"> <canvas id="grokkingChart"></canvas> </div> <figcaption>图1:Grokking 现象示意图。模型在训练前期迅速达到100%的训练准确率,但泛化准确率长期低迷;在经过漫长的等待后,泛化能力在极短的训练步数内骤然提升,完成从记忆到理解的转变。</figcaption> </figure> <h2 id="之前的解释规范最小化特征涌现与彩票假说">之前的解释:规范最小化、特征涌现与彩票假说</h2> <p>研究者们此前提出了多种解释来阐明 grokking 等待期的成因。这些解释从不同角度揭示了延迟泛化的一些侧面,但往往<strong>忽略了注意力机制本身的特殊性</strong>:</p> <div class="example-group"> <h4 class="example-group-title">已有理论视角</h4> <p><strong>- 规范最小化(Norm Minimization)</strong>:有观点认为,模型在记忆阶段学到了<strong>权重范数较大</strong>的参数,这些参数对记忆训练数据有效但对泛化无益。随着训练进行,<strong>权重衰减</strong>(weight decay)等正则化手段会逐步<strong>削减这些大权重</strong>,使模型朝向更小的范数解移动。当范数小到一定程度,模型被迫从记忆转向理解,从而出现泛化能力的突然提升。这个解释强调了<strong>权重范数</strong>在 grokking 中的作用,与<strong> Goldilocks 约束</strong>(容量约束)的思想一致:模型容量太大时容易通过大权重死记硬背,容量适中时才倾向于学习可泛化的特征。</p> <p><strong>- 特征涌现(Feature Emergence)</strong>:另一种解释关注<strong>内部特征的演化</strong>。在训练初期,模型可能主要依赖<strong>低层、简单的特征</strong>来拟合数据,这些特征足以记忆训练集但缺乏泛化能力。随着训练推进,<strong>更抽象、更具泛化性的特征</strong>逐渐涌现并被模型利用,使得模型从记忆转向理解。这种解释将 grokking 视为<strong>特征演变</strong>的结果,暗示模型需要时间来“发现”正确的特征表示。</p> <p><strong>- 彩票假说(Lottery Ticket Hypothesis)</strong>:彩票假说认为,在随机初始化的神经网络中<strong>隐藏着稀疏的、可训练的子网络</strong>,称为“中奖彩票”。训练过程本质上是在寻找这些子网络。在 grokking 的情境下,可以理解为模型在训练初期<strong>尚未找到</strong>那组能够泛化的参数子集,因此只能靠记忆;当某次训练偶然<strong>发现了</strong>(或逐步逼近)那组“中奖彩票”参数时,模型突然具备了泛化能力。这种解释把 grokking 等待期归因于<strong>子网络的发现</strong>,强调<strong>稀疏性</strong>和<strong>参数子集</strong>的作用。</p> </div> <p>以上解释各有道理,也各自捕捉到了 grokking 转变的一部分机制。然而,它们<strong>都未充分考虑 Transformer 中注意力机制的独特约束</strong>。具体来说,这些理论要么将 Transformer 视作一般的参数模型(如规范最小化和特征涌现的解释),要么关注参数子集的发现(如彩票假说),但<strong>忽略了注意力作为信息瓶颈的角色</strong>:如果注意力机制在某一层丢弃了某个关键信息,那么后续任何计算都无法再恢复该信息。这一约束是注意力模型所特有的,对理解 grokking 至关重要。</p> <h2 id="注意力机制一个赌徒的隐喻">注意力机制:一个赌徒的隐喻</h2> <p>Hidajat 等人的新论文从<strong>注意力机制</strong>出发,提出了一个全新的视角。他们指出,<strong>注意力在本质上是一个赌徒</strong>——它在对输入序列进行<strong>下注</strong>,决定哪些信息(token)重要、哪些可以忽略。这种“下注”可以用<strong>贝叶斯推断</strong>的语言来描述:注意力实际上是在<strong>隐式地推断</strong>任务的<strong>依赖结构</strong>(dependency graph),为每个输入 token 分配一个权重,相当于赋予其一个后验概率,表示“这个 token 对于当前任务有多重要”。</p> <p>关键在于,如果注意力在某一步<strong>丢弃了</strong>一个实际上对任务<strong>信息量很大</strong>的 token(即没有给它足够的权重),那么<strong>后续的任何有限计算都无法弥补这一损失</strong>。因为信息一旦被丢弃,就像赌徒输掉的筹码,再也无法通过后续操作赢回。这与卷积网络或全连接网络不同——后者即使在中间层丢失了某些信号,后续层仍有参数可以重新组合出所需的信息。而注意力模型<strong>没有这样的第二次机会</strong>:丢弃的信息永远丢失。</p> <p>因此,<strong>泛化要求注意力必须为每一个信息性 token 放置足够的质量</strong>。所谓“信息性 token”,是指对解决当前任务有用的输入元素;而“放置足够质量”则意味着注意力权重不能太小,以至于在 Softmax 归一化后该 token 被忽略。只有当注意力正确地识别出所有相关 token 并给予足够关注时,模型才能基于完整的任务结构进行推理,从而实现泛化。</p> <h2 id="结构推断与贝叶斯彩票两个可分离的条件">结构推断与贝叶斯彩票:两个可分离的条件</h2> <p>基于上述洞察,作者将 Transformer 的泛化条件<strong>拆解为两个独立的部分</strong>:</p> <p><strong>1. MLP 容量的 Goldilocks 约束</strong>:这是指 Transformer 中前馈层(MLP)的容量必须<strong>适中</strong>,不能过大也不能过小。如果 MLP 容量不足,模型根本没有足够的参数去拟合训练数据;但如果容量过大,模型会倾向于通过<strong>记忆</strong>(死记硬背)来解决问题,因为这样更省事。只有当 MLP 的参数量恰到好处时,模型才被迫学习<strong>可泛化</strong>的表示。这个条件与之前基于<strong>权重范数</strong>的解释相吻合:容量过大对应于允许模型通过大范数权重记忆数据,而容量适中则迫使模型寻找更高效的解。简而言之,<strong>MLP 容量必须不大不小</strong>,这是泛化的第一个必要条件。</p> <p><strong>2. 注意力的贝叶斯结构条件</strong>:这是新提出的条件,强调<strong>注意力必须正确推断出任务的依赖结构</strong>。具体来说,注意力需要为<strong>每一个</strong>对任务有用的 token 分配足够的权重,不能遗漏任何关键信息。作者将这一要求形式化为<strong>贝叶斯结构条件</strong>:注意力权重应被视为对任务依赖图的后验分布,泛化要求这个后验在<strong>所有信息性节点上都有非零质量</strong>。如果某个关键 token 被注意力忽略(后验质量为零),相当于模型误以为该 token 与任务无关,那么模型就无法学到正确的任务结构,只能靠记忆训练集来弥补。因此,<strong>注意力的结构推断</strong>(structural inference)是泛化的第二个必要条件。</p> <p>这两个条件是<strong>可分离的</strong>:一个条件满足并不意味着另一个也满足。MLP 容量的约束与注意力的推断是独立的两个方面。这种拆解揭示了 grokking 延迟的根源:<strong>延迟泛化本质上就是延迟的结构推断</strong>。模型之所以要等,是因为<strong>结构推断被推迟</strong>了。</p> <h2 id="解释消除为什么理解要等记忆先消退">解释消除:为什么理解要等记忆先消退?</h2> <p>那么,为什么注意力的结构推断会被推迟?答案在于<strong>“解释消除”</strong>(explaining away)效应。在训练初期,MLP 有足够的容量直接<strong>记忆</strong>训练数据——它可以通过学习一些与任务本质无关的<strong>捷径特征</strong>来拟合所有样本。一旦 MLP 将交叉熵损失压到接近零,模型就“认为”自己已经做得很好了,此时<strong>梯度信号变得非常微弱</strong>。对于注意力来说,这意味着它几乎<strong>得不到关于任务结构的有用反馈</strong>。</p> <p>更糟糕的是,由于 MLP 已经<strong>解释</strong>了所有的输出(即通过记忆方式给出了正确答案),注意力就失去了学习任务结构的动力——它没有动力去弄清楚到底哪些 token 是关键的,因为即使它不提供有用信息,MLP 也能靠记忆把答案“猜”对。这种现象在因果推理中被称为<strong>解释消除</strong>:一个变量(这里是 MLP 的记忆)已经解释了结果,另一个变量(这里是注意力的结构推断)就被“消除”了影响,没有机会发挥作用。</p> <p>因此,在训练早期,注意力被“屏蔽”了,无法学习到正确的任务依赖结构。只有当<strong>权重衰减</strong>等正则化机制逐步<strong>侵蚀</strong>掉 MLP 的记忆痕迹,使模型对训练数据的拟合不再完美时,损失才会上升,<strong>梯度信号重新出现</strong>。此时,注意力才能收到反馈,开始学习那些被遗漏的依赖关系。换句话说,<strong>grokking 之所以要等,是因为在等待记忆的消退</strong>。当 MLP 的记忆被削弱到一定程度,注意力终于有机会推断出正确的任务结构,模型也就完成了从记忆到理解的过渡。</p> <p>这解释了为何 grokking 时间与<strong>权重衰减强度</strong>呈反比关系:权重衰减越强,记忆被啃掉得越快,注意力越早得到反馈,grokking 越早发生;反之亦然。这种延迟实际上是一种<strong>结构性等待时间</strong>,源于记忆对结构推断的抑制。</p> <h2 id="打破等待结构干预的标度律">打破等待:结构干预的标度律</h2> <p>既然 grokking 延迟的根本原因是注意力缺乏结构梯度,那么一个自然的想法是:<strong>能否不给注意力“放假”,直接给它一些结构上的指导?</strong> 作者正是这样做的。他们引入了一种<strong>结构干预</strong>:在目标函数中加入一个<strong>KL 散度</strong>项,将注意力的分布约束向一个先验靠近。这个先验可以是任务依赖结构的某种先验知识,或者简单地鼓励注意力更均匀地关注各个 token,避免过早忽略任何信息。</p> <p>实验结果非常漂亮:<strong>加入 KL 干预后,grokking 的等待时间大幅缩短</strong>。更令人惊喜的是,作者发现<strong>干预强度与 grokking 时间之间存在清晰的标度律</strong>——<strong>干预强度每增加一倍,等待时间近似减半</strong>。换言之,通过给注意力一点“提示”,我们几乎可以<strong>线性加速</strong>模型从记忆到理解的过渡。这种 KL 干预巧妙地绕过了“解释消除”的困境:即使 MLP 已经记忆了数据,注意力也不再完全依赖微弱的梯度信号,因为 KL 项直接为注意力提供了方向,让它更快地朝正确的结构推断迈进。</p> <figure class="generated-chart"> <div style="height: 400px; position: relative;"> <canvas id="interventionChart"></canvas> </div> <figcaption>图2:KL干预强度与Grokking等待时间的标度关系。图表采用对数坐标,显示干预强度每增加一倍,等待时间近似减半的指数衰减规律,验证了论文中提出的标度律。</figcaption> </figure> <h2 id="未知与局限从模加法到更复杂的任务">未知与局限:从模加法到更复杂的任务</h2> <p>尽管这一理论为 grokking 提供了一个新颖且有力的解释,仍有一些开放的问题和局限需要承认:</p> <p><strong>- 与彩票假说的关系</strong>:论文标题中出现了“Bayesian Lottery Tickets”,明显是在与<strong>彩票假说</strong>对话。彩票假说强调<strong>参数子网络</strong>的重要性,而本文强调<strong>注意力的结构推断</strong>。两者似乎解释了 grokking 的不同侧面:彩票假说关注<strong>哪组参数</strong>能泛化,本文关注<strong>哪些信息</strong>被模型利用。然而,这两种解释是<strong>互补</strong>的还是<strong>相互竞争</strong>的?或者说,它们是否可以在一个统一的框架下共存?目前尚不清楚。作者在论文中也没有明确回答这一点,留给读者一个思考的空间。</p> <p><strong>- 任务范围的扩展</strong>:该研究的实验主要在<strong>算法序列任务</strong>上进行,例如模加法、奇偶判断等。这些任务具有清晰、离散的依赖结构,非常适合验证注意力的结构推断条件。然而,对于更复杂的任务(例如自然语言的句法结构推断),依赖图远没有模加法那么“干净”,充满噪声和模糊性。注意力在这种环境下的贝叶斯推断行为可能截然不同,<strong>泛化延迟的机制</strong>或许也不同。目前尚不确定本文的结论能否直接推广到这类更模糊的任务上。未来的研究需要在更广泛的任务上检验这一理论的有效性。</p> <p><strong>- 其他模型架构</strong>:本文聚焦于 Transformer 的注意力机制,但 grokking 并非 Transformer 独有。在其他架构(如 RNN、MLP)上也观察到了类似的延迟泛化现象。这些模型没有显式的注意力机制,那么它们的 grokking 是否也能用类似的结构推断延迟来解释?还是需要其他机制?这也是一个值得探索的方向。</p> <h2 id="总结等待中的结构与彩票的对话">总结:等待中的结构与彩票的对话</h2> <p>Hidajat 等人的工作将 grokking 这一机器学习中的谜题<strong>拆解为两个可分离的条件</strong>:一个是关于<strong>模型容量</strong>的 Goldilocks 约束,另一个是关于<strong>注意力结构</strong>的贝叶斯推断条件。他们揭示了延迟泛化的本质——<strong>延迟的结构推断</strong>,并指出这种延迟源于记忆对结构推断的抑制(解释消除效应)。通过巧妙的结构干预,他们成功缩短了 grokking 的等待时间,并发现了干预强度与等待时间之间的标度律。</p> <p>这篇论文不仅解释了“<strong>一万步里发生了什么</strong>”,还提供了一种加速模型理解的方法。它告诉我们:grokking 的等待并非不可避免,只要我们理解了其中的机制,就能主动打破记忆的束缚,让模型更早地“顿悟”。这无疑为理解和控制神经网络的学习过程提供了新的视角。然而,也正如作者所坦诚的,<strong>彩票假说与结构推断之间的关系</strong>、以及这一理论在更复杂任务上的普适性,仍是未解之谜,有待进一步研究。在 grokking 的研究中,结构推断与彩票假说的对话才刚刚开始,我们期待未来出现更多将二者融会贯通的理论,彻底揭开神经网络从记忆到理解转变的奥秘。</p> </div> <script> document.addEventListener('DOMContentLoaded', function () { // General Chart Configuration const defaultFontFamily = "'Noto Sans SC', sans-serif"; const defaultFontColor = '#212529'; const gridColor = '#E9ECEF'; Chart.defaults.font.family = defaultFontFamily; Chart.defaults.color = defaultFontColor; Chart.defaults.borderColor = gridColor; // Chart 1: Grokking Phenomenon const grokkingCtx = document.getElementById('grokkingChart'); if (grokkingCtx) { const grokkingData = { labels: [0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 11500, 12000, 12500, 13000, 14000], datasets: [ { label: '训练准确率', data: [10, 80, 98, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], borderColor: 'rgba(255, 99, 132, 0.8)', backgroundColor: 'rgba(255, 99, 132, 0.1)', borderWidth: 2, fill: false, tension: 0.1, pointRadius: 1, }, { label: '泛化准确率', data: [10, 25, 28, 30, 30, 30, 30, 30, 30, 30, 32, 50, 70, 90, 94, 95, 95], borderColor: 'rgba(13, 110, 253, 0.8)', backgroundColor: 'rgba(13, 110, 253, 0.1)', borderWidth: 2, fill: false, tension: 0.1, pointRadius: 1, } ] }; new Chart(grokkingCtx, { type: 'line', data: grokkingData, options: { responsive: true, maintainAspectRatio: false, scales: { x: { title: { display: true, text: '训练步数', font: { size: 14 } }, grid: { drawOnChartArea: false }, ticks: { color: defaultFontColor } }, y: { title: { display: true, text: '准确率 (%)', font: { size: 14 } }, min: 0, max: 120, // 100 * 1.2 grid: { borderDash: [5, 5] // Dashed lines }, ticks: { color: defaultFontColor, callback: function(value) { return value + '%'; } } } }, plugins: { legend: { position: 'top', labels: { font: { size: 12 } } }, tooltip: { mode: 'index', intersect: false }, title: { display: false } } } }); } // Chart 2: Intervention Scaling Law const interventionCtx = document.getElementById('interventionChart'); if (interventionCtx) { const interventionData = { labels: [1, 2, 4, 8, 16], datasets: [{ label: 'Grokking 等待时间', data: [10000, 5000, 2500, 1250, 625], backgroundColor: 'rgba(13, 110, 253, 0.5)', borderColor: 'rgba(13, 110, 253, 1)', borderWidth: 1 }] }; new Chart(interventionCtx, { type: 'bar', data: interventionData, options: { responsive: true, maintainAspectRatio: false, scales: { x: { title: { display: true, text: 'KL 干预强度 (相对值)', font: { size: 14 } }, grid: { drawOnChartArea: false }, ticks: { color: defaultFontColor } }, y: { type: 'logarithmic', title: { display: true, text: 'Grokking 等待时间 (步)', font: { size: 14 } }, grid: { borderDash: [5, 5] // Dashed lines }, ticks: { color: defaultFontColor, callback: function(value, index, values) { if (value === 10000 || value === 5000 || value === 2500 || value === 1250 || value === 625) { return value; } } } } }, plugins: { legend: { display: false }, tooltip: { callbacks: { label: function(context) { let label = context.dataset.label || ''; if (label) { label += ': '; } if (context.parsed.y !== null) { label += context.parsed.y + ' 步'; } return label; } } }, title: { display: false } } } }); } }); </script> </body> </html>
推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录