输入“/”快速插入内容

盛名一时的BERT哪去了?这个问题的答案昭示了LLM范式的转变

2024年8月12日修改
机器之心|阅读原文
转载请联系原作者取得授权
编码器模型哪去了?如果 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 基础上的比较中,去噪目标的劣势很大。