在这篇文章中,谷歌研究人员提供了有关这一现象和当前研究的视觉展示。该团队对超过1000个不同训练参数的小型模型进行了算法任务的训练,展示了「有条件的现象——如果模型大小、权重衰减、数据大小和其他超参数不合适,这种现象会消失。」
在2021年,研究人员在对一系列微型模型进行玩具任务训练时发现:一组模型,在经过更长时间的训练后,突然从仅仅「记住」之前的训练数据,转变为在未见过的输入上表现出正确的泛化能力。这种现象被称为「顿悟」,并引发了一系列的兴趣和研究。更复杂的模型是否也会在经过更长时间的训练后突然表现出泛化能力呢?大型语言模型看起来似乎具有很强的对外部世界的理解能力,但可能模型只是在重复记忆训练过的海量文本数据的片段,而没有真正理解其内容。到底如何判断它们是在泛化还是在记忆?在这篇文章中,研究人员将研究一个微型模型的训练动态过程,并对其找到的解决方案进行逆向工程——在此过程中,研究人员将阐述这个令人振奋的新兴机制中那些能被研究人员理解的部分。虽然如何将这些技术应用于当今最大的模型,现在还没有头绪。但从小模型入手可以更容易地培养直觉,随着研究人员的逐步努力,关于大型语言模型的这些关键问题也将最终获得解答。
突然的泛化往往发生在在对于训练数据的记忆之后,模型一开始的输出与训练数据吻合,但随着训练不断持续,和测试数据的吻合度不断提高,出现了泛化。这个过程就叫做「顿悟」上图来自于一个被训练来进行预测a+b mod 67 (即a+b的合超过67之后就会归零的模加法)的模型。研究人员首先随机将所有成对数据分成测试数据集和训练数据集。在训练过程中,训练数据被用来调整模型,让模型输出正确答案,而测试数据仅用于检查模型是否已经学会了一个通用的解决方案。模型的架构也很简单:一个具有24个神经元的单层MLP。模型的所有权重如下面的热图所示;通过将鼠标悬停在上面的线性图上,可以看到它们在训练过程中如何变化。模型通过选择与输入a和b对应的两列,然后将它们相加以创建一个包含24个独立数字的向量来进行预测。接下来,它将向量中的所有负数设置为0,最后输出与更新向量最接近的列。模型的权重最初非常嘈杂,但随着测试数据上的准确性提高和模型逐渐开始泛化,它们开始展现出周期性的模式。在训练结束时,每个神经元,也就是热图的每一行在输入数字从0增加到66时会多次在高值和低值之间循环。如果研究人员根据神经元在训练结束时的循环频率将其分组,并将每个神经元分别绘制成一条单独的线,会更容易看出产生的变化。这些周期性的模式表明模型正在学习某种数学结构;当模型开始计算测试样本时出现这种现象,意味着模型开始出现泛化了。但是为什么模型会抛开记忆的解决方案?而泛化的解决方案又是什么呢?
可以看到,这个「1和0」任务模拟出了模型的记忆和泛化,但为什么这种情况会发生在模加法中呢?首先,让我们更多地了解一层MLP如何通过构建一个可解释的泛化解决方案来解决模加法。
研究人员训练了一个更简单的模型,利用cos和sin构建一个嵌入矩阵,将a和b放在一个圆上。模型只用了5个神经元就完美地找到了解决方案。然后还是回到a+b mod 67的问题上,研究人员从头训练模型,没有内置周期,这个模型有很多频率。然后研究人员使用离散傅里叶变换分离出频率,会分离出输入数据中的周期性模式。而结果就和之前在数列中数1的任务一样,随着模型的泛化,权重会迅速衰减到很低。而且在不同的频率任务中,模型也都出现了「顿悟」。
什么原因导致泛化的出现?虽然研究人员现在对用单层MLP解决模加法的机制以及它们在训练过程中出现的原因有了深入的了解,但仍然存在许多关于记忆和泛化的有趣的悬而未决的问题。从广义上讲,权重衰减确实会导致多种模型不再记忆训练数据 。其他有助于避免过度拟合的技术包括 dropout、较小的模型,甚至数值不稳定的优化算法 。这些方法以复杂、非线性的方式相互作用,使得很难预先预测最终什么原因和方式会导致泛化。
原文标题:谷歌证实大模型能顿悟,特殊方法能让模型快速泛化,或将打破大模型黑箱
文章出处:【微信公众号:智能感知与物联网技术研究所】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !