LLM 的工作原理对大多数人来说是个谜。虽然它们本质上在于'预测下一个词',并需要大量文本进行训练,但具体细节往往令人困惑。原因在于这些系统独特的开发方式:基于数十亿词汇训练的神经网络,不同于传统的人类编写的软件。尽管没人完全理解其内部机制,但研究人员正努力探索。
本文旨在以非技术、非数学的方式解释 LLM 的工作原理,包括词向量、Transformer 模型及其训练方式,以及为何需要海量数据来取得良好性能。
一、词向量 (Word Vectors)
理解语言模型工作原理,首要了解它如何表示单词。人类用字母序列表示单词,如"cat"为 C-A-T。语言模型用长词向量列表表示单词,如"cat"表示为:[0.0074, 0.0030, -0.0105, … , 0.0002]。
为什么要使用这样的复杂表示法呢?这里举个类比。华盛顿特区位于北纬 38.9 度、西经 77 度。我们可以使用向量表示法来表示它:
Washington DC is at [38.9, 77] New York is at [40.7, 74] London is at [51.5, 0.1] Paris is at [48.9, -2.4]
空间推理对判断地点间距离至关重要。38.9 与 40.7,77 与 74 的接近性表明纽约与华盛顿特区相近,而巴黎与伦敦相近,但与华盛顿特区远离。
语言模型采用类似方法,将词向量视为'词空间'中的点,含义相近的单词在空间中更靠近。如,'cat'的相近词为'dog'、'kitten'和'pet'。实数向量(非字母序列)能执行字母无法实现的操作。
由于单词复杂性,语言模型使用数百甚至数千维度的向量空间。人类难以想象,但计算机能推理并得出有用结果。
词向量概念自 20 世纪 70 年代已有,但真正流行始于 2013 年谷歌的 word2vec 项目。谷歌分析数百万份 Google 新闻文档,学习预测共现单词,将相似词放置在靠近位置。其特性之一是使用向量算术推理单词,如'biggest'向量减去'big'加上'small'得'smallest'。
可以使用向量算术进行类比,如 big 对应 biggest,small 对应 smallest。谷歌的词向量捕捉到了多种关系,如国籍、首都、反义词、复数和性别角色。
这些向量根据人类使用单词的方式构建,反映了语言中的偏见,如 doctor-man+woman=nurse。减轻偏见是研究的一个方向。词向量对语言模型是有用的构建模块,因为它们编码了单词间关系的微妙信息。语言模型若学到猫的一些情况,同样适用于小猫或狗;若学到巴黎和法国的关系,则柏林和德国、罗马和意大利也可能存在相同情况。
二、词义取决于上下文
词向量方案不能全面捕捉自然语言的多义性。例如,'bank'可以是金融机构或河岸,'杂志'在'John picks up a magazine'和'Susan works for a magazine'中含义微妙不同。这是多义性(polysemy)或同音异义词(homonyms)的体现。语言模型如 ChatGPT 能根据上下文以不同向量表示相同单词。对于'bank'和'杂志',它们会有不同的向量表示,以区分其不同含义。这种向量表示对理解语言模型的工作方式至关重要。
传统软件处理明确数据,但自然语言存在歧义。如'the customer asked the mechanic to fix his car'中的'his','the professor urged the student to do her homework'中的'her',以及'fruit flies like a banana'中的'flies'。人们依赖上下文解决这些歧义,但无确定规则。词向量为语言模型提供了在特定上下文中表示单词精确含义的灵活方式。现在,我们来探究它们如何实现这一点。
三、将词向量转化为词语预测
GPT-3,即 ChatGPT 原始版本背后的模型,由数十个层组成。每个层以一系列向量作为输入,输入文本中每个单词对应一个向量,并添加信息来澄清该单词的含义,并更好地预测接下来可能出现的单词。
让我们从一个简化的例子开始。
LLM(语言模型)每层都是 transformer,这种神经网络架构由 Google 在 2017 年首次引入。模型的输入是句子的一部分,这些单词被表示为 word2vec 风格的向量,并输入到第一个 transformer 中。Transformer 能推断出单词的词性,生成新的向量称为隐藏状态,传递给下一个 transformer。后续的层对整个段落进行高层次的理解。
LLM 的层数通常远不止两个,例如 GPT-3 有 96 个层。前几层主要关注理解句子的语法和解决歧义,后续层致力于对整个段落进行高层次的理解。例如,当 LLM'阅读'短篇小说时,它会跟踪性别、年龄、关系、位置、个性和目标等信息。
研究人员不完全理解 LLM 如何跟踪这些信息,但模型通过在层与层之间传递时修改隐藏状态向量来实现。现代 LLM 使用的词向量非常大,例如 GPT-3 使用具有 12,288 个维度的词向量。这些额外的维度为模型提供了对每个单词的上下文进行记录的'临时空间'。后续层次可以读取和修改早期层次所做的记录,使模型逐渐加深对整个段落的理解。
96 层的 LLM 的目标是输出包含所有必要信息的最终词的隐藏状态,以预测下一个词。这种模型通过多层 transformer 实现对句子和段落的深层次理解,并通过大维度的词向量记录每个单词的上下文信息。


