零基础读懂大型语言模型的工作原理与训练机制
当 ChatGPT 于去年秋天推出时,它在科技行业和更大的世界中引发了冲击波。时至今日,几乎每个人都听说过 LLM(大型语言模型),并且有数千万人尝试过它们,但是仍然没有多少人了解它们是如何工作的。大多数人只听说过 LLM 被训练成'预测下一个单词',并且它们需要大量的文本来做到这一点,但仅此而已。
由于 LLM 的开发方式与传统软件那种由人类程序员提供明确的分步指令不同,ChatGPT 建立在数十亿个普通语言单词训练的神经网络上,因此,地球上没有人完全了解 LLM 的内部工作原理,这需要再过数年或数十年才能被人类完全解析。
本文将试图通过不使用技术术语或高级数学的方式,令普罗大众对 LLM 内部的工作原理有一定的理解。本文将首先解释词向量,然后将深入研究 Transformer,最后将解释这些模型是如何训练的。
1. Word vectors 词向量
词向量是 LLM 用于表示单词的方式,它是一长串数字。LLM 使用词向量的原因如下:
- 假设有一个词空间,通过词向量的数值的远近,用于表示两个或多个词之间是否有相似的含义。例如,在词空间中,最接近猫的词包括狗和宠物等;
- 词向量由于由数值构成,因此可以通过词向量的运算来'推理'单词。例如,谷歌研究人员将单词'biggest'的词向量,去掉'big'的词向量,再加上'small'的词向量,最终推理出来的是'smallest'。
词向量真正开始被提出并广而研究,是 Google 于 2013 年提出的 word2vec 项目。谷歌分析了从谷歌新闻收集的数百万份文档,以确定哪些单词往往出现在相似的句子中,随后,一个神经网络被训练来预测哪些单词与其他哪些单词同时出现,学会了在词空间中将相似的单词放在一起。
词向量当然还有其他的计算方式,比如用于类比。谷歌的词向量捕捉到了一些其他的关系:
- 瑞士人之于瑞士,就像柬埔寨人之于柬埔寨;
- 巴黎之于法国,就像柏林之于德国;
- 不道德之于道德,就像可能之于不可能;
- Mouse 之于 Mice,就像 Dollar 之于 Dollars;
- 男人之于女人,就像国王之于王后。
而由于这些向量是根据人类使用单词的方式构建的,因此它们也反射出了人类语言中存在的偏见。例如,在一些向量模型中,Doctor 减去 Man 加上 Woman 的结果是 Nurse,而减轻这种偏见,也是词向量研究的一个重要领域。
词向量是语言模型中很重要的部分,它们编码了有关单词之间微妙但重要的信息。如果语言模型学习了一些有关于猫的知识,例如它有时会去看宠物,那么小狗或者其他宠物也应该会有类似的动作;如果语言模型对巴黎和法国之间的关系有所了解,那么它也有可能认识到柏林和德国的关系,以及罗马和意大利之间的关系。
2. 词义取决于上下文
由于单词通常具有多种含义,因此简单的词向量方案并不总能准确地描述自然语言的事实信息。
例如以下两个句子:
- John picks up a magazine.
- Susan works for a magazine.
magazine 在这两个句子中虽然意义相近,但并不相同,John 拿起的是一本杂志,而 Susan 则是在一家出版社工作。
而 bank 在以下两个句子中的含义则并不相同:
- The bank wired John the money.
- The university is on the left bank of the river.
第一句中 bank 的意思是银行,第二句中的 bank 则表示河流旁边的土地。
当一个词有两个不相关的含义时,就像 bank 一样,称为同音异义词;当一个词有两个密切相关的含义时,如 magazine,称为多义词。像 ChatGPT 这样的 LLM 能够根据该单词出现的上下文,用不同的向量表示同一个单词。例如表示银行的 bank 和表示河流旁边的 bank 的词向量是不一样的,表示杂志的 magazine 和表示杂志社的 magazine 也是不一样的。
3. 将词向量转化为词预测
GPT-3 是 ChatGPT 背后的大语言模型,它由数十层的 Transformer 组成,每一层都采用一系列向量作为输入(输入文本中的每个单词对应一组向量),并添加了一些信息用于阐明该单词的含义,以更好地预测下一个单词。
Google 在 2017 年的一篇具有里程碑意义的论文中,将 LLM 的这些具有神经网络架构的层命名为 Transformer。
示例中的结构是从下往上,最下面一层是部分句子,即'John wants his bank to cash the',它将被通过 word2vec 转化为一组向量,作为第一层 Transformer 的输入。
第一层 Transformer 通过一定的思考,确认 wants 和 cash 两个词是动词,于是在这两个词后添加括号,标注其为动词,转化为向量后传递给下一层的 Transformer。我们将在第一层 Transformer 之后添加的这些信息称为隐藏状态。
第二层 Transformer 也为这个句子添加了一些上下文:bank 是一个财务机构,his 是指 John 的。这时这个句子变成了'John wants(verb) his(John's) bank(financial institution) to cash(verb) the',括号中的单词为每一层的 Transformer 所学习到的内容。


