Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Transformer 与预训练

原始 PDF

“真正的记忆艺术,就是注意的艺术。” ——塞缪尔·约翰逊, Idler #74, September 1759

本章将介绍构建大语言模型的标准架构 Transformer,以及如何预训练 Transformer、如何使用它们生成文本。我们将介绍用于从左到右语言建模的 Transformer;这种建模有时也称为因果语言建模(causal language modeling)、自回归语言建模(autoregressive language modeling)或解码器语言建模(decoder language modeling):给定一串输入词元后,模型以先前上下文为条件,逐个预测输出词元。第 9 章将介绍编码器等其他架构。

图 7.1 用于语言建模的 Transformer 解码器,图中展示了处理一个输入词元的残差流。单个词元先被转换为嵌入,再向前传入网络;前馈组件和注意力组件会向其中添加信息。多头注意力层从相邻的词元流接收输入(图中未详细画出)。因此,本图表示自回归 Transformer 语言模型的一列:它接收一个输入词元,并输出下一个词元上的概率分布。

图 7.1 概略展示了一个词元逐层向上传过网络时所经过的 Transformer 架构。首先,利用嵌入矩阵 EE 把每个词元转换为嵌入。回顾第 6 章第 6.5 节,EE 是一个把词元 ID 映射为表示该词元的向量嵌入的线性层;词表中的每个词元在 EE 中都有一个初始嵌入表示。Transformer 还有一种特殊机制,用于编码词元在输入字符串中的位置或索引;位置编码直接与嵌入相加。由此得到的嵌入同时表示词语及其位置,随后通过一组共 LL 个 Transformer 块。

通常可以把每个 Transformer 块看作一条流的一部分:输入嵌入会直接沿这条流传向输出,同时,多头注意力层、前馈网络和层归一化等处理模块会不断向其中添加信息,使其表示更加丰富。对于任意输入词元,这条流在任意层上的值都是一个向量;它等于该词元的原始嵌入与此前所有层、所有块的输出之和。

Transformer 的核心直觉,以及它区别于第 6 章前馈层的组件,是多头注意力层(multi-head attention layer),也称自注意力层(self-attention layer)。可以把注意力理解为一种构建词元意义之上下文表示的方法:模型关注并整合周围词元的信息,从而学习相距很远的词元之间如何关联。也可以把注意力理解为一种在不同残差流之间移动信息的方法:使用另一个词元位置的信息增强某个词元位置上的流。

经过 LL 个 Transformer 块后,我们取得最后一个 Transformer 块产生的输出嵌入,让它通过线性反嵌入矩阵(unembedding matrix)UU,再对整个词表应用 softmax,生成所有可能的下一个词元上的概率分布。最后这两个组件(反嵌入矩阵和 softmax)有时合称语言模型头(language modeling head)。本章余下部分将更详细地介绍注意力及其他模块。

图 7.2 一个从左到右的 Transformer 架构:每个输入词元先经过编码,再通过一组堆叠的 Transformer 块,最后进入预测下一词元的语言模型头。残差流中各词元位置的嵌入沿块堆栈向上传递;图中的箭头表示如何同时纳入此前词元的隐藏表示信息。

图 7.2 展示了把 Transformer 架构应用于包含词语 So long and thanks for 的上下文窗口,并在每个词元位置给出最可能生成的词元。在这幅完整示意图中,位于 nn 个词元之上的 LL 层块堆栈,把由输入向量组成的整个上下文窗口 (x1,...,xn)\left( \mathbf { x } _ { 1 } , . . . , \mathbf { x } _ { n } \right) 映射为同样长度的输出向量窗口 (h1,...,hn)\left( \mathbf { h } _ { 1 } , . . . , \mathbf { h } _ { n } \right)。一列中可能堆叠 L=12L=12L=96L=96 个甚至更多的块。图中的箭头表示如何把此前词元的隐藏表示信息纳入 Transformer 块。

基于 Transformer 的语言模型非常复杂;除了第 1 章的高层概述外,具体细节还将在本章及随后几章中逐步展开。本章将介绍多头注意力、Transformer 块的其余部分、Transformer 的输入编码和语言模型头组件、用于生成输出文本的解码与采样概念,以及预训练的具体细节。第 8 章介绍后训练:通过微调和指令微调使语言模型执行 NLP 任务,并使模型与人类偏好对齐。第 9 章介绍掩码语言建模,以及 BERT 系列双向 Transformer 编码器模型。第 13 章将介绍采用编码器—解码器架构的机器翻译。第 16 章还会介绍 Transformer 在语音识别中的应用,并进一步使用编码器—解码器架构。