GPT是鹦鹉学舌,还是真的具有类人智能?带你一探究竟。
「两位说英语的荒岛幸存者被困在相邻岛屿上,中间隔着危险水域。幸运的是,他们发现了前任居民留下的电报机,电报机通过一条水下电缆连接起来,他们能够通过电报传递信息。但是,他们不知道的是:附近水域里,生活着一个具备超级智能的章鱼,它劫持了水下电缆并拦截了他们之间传送的消息。尽管章鱼不懂英语,但其超级智能使其能够检测到电报信息文字的统计模式,并能准确表示各种电报信号间的统计关系。在章鱼觉得自己已经学好这些统计规律之后,它切断水下电缆,将自己两个长触手定位在电缆的两个末端,基于它所识别出来的统计模式,接收并自己来回复两名漂流者的电报信号。无论两位幸存者是否注意到交流对象已发生变化,章鱼发送出去的信息,在本质上似乎没有任何含义。毕竟,章鱼只是遵循它从人类之间的前期交流中学到的统计模式,而并没有看到过任何人类对信号的解释,比如 “椰子” 或 “海水” 所代表的真实含义。此外,章鱼甚至可能都不明白这些信号是具有意义的,或起到了促进交流的功能。」 —— 「章鱼测试(The Octopus Test)」- Bender & Koller
如果我们把「章鱼测试」里的章鱼换成 ChatGPT 或 GPT 4,您会怎么看这个问题呢?也就是说,下述两种观点,您支持哪一种呢?一种观点与 “章鱼测试” 看法类似,认为 GPT 4 这种 LLM 模型仅仅学会了语言中的单词共现等浅层的表面统计关系,其实并未具备智能,只是类似鹦鹉学舌的语言片段缝合怪而已;另外一种观点则认为:GPT 4 不仅学会了语言元素间的表面统计关系,而且学到了人类语言甚至包括物理世界的内在运行规律,文字是由内在智能产生的,所以 LLM 具备类人智能。
这两种观点针锋相对,我不确定您属于哪一派。目前无论是学术界,还是社会层面,其实持有两方观点的人数都不少,相互之间争论很激烈。比如不认为大语言模型具备智能的反方知名代表人物,AI 圈子里的大佬代表是 LeCun,语言学界代表人物是乔姆斯基,都否认通过 Next Token Prediction 这种方式训练出来的大语言模型能够具备智能;而正方代表人物也很多,OpenAI 不说了,毫无疑问是最具影响力的正方代表,从目前的公开言论看,Hinton 老爷子很明显也持正方观点,而且特别正方,不仅认为 GPT 4 具备类人智能,而且觉得将来人类这种碳基智能很可能是 LLM 这种硅基智能的引导启动程序 (Booster),在这点上 Hinton 和马斯克(这是简称,全名为:埃隆・电动车之王・火箭先驱・Twitter 再造者・环保先锋・火星殖民者・OpenAI 唾弃者・马斯克)的看法是类似的。
目前规模够大的 LLM 模型,在训练基座模型的时候,都采用「Next Token Prediction,NTP」 (后文为了书写简洁,有时会简称为 NTP) 任务。Next Token Prediction 如此简单的操作,就是通过语言中前面的单词,来产生下一个单词,很明显这样学到的不就是单词之间的表层统计关系吗?对于持正方观点的人士来说,这个问题其实并不好反驳,因为乍一看上去确实如此,我相信绝大多数正方人士很难给出有理有据的另反方人士信服的解释。
至于我本人,如果看过我年初写的《张俊林:通向 AGI 之路:大型语言模型(LLM)技术精要》,很容易看出持正方立场。其实当时在那篇文章的最初版本里,有一节内容,主题就是讨论 NTP 为何会产生智能。按照 23 年 1 月份版本的我当时对 LLM 的理解,把 NTP 产生智能归纳为「通过 NTP 任务,LLM 在模型参数里学到了一个隐形的知识图谱,当输入 Prompt 的时候,Prompt 包含的概念启动知识图谱相关节点,然后在知识图谱上按照 < 激活 - 扩散 > 理论引发知识间的激活扩散和信息传递,由此导致 LLM 产生了智能」。当时版本的我是这么理解这个问题的答案的,现在版本的我再去审视这个看法,虽然不能说是错的,但是很明显这种认知还是浅了些或粗略了些。当时,由于那篇文章已有内容已经太长,再加上支持上述看法的依据不太充足,所以我在发文的时候把那节内容删掉了。
本文专门探讨这个主题,我试图梳理归纳目前已有的一些片段性的证据,对上述问题给出一个相对有依据的回答。其实目前正方并没有专门的研究来解释这个问题,但是,如果把各种已知用于研究其它问题的研究结论片段联系到一起来看,即我们可以把寻找这个问题的答案当作一个拼图游戏,在已知研究的拼图碎片基础上,如再加一些合理的推论和假设,我认为正方大致是能给出一些起码看似合理的解释的。本文在结构上首先会比较细致地介绍下 OpenAI 对这个问题的看法,这个对大多数人来说应该是个很新颖的角度,之后会收集汇总现有的研究结论,之后会给出我认为还算合理的解释。
天平的两端:压缩即智能
假设有一个想象中的天平,天平的左端用来称量大语言模型的数据压缩能力,天平的右端用来称量大语言模型的智能水准。问题是:这个天平的称量结果是可信的吗?换句话说,如果大语言模型具备越强的数据压缩能力,是否意味着它具备越强的 AGI 智能呢?
OpenAI 肯定是相信两者间存在等价性的,目前看,这可能是推动 OpenAI 大模型发展方向的一个核心理念。OpenAI 首席科学家 Ilya Sutskever 在今年早期的一些公开访谈初步透漏了这个思路。而后续 OpenAI 负责大模型团队的 Jack Rae 在 Stanford MLSys 研讨会上做了以 「Compression for AGI」 为主题的报告,则是从理论层面,概念性地论证了这一理念。
本部分主要参照 Jack Rae 报告内容,转述 OpenAI 坚信的 “压缩即智能” 论证过程。我们先从一个数据压缩传输的假想实验讲起。
利用 LLM 进行数据压缩
我们假设小帅和小美分别住在地球和火星,现在小帅获得一批机密数据 ,需要以最小传输成本传送给远在火星的小美,小帅计划通过 LLM 模型比如 GPT 来对数据进行压缩,然后把压缩后的数据传给小美,以此来减少传输数据数量。同时,他希望信息压缩是无损的,也就是说,小美要能够根据拿到的压缩数据,利用一定方法完整恢复原始数据,不能有任何差异。这个事情看似不太容易做到,怎么办呢?
首先,小帅把 GPT 模型的代码,包括代码本身、初始化方法以及随机种子等信息传给小美,小美根据小帅传过来的 GPT 模型的信息,利用同样的代码、初始化方法以及随机种子,复制并初始化了一份自己的 GPT,以此来让自己手上的 GPT 模型和小帅手上的模型,在初始状态保持一致。
接下来,小帅以 Next Token Prediction 作为任务,以
作为训练数据,启动 GPT 模型的训练过程,训练过程本身其实就是数据压缩过程。我们假设小帅已经对数据 通过 GPT 进行了压缩,对应的压缩数据为,并将这批压缩数据陆续传给了小美,现在准备传送数据 。我们在这里按下 “慢放” 键,仔细观察下 GPT 是如何对数据 进行压缩编码和解码的。
编码阶段:我们的目的是利用 GPT 压缩 数据,小帅以 作为 GPT 的输入,利用当前版本的 GPT 模型 做一次 Next Token 预测。假设 Token 词典是,则 GPT 模型经过 Next Token 预测,产生了词典 中每一个单词的生成概率, 中有些单词生成概率大,有些生成概率小,所有单词的生成概率之和为 1,于是形成 的概率分布 。若设原始数据 ,此时,可以利用某种数据压缩算法,比如算术编码(Algorithm Coding, AC ),根据 和 ,将 压缩成数据 (至于算术编码如何运作,稍后会说明),即,于是小帅可以把得到的压缩编码 传给小美。
另外,如果 GPT 根据上文 做 Next Token 预测得到概率最大的单词不是标准答案 ,说明模型训练得还不够好,于是小帅让 GPT 执行一次反向传播,来修正 GPT 模型参数,希望以后 GPT 遇到类似上文能够更准确地做出预测。经过反向传播,模型参数发生变化,GPT 模型从 修正到了版本。
可以看出,上述过程,其实就是针对某个 Token 做的一次标准的 GPT 训练步骤,只不过我们平常训练 GPT 的时候,不会根据 Next Token Prediction 得到的分布概率 以及算术编码来获得 的压缩编码 ,并记录下来而已。如果你愿意,完全可以在训练过程中一步步产生每个 对应的 ,并把它们记录下来,这样就会获得数据 的一份无损压缩编码版本。
解码阶段:接收到小帅传来的压缩编码 后,小美希望利用自己手上的 GPT 模型来恢复原始数据 。她也可以用算术编码来逆向对 进行解码,但是,若想解码 信息不足,除了 外,还需知道 对应的词典 中单词的概率分布 ,但是小帅并没有把 传过来,因为这个信息量太大,传过来很不合算,如何是好?
小美可以用自己手上的 GPT 来产生缺失的词典单词概率分布 ,她把之前已经解码出的 作为模型的输入,让自己手上的 版本 GPT 模型做一次 Next Token 预测,于是 GPT 模型产生了单词概率分布 ,这个与小帅的概率分布 是一样的。得到 后,小美可以利用算术编码对 解码,即 ,这样就恢复出原始数据 。类似的,如果小美手上的 GPT 此次 Next Token 预测最大概率单词不是 ,她也让 GPT 执行一次反向传播,修正模型参数,将 GPT 模型从 版本修正到 版本。只有这样,小美才能保证自己手上的 GPT 模型和小帅在传输过程中始终保持一致。
可以看出,解码过程,其实就是小美也同步进行 GPT 的一次训练步骤,并利用 Next Token Prediction 得到的词典单词概率分布 ,来帮助从压缩数据 解码到原始数据 。
如此这般,小帅和小美就通过两人同步进行 GPT 在 上的模型训练过程,完成了对数据 的压缩和解压,只要不断重复上述过程,小帅就能把 中所有数据无损地传送给小美,实现了通过 LLM 对数据的无损压缩和解压。所以我们可以说,GPT 模型的训练过程,其实就是对训练数据的无损压缩过程,只不过我们平常训练的时候跳过了这个步骤而已。
算术编码机制
上文未讲解算术编码的运行机制,此处以简单例子做简要说明。如上图所示,假设单词词典 包含 4 个单词,我们要压缩编码的原始数据 ,此时 GPT 运行 Next Token Prediction 后,词典 中单词对应的概率分布 在上图图左列出,也就是说,此刻的 GPT 预测的 Next Token,生成概率最大的单词是「too」,而不是 Ground Truth 「MaskNet」。
此时,已知 和它对应的 ,我们使用算术编码来对数据进行压缩。首先,我们可以根据词典中各个单词的生成概率,把 0 到 1 的区间按照每个单词的概率分值进行切割,单词生成概率数值越大,占据区间越长。于是,就可以得到每个单词覆盖区间的下界和上界,比如对于要编码的单词 「MaskNet」,它的下界是 0.4,因为自身生成概率为 0.2,所以上界是 0.6。为了使得二进制编码后的长度尽可能短,算术编码在 「MaskNet」“” 单词覆盖的 0.4 到 0.6 区间寻找对应二进制最短的十进制小数,很明显在这个区间里,十进制数字 0.5 是二进制最短的数字,于是选择 0.5 作为编码数字,进行数制转换后得到二进制 0.1,这个数字就是单词 “MaskNet” 对应的二进制算术编码,小帅只需要把小数点后的二进制数字 1 发送给小美即可。
接着,介绍小美接收到二进制数字 1 之后的解码过程。如上文所述,小美利用自己的 GPT,也会得到一个相同的单词分布概率 ,按照算术编码原则,用这个分布概率切割 0 到 1 的数值区间,会得到和小帅一样的一个切割图。小美将二进制 0.1 进行进制转换,得到十进制数字 0.5,然后查看 0.5 落在切割图哪个单词的上下界范围内,会定位到单词 “MaskNet”,于是解码出 0.1 代表的对应单词 。
算术编码的思想是很精妙的,它对输入序列动态编码,能够以小数来对整个输入进行二进制编码,编码效率接近于香农提出的熵极限。不过,在我们描述的场景下,因为每个 对应的 在 GPT 训练过程中总是发生变化,所以某个分布 只需要压缩或者解码一个 Token,其思路看起来就很简单,当面向较长的输入序列进行算术编码,其方法可以参考:什么是算术编码 。
压缩即智能
从上述讲解可看出,如果 GPT 模型生成 Ground Truth 的生成概率越高,则其在算术编码分割区间中占据的长度就越长,就越容易找到更短的算术编码,这意味着模型压缩率越高。也就是说,如果 GPT 模型智能程度越高,NTP 预测得越准确,则其压缩效率就越高。所以,我们可以根据模型的压缩效率来评估模型的智能程度,模型压缩效率越高,则模型智能程度越高,这是目前 OpenAI 照此思路推进大模型研发方向的一个核心理念。
我们可以考虑两种极端情况:一种情况是模型具备超强智能,对于 Next Token Prediction 要预测的每一个 Ground Truth ,生成概率总是为 1。我们假设当小帅传输给小美一部分数据 后,模型的智能程度不断积累并达到这个程度,这意味着对于没有传送的剩余数据 来说,小帅后面无需传输任何信息。因为小美的 GPT 已经能够完全靠自己正确预测后续的每一个 Token,此时 GPT 模型由于具备超强智能而拥有了极限数据压缩能力,也就是根据输入上文,未来发生什么它都知道;另外一种极端情况,是 GPT 在训练过程中未学到任何智能,则其在做 Next Token Prediction 时,纯靠猜。假设词表 大小为,则每一个 Ground Truth 的生成概率永为 ,此时 GPT 不具备任何数据压缩能力,需要传输的数据量和原始数据 信息量相等。
这是两种极端情况。大多数情况下,LLM 模型的智能,或者说压缩能力,应该介于两者之间,而我们可以根据模型压缩能力,来评估模型的智能程度。如果做些数学推导,可知这种情形下,对于数据 对应的 ,算术编码所需编码的 bit 数,也即码长,应为:,您看到这个公式可以思考下,有没有觉得它和谁长得比较像呢?其实,这就是 GPT 在训练的时候, 这个 Token 对应的交叉熵损失。也就是说,如果从数据压缩的角度,每个 Token 的编码长度,其实就是 LLM 预训练时,这个 Token 对应的交叉熵损失,两者是等价的。是不是很有意思?所以,数据无损压缩是看待 LLM 模型训练的另外一个比较新颖的视角。
我们可以进一步推导一下,对于数据集合 ,经过 LLM 模型压缩传输,小帅传给小美的总数据量是多少?具体计算公式可参考上图。由图可看出,传输信息总量由两部分构成:一部分是 LLM 模型代码描述,包括代码本身、初始化方法以及随机种子等信息;另外一部分的求和公式如果展开,如上所述,每个 对应的压缩编码 bit 数,就是这个 Token 对应的交叉熵损失,所以,这部分其实就是 GPT 利用数据 进行预训练的时候,所有 Token 的损失之和。两个部分相加就是数据传输总量。
那么,不同的 LLM 模型,是否具备不同的数据压缩能力呢?答案是显然的。上图展示了不同大小 LLaMA 模型(从最小的 7B 到最大的 65B)对应的数据压缩能力:对于相同的训练数据总量(比如横坐标的 1000B Tokens 节点),每个模型 Loss 曲线覆盖的面积总数,就是这个模型对应的数据压缩能力,Loss 曲线覆盖的面积越小,说明模型压缩能力越强。有了前面的讲解铺垫,我相信这很好理解,我们可以极端地假设模型训练时每个 Batch 只包含一个 Token,那么其所需的编码 bit 数,就是这个 Token 对应的 loss 数值,我们对模型 Loss 面积进行积分,就能得到所有 Token 的总 Loss,而这等价于压缩这些 Token 所需要的总的压缩后编码长度。
从上图可以看出,规模越大的 LLaMA 模型,其对应的 Loss 面积越小,意味着这个模型压缩率越高,压缩能力越强,而这进一步代表模型的智能程度越高。如果粗估的话,可以得出目前 LLaMA 模型的数据压缩率在 14 倍左右,而这是超出专门的数据压缩竞赛 Hutter Prize 目前最佳的压缩率的,目前这个最佳压缩率是 8.7 倍。这说明什么呢?如果我们假设当前主流的文本压缩算法,其压缩依据主要来自于词频以及重复出现模式这种表面因素的话,那这多出的压缩率,很可能代表了 LLM 语言模型对于文本深层理解,来自于对 AGI 的智能编码。
进一步的思考
上述内容,即 Jack Rae 报告中体现出的 「压缩即智能」的论证思路。三月份左右我看完分享后大受启发,觉得 OpenAI 开的脑洞很大,因为自己确实从来没有从数据压缩的角度看待过 LLM 模型,我相信这对绝大多数人来说都是一个很新颖的观察角度。不过,后来查阅相关文献后,发现这种 “压缩即智能” 的思路并非 OpenAI 首创,其实已有较长历史。比如上文提到的旨在鼓励研究更好数据压缩算法的 Hutter Prize,创立于 2006 年,奖项设立人 Marcus Hutter 即相信数据压缩能力和 AI 智能是一个等价的问题,这也是他自己出资设立这个奖项的初衷,而且目前使用 AI 模型做数据压缩已然是个小的研究方向,有不少相关论文。
我们可以就这个思路深入思考两个相关问题。第一个问题是:上面讲述内容是以数据压缩的视角来看待 LLM 的智能水准,问题是为何模型压缩能力越强,就代表了它具备更高的智能呢?
最小描述长度原理(Minimum Description Length,MDL)可以解释这个问题,这是机器学习中的一个重要概念,是奥卡姆剃刀原则(「如无必要,勿增实」体)的形式化表述。MDL 的核心思想是说:假设我们有很多模型可以对手上的数据作出解释,那么其中最佳解释应该是对该数据进行尽可能短而准确描述的模型,模型描述长度越短,则其泛化性就会越好,也就是我们说的越智能。为啥描述越短越智能?因为这个短描述是从数据里抽象出来的内在规律,相对大量数据,数据内在规律的描述,自然就短得多,而模型若能给出越短的描述,说明这个模型学到了更多的内在规律,所以就越聪明。是这个逻辑,我们来举个例子。假设要传输的序列是一万个连续质数数字序列:
质数数字之间的出现间隔是没有规律的,所以小帅只能老老实实把这一万个数字编码传给小美,但是其实小帅可以用一句话,比如「输出从 2 开始的 1 万个连续质数」 ,来描述这些数字,把这句话压缩后传给小美,小美的 LLM 模型看到这句话后,如果足够聪明的话,就能恢复出 1 万个质数序列,到这里我相信您应该能理解 MDL 的含义了。
当然,能这么做的前提是:LLM 得理解质数这种很抽象的概念才行。那么,大模型真的能理解这种抽象概念吗?是否真的只有大模型才能理解类似 「质数」 这种抽象概念,而小模型就不行呢?我做了个验证,对大模型和小模型的能力做了个对比,为了防止模型单纯靠对训练数据中出现的质数序列进行记忆来完成这个任务,我把描述进行了一些转换,保证大语言模型在训练中是看不到这种说法的,测试对应的 Prompt 及大小两个模型的输出结果可参考下图所示。
可以看出,GPT 3.5 是学会了质数这种抽象概念的,否则这道题很难回答好,如果不理解这个概念,就会出现图右小模型这种不知所云的回答。这一方面说明大模型确实可以学习一些抽象概念,另一方面说明大模型在这方面表现确实比小模型要好。
另外一个问题,jack Rae 在报告中强调 LLM 的这种数据压缩能力是无损的,并反驳了著名科幻小说作家特德姜在年初时候提出的影响很大的「ChatGPT 是对互联网数据的有损压缩」 观点。其实吧,你要仔细思考一下,会发现这种 LLM 是对数据的「无损压缩」的观点是有点水分的。如果我们更严谨地来看,会发现尽管 LLM 训练过程可以看成是对数据的无损压缩,但是能够达成「无损」 的效果,并不单单靠 LLM,其实是「LLM + 算术编码」一起完成的。
如果 LLM 通过学习达到足够强的智能程度,能够保证 NTP 预测后续文字序列的 loss 是 0,也就是说可以根据上文 Context,完全精准预测后续 Next Token,此时算术编码就不需要了,仅靠 LLM 就能完整地对数据进行压缩和解码。如果是这种情况,我们说 LLM 的训练过程或者说 LLM 在经过训练后,能对数据进行 「无损压缩」,并没有任何问题。但是,这是理想情况,目前 LLM 能做到这点吗?肯定是做不到的,所以 LLM 给出的后续 Next Token 预测肯定会有错误,这些被预测错误的 Token,其实就代表了 LLM 压缩数据的信息损失,这种损失是靠算术编码额外对信息进行编码来进行补偿,才达成数据的「无损压缩」效果。所以,更精确的说法,看似应该是这样:
数据无损压缩 = LLM 模型的有损数据压缩能力 + 算术编码的编码补偿能力
也就是说,起码目前的 LLM 对数据编码还是有损的,并不能单靠自己的能力达到数据无损压缩的目的。至于将来 LLM 是否能够强大到靠自己就能达成数据无损压缩,目前仍是未知数。
数据压缩只是手段,通过这种手段使得 GPT 获得智能才是目标,现在的问题是:OpenAI 从基础理论上指出了手段及目的,但是并未说明一个更基础的问题:Next Token Prediction 通过数据压缩来让 GPT 模型学到了什么样的 AGI 智能呢?本文后续内容试图回答这个问题。