理解编码器和解码器 LLM
几个人让我更深入地探讨大型语言模型(LLM)的专业术语,并解释一些我们现在视为理所当然的技术术语。这包括提到“编码器风格”和“解码器风格”的 LLM。这些术语是什么意思?
让我们开始吧:基于编码器和解码器的语言模型有什么区别?
编码器式和解码器式Transformers
本质上,编码器和解码器架构都使用相同的自注意力层来编码单词令牌。然而,主要区别在于编码器被设计用于学习可用于各种预测建模任务(如分类)的嵌入。相比之下,解码器被设计用于生成新的文本,例如回答用户的查询。
原始的transformer
原始的transformer架构(Attention Is All You Need,2017 年)是为英语到法语和英语到德语的语言翻译而开发的,它同时使用了编码器和解码器,如图所示。
在上图所示的流程中,首先对输入文本(即需要翻译的句子)进行分词,将其转换成一个个单词令牌,然后通过嵌入层对这些单词令牌进行编码,之后再添加位置编码向量到每个嵌入的单词上。接着,这些嵌入向量会经过多头的自注意力层,该层后面跟着一个“Add & normalize”步骤,它执行了层归一化操作并通过跳连接(也称为残差或快捷方式连接)将原始嵌入向量相加。最后,在进入由两个全连接层和一个非线性激活函数组成的“全连接层”(也就是一个小型的多层感知器)后,输出再次被相加和归一化,然后再传递给解码器的多头自注意力层。
上图中的解码器部分与编码器部分的总体结构相似。关键的区别在于输入和输出不同。编码器接收需要翻译的输入文本,而解码器生成翻译后的文本。
编码器
在原始的transformer中,如图前所示,编码器部分负责理解和提取输入文本中的相关信息。然后它输出输入文本的连续表示(嵌入),传递给解码器。最后,解码器根据从编码器接收到的连续表示生成翻译文本(目标语言)。
多年来,基于上述原始模型的编码器模块,已经开发出了各种仅包含编码器的架构。其中一些著名的例子包括 BERT(用于语言理解的深度双向预训练,2018 年)和 RoBERTa(一种稳健优化的 BERT 预训练方法,2018 年)。
BERT(Bidirectional Encoder Representations from Transformers)是一种仅基于 Transformer 编码器模块的编码器架构。BERT 模型使用掩码语言建模(如图所示)和下一句预测任务在大规模文本语料库上进行了预训练。
掩码语言建模的主要思想是在输入序列中随机遮盖(或替换)单词令牌,然后训练模型根据上下文预测原始被遮盖的令牌。
除了上图所示的掩码语言建模预训练任务外,下一个句子预测任务要求模型预测两个随机打乱顺序的句子的原始文档中的句子顺序是否正确。例如,两个句子以随机顺序分隔开,中间用[SEP]标记分隔:
[CLS] 吐司是一种简单却美味的食物 [SEP] 它通常搭配黄油、果酱或蜂蜜食用。
[CLS] 它通常搭配黄油、果酱或蜂蜜食用。[SEP] 烤面包是一种简单而美味的食物。
[CLS] 标记是模型的占位符标记,用于提示模型返回一个 True 或 False 的标签,以指示句子是否按正确顺序排列。
掩码语言和下一句预训练目标(在第 2 章讨论的自监督学习形式)允许 BERT 学习输入文本的丰富上下文表示,然后可以微调以执行各种下游任务,如情感分析、问答和命名实体识别。
RoBERTa(Robustly Optimized BERT Approach)是大语言模型的优化版本。它保持了与 BERT 相同的总体架构,但采用了几个训练和优化改进,如更大的批量大小、更多的训练数据以及取消下一句预测任务等。这些变化使得 RoBERTa 在各种自然语言理解任务上比 BERT 表现更好。
解码器
回到本节开头概述的原始架构transformer,解码器中的多头自注意力机制与编码器类似,但它被掩码以防止模型关注未来的位置,确保位置的预测仅依赖于小于的位置上已知的输出。如下图所示,解码器逐个生成输出的单词。
这种掩码(在上图中明确显示,尽管它在解码器的多头自注意力机制内部发生)对于在训练和推断期间保持transformer模型的自回归特性至关重要。自回归特性确保模型逐个生成输出令牌,并使用先前生成的令牌作为上下文来生成下一个单词令牌。
多年来,研究人员在原始的编码器 - 解码器架构基础上进行了扩展,开发出了几个仅包含解码器的模型,这些模型已被证明在各种自然语言处理任务中非常有效。其中最著名的模型包括 GPT 家族。
GPT(生成式预训练 Transformer)系列是仅解码器模型,在大规模无监督文本数据上进行了预训练,并在特定任务如文本分类、情感分析、问答和摘要方面进行了微调。包括 GPT-2(GPT-3 语言模型是少样本学习者,2020 年)以及最近的 GPT-4 在内的 GPT 模型在各种基准测试中表现出了显著的性能,目前是最流行的自然语言处理架构。
GPT 模型的最显著特点之一是它们具有新兴特性。新兴特性指的是由于其下一个单词预测预训练而发展出的能力和技能。尽管这些模型仅被教导预测下一个单词,但预先训练的模型能够执行文本摘要、翻译、问答、分类等任务。此外,这些模型可以通过上下文学习执行新任务,而不需要更新模型参数,这在第 18 章中有更详细的讨论。
编码器 - 解码器混合体
除了传统的编码器和解码器架构外,近年来还出现了利用两个组件优势的新型编码器解码器模型的开发进展。这些模型通常采用新颖的技术、预训练目标或架构修改,以增强其在各种自然语言处理任务中的性能。一些值得注意的新编码器解码器模型包括:
BART(自然语言生成、翻译和理解的去噪序列到序列预训练,2019 年)
以及 T5(通过统一的文本到文本探索迁移学习极限,2019 年)。
编码器 - 解码器模型通常用于涉及理解输入序列和生成输出序列的自然语言处理任务,这些序列通常具有不同的长度和结构。它们特别擅长于在输入和输出序列之间存在复杂映射的任务,并且捕捉两个序列中元素之间的关系至关重要。编码器 - 解码器模型的常见用例包括文本翻译和摘要。
术语和行话
所有这些方法,包括仅编码器、仅解码器和编码器-解码器模型,都是序列到序列模型(通常简称为 seq2seq)。需要注意的是,虽然我们将 BERT 风格的方法称为仅编码器,但“仅编码器”这个描述可能会误导,因为这些方法在预训练期间也会将嵌入解码成输出令牌或文本。
换句话说,仅包含编码器和解码器的架构都在“解码”。然而,与仅包含解码器和编码器 - 解码器架构不同,仅包含编码器的架构不是以自回归的方式解码。自回归解码是指逐个生成输出序列中的令牌,每个令牌都依赖于之前生成的令牌。仅包含编码器的模型不会以这种方式生成连贯的输出序列。相反,它们专注于理解输入文本并产生特定于任务的输出,如标签或令牌预测。
结论
简而言之,编码器风格的模型常用于学习在分类任务中使用的嵌入,编码器-解码器风格的模型用于生成任务,其中输出严重依赖于输入(例如翻译和摘要),而仅解码器模型则用于其他类型的生成任务,包括问答。自从第一个transformer架构出现以来,已经开发了数百个仅编码器、仅解码器和编码器-解码器混合模型,如图下所示。
当编码器仅包含模型的流行度逐渐下降时,解码器仅包含模型如 GPT 由于 GPT-3、ChatGPT 和 GPT-4 在文本生成方面的突破而爆炸式增长。然而,基于文本嵌入而非生成文本来训练预测模型的编码器仅包含模型仍然非常有用。
这本杂志是我的个人热情项目,并不提供直接的报酬。然而,对于那些希望支持我的人,请考虑购买我的其中一本书籍。如果您觉得它们有启发性并且有益处,请随意向您的朋友和同事推荐它们。
你的支持意义重大!谢谢!
订阅《领先人工智能》
Ahead AI 专注于机器学习和人工智能研究,被数万名希望在这个不断发展的领域保持领先的研究人员和实践者阅读。
This LLM encoder/decoder stuff messes with my mind! There is something fundamental here that I'm not getting. HELP... 🤔 I have been fascinated with autoencoders, which take an example from feature space and ENCODE it into point in latent space and then DECODE it back into a reconstructed example in feature space, thus allowing a reconstruction loss to be calculated. [ref: Python ML 3Ed, Chap 17]
1) Should LLM decoders be called 'generators' like in GANs?
2) That single line that connects LLM encoder to its decoder... Is that the same data that one receives as an embedding from the LLM API?
3) For a decoder-only LLM, is its input always an embedding vector? Or, where do the model weights come from?
4) Is it possible to take an LLM embedding, reconstruct its initial input, and calculate the reconstruction loss? If true, this would enable us to map the fine (manifold) structures in these mysterious LLM latent spaces. Loved your old examples of putting/removing smiles on celebrity faces. Like to find a few hallucinations lurking in LLM latent spaces! 😮
thanks a lot for this. I'm actually at the point where you left off in your comment below, where I'm using an open-source API layer on top of GPT to piece together how it all works, and how to get some short-term gratification building my own components on top of it.
But I got this far without even knowing that GPT is decoder-only, until today!
My first steps into machine learning were with the encoder-decoder architecture of face-swapping models, so I'd assumed LLMs were built with the same architecture.