【转载】理解编码器式与解码器式大语言模型

原文地址:Understanding Encoder And Decoder LLMs, by Sebastian Raschka, on 2023-06-17

理解编码器式与解码器式大语言模型

不少人希望我更深入地讲解大语言模型(LLM)的行业术语,解释一些如今我们习以为常的技术名词,其中就包括“编码器式”与“解码器式”大语言模型。这些术语究竟是什么意思?

我们进入正题:基于编码器的语言Transformer与基于解码器的语言Transformer有何区别?

编码器式与解码器式Transformer

从根本上说,编码器式与解码器式架构都使用相同的自注意力层对词元进行编码。但二者的核心区别在于:编码器的设计目标是学习嵌入表示,可用于分类等各类预测建模任务;与之相对,解码器的设计目标是生成新文本,例如回答用户查询。

原始Transformer

最初为英翻法、英翻德任务开发的Transformer架构(https://arxiv.org/abs/1706.03762)同时采用了编码器与解码器,如下图所示。

figure01

图注:https://arxiv.org/abs/1706.03762 中提出的原始Transformer架构示意图

在上图中,输入文本(即待翻译的句子)首先被分词为独立的词元,随后经过嵌入层编码,再进入编码器部分。接着,在为每个嵌入后的词元加上位置编码向量后,这些嵌入表示会经过一层多头自注意力层。多头注意力层之后是“相加与归一化”步骤:执行层归一化,并通过跳跃连接(也称为残差连接或捷径连接)加上原始嵌入。最后,经过“全连接层”(由两层全连接层、中间夹一个非线性激活函数组成的小型多层感知机)后,输出会再次进行相加与归一化,再传入解码器部分的多头自注意力层。

上图中解码器部分的整体结构与编码器部分类似,关键区别在于输入与输出不同。编码器接收待翻译的输入文本,解码器则生成翻译后的文本。

编码器

前文图中原始Transformer的编码器部分,负责从输入文本中理解并提取相关信息,随后输出输入文本的连续表示(嵌入),并传递给解码器。最终,解码器根据从编码器接收到的连续表示生成翻译后的文本(目标语言)。

多年来,基于上述原始Transformer模型的编码器模块,研究者开发出了多种仅编码器架构。其中代表性的例子包括BERT(https://arxiv.org/abs/1810.04805)与RoBERTa(https://arxiv.org/abs/1907.11692)。

BERT(Bidirectional Encoder Representations from Transformers,基于Transformer的双向编码器表示)是一种基于Transformer编码器模块的仅编码器架构。BERT模型在大规模文本语料上进行预训练,采用的预训练任务包括掩码语言建模(如下图所示)和下一句预测。

figure02

图注:BERT式Transformer所采用的掩码语言建模预训练目标示意图

掩码语言建模的核心思想是:将输入序列中的随机词元进行掩码(或替换),然后训练模型根据周围的上下文预测被掩码的原始词元。

除了上图所示的掩码语言建模预训练任务之外,下一句预测任务会要求模型判断:原始文档中两个被随机打乱顺序的句子,其语序是否正确。例如,两个随机顺序的句子通过 分隔:

  Toast is a simple yet delicious food [SEP] It’s often served with butter, jam, or honey.
  It’s often served with butter, jam, or honey. [SEP] Toast is a simple yet delicious food.

标记是模型的占位标记,用于让模型输出“真”或“假”标签,表明两个句子的顺序是否正确。

掩码语言建模与下一句预测预训练目标(属于自监督学习的一种,第2章会展开讨论)让BERT能够学习输入文本的丰富上下文表示,这些表示随后可以通过微调,用于情感分析、问答、命名实体识别等各类下游任务。

RoBERTa(Robustly optimized BERT approach,鲁棒优化版BERT方法)是BERT的优化版本。它保留了与BERT相同的整体架构,但在训练与优化上做了多处改进,例如使用更大的批次规模、更多的训练数据,以及取消了下一句预测任务。这些改动使得RoBERTa在各类自然语言理解任务上的表现优于BERT。

解码器

回到本节开头介绍的原始Transformer架构,解码器中的多头自注意力机制与编码器中的类似,但它会进行掩码处理,防止模型关注未来位置,确保第i个位置的预测仅依赖于位置小于i的已知输出。如下图所示,解码器会逐词生成输出。

figure03

图注:原始Transformer中采用的下一句预测任务示意图

这种掩码(在上图中被明确展示出来,不过它实际是在解码器的多头自注意力机制内部完成的)对于在训练与推理阶段维持Transformer模型的自回归特性至关重要。自回归特性确保模型逐个生成输出词元,并将之前生成的词元作为上下文,用于生成下一个词元。

多年来,研究者在原始编码器-解码器Transformer架构的基础上不断拓展,开发出了多种仅解码器模型,这些模型在各类自然语言处理任务中表现出了极佳的效果。其中最具代表性的模型包括GPT系列。

GPT(Generative Pre-trained Transformer,生成式预训练Transformer)系列是仅解码器模型,在大规模无监督文本数据上进行预训练,并针对文本分类、情感分析、问答、摘要等特定任务进行微调。GPT模型(包括GPT-2、GPT-3(https://arxiv.org/abs/2005.14165)以及更新的GPT-4)在各类基准测试中展现出了卓越的性能,是目前自然语言处理领域最流行的架构。

GPT模型最引人注目的特点之一是其涌现能力。涌现能力指的是模型凭借下一词预测预训练而发展出的能力与技能。尽管这些模型仅被训练用于预测下一个词,但预训练后的模型已经能够完成文本摘要、翻译、问答、分类等诸多任务。此外,这些模型还能通过上下文学习执行新任务,而无需更新模型参数,第18章会对此进行更详细的讨论。

编码器-解码器混合模型

除了传统的编码器与解码器架构之外,新型编码器-解码器模型的研发也取得了进展,这类模型能够同时利用两种组件的优势。它们通常会引入新颖的技术、预训练目标或架构修改,以提升在各类自然语言处理任务中的表现。这类新型编码器-解码器模型的代表性例子包括:

编码器-解码器模型通常用于涉及“理解输入序列+生成输出序列”的自然语言处理任务,且输入与输出的长度、结构往往不同。它们尤其擅长处理输入序列与输出序列之间存在复杂映射关系、且捕捉两个序列中元素之间的关联至关重要的任务。编码器-解码器模型的常见应用场景包括文本翻译与摘要。

术语与行话

以上所有方法——仅编码器、仅解码器以及编码器-解码器模型——都属于序列到序列模型(通常缩写为seq2seq)。需要注意的是,虽然我们将BERT式方法称为仅编码器,但“仅编码器”的说法可能会造成误解,因为这类方法在预训练过程中也会将嵌入解码为输出词元或文本。

换句话说,仅编码器与仅解码器架构都在进行“解码”。但与仅解码器和编码器-解码器架构不同,仅编码器架构的解码并非以自回归的方式进行。自回归解码指的是逐个生成输出序列,每个词元的生成都以之前生成的词元为条件。仅编码器模型不会以这种方式生成连贯的输出序列,相反,它们专注于理解输入文本,并生成特定于任务的输出,例如标签或词元预测结果。

结论

简而言之,编码器式模型广泛用于学习分类任务所需的嵌入表示;编码器-解码器式模型用于输出高度依赖输入的生成类任务(例如翻译与摘要);仅解码器模型则用于问答等其他类型的生成类任务。自首个Transformer架构诞生以来,已经发展出了数百种仅编码器、仅解码器以及编码器-解码器混合模型,如下图总结所示。

figure04

图注:按架构类型与开发者分类的部分主流大语言Transformer概览

仅编码器模型的热度逐渐下降,而GPT等仅解码器模型凭借GPT-3、ChatGPT与GPT-4带来的文本生成技术突破,迎来了爆发式增长。不过,对于基于文本嵌入训练预测模型(而非生成文本)的场景,仅编码器模型仍然具有很高的实用价值。

本专栏是一个个人兴趣项目,无直接商业报酬。如果您愿意支持我,欢迎考虑购买https://sebastianraschka.com/books上的书籍。如果您觉得这些内容富有洞见、有所帮助,也欢迎推荐给您的朋友与同事。

figure05

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

你的支持意义重大!谢谢你!