编码器模型哪去了?如果 BERT 效果好,那为什么不扩展它?编码器 - 解码器或仅编码器模型怎么样了?
在大型语言模型(LLM)领域,现在是仅解码器模型(如 GPT 系列模型)独领风骚的时代。那编码器 - 解码器或仅编码器模型发展如何呢?为什么曾经盛名一时的 BERT 却渐渐少有人关注了?
近日,AI 创业公司 Reka 的首席科学家和联合创始人 Yi Tay 发布了一篇博客文章,分享了他的看法。Yi Tay 在参与创立 Reka 之前曾在 Google Research 和谷歌大脑工作过三年多时间,参与过 PaLM、UL2、Flan-2、Bard 等著名 LLM 以及 PaLI-X 和 ViT-22B 等多模态模型的研发工作。以下为他的博客文章内容。
基础简介
总体上看,过去这些年的 LLM 模型架构主要分为三大范式:仅编码器模型(如 BERT)、编码器 - 解码器模型(如 T5)、仅解码器模型(如 GPT 系列模型)。人们常常搞不清楚这些,并且对这些分类方法和架构有所误解。
首先要理解的一点是:编码器 - 解码器模型实际上也是自回归模型。在编码器 - 解码器模型中,解码器本质上依然是因果解码器。其无需预填充解码器模型,而是会将某些文本卸载到编码器,然后再通过交叉注意力发送给解码器。是的,T5 模型也是语言模型!
这类模型的一种变体是前缀语言模型(Prefix Language Model),简称 PrefixLM,其工作方式几乎一样,只是没有交叉注意力(以及其它一些小细节,比如编码器 / 解码器之间共享权重以及没有编码器瓶颈)。PrefixLM 有时也被称为非因果解码器。简单来说,编码器 - 解码器、仅解码器模型和 PrefixLM 整体上差别不大!
在 Hyung Won 近期的精彩讲座中,他娴熟地解释了这些模型之间的关系。详情可参阅机器之心的报道:《AI 研究的主要推动力会是什么?ChatGPT 团队研究科学家:算力成本下降》
同时,BERT 这样的仅编码器模型的去噪方式不一样(即 in-place);并且从某种程度上讲,仅编码器模型要在预训练之后真正发挥作用,需要依靠分类「任务」头。后来,T5 等模型采用了一种「修改版」的去噪目标,其使用了一种序列到序列的格式。
为此,需要指出:T5 中的去噪并非一种新的目标函数(在机器学习意义上),而是一种跨输入的数据变换,即你也可以使用一个因果解码器训练跨度损坏目标(span corruption objective )。
人们总是假设编码器 - 解码器模型必定是去噪模型,部分原因是 T5 实在过于具有代表性。但事实并不总是如此。你可以使用常规的语言建模任务(比如因果语言建模)训练编码器 - 解码器。反过来,也可以使用跨度损坏任务训练因果解码器。正如我前面说的那样,这基本上就是一种数据变换。
还有一点值得注意:一般来说,有 2N 个参数的编码器 - 解码器的计算成本与有 N 个参数的仅解码器模型一样,这样一来,它们的 FLOP 和参数量之比就不一样了。这就像是在输入和目标之间分配「模型稀疏性」。
这不是什么新东西,也不是我自己想出来的。2019 年的 T5 论文中就有,并且 UL2 论文也再次强调了这一点。
目前来说,很高兴能把这一点说清楚。现在来说目标。
关于去噪目标(它没起作用吗?无法扩展吗?还是太容易了?)
这里的去噪目标是指「跨度损坏」任务的任意变体。这有时候被称为「填充」或「填空」。表达它的方式有很多,比如跨度长度、随机性、sentinel token 等。想必你已明白其中关键。
尽管 BERT 式模型的去噪目标基本是就地的(in-place,比如分类头位于掩码 token 上),但「T5 风格」要更现代一点,即通过编码器 - 解码器或仅解码器模型来处理数据变换。在这样的数据变换中,被掩蔽的 token 只是会被「移回去」以便模型给出预测。
预训练的主要目标是以尽可能最高效和有效的方式构建与下游任务对齐的内部表征。这种内部表征越好,就更容易将这些学习到的表征用于后续任务。我们都知道,简单的下一词预测「因果语言建模」目标表现出色,并且已成为 LLM 革命的核心。现在的问题是去噪目标是否同样出色。
根据公开信息,我们知道 T5-11B 的效果相当好,即使在对齐和经过监督式微调之后(Flan-T5 XXL 的 MMLU 分数是 55+,在当时来说,这个规模的模型已经相当好了)。因此,我们可以得出这样的结论:去噪目标的迁移过程(预训练→对齐)在这个规模上相对来说效果不错。
我的看法是,去噪目标的效果很好,但还不足以单独作为目标。一个巨大的缺点源自所谓的更少的「损失暴露(loss exposure)」。在去噪目标中,仅有少量 token 会被掩蔽和得到学习(即被考虑到损失中)。反过来,在常规的语言建模中,这接近于 100%。这使得每个 FLOP 的样本效率非常低,这使得在 flop 基础上的比较中,去噪目标的劣势很大。
去噪目标的另一个缺点是其比常规语言建模更不自然,因为它会以一种奇怪的方式重新设定输入 / 输出的格式,这使得它们不太适合少样本学习。(但在少样本任务上,仍可能通过调整这些模型让其表现得相当优良。)因此,我认为去噪目标应该只能用作常规语言建模的补充目标。
统一的早期以及 BERT 类模型消失的原因
类似 BERT 的模型逐渐消失,现在已经没多少人再谈它们了。这也能解释为什么我们现在看不到超大规模的 BERT 模型了。原因是什么?这很大程度上是因为任务 / 建模范式的统一和转变。BERT 式模型很繁琐,但 BERT 模型被弃用的真正原因是:人们希望一次性完成所有任务,因此采用了一种更好的去噪方法 —— 使用自回归模型。
在 2018-2021 年期间,出现了一种隐含的范式转变:从单任务微调转变成大规模多任务模型。这慢慢地将我们导向了统一的 SFT 模型,这就是我们如今看到的通用模型。使用 BERT 却很难做到这一点。我认为这与「去噪」关系不大。对于还想使用这样的模型(即 T5)的人,他们找到了一种重新表达去噪预训练任务的方法,这使得如今 BERT 式模型已经基本上被弃用了,因为我们已有更好的替代方案。
更确切地说,编码器 - 解码器和仅解码器模型无需特定于任务的分类头就能用于多种任务。对于编码器 - 解码器,研究者和工程师开始发现放弃编码器的效果就和 BERT 编码器差不多。此外,这还能保留双向注意力的优势 —— 该优势让 BERT 在小规模(往往是生产规模)上可与 GPT 竞争。
去噪目标的价值
去噪预训练目标也能以一种类似常规语言建模的方式学习预测下一个词。但是,不同于常规因果语言建模,这需要对序列使用一种数据变换,使得模型可以学习「填空」,而不是简单地预测从左到右的自然文本。
值得注意的是,去噪目标有时也称为「填充任务」,有时会与常规语言建模任务一起在预训练过程中混合使用。
虽然确切的配置和实现细节可能有所不同,但当今的现代 LLM 可能在某种程度上组合使用语言建模和填充。有趣的是,这种「语言模型 + 填充」的混合实际上也大概在同一时期四处传播(如 UL2、FIM、GLM、CM3),许多团队都带来了自己独具特色的混合方案。顺带一提,目前已知的以这种方式训练的最大模型很可能是 PaLM-2。
还需要说明一点,预训练任务混合也可以按顺序堆叠,不一定必须同时混合,比如 Flan-T5 起初是在 1T 跨度损坏 token 上训练的,然后换到前馈语言建模目标的 100B token,之后再进行 flan 指令微调。某种程度上讲,这适合混合去噪 / LM 目标模型。需要明确的是,前缀语言建模目标(不要与架构混淆)单纯只是因果语言建模,其有一个随机确定和发送到输入端的分割点(没有损失和非因果掩码)。
顺便一提,填充可能起源于代码 LLM 领域,其中「填空」更像是写代码所需的一个功能。同时,UL2 的动机更多是将去噪目标和双向 LLM 擅长的任务类别与固有的生成任务(例如总结或开放式生成)统一起来。这种自回归式的解码「向后移」的优点是:其不仅能让模型学习更长程的依赖关系,还能让其隐式地受益于非显式的双向注意力(因为为了填空,你已经看过了未来)。
有一个传说中的经验:去噪目标学习的表征在特定任务类别上表现更好,有时候还会有更高的样本效率。在 U-PaLM 论文中,我们展示了少量的跨度损坏 up-training 如何改变在一组 BIG-Bench 任务上的行为和涌现现象。在此基础上,对使用这一目标训练的模型进行微调通常可以得到更好的监督式微调模型,尤其是当规模较小时。
在单任务微调方面,可以看到 PaLM-1 62B 模型被小得多的 T5 模型击败。在相对较小的规模上,「双向注意力 + 去噪目标」是一记漂亮的组合拳!我相信很多实践者也注意到了这种情况,尤其是在生产应用中。
双向注意力如何呢?
对语言模型来说,双向注意力是一种有趣的「归纳偏置」—— 人们常常将其与目标和模型骨干混淆。在不同的计算领域,归纳偏置的用途也各不相同,并且也可能对扩展曲线造成不同的影响。话虽如此,相比于较小规模,双向注意力在规模较大时可能就没那么重要了,或者可能对不同的任务或模态有不同的影响。举个例子,PaliGemma 使用了 PrefixLM 架构。
Hyung Won 也在他的演讲中指出:PrefixLM 模型(使用双向注意力的仅解码器模型)也存在缓存问题,这是这类架构的一个固有缺陷。但是,我认为有很多方法可以解决这个缺陷,但这超出了本文的范围。
编码器 - 解码器架构的优缺点
相比于仅解码器模型,编码器 - 解码器架构有优势也有劣势。第一种情况是编码器端不受因果掩码的限制。在某种程度上,你可以在注意力层上放开手脚,激进地执行池化或任何形式的线性注意力,而不必担心自回归的设计限制。这是一种将不太重要的「上下文」卸载到编码器的好方法。你也能把编码器做小点,这也是个优势。
必需编码器 - 解码器架构的一个例子是 Charformer,其中大胆使用了编码器并缓解了字节层面的模型的速度劣势。在编码器方面进行创新可以快速获益,同时无需担心因果掩码的重大缺陷。
同时,相比于 PrefixLM,编码器 - 解码器的一个缺点是输入和目标必须分配固定的预算。举个例子,如果输入预算是 1024 token,那么编码器端就必须填充到这个值,而这可能会浪费大量计算。相反,在 PrefixLM 中,输入和目标可以直接连接起来,从而可以缓解这个问题。
与当今模型的相关性和关键要点
当今时代,要成为一位合格的 LLM 研究者和实践者,一项关键能力是能同时从架构方面和预训练方面推断归纳偏置。理解其中微妙的差异可帮助人们进行外推和持续创新。
以下是我的关键要点:
编码器 - 解码器和仅解码器模型都是自回归模型,它们在实现层面上有差异,也有各自的优缺点。它们是略有不同的归纳偏置。至于选用哪一种,这取决于下游用例和应用限制。与此同时,对于大多数 LLM 用例和利基用例而言,可以认为 BERT 式的编码器模型已经过时。
去噪目标主要能作为因果语言模型的补充。它们已经被成功用作训练阶段的「支持目标」。使用去噪目标训练因果语言模型通常能带来某种程度的帮助。尽管这在代码模型领域非常常见(即代码填充),但对于如今的通用模型,使用因果语言模型加某个去噪目标来进行预训练的做法也挺常见。
双向注意力能给较小规模模型带来很大助益,但对较大模型来说可有可无。这大都是传言。我认为双向注意力具有一种归纳偏置,就类似于对 Transformer 模型做的许多其它类型的修改。
最后,总结一下。目前已经没有大规模版本的 BERT 模型在运营了:BERT 模型已被弃用,取而代之的是更灵活的去噪(自回归)T5 模型。这主要是由于范式统一,即人们更喜欢使用一个通用模型去执行各种任务(而不是使用特定于某任务的模型)。与此同时,自回归去噪有时可作为因果语言模型的副目标。
原文链接:https://www.yitay.net/blog/model-architecture-blogpost-encoders-prefixlm-denoising
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)