谷歌发现大模型「领悟」现象!训练久了不再硬背,多么痛的领悟

发布者:梁刚健发布时间:2023-08-21浏览次数:18



原文链接:https://mbd.baidu.com/newspage/data/landingsuper?rs=2046695309&ruk=8MVN0ObRzpLf_xb_Ge1TDQ&urlext=%7B%22cuid%22%3A%22_u2k808TH8lC8Suz_uHIili1Si_mi285Yav2aliOvaKu0qqSB%22%7D&isBdboxFrom=1&pageType=1&sid_for_share=57654_2&context=%7B%22nid%22%3A%22news_9347128087654313626%22,%22sourceFrom%22%3A%22bjh%22%7D


量子位



哪怕只有几十个神经元,AI也能出现泛化能力!


这是几个谷歌科学家在搞正经研究时,“不经意间”发现的新成果。

他们给一些很简单的AI模型“照了个X光”——将它们的训练过程可视化后,发现了有意思的现象:

随着训练时间增加,一些AI会从“死记硬背”的状态中脱离出来,进化出“领悟力”(grokking),对没见过的数据表现出概括能力。



这正是AI掌握泛化能力的关键。

基于此,几位科学家专门写了个博客,探讨了其中的原理,并表示他们会继续研究,试图弄清楚大模型突然出现强理解力的真正原因。



一起来看看。

并非所有AI都能学会“领悟”

科学家们先探讨了AI出现“领悟力”(grokking)的过程和契机,发现了两个现象:

一、虽然训练时loss会突然下降,但“领悟”并不是突然发生的,它是一个平滑的变化过程。二、并非所有AI都能学会“领悟”。先来看第一个结论。他们设计了一个单层MLP,训练它完成“数奇数”任务。

 “数奇数”任务,指识别一串长达30位“0”“1”序列中的前3位是否有奇数个“1”。例如,在000110010110001010111001001011中,前3位没有奇数个1010110010110001010111001001011中,前3位有奇数个1

在训练前期阶段,模型中各神经元的权重(下图中的热图)是杂乱无章的,因为AI不知道完成这一任务只需要看前3个数字。

但经过一段时间的训练后,AI突然“领悟了”,学会了只看序列中的前3个数字。具体到模型中,表现为只剩下几个权重会随着输入发生变化:



这个训练过程的目标被称之为最小化损失(提升模型输出准确率),采用的技术则被称之为权重衰减(防止模型过拟合)。



训练过程中,有一些权重与任务的“干扰数字”(30位序列的后27位)相关,下图可视化为灰色;有一些则与完成任务的“前3位数字”有关,下图可视化为绿色

当最后一个灰色权重降到接近0,模型就会出现“领悟力”,显然这个过程不是突然发生的。



再来看第二个结论。不是所有AI模型都能学会“领悟”。

科学家们训练了1125个模型,其中模型之间的超参数不同,每组超参数训练9个模型。

最后归纳出4类模型,只有2类模型会出现“领悟力”。

如下图,“白色”和“灰色”代表学不会“领悟”的AI模型,“黄色”和“蓝色”代表能“领悟”的AI模型。



总结概括规律就是,一旦权重衰减、模型大小、数据量和超参数的设置不合适,AI的“领悟力”就有可能消失——

以权重衰减为例。如果权重衰减太小,会导致模型过拟合;权重衰减太大,又会导致模型学不到任何东西。

嗯,调参是门技术活……



了解现象之后,还需要探明背后的原因。

接下来,科学家们又设计了两个小AI模型,用它来探索模型出现“领悟力”、最终掌握泛化能力出现的机制。

更大的模型学会泛化的机制

科学家们分别设计了一个24个神经元的单层MLP和一个5个神经元的单层MLP,训练它们学会做模加法(modular addition)任务。

模加法,

(a + b) mod n。输入整数ab,用它们的和减去模数n,直到获得一个比n小的整数,确保输出位于0~(n-1)之间。

显然,这个任务的输出是周期性的,答案一定位于0~66之间。



首先,给只有5个神经元的单层MLP一点“提示”,设置权重时就加入周期性(sincos函数)。


在人为帮助下,模型在训练时拟合得很好,很快学会了模加法。


然后,试着“从头训练”具有24个神经元的单层MLP,不特别设置任何权重。

可以看到,训练前期,这只MLP模型的权重(下面的热图)变化还是杂乱无章的:



然而到达某个训练阶段后,模型权重变化会变得非常规律,甚至随着输入改变,呈现出某种周期性变化:



如果将单个神经元的权重拎出来看,随着训练步数的增加,这种变化更加明显:



这也是AI从死记硬背转变为具有泛化能力的关键现象:神经元权重随着输入出现周期性变化,意味着模型自己找到并学会了某种数学结构(sincos函数)。



这里面的频率(freq)不是固定的一个值,而是有好几个。

之所以会用到多个频率(freq),是因为24个神经元的单层MLP还自己学会了使用相长干涉constructive interference),避免出现过拟合的情况。

不同的频率组合,都能达到让AI“领悟”的效果:



用离散傅里叶变换(DFT)对频率进行隔离,可以发现和“数奇数”类似的现象,核心只有几个权重起作用:



总结来看,就像前面提到的“数奇数”任务一样,“模加法”实验表明,参数量更大的AI也能在这个任务中学会“领悟”,而这个过程同样用到了权重衰减

5个神经元到24个神经元,科学家们成功探索了更大的AI能学习“领悟”的机制。

接下来,他们还计划将这种思路套用到更大的模型中,以至于最后能归纳出大模型具备强理解力的原因

不仅如此,这一成果还有助于自动发现神经网络学习算法,最终让AI自己设计AI



团队介绍

撰写博客的作者来自谷歌的People + AI ResearchPAIR)团队。

这是谷歌的一个多学科团队,致力于通过基础研究、构建工具、创建框架等方法,来研究AI的公平性、可靠性等。

一句话总结就是,让“AI更好地造福于人”。

博客地址:https://pair.withgoogle.com/explorables/grokking/