博客专栏

EEPW首页>博客> 世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能(2)

世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能(2)

发布人:数据派THU 时间:2023-06-10 来源:工程师 发布文章
压缩即智能


从上述讲解可看出,如果 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 智能呢?本文后续内容试图回答这个问题。
拼图游戏:目前已知的一些事实碎片
若把 LLM 习得 AGI 智能比做一个拼图游戏的话,只能说目前我们手上只有一些有关它的支离破碎的拼图碎片,还未能一睹这种机器智能的全貌。本部分从几个不同的角度,收集并介绍现有相关研究的研究结论。
GPT 模型对知识的提取过程
图片
我们先来看一下,假设 LLM 模型训练好了,在使用时输入 Prompt,GPT 模型是如何把知识提取出来的。「Dissecting Recall of Factual Associations in Auto-Regressive Language Models」这篇文章对此做了细致的研究。如图所示,假设输入的 Prompt 是:「Beat music is owned by」,GPT 可以通过 NTP 返回正确答案:Apple。这个例子里,「Beat music」 是个实体,「owned by Apple」 是这个实体对应的某个属性。
经过研究,发现 GPT 在提取这条知识的时候,经历了明显的三阶段过程:首先,单词 「music」是描述这个实体最后的、也是最关键的词汇,它的信息在顺着 Transformer block 往上走的过程中,先通过 Attention 把之前的修饰语「beats」 相关信息集成到「music」 对应位置。之后,随着 Transformer 层数越来越高,通过每个 Transformer Block 的 FFN 层,不断往「music」对应的 Embedding 里增加信息,所以随着信息往上层流动,「music」这个单词对应层数的 Embedding,能够触发越来越多的与「Beat music」 相关 「属性」 词汇。这是第一个步骤,整个过程总体发生在 Transformer 的低层。
第二步,GPT 模型在 「by」单词这个位置,也就是 NTP 要产生输出 token 的最后一个位置,通过 Attention 把单词「own」 的信息集成到最后位置。这里需要注意一下,最后一个单词对应的 Transformer 位置是比较关键的,因为在它的最上层会给出 Next Token 输出。在推理过程中,GPT 会把输入上文中的重要信息通过 Attention 逐步集成到这个位置上来。这个操作也发生在 Transformer 的低层。
第三步,在「by」 单词位置,也就是最后一个位置的 Transformer 高层,它在低层已经集成了单词「own」 的信息,这个信息在高层,通过 Attention 把「Beat music」 对应的属性「apple」提取出来。具体提取动作是通过某个 Attention Head 来做到的,而且这篇文章证明了 Attention Head 里会编码 < 实体 - 属性 > 信息,具体例子可以参照下图,这点对我们来说应该是个新知识(过去一般认为 Attention 主要是用来进行信息比较和搬运的,它证明了 Attention 也会存储某种知识)。
通过以上三步,GPT 完成了对某条知识的提取过程。
图片
另外一个工作「Understanding Transformer Memorization Recall Through Idioms」 探讨了 LLM 是如何提取记忆信息的,包括完全靠记忆需要精准复现的成语/谚语(Idioms),以及事实类知识。研究结论是 LLM 对记忆信息提取可以分为两个阶段:第一阶段是低层的 Transformer Block 把正确答案单词的排名逐渐提高,直到中间层排名到了第一名;第二阶段高层的 Transformer 把正确答案的置信度提高,也就是不断提高这个正确答案的分布概率得分。
除了以上两个工作,还有一些其它类似的研究知识提取的工作。如果综合下现有的研究结论,我觉得可以大致得出这么一个 GPT 知识提取的轮廓:当训练好 GPT 模型后输入 Prompt,对于 Transformer 某个位置对应的输入单词,随着 Transformer 不断往上走,GPT 通过 Attention,把这个单词上文中与自己有关的信息集成到自己的 Embedding 里,而每层的 FFN 对当前单词 Embedding 做变换增加信息,以此方式来不断触发 FFN 里存储的知识并逐层 Refine 单词对应的 Embedding(类似上面例子里单词 「music」的过程)。
Transformer 的 last token 位置也是如此,它的特殊之处在于,从底层到上层,首先会把整个输入上文中最关键的信息,通过 Attention 拷贝到自己的位置,之后通过这个关键信息来逐步过滤出上文中比较重要的信息。在这个位置的 Transformer 底层,应该有很多候选答案可供输出,正确答案排名并不靠前,随着 Transformer 往上走,正确答案排名越来越靠前,而且可以和正确答案竞争的候选答案越来越少,体现为分配给正确答案的概率分布得分越来越高,直到 last token 的最高层,GPT 可以输出正确答案(类似上面例子中单词「by」的过程)。
知识点在 Transformer 中的分布
这部分介绍知识点在 Transformer 结构中的分布情况,意思是不同类型或特定的知识点,在 Transformer 高中低不同层级的分布情况。了解这方面的知识,对于理解 GPT 的内在运行机制是非常有帮助的。
在介绍研究结论前,为了便于理解,我们先说明三个基础概念 (可参考 Toy Models of Superposition):单语义(Monosemantic)神经元、多语义(Polysemantic)神经元及 superposition。
图片
目前发现 LLM 中存在很多单个的神经元,它们各自只对输入里某个特殊的知识点产生响应,也就是说只会被特定输入模式激活,对其它无关输入保持沉默,一个神经元编码一个知识,完美一一对应,这类 Transformer 中的神经元被称为 「单语义神经元」(这和人类大脑中的神经元作用机制就比较像了)。与此相反,也有大量神经元是多语义编码的,就是说很多不同语言含义的知识点都会激活某个神经元,这类神经元被称为「多语义神经元」。上图给了例子,比如有的神经元只有当输入的 Prompt 内容是法语写的,它才有响应,这是典型的 「单语义神经元」;而有的神经元会对多个语义差异很大的 2-gram 语言片段都会有响应,这是典型的「多语义神经元」。
Superposition 概念的含义是:假设要编码的特征的数量 n 远远多于网络参数 d,我们可找到办法,来用 d 维神经元编码比 d 数量大得多的 n 个特征,这种编码机制被称为 superposition,所以它是被发现存在 Transformer 结构里的一种信息压缩编码机制。
图片
Superposition 和「多语义神经元」 关系密切,目前发现 LLM 内部是这样做的(参考 Finding Neurons in a Haystack: Case Studies with Sparse Probing):如上图所示,LLM 的 Superposition 机制是由多个「多语义神经元」 联合构成的,每个神经元会对输入中的多个不同知识点都有响应,所以仅仅通过一个 「多语义神经元」 是无法探测当前是对谁在做出响应,但是如果有多个对某个知识点都有响应的「多语义神经元」,在它们的响应之上做个线性组合,就能探测到输入中我们想识别的那个知识点(上图中蓝色部分)。也就是说,LLM 通过组合多个「多语义神经元」来对某个具体特征或知识点进行编码。所以,「多语义神经元」和知识点之间的关系是多对多的映射,一个知识点会激发很多对它进行编码的「多语义神经元」,而一个 「多语义神经元」也会对多个输入知识点产生响应。
了解了上述三个基础概念,我们介绍下目前的研究结论:在训练好的 GPT 模型中,Transformer 底层编码了大量的具体特征或知识点,比如 n-gram 特征、句法特征等,编码方式采用上述的由多个 “多语义神经元” 组成的 superposition 模式;而随着 Transformer 层数加深,具体知识点逐渐减少,抽象知识点(比如 「法语」/「质数」等)逐渐增加,且抽象知识点一般由「单语义神经元」 独立编码,且随着 Transformer 层数越高,编码的特征越抽象。换句话说,Transformer 对特征或知识点的编码,存在由低到高越来越抽象的一个知识抽象过程,这一现象在 OpenAI 最新发布的文章「Language models can explain neurons in language models」 也有提及。
另外,「Polysemanticity and Capacity in Neural Networks」这个文章指出了:在模型学习过程中,为了增加模型参数的利用效率,「单语义神经元」 会被分配给重要特征,「多语义神经元」会分配给不太重要的特征,而对更加不重要的特征,则模型完全不进行编码。而所谓的「重要性」,指的是对训练 loss 的影响来说的,也就是说:「单语义神经元」 对 NTP 训练时降低 loss 影响比较大。这说明对特征或知识点进行抽象,是 NTP 本身为了快速降低 Loss 的一种内在驱动力,而这很可能是 GPT 模型通过 Next Token Prediction 任务产生智能的关键之一。
GPT 中知识回路存在的证据
这里介绍 LLM 模型中,完成某个特定任务存在对应知识回路(Circuit)的相关工作。所谓「回路」,指的是某个任务的 Prompt 输入 Transformer 后,信息从底向上传播,直到 last token 最高层 Next Token 输出答案,在网络中存在一些完成这个任务的关键路径,信息主要沿着这条路径向上传播,在传播过程中不断进行信息传递或知识加工,以此方式来通过 NTP 完成某项任务。如果看过后面介绍内容,你会发现 LLM 知识回路的工作过程,其实和人类大脑中的某些信息处理回路是很相似的。而大量在 GPT 的 NTP 预训练过程中形成的各种知识回路,很可能是揭开 AGI 之谜的另外一把钥匙。
图片
「How does GPT-2 compute greater-than?: Interpreting mathematical abilities in a pre-trained language model」 这个工作主要探讨:为何 GPT 模型能够通过预训练获得数学能力。具体而言,用的是类似「The war lasted from the year 17YY to the year 17」的 Prompt,GPT 模型可以做到输出的 Next Token 的年份数字 XX 大于 YY,这说明它在预训练中学会了数字间的比较关系。通过探究,发现模型在预训练过程中形成了解决这个问题的知识回路,如上图图右所示:有两个关键部分,第一个是中间层的某些 Attention Head,比如图中 a5.h5 代表 Transformer 第 5 层的第 5 个 Attention Head,这些 Attention Head 主要作用是聚焦到 YY 年份并向高层传播;另外一个关键是第 8 到 11 层的 MLP 层,这些层的 MLP 完成 「大于」运算,所以最后 GPT 能够正确输出结果。而且,中间层的 Attention Head 和上层 MLP 也有相对应的传递关系,比如第 9 层 MLP 主要接收信息来源于 a9.h1,而第 8 层 MLP 的信息来源则比较多。可以看出,信息从下到上形成了一个特定的传播路径。
图片
如果再深入探究,会发现是 MLP 中的一些关键神经元完成数学运算的,如上图图右所示,可以探测出第 10 层 MLP 中影响最大的 10 个神经元,这层只用这 10 个神经元就能大致完成 “大于” 运算,而左图则展示了 a7.h10 这个 Attention Head 主要聚焦于关键信息 “YY” 上。另外,该项研究还发现不仅仅上述 Prompt,如果变换 Prompt 形式,但是体现数字比较关系,发现被激活的也是这条回路,这说明这条回路可能专门用于对数字进行关系比较。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词:AI

相关推荐

技术专区

关闭