写点什么

大语言模型进化之谜:涌现现象的挑战与争议

  • 2023-06-09
    北京
  • 本文字数:6856 字

    阅读完需:约 22 分钟

大语言模型进化之谜:涌现现象的挑战与争议

大语言模型中出现的涌现现象是值得深入研究的问题。所谓“大语言模型的涌现现象”,一般指的是:对某些任务来说,小规模语言模型基本没有解决能力,但当模型大小增长到某个规模,大语言模型突然就获得了这种解决任务的能力。这是目前在大语言模型研究中发现的一种特殊现象,但为何会出现此种现象,并未有明确的解释。同时,最近也有研究质疑这种涌现现象是否真的存在,形成了争议。本文主题即为相关现象介绍、可能的解释,以及目前关于此的一些争论。

什么是大模型的涌现能力

复杂系统中的涌现现象


复杂系统学科里已经对涌现现象做过很久的相关研究。那么,什么是“涌现现象”?当一个复杂系统由很多微小个体构成,这些微小个体凑到一起,相互作用,当数量足够多时,在宏观层面上展现出微观个体无法解释的特殊现象,就可以称之为“涌现现象”。


生活中的涌现现象


在日常生活中也有一些涌现现象,比如雪花的形成、堵车、动物迁徙、涡流形成等。这里以雪花为例来解释:雪花的构成是水分子,水分子很小,但是大量的水分子如果在外界温度条件变化的前提下相互作用,在宏观层面就会形成一个很规律、很对称、很美丽的雪花。


那么问题是:超级大模型会不会出现涌现现象?显然我们很多人都知道答案,答案是会的。


大语言模型参数增长示意图


我们先来看下大语言模型的规模增长情况。如果归纳下大语言模型在近两年里最大的技术进展,很有可能就是模型规模的快速增长。如今,大规模模型一般超过 100B,即千亿参数。如 Google 发布的多模态具身视觉语言模型 PaLM-E,由 540B 的 PaLM 文本模型和 22B 的 VIT 图像模型构成,两者集成处理多模态信息,所以它的总模型规模是 566B。

大语言模型规模不断增长时,对下游任务有什么影响?


对于不同类型的任务,有三种不同的表现:


第一类任务表现出伸缩法则:这类任务一般是知识密集型任务。随着模型规模的不断增长,任务效果也持续增长,说明这类任务对大模型中知识蕴涵的数量要求较高。伸缩法则与涌现能力



第二类任务表现出涌现能力:这类任务一般是由多步骤构成的复杂任务。只有当模型规模大到一定程度时,效果才会急剧增长,在模型规模小于某个临界值之前,模型基本不具备任务解决能力。这就是典型的涌现能力的体现。这类任务呈现出一种共性:大多数是由多步骤构成的复杂任务。



第三类任务数量较少,随着模型规模增长,任务效果体现出一个 U 形曲线。如上图所示,随着模型规模增长,刚开始模型效果会呈下降趋势,但当模型规模足够大时,效果反而会提升。如果对这类任务使用 思维链 CoT 技术,这些任务的表现就会转化成伸缩法则,效果也会随着模型规模增长而持续上升。因此,模型规模增长是必然趋势,当推进大模型规模不断增长的时候,涌现能力的出现会让任务的效果更加出色。

LLM 表现出的涌现现象



目前有两大类被认为具有涌现能力的任务,第一类是 In Context Learning(“Few-Shot Prompt”),用户给出几个例子,大模型不需要调整模型参数,就能够处理好任务(参考上图给出的情感计算的例子)。



如上图展示,利用 In Context Learning,已经发现在各种类型的下游任务中,大语言模型都出现了涌现现象,体现在在模型规模不够大的时候,各种任务都处理不好,但是当跨过某个模型大小临界值的时候,大模型就突然能比较好地处理这些任务。


第二类具备涌现现象的技术是思维链( CoT)。CoT 本质上是一种特殊的 few shot prompt,就是说对于某个复杂的比如推理问题,用户把一步一步的推导过程写出来,并提供给大语言模型(如下图蓝色文字内容所示),这样大语言模型就能做一些相对复杂的推理任务。



从上图可以看出,无论是数学问题、符号推理问题,CoT 都具备涌现能力。

除此之外,其他任务也有涌现能力,如上图所示的数学多位数加法、命令理解等。

LLM 模型规模和涌现能力的关系


可以看出,涌现能力和模型的规模大小有一定的关联关系 ,那么,我们的问题是,具体而言,两者是怎样的关系呢?之前常见的说法是:只有大语言模型规模超过 100B 或 68B,才会出现涌现现象。其实,这种说法是不足够精确的。


如果我们精确来看的话,会发现大语言模型是否具备涌现现象,这个事情是比较复杂的,很难通过某个特殊数字来概括。目前看,模型的涌现能力,跟具体任务是什么、模型规模多大、具体使用的是什么模型,以及评测指标是什么等很多因素都有密切关联。


我们分头来看,先看下 In Context Learning 的涌现能力和模型规模的关系。上图展示了对于不同类型的具体任务, In Context Learning 的涌现能力和模型规模的对照关系。


从图中数据可以看出,我们很难给出一个唯一的模型大小数值。不同类型的任务,在 In Context Learning 方面,模型多大才具备涌现能力,这跟具体的任务有一定的绑定关系(其实也跟具体是哪个模型有一定关联,因为不同模型在训练数据构成等方面有差异)。例如:图表第一行的 3 位数加法任务,模型只要达到 13B(130 亿参数),就可以具备涌现能力,但是对倒数第二行的 Word in Context Benchmark 任务而言,目前证明,只有 540B 大小的模型才可以做到这点。



对于 CoT 来说,结论也是类似的,就是说要想出现涌现能力,模型规模大小和具体任务有一定的绑定关系,而且其实跟具体使用的是哪个模型也有关系。

把模型做小会影响 LLM 的涌现能力吗?


因为对很多任务来说,只有模型规模做到比较大,才能具备涌现能力,所以我个人比较关心下列问题:我们能不能把模型做小?把模型做小是否会影响到 LLM 的涌现能力?这是个很有趣的问题。我们这里拿两个小模型代表来探讨这个问题。



第一个小模型代表,是 DeepMind 2021 年发表的模型 Chinchilla,这个模型目前做各种任务的效果,和 540B 大小的 PaLM 基本相当。Chinchilla 的思路是给更多的数据,但是把模型规模做小。具体而言,它对标的是 Gopher 模型,Chinchilla 模型大小只有 70B,是 Gopher 的四分之一,但是付出的代价是训练数据总量,是 Gopher 的四倍,所以基本思路是通过放大训练数据量,来缩小模型规模。


我们把 Chinchilla 规模做小了,问题是它还具备涌现能力吗?从上图给出的数据可以看出,起码我们可以说, Chinchilla 在自然语言处理的综合任务 MMLU 上是具备涌现能力的。如果小模型也能具备涌现能力,那么这其实侧面反映了一个问题:对于类似 GPT3 这样的模型而言,很可能它 175B 这么多的模型参数,并没有被充分利用,因此,我们在以后训练模型的时候,可以考虑先增加训练数据,降低模型参数量,把模型做小,先把模型参数利用充分,在这个基础上,再继续增加数据,并推大模型规模。也即是说,目前看,我们先把模型做小,再把模型做大,看上去是可行的。


第二个小模型代表是 Meta 发布的开源模型 LLaMA,它的做法其实很好理解,本质上就是开源的 Chinchilla,它的思路是完全遵照 Chinchilla 来做的,就是说增加训练数据,但是把模型规模做小。那么 LLaMA 是否具备涌现能力呢?从上图表格数据可以看出, 虽然 LLaMA 在 MMLU 这个任务上比 Chinchilla 稍差一些,但是效果也不错。这说明 LLaMA 在 MMLU 上基本也是具备涌现能力的。


其实,有个工作目前还没有看到有人做,但是这个工作是很有价值的,就是充分测试当模型变得足够小(比如 10B-50B 规模)以后,各种任务的涌现能力是否还具备?这是个很有价值的事情,因为如果我们的结论是即使把模型规模做小,各种任务的涌现能力可以保持,那么我们就可以放心地先追求把模型做小。

模型训练中的顿悟现象


这里介绍一个比较新的研究方向,顿悟现象,英文叫 “Grokking”。 在这里介绍模型训练过程中的顿悟,目的是希望建立起它和大模型涌现能力之间的联系,我在本文后面会尝试用顿悟现象来解释大模型的涌现能力。



我们首先解释下什么是顿悟现象。如上图所示,对于一个训练数据较少的数学任务(通常是数字求和取余数的问题),研究人员发现一种新奇的现象。比如我们将数据集切成两块,50% 数据作为训练集(图中红线展示了随着训练过程往后走,任务指标的变化情况),50% 的数据作为验证集(图中绿线的走势展示了训练动态)。在学习数字求和取余这个任务时,它的训练动态会经历三个阶段:


  • 第一个阶段是记忆期:红线对应的训练数据指标突然走高,代表模型记住了 50%的训练数据的结果,而绿线对应的验证集指标接近 0,说明模型完全没有泛化能力,就是说没有学会这个任务的规律。所以这个阶段模型只是在单纯地记忆训练数据。

  • 第二个阶段是平台期:这个阶段是记忆期的延续,体现为验证集合效果仍然很差,说明模型仍然没有学会规律。

  • 第三个阶段是泛化期:这个阶段验证集合效果突然变好,这说明突然之间,模型学会了任务里的规律,也就是我们说的,出现了顿悟现象,突然就学明白了。



后续研究表明:Grokking 本质上是在学习输入数字的一个好的表征。如图所示,可以看到由初始化向记忆期再到顿悟现象出现的过程,数字的表征逐步开始体现当前学习任务的任务结构。



那么 ,我们能用 Grokking 来解释大模型的涌现现象吗?目前,有部分研究暗示两者实际是存在某些关联的,但尚未有研究明确地指出两者之间的关系。两者从走势曲线看是非常接近的,但是有很大区别,因为 Grokking 描述的是模型训练动态中的表现,而涌现表达的是模型规模变化时的任务表现,虽然走势相近,但两者不是一回事。我认为,要想用 Grokking 解释涌现现象,核心是要解释清楚下列问题:为什么规模小的语言模型不会出现 Grokking ?这是个很关键的问题。因为如果规模小以及规模大的语言模型都会出现 Grokking,那么说明 Grokking 和模型规模无关,也就不可能用来解释大模型的涌现现象。本文后面,我会给出一个自己的猜想,来建立两者之间的联系。

LLM 涌现能力的可能原因


为什么随着模型增大会出现涌现现象?这里给出三种猜想。前两种是现有文献提出的,第三个是我试图采用 Grokking 来解释涌现现象的猜想。


猜想一:任务的评价指标不够平滑


一种猜想是因为很多任务的评价指标不够平滑,导致我们现在看到的涌现现象。关于这一点,我们拿 Emoji_movie 任务来给出解释。Emoji_movie 任务是说输入 Emoji 图像,要求 LLM 给出完全正确的电影名称,只有一字不错才算正确,错一个单词都算错。 如上图所示,输入的 Emoji 是一个女孩的笑脸,后面跟着三张鱼类的图片,您可以猜猜这是什么电影。下面左侧的 2m 代表 模型参数规模是 200 万参数,以及对应模型给出的回答。可以看出,随着模型规模不断增大至 128B 时,LLM 才能完全猜对电影名称,但是在模型到了 125m 和 4b 的时候,其实模型已经慢慢开始接近正确答案了。


如果评价指标要求很严格,要求一字不错才算对,那么 Emoji_movie 任务我们就会看到涌现现象的出现,如上图图左所示。但是,如果我们把问题形式换成多选题,就是给出几个候选答案,让 LLM 选,那么随着模型不断增大,任务效果在持续稳定变好,但涌现现象消失,如上图图右所示。这说明评价指标不够平滑,起码是一部分任务看到涌现现象的原因。(最近,斯坦福大学在文章“Are Emergent Abilities of Large Language Models a Mirage?”中证实了这个猜想,证明了很多涌现现象是由于评价指标不平滑导致的,如果换做平滑指标,则很多之前的涌现现象会消失)

猜想二:复杂任务 vs 子任务


开始的时候我们提到过,展现出涌现现象的任务有一个共性,就是任务往往是由多个子任务构成的复杂任务。也就是说,最终任务过于复杂,如果仔细分析,可以看出它由多个子任务构成,这时候,子任务效果往往随着模型增大,符合 Scaling Law,而最终任务则体现为涌现现象。这个其实好理解,比如我们假设某个任务 T 有 5 个子任务 Sub-T 构成,每个 sub-T 随着模型增长,指标从 40% 提升到 60%,但是最终任务的指标只从 1.1% 提升到了 7%,也就是说宏观上看到了涌现现象,但是子任务效果其实是平滑增长的。



我们拿下国际象棋任务来作为例子,如上图所示,让语言模型预测下一步,最终评价指标是只有“将”死才算赢。如果按“将死”评估(红线),发现随着模型增大,模型在缓慢上升,符合涌现的表现。若评估 LLM 合法移动(绿线),而在合法的移动步骤里进行正确选择才够最后“将死”是个子任务,所以其实这是比将死简单的一个子任务。我们看合法移动随着模型规模,效果持续上升。此时,我们是看不到涌现现象的。



这里可以给出一个例证,如上图所示,对于 CoT 任务,谷歌用 62B 和 540B 模型对 LLM 做错的例子进行了错误分析。对于 62B 做错、而 540B 做对的例子分析,可以看出,最多的一类错误来自于单步推理错误,这其实也能侧面说明复杂任务和子任务的关系。

猜想三:用 Grokking 来解释涌现


这里介绍我设想的如何用 Grokking 来解释涌现现象的一种猜想,在建立两者之间关系前,我们先来看两个已知的事实,然后在事实基础上作出推论。



首先,第一个事实是 Grokking 现象是描述训练数据量较少的 ML 任务的,但是任务最小训练数据量必须达到一定的量,才会出现 Grokking 现象。这里有两点,一个是本身训练数据量少,另外是最小数据量要达到临界值。只有同时满足上面两个条件,才有可能出现 Grokking 现象。上图的意思是:当我们只拿 40%及以下比例的数据来训练模型的时候,我们看不到 Grokking 现象,只有记忆没有泛化,只有最小训练数据比例超过 40%,才会出现模型的顿悟。这是一个已被验证的事实。


第二个事实是 LLM 模型规模越大,记忆数据的能力越强。关于这点目前有很多研究已经可以证明,如果简单理解的话,可以理解为:对于某个任务 T,假设预训练数据里包含与任务 T 相关的训练数据量有 100 条,那么大模型可以记住其中的 70 条,而小模型可能只能记住 30 条。虽不精确,但大概是这个意思。


在上面的两个事实基础上,我们试图来用 Grokking 解释大模型的涌现现象。首先我们给出一个简单的解释,这个解释只需要利用第一个事实即可,就是说,任务的最少训练数据量需要达到临界值,才会出现 Grokking。在这个事实下,对于某个任务 T,尽管我们看到的预训练数据总量是巨大的,但是与 T 相关的训练数据其实数量很少。当我们推大模型规模的时候,往往会伴随着增加预训练数据的数据量操作,这样,当模型规模达到某个点的时候,与任务 T 相关的数据量,突然就达到了最小要求临界点,于是我们就看到了这个任务产生了 Grokking 现象。在语言模型的宏观角度,看起来就是模型达到了某个规模,突然任务 T 效果就开始变好,而模型规模较小的时候,因为没有达到临界值,所以一直没有 Grokking 现象,看起来就是语言模型没有这个能力。这是一种可以从 Grokking 角度解释大模型涌现现象的可能。


上面这个猜想其实有个约束条件,因为我们有个假设,说随着模型规模增大,训练数据量也在增大。如果这个假设不存在,也就是说,随着模型规模增大,我们固定住训练数据量不变。那么,这种情况下,怎么能用 Grokking 解释涌现现象呢?此时如果我们同时利用事实 1 和事实 2,也可以给出一个解释。更具体来说,我们假设在预训练数据中,某个任务 T 有 100 个训练数据,当模型规模小的时可能只记得 30 个,达不到 Grokking 现象的临界点,而当模型规模推大时,因为模型记忆能力增强,可能就能记住其中的 50 个,这意味着它可能超过了 Grokking 的临界点,于是会出现 Grokking 里面的泛化现象。如果从这个角度看,其实我们也可以从 Grokking 角度来解释为何只有大模型才会具备涌现现象。

关于大语言模型涌现能力的争议


目前出现了个别研究,对大语言模型是否存在涌现能力提出了质疑。典型的就是斯坦福大学在文章“Are Emergent Abilities of Large Language Models a Mirage?”中提出的观点,他们认为大模型之所以会出现涌现现象,主要是由于评测指标设计不合理,比如很多 LLM 的评测指标是多项选择以及答案字符串完全精确匹配,这些评价指标都不平滑,会带来我们看到的涌现现象。而如果把评价指标换成平滑指标,则很多涌现现象将会消失。同时,他们证明了,如果我们把传统图像任务的评价指标换成不平滑指标,其实在图像任务中我们也能看到涌现现象,这从侧面也说明了评价指标选择带来的巨大影响。


除此外,还有其它一些质疑大语言模型中是否存在涌现现象的不同角度。比如另外一个典型的质疑是:体现大模型涌现现象的图表中,纵坐标往往是任务性能,是线性增长的,而横坐标则是模型规模,往往是采取 log-scale 变换之后的。这种 log-scale 变换是非线性的,所以规模小的模型任务指标被低估,导致当模型达到一定规模后看似出现了任务性能的突变。这种质疑也是有一定道理的。再比如,有人认为横坐标(模型规模坐标)的坐标采样太稀少,从小规模模型到极大规模的模型之间缺乏一些中间规模的模型,所以看似的涌现现象是这种模型规模采样稀疏带来的,如果有很多中间规模的模型,则任务效果很可能看上去就会是个平滑曲线而非突变现象。这种质疑也不能说没有道理。


总而言之,大语言模型是否具备涌现能力?如果具备,那么是什么原因导致的?关于这些问题,目前的研究还很不深入,也存在各种争议。所以继续深入研究这一现象,对于我们加深了解 LLM 模型会很有帮助。


作者简介:


张俊林,中国中文信息学会理事,目前是新浪微博新技术研发负责人。博士毕业于中科院软件所,主要的专业兴趣集中在自然语言处理及推荐搜索等方向,喜欢新技术并乐于做技术分享,著有《这就是搜索引擎》、《大数据日知录》,广受读者好评。

2023-06-09 08:307933

评论 1 条评论

发布
用户头像
涌现无处不在,基于大模型的涌现甚是期待
2023-06-09 10:56 · 江苏
回复
没有更多了
发现更多内容

JS Array数组几个循环实用方法总结

MegaQi

JavaScrip 测试发开 web前端开发

高层次人才一站式服务平台系统开发

a13823115807

加密货币监控和区块链分析如何帮助避免加密货币欺诈?

CECBC

kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析

良凯尔

容器 云原生 kubeadm #Kubernetes# Kubernetes 集群

从二十年开源经历出发,70 后大龄程序员谈成长、困境与突围

TDengine

数据库 tdengine 开源

VuePress 博客搭建系列 33 篇正式完结!

冴羽

JavaScript Vue 前端 vuepress 博客搭建

基于微信小程序的实验室预约小程序平台详细设计

CC同学

数字医疗时代的数据安全如何保障?

CECBC

Flutter 路由及路由拦截跳转404

岛上码农

flutter ios Android开发 移动端 3月月更

深入浅出 Java FileChannel 的堆外内存使用

Apache IoTDB

360大数据技术专家 程建云:IoTDB在360的落地实践 | Apache IoTDB Talk

Apache IoTDB

时序数据库 IoTDB Apache IoTDB

区块链架构下 智慧城市发展加速

CECBC

区块链等技术助力北京海关监管

CECBC

[Day3]-[快慢指针]解决链表问题

方勇(gopher)

LeetCode 数据结构与算法

明天直播:如何测试硬件设备与龙蜥操作系统的兼容性?

OpenAnolis小助手

硬件 直播 开源社区 sig 兼容性

前端食堂技术周刊第 30 期:Vercel 支持零配置部署使用 pnpm 项目、React 新文档更新、Angular Roadmap、Remix Stacks

童欧巴

JavaScript 编程 前端 周刊 资讯

一文带你了解 Python 中的生成器

踏雪痕

Python 生成器 3月程序媛福利 3月月更

如何快速实现持续交付

阿里云云效

云计算 阿里云 软件开发 CI/CD 持续交付

《LeetCode 刷题报告》题解内容Ⅱ

謓泽

3月月更

Facebook 开源 Golang 实体框架 Ent 现已支持 TiDB

Geek_2d6073

异构注册中心机制在中国工商银行的探索实践

SOFAStack

GitHub 开源 分布式架构 注册中心 工商银行

OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap

OceanBase 数据库

oceanbase OceanBase 开源

“中本聪岛”加密乌托邦

CECBC

Paxos vs. Raft:我们对共识算法达成共识了吗?

多颗糖

分布式系统 raft PAXOS

服务器防渗透--信息收集

喀拉峻

网络安全

云时代,租电脑还是初创型企业最好的选择吗?

阿里云弹性计算

远程办公 无影云电脑 初创型企业

week4作业

Asha

墨天轮访谈 | 华为云温云博:从客户视角出发,GaussDB(for Redis)究竟“香”在哪里?

墨天轮

数据库 redis 华为云 国产数据库 键值数据库

URL的四种形式对比说明

源字节1号

前端开发 后端开发 网站开发

黑匣子为什么难成为“云匣子”?

脑极体

小程序电商业务微服务拆分及微服务基础设施选型

Geek_36cc7c

大语言模型进化之谜:涌现现象的挑战与争议_AI&大模型_张俊林_InfoQ精选文章