为什么现在大多数的大模型都是decoder-only?

智能科技扫地僧 2024-06-27 16:46:38

自从 ChatGPT 发布以来,各种大模型(LLM)层出不穷:Meta 的 Llama-3,Google 的 Gemini,阿里的千问等等。那么就不禁有个疑问:LLM 是基于 Transformer 架构的,为什么出来的这些都是 decoder-only 的呢?

语言模型架构概述

首先让我们熟悉一些架构术语。

编码器和解码器

编码器(encoder):处理并将输入数据转换为压缩表示,捕获基本信息。在翻译任务中,编码器获取一个英文句子并将其转换为表示其语言特征和含义的向量。解码器(decoder):获取编码表示并生成输出,通常采用不同的形式。在同一个翻译任务中,解码器获取英文句子的编码表示并生成其法语等价表示。

Encoder-Only 模型

示例:基于 BERT 的模型预训练方法:掩码语言建模 (Masked Language Modelling,MLM)用例:需要深入了解输入数据的任务。这些模型对于分类、情绪分析和信息提取非常有效。

Decoder-Only 模型

示例:GPT、XLNet预训练方法:预测下一个 token用例:生成任务。它们通过以自回归方式根据提供的上下文预测后续文本来工作。它们的主要功能是生成输出,而无需单独的编码阶段。

Encoder-Decoder 模型

示例:T5、BART、Google Gemini(可能)预训练:任务相关用例:涉及理解和生成数据的任务。它们首先将输入序列编码为内部表示,然后将此表示解码为输出序列。

比较这些架构的用途,我们首先可以轻松排除 encoder-only 模型:它们通常使用 MLM 进行预训练,不一定有助于生成输出。

另一方面,decoder-only 模型则非常合理:它们用于生成输出,并在下一个 token 预测任务上进行预训练,这正是大多数 LLM 的任务。

问题实际上归结为 decoder-only 与 encoder-decoder 架构:有了解码器组件并由此而具有生成能力,再添加编码器组件不是更有帮助吗?

CD VS ED

CD 表示 Causal Decoder(因果解码器),ED 表示 Encoder-Decoder(编码器-解码器)。

长期以来,人们一直在研究 decoder-only(也称为因果解码器)相对于编码器-解码器模型的性能。早期研究之一是 Wang 等人在 ICML 2022 上发表的论文《What Language Model Architecture and Pretraining Objective Work Best for Zero-Shot Generalization? 》(《哪种语言模型架构和预训练目标最适合零样本泛化?》)。在这项研究中,研究人员比较了各种架构和预训练方法的组合。他们发现:在自回归语言建模目标上训练的因果解码器专用模型在纯自监督预训练后表现出最强的零样本泛化能力。使用 MLM 目标训练并随后进行多任务微调的输入具有非因果可见性的模型表现最佳。

好的,那么 encoder-decoder > decoders-only > encoder-only,对吗?

事实证明,尽管上述论文揭示了一些开发更大模型的宝贵信息。但是在选择架构时,还需要考虑其他一些因素。

训练成本

为了实现 ED 的最大潜力,我们需要对标记数据执行多任务微调(基本上是指令微调),这可能非常昂贵,尤其是对于较大的模型。

另一方面,CD 模型因其强大的零样本泛化而实现了出色的性能,这与当前的惯例(大规模语料库上的自监督学习)配合得很好。

涌现能力

论文中比较的模型有大约 5B 个参数,训练了超过 170B 个 token。它不足以解释奇迹——LLM 的涌现能力。

LLM 中的涌现能力(emergent abilities)是指模型显示出在训练过程中未明确教授的新的、复杂的能力的现象,这些能力随着模型规模和复杂性的扩大而自然产生。

本质上,涌现能力使 LLM 能够执行一定程度的复杂推理。例如,从非结构化文本中提取结构化知识。这种能力使 LLM 能够理解一些自然存在于其所训练的文本语料库中的 NLP 任务。对于较简单的任务,我们可以考虑在训练过程中已经微调的涌现能力的 LLM,而对于较复杂的任务,它可以将它们分解为更简单的任务。涌现能力不一定比 ED 模型更有利于 decoder-only 的模型,但它们缩小了 ED 模型与使用多任务微调的 decoder-only 的模型之间的性能差距。

从提示中进行上下文学习

另一件需要考虑的事情是提示。使用 LLM 时,我们可以应用提示工程方法,例如提供少量样本来帮助 LLM 理解上下文或任务。研究人员从数学上证明了这种上下文信息可以被视为具有与梯度下降类似的效果,可以更新零样本提示的注意力权重。

如果我们认为提示是将梯度引入注意力权重,那么我们可能可以预期它对 decoder-only 模型具有更直接的效果,因为它不需要先转换为中间上下文,然后才能用于生成任务。从逻辑上讲,它仍然应该适用于 encoder-decoder 架构,但它需要仔细调整编码器以获得最佳性能,这可能很困难。

效率优化

在 decoder-only 模型中,先前 token 的键 (K) 和值 (V) 矩阵可以在解码过程中重新用于后续的 token。由于每个位置仅关注先前的 token(由于因果注意机制),因此这些 token 的 K 和 V 矩阵保持不变。这种缓存机制通过避免重新计算已处理 token 的 K 和 V 矩阵来提高效率,从而促进在 GPT 等自回归模型中进行推理时更快地生成并降低计算成本。

自回归与双向注意力

关于底层注意力机制的差异,提出了另一个有趣的观点,即 decoder-only(因果解码器)的自回归和用于 encoder-decoder 的双向。我们可以在下面直观地看到它们如何关注不同的位置:

Transformer 架构中注意力矩阵的计算方式是将两个低维矩阵(Q 和 K^T)相乘,然后应用 softmax 运算。在 decoder-only 架构中,由于因果掩码(以防止模型看到未来的 token),注意力矩阵被限制为下三角形式,理论上保持其满秩状态:对角线上的每个元素(代表自注意力)都有助于使行列式为正(您只能从 softmax 获得正结果)。满秩状态表明理论上表达能力更强。

其他两种生成架构都引入了双向注意力,因此不能保证其注意力矩阵的满秩状态。作者认为这会限制模型的性能。他设置了一个实验来验证这一假设,将双向注意力矩阵拆分为单向,一半的注意力头关注前向,另一半关注后向。然后他将这种前向-后向注意力(Forward-Backward attention)的性能与全双向注意力模型进行了比较。FB 注意力机制确实表现得更好,这在某种程度上验证了这一理论,但这种改进非常有限,而且似乎并没有显示出显著的差异,尤其是在模型经过充分训练的情况下。

这在直觉上是有道理的。双向注意力就像一把双刃剑:它加速了学习过程,但同时也“破坏”了模型学习生成所必需的更深层次的预测模式。你可以把它想象成学习如何写作:填空比逐字逐句地写整篇文章更容易,但这是一种效率较低的练习方式。然而,经过大量的训练,这两种方法都实现了学习如何写作的目标。。

我学到了什么?

decoder-only 架构的流行源于其简单性、良好的零样本泛化和更便宜的训练成本,从而获得合理的性能。已经有许多研究 decoder-only 和 encoder-decoder 架构性能的工作,但鉴于有足够的训练和模型大小,实际上没有确凿的证据证明一种架构在最终性能方面优于另一种架构。

事实上,Google Gemini 展示了 encoder-decoder 模型如何在某些任务中同样出色地工作,甚至超过 decoder-only 架构。编码器组件通过从非文本输入中提取信息来支持“内置多模态性”,这对于未来一代的 LLM 可能至关重要。我们最初的问题应该是——为什么大多数 LLM 都是 decoder-only 的——它表明了一个时代,每个人都主要致力于推进 decoder-only 架构。尽管如此,我认为它仍然揭示了大量的信息,可以理解 LLM 工作的内部机制及其发展的历史。很想看到 AGI 的搜索下一步会发生什么。

0 阅读:14

智能科技扫地僧

简介:感谢大家的关注