在预训练语言模型时代,自然语言处理领域广泛采用了预训练(Pre-training) + 微调(SFT)的范式, 并诞生了以 BERT 为代表的编码器(Encoder-only)架构、以 GPT 为代表的解码器(Decoder-only)架构和以 T5 为代表的编码器-解码器(Encoder-decoder)架构的大规模预训练语言模型。随着 GPT 系列模型的成功发展,当前自然语言处理领域 走向了生成式大语言模型的道路,解码器架构已经成为了目前大语言模型的主流架构。进一步,解码器架构还可以细分为两个变种架构,包括因果解码器(Causal Decoder)架构和前缀解码器(Prefix Decoder)架构。值得注意的是,学术界所提到解码器架构时,通常指的都是因果解码器架构。
编码器-解码器架构
编码器-解码器架构是自然语言处理领域里一种经典的模型结构,广泛应用于如机器翻译等多项任务。原始的Transformer 模型也使用了这一架构,组合了两个分别担任编码器和解码器的 Transformer 模块。具体细节可以阅读原论文解读篇《论文解读:Transformer - Attention Is All You Need》。此架构在编码器端采用了双向自注意力机制对输入信息进行编码处理,而在解码器端则使用了交叉注意力与掩码自注意力机制,进而通过自回归的方式对输出进行生成。
编码器-解码器架构是输入双向注意力,输出单向注意力。在输入端(编码器)双向语言模型允许所有词元相互关注。能够编码来自两个方向的上下文信息。自注意力掩码矩阵为全零矩阵,因此每个词元都可以关注输入序列中的所有位置,对问题的编码理解更充分。在众多自然语言理解与生成任务中展现出了优异的性能,缺点是在长文本生成任务上效果较差,训练效率低。代表模型:T5、Flan-T5、BART。
因果解码器架构
当前,绝大部分主流的大语言模型采用了因果解码器架构。因果解码器采用了 Transformer 中的解码器模块,同时做出了几点重要改动。首先,因果解码器没有显式地区分输入和输出部分。该架构采用了单向的掩码注意力机制,使得每个输入的词元只关注序列中位于它前面的词元和它本身,进而自回归地预测输出的词元。此外,由于不含有编码器部分,因果解码器删除了关注编码器表示的交叉注意力模块。经过自注意力模块后的词元表示将直接送入到前馈神经网络中。在因果解码器架构中,最具有代表性的模型就是 OpenAI 推出的 GPT系列。其中,GPT-3 将模型参数拓展到了100B 级别,并展现出了强大的零样本和少样本学习能力。
因果解码器架构是从左到右的单向注意力。通过对自注意力掩码矩阵使用一个三角矩阵来实现这一点,其中自注意力掩码的上三角部分设为−∞,其余元素设为0。自回归语言模型,预训练和下游应用是完全一致的,文本生成任务效果好。训练效率高、零样本泛化能力更强、有不错的涌现能力。伴随着 GPT-3 的成功,因果解码器被广泛采用于各种大语言模 型中,包括 BLOOM、LLaMA 、 Mistral 、Qwen等。
前缀解码器架构
前缀解码器架构也被称为非因果解码器架构,对于因果解码器的掩码机制进行了修改。该架构和因果解码器一样,仅仅使用了解码器模块。与之不同的是,该架构参考了编码器-解码器的设计,对于输入和输出部分进行了特定处理。前缀解码器对于输入(前缀)部分使用双向注意力进行编码,而对于输出部分利用单向的掩码注意力利用该词元本身和前面的词元进行自回归地预测。与编码器-解码器不同的是,前缀解码器在编码和解码过程中是共享参数的,并没有划分为独立的解码器和编码器。对于前缀解码器,也可以由现有的因果解码器继续预训练转换而来,进而加速该模型的训练。
前缀解码器架构是输入双向注意力,输出单向注意力。通过修改了因果解码器的屏蔽机制,使其能够对前缀词元进行双向关注,并仅对生成的词元进行单向关注。当前,基于前缀解码器架构的代表性大语言模型包括 GLM130B 和 U-PaLM。