回归器 or 世界模型?理解大语言模型(LLM)

前言

我在2022年实习的时候接触了图注意力机制。面试时的考官、也就是后来的带教问我有没有接触过Transformer,我说没有。当时的图注意力机制采用了Additive的实现方式,自己写了一个十分低效的实现,导致模型训练始终比较慢,但是当时被一致认为是新的技术。在面试后不久,我学习Transformer的论文,才接触到Scaled Dot-Production Attention。再后面不久,就是可以称得上“iPhone时刻”的Chat-GPT了。随着大语言模型如雨后春笋般出现和迭代,不断表现或宣传出令人瞠目结舌的智能,人们开始越来越相信一些report中所声称的那样,这些模型是“世界模型”。但是,也有一些相对刺耳(也可能是清醒)的声音警告说,所谓的“世界模型”只不过是在词表示空间内的更高级的一个回归罢了。当人们对一个新事物的了解停留在初级阶段时,往往对其所下的定义千奇百怪。这些不同的理解促进了新事物的飞速扩散和发展,但对工程化的使用益处不大。所以本文的目的是尝试对一些确定性的概念进行梳理,帮助我们更好地理解LLM,思考我们如何把握已有的知识并加以运用,至于悬而未决的部分则留待研究者们去探索吧。

本文对大模型相关原理的阐释很大程度上参考了知名YouTube频道3Blue1Brown的优秀视频,在文中也引用了若干视频截图,在此特别致谢,并推荐大家去看原片。

大模型所立足的“世界”

自然语言处理一直是人工智能的前沿,人工智能为什么能够理解语义?语义怎么在特征空间中表示?

自然语言的基本单位是词,文本、语音都是由词组成的序列。每个词在特征空间中表示为一个向量,大模型在词向量组成的特征空间中训练。可以想象,语义空间是非常复杂的高维空间。因此,可以看到大模型定义的语义空间都具有很高的维度,如Llama 2-7B具有4096的词嵌入维度,GPT-4 则达到12,288,显然,特征空间的维数越高,表示能力越强,但相应地训练成本也越高。

词向量的大小、方向并不是随机的,而是代表着语义。那么,语义的相似性可以用向量的相似性来代替,比如在线性空间中,可以使用余弦相似度或内积来衡量。例如,表示男人(man)和女人(woman)的词向量之间的相似度,比男人和汽车(car)之间的相似性高。另一方面,既然词向量即代表语义,语义之间的加减也应该可以用向量的加减法实现。例如在语义上,(男)演员(actor)和女演员(actress)的差异与男人和女人之间的差异是相同的,那么相应地,在词嵌入的维度上也有:$E_{actress} - E_{actor} \sim E_{woman} - E_{man}$。

词向量反映了语义。

一个具有智能的大模型,一定是操作词向量空间的“高手”。经过近两年的飞速发展,虽然模型发布如雨后春笋,但背后的基本模块越发千篇一律,transformer层,与其组成部分注意力层和全连接层,逐渐一家独大。

注意力:大模型的“短期记忆”

理解注意力机制之前,首先要理解其中的三个重要部分:键(Key)、查询(Query)和值(Value),也就是普遍提及的KQV。下面的公式想必已经非常熟悉: $$Attention(Q, K, V) = Softmax(\frac{QK^T}{\sqrt{d_k}})V$$ 其中V前面的$Softmax()$部分被称为注意力系数,那么这个公式是在算什么?

让我们举个比较通俗的例子:给你一堆彩虹糖,然后问你绿色彩虹糖的个数是多少?对于人来说,我们一个一个地数出绿色彩虹糖的个数,1、2、3,三个!但是,这背后的智能是怎么运作呢?如何将其原理用代码逻辑表示出来?

彩虹糖

从注意力的角度,这个过程大致是这样的:由于仅统计总数,我们可以随意地将这堆糖豆排成一个序列,根据统计绿色彩虹糖的目标,我们沿着这个彩虹糖序列遍历每个糖豆,用“绿色”去匹配每个糖豆的颜色,如果匹配上了,则将总数加1。当把这个彩虹糖序列遍历完了,就有了最终的结果:3。那么,在这个过程中,K是糖豆本身的颜色,V是1,Q是绿色,于是我们的匹配方法是:如果K与Q是相同的颜色,那么对于这个糖豆(序列中的元素)注意力系数就是1,否则为0。于是,经过这个彩虹糖注意力层后,我们能够得到正确的结果。

上面的例子还有一个点,就是所谓的匹配颜色的方法如何实现呢?回顾上一节的内容,语义的相似可以向量化地去描述,比如用内积。不放把我们的语义局限在色彩空间中,那么只需要3个维度:RGB,显然K和Q之间的内积,就可以代表颜色的匹配程度。现在再去看上面的公式,是不是就非常的合理了?

全连接:大模型的“长期记忆”

给LLM一个句子让其扩写:Kobe Brian is a famous ____. 现在的任何一个模型相信都能流畅地续写出basketball player。似乎LLM本身能够并且已经存储了一些知识。

LLM的智能,广泛地存在于权重矩阵中。这里,权重矩阵W、全连接层、线性变换指代的是同一件事情。即使是在注意力层中,K,Q,V也是上一层输出的向量经过线性变换得来。我们知道线性变换是对词向量在特征空间中操作,那么在这个过程中,模型如何进行长期记忆?

实际上,模型的记忆可以通过Transformer的两层全连接层实现,以下给出了一种实现方式,用来说明模型事实上具备这种能力。现在回忆一下,Transformer的全连接模块由两层全连接层和中间的激活层实现,每层全连接实际上进行了如下运算: $$y = W^Tx + b$$ 其中W是[F, F]大小的矩阵,可以理解成F个F特征空间长度的列向量,每个向量的维度F就对应语义空间。

假设Kobe Brian的语义在已经在全连接层中“记忆”了,那么这个语义对应语义空间中的一个向量,不妨假设其恰好是W中的第一个列向量。那么,在经过注意力层进行语义提取的输入x上,隐含着Kobe Brian的语义,那么根据前面讨论的内容,x在Kobe Brian的语义方向上必然有相当大的分量。于是,第一层全连接做的事情就十分清楚了:对于W的每一个列向量,将该向量与x作内积,得到其在方向上的相关性,然后施加一个偏置(b),然后经过激活函数。那么经过全连接层后的每个神经元的值,表征了x在模型内置的每个语义方向上的强度。

那么,第二个全连接层又做了什么呢?这是,我们需要把x拆成一个一个神经元来分析,看每个神经元对最终输出的y有什么贡献?我们发现,如果将W再按照F个长度为F的行向量理解的话,第一个神经元的贡献就是在y中出现了以第一个神经元的大小为强度的第一个行向量的贡献。以此类推,最终的y大致上就是W的每个行向量按照神经元为权重求和的结果。

那么,大模型如何记住关于科比的事实并给出 Kobe Brian is a famous basketball player呢?很简单,只要把第一层全连接的W第一个列向量定义成Kobe Brian的语义,并在第二层全连接层的W第一个行向量定义成basketball的语义,就能把输入的语义转换成我们期望的正确输出的语义。也就是说,两层全连接的列/行向量一一配对,实现了某种记忆机制。是不是很神奇?

自回归:大模型的训练与推理

想象你在面对一个人或者一群人,你要讲述一个故事或者表达你的观点,作为一个流利的演讲者,除了对你要表达的主旨有一个整体的认识之外,另一个重要的方面就是组织好当前的每一句,使其在局部符合语法、表意流畅。那么,在下一个词语脱口而出之前,你要知道前面你都说过了什么,并且确认这个词的加入不会使这个句子偏离语法的正确性,也不会使整个演讲偏离主旨。

这就是一种自回归的过程,对于自然语言处理来说,就是“续写”:给出前面的段落,写出下一个词。当完成了一个词的续写之后,这个词也成为了前面段落的一部分,然后模型开始写出下一个词,一直这样下去,直到模型输出了一个整个演讲结束的标志,这次续写就结束了。

在自然语言模型的发展历程中,“续写”的重要性得到了一步又一步的提升。一个有力的证据就是Decoder-only架构的逐渐发展和成为主导,如下图所示。成为主导也自然有其道理:续写可以适应很多NLP相关的任务。比如,Transformer和BERT模型非常擅长的翻译问题,本质上是将某一种语言向多种语言共同的语义空间上编码(Encoder),然后再向另一种语言解码(Decoder)的过程。那么翻译问题如何用续写模型来实现呢?很简单,就将类似“I love you 的中文翻译是我爱你”这样的语料加入大模型即可。

模型结构发展树

“续写”模型使得大模型“世界模型”的叙事更加地令人信服,似乎万物皆可Tokenize,然后只要组织成某种语料喂给模型就可以了。于是,推理大模型、知识库大模型等横空出世,给人工智能领域带来了空前繁荣。显然语义空间并不是AGI的最好特征空间描述,但是,我们还有更好的选择吗?人类浩如烟海的知识宝库,也只是几万个符号的排列罢了,但是它们承担起了人类最稳定、最伟大的传承,并塑造了人类这个令人惊叹的智能物种。

小结

links

social