NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 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 模型会很有帮助。


作者简介:


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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-06-09 08:306961

评论 1 条评论

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

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

(WebFlux)004、WebFilter踩坑记录

编号94530

Spring Boot WebFlux Reactor3 WebFilter

阿里云搭建halo博客

乌龟哥哥

9月月更

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

Java中的悲观锁和乐观锁是什么意思?其分类依据是啥?

wljslmz

Java 乐观锁 悲观锁 9月月更

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

福大大架构师每日一题

极速体验SpringCloud Gateway

程序员欣宸

Java SpringCloud SpringCloud Gateway 9月月更

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

「产品运营」研发效能之DevOps平台如何运营?

laofo

DevOps cicd 研发效能 持续交付 工程效率

开发者有话说|我想给你讲一个故事

石云升

个人成长 9月月更

第1章:初识数据库与MySQL----数据库基本概念

乌龟哥哥

9月月更

从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析

乌龟哥哥

9月月更

腾讯云搭建wordpress网站超详细介绍

乌龟哥哥

9月月更

浅谈云原生安全

HummerCloud

云原生 云安全 云原生安全

问:React的setState为什么是异步的?

beifeng1996

React

数据价值平台化输出:数据服务平台

Taylor

数据中台 接口管理 API接口管理 数据服务 数据服务平台

Python之简易计算器的制作

智趣匠

Python 9月月更 简易计算器

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

9月月更

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

9月月更

linxu入门指令

乌龟哥哥

9月月更

测试

乌龟哥哥

9月月更

Spring Security 在 Servlet 的作用区域

HoneyMoose

Python之斐波那契数列的实现

智趣匠

Python 9月月更 斐波那契数列

启动 Hello Spring Security Boot 应用

HoneyMoose

微信架构图

Johnny

#架构实战营

《MySQL入门很轻松》第5章:数据完整性及其分类

乌龟哥哥

9月月更

大数据ELK(九):使用VSCode测试分词器

Lansonli

ELK 10月月更

Python之鸡兔同笼

智趣匠

9月月更 Python语法 鸡兔同笼

14个你必须要知道的ubuntu快捷键

乌龟哥哥

9月月更

部署华为云DWS过程

乌龟哥哥

9月月更

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

9月月更

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