自从 GPT-3 问世,展现出千亿级模型的强大实力以来,NLP 任务面临着规模、样本、Fine-tuning 性能的不可能三角。如何在保证 10 亿参数以下的语言模型可以达到 SOTA 的 Few-Shot (甚至是 Zero-shot)还有 Fine-tuning 的性能?一定要上千亿的参数并且忍受不稳定的 prompt 提示才可以解决 zero-shot 场景吗?本文中,IDEA 研究院封神榜团队介绍了一种新的「表现型」UniMC,仅有 2 亿参数即可达到 Zero-shot 的 SOTA。相关工作已经被 EMNLP 2022 接收。
在今年的一篇文章 [1] 中指出,自预训练技术被提出以来,NLP 界一直存在着一个不可能三角(如下图 1),即一个模型不能同时满足:
- 中等模型大小(10 亿以下);
- SOTA 的 Few-Shot (甚至是 Zero-shot)性能;
- SOTA 的 Fine-tuning 性能。
图 1
不可能三角存在的原因是,当前预训练模型的参数量只有达到一定的数量级,并且使用提示学习才能体现出强大的 few/zero-shot 性能。
最近我们封神榜团队被 EMNLP 2022 收录的论文:《Zero-Shot Learners for Natural Language Understanding via a Unified Multiple Choice Perspective》则打破了这一「魔咒」,提供了一个灵活高效的解决思路。我们的论文提出的 UniMC 在拥有模型参数量很小(仅仅是亿级)和 SOTA 的 Fine-tuning 能力的前提下,同时还能拥有(与 5400 亿的 PaLM 相当的) SOTA 的 Few/Zero-Shot 性能。
- 论文地址:https://arxiv.org/abs/2210.08590
- 模型开源地址:https://github.com/IDEA-CCNL/Fengshenbang-LM/tree/main/fengshen/examples/unimc/
技术背景
2018 年 BERT 的提出,标志着整个 NLP 领域进入一个预训练时代,NLP 的百尺竿头终于更进一步。现有的模型如 DeBERTa 等预训练掩码语言模型(PMLM)已经可以在 10 亿级以下的参数做到 fine-tuning 的 SOTA 了,但是面对 Zero-shot 场景下的 NLU 任务时表现无力。
原因在于,使用 PMLM 的时候,我们需要在其顶部针对具体任务增加一个 MLP 层,如图 2(c)。并且,这个 MLP 层会增加额外的参数,这使得这种方法面对 Zero-shot 场景时,只能选择随机初始化,根本没办法获得合理的输出。而且,在 finetuning 的场景下,增加 MLP 层也会造成不同任务之间是无法迁移的(比如,2 分类和 3 分类任务之间无法迁移)。
针对 Zero-shot 场景,近年来的主流做法是利用上百亿乃至千亿的预训练语言模型(PLM)统一将 NLU 任务转化为文本生成任务,这样可以通过人工构造 prompt 或者是人工设计 verbalizer 使得大模型可以应用于 zero-shot 任务上,如图 2(a)。进一步地,FLAN 论文中,使用了大量人工构造的模版来统一了不同的任务,使得别的任务的知识可以迁移到特定任务上,如图 2(b)。不过,这样的生成模型具有以下缺点:
- 生成模型需要将 verbalizer(标签描述)给生成出来,而 verbalizer 通常由人工进行编写,不同的 verbalizer 会导致较大的性能差异;
- prompt 也需要人工设计,不同的 prompt 会极大影响下游任务的效果;
- 生成模型在推理时,需要自回归的生成答案,速度较慢。并且一般是单向的,无法像 BERT 一样可以获取双向信息;
- 为保证 few/zero-shot 性能,生成模型参数量往往较大,达到 GPT-3 的 1750 亿或者是 PaLM 的 5400 亿;
- 虽然 FLAN 的 Instruction tuning 可以迁移别的任务的知识到特定任务上,但是面对不同任务需要新的训练。比如,评估 A 时,需要在 BCDE 上训练;评估 B 时,需要在 ACDE 上训练。
而我们提出了图 2(d)中 UniMC 的方法,避免了上述问题,并且在中英文数个任务中达到了 SOTA 或者是与最先进模型相近的表现。
图 2
UniMC(一个新的模型表现型)
模型思路
大部分的 NLU 任务都是基于标签的,而生成模型需要将标签给生成出来,这无疑是加重了任务的难度和模型的学习成本。对于许多基于标签的任务(Label-based Task)来说,通常只需要给定输入文本,输出文本属于每种 label 的概率即可。基于这个思路,我们将 NLU 任务转化为多项选择任务(Multiple-Choice)。即给定文本、问题和选项,输出每个选项的概率,而不需要将选项生成出来。
在此基础之上,我们提出一个新的概念:模型的表现型。现有的模型表现型,都是在后面添加某个层,比如分类层。或者是,生成模型 GPT 的表现型是通过 Prompt 来挖掘模型的知识。而我们提出的 UniMC 方案不需要在 PMLM 引入任何额外的层,挖掘了另一种 PMLM 的表现型。
在本论文中,我们选择了 ALBERT 作为我们的骨干 PMLM 网络。
统一的多项选择格式
如图 3,我们希望把基于标签的 NLU 任务都转换成统一的 MC(Multiple-Choice)格式。我们的理念是,尽可能少添加人工信息。
图 3
具体地说,我们做了如下两步:
- 把 label 变成 option;
- 选择是否添加 question prompt(question 基本来自数据集的描述)。
优点:只设计了一种 option prompt,设计一种或者是没有 question prompt。
模型结构
UniMC 的结构如下图 4 所示,它采用类似于 BERT 的自编码结构。主要流程为,我们先统一好不同任务的输入,并且限制好输入信息之间的流通性,经过 PMLM 之后,利用 O-MLM、OP 和 MLM 进行 MC training,最后使用 O-MLM 和 OP 进行 zero-shot 预测。接下来我将一步一步地拆解我们的方案。
图 4
输入 Input
如图 5 红色实线框区域内容。在输入到 UniMC 之前还要处理一下,变成 UniMC 特有的 token 格式。为了提升计算效率,我们将所有选项与问题和文本进行直接拼接,即 [Options, Question, Passage]。并且我们在每一个选项的前面插入一个特殊的 token,[O-MASK],用来表示 yes 或 no(选不选这个选项)。(注,为了可以提高复用性,我们复用了[MASK] token。
如图 5 绿色虚线框区域内容。我们需要考虑输入信息源太多,有选项信息、问题信息和文本段信息。它们之间的信息会相互影响,所以我们希望隔绝不同的信息。比如,我们在输入的时候,假如可以看到别的选项,那么这道题的难度就下降了,模型会有惰性。
因此我们进行了如下考虑:
- 使用 Segment ID,告诉模型 option 和 context(question,passage)信息是不同的;
- 修改 Postion ID,需要模型同等地看待不同 option 的位置信息;
- 修改 Attention Mask 矩阵,避免模型可以看到不同 option 的信息导致模型产生惰性。
图 5
模型如何做选择题?(O-MLM 和 OP)
如图 6,我们利用 O-MLM 和 OP 任务来让模型可以去「选择」答案。O-MASK 完全继承于 MASK token(具体地,为了不添加额外的参数以及充分利用模型在无监督预训练阶段所学习到的知识,我们复用了 MaskLM head 的参数)。唯一不同的是,它是 100% 被 mask 的。O-MLM 任务的目标就是把 O-MASK 解码出 ‘yes’ 或 ‘no’,其用来预测该选项是否被选择。
而 OP 任务的作用在于,从各个选项的‘yes’中预测答案。具体地,我们取每个 [O-MASK] 输出的 ‘yes’ 的 logit 进行 softmax 得到每个选项的概率,取概率最大的的选项最为预测答案即可。
图 6
在一个 Batch 中处理多个 MC 任务
如图 7,我们希望在一个 batch 中放入多个 MC 数据集,这样可以增强模型的能力,而且,也更加统一(Unified)。我们在构建 batch 的时候,发现了一个问题:假如,一个 batch 里面有不同选项的 sample 呢?
所以我们在输出的前面,再设计了一个 logit mask 的方法。直接给无关的 token 赋予一个负无穷大的预测值,加起来,我们就可以在计算 softmax 的时候消除别的 token 对于 O-MASK 的影响了。并且,不同数量的多项选择题可以在一个 batch 中统一处理。
图 7
模型训练和预测
MC Training
与 FLAN 的 Instruction Tuning 不同,我们仅仅在 MC 数据集上进行训练,这主要是为了让模型学会如何做选择题,并且 MC 数据集具有一定的通用性,比如,不同的数据集可能由数量不等的标签组成。
图 8
Zero-shot Inference
有趣的是,我们可以发现,这两个任务,是可以在 Training 和 zero-shot inference 两个阶段拥有一致性的。这是因为我们都是使用了 O-MLM 和 OP 两个任务来实现让模型做选择题。并且由于我们抛弃了分类层,所有的参数都可以复用,这样一来就激活了 PMLM 的 Zero-shot 能力。
图 9
UniMC 性能
英文场景
我们收集了 14 份 multiple -choice 任务进行预训练,然后做其他 NLU 任务进行 zero-shot 性能测试。在 4 个 NLI 任务中, UniMC 取得了 SOTA 并且超越 5400 亿参数的 PaLM 模型。
图 10
并且我们在分类任务上击败了以 GPT-2 和 GPT-3 为骨干的网络。对于非常困难的 Dbpedia 任务,高达 13 个类别,甚至可以达到 88.9% 的超高准确率。
图 11
为了探究 UNIMC 的泛化性,我们和 FLAN 做了对比。可以看到,我们的 UniMC 几乎可以在所有任务中超越 FLAN 或者是接近。
图 12
中文场景
在中文场景中,我们收集了 40 份有监督数据集,并统一构造成为 MC 的任务形式对 UniMC 模型进行预训练,然后在 FewCLUE 和 ZeroCLUE 的 9 个任务上进行测试。截止 2022 年 8 月 30 日,UniMC 取得了 FewCLUE 和 ZeroCLUE 双榜第一(图中的二郎神 – UnifiedMC 即为 UniMC)。
图 13
图 14
总结
我们提出了一个新颖的 Zero-shot 场景下的 NLU 任务的解决方案,仅利用亿级的参数量就战胜了千倍参数量的复杂大模型。
此外,我们几乎没有引入任何的人工信息。并且克服了 BERT 类模型的预训练和微调不一致的问题,我们的训练和预测是具有一致性的。我们甚至可以做到一次训练,多次 zero-shot 预测,极大地节约了算力成本。目前 IDEA 封神榜团队已经推出了超过 70 个预训练大模型。
- 模型:https://huggingface.co/IDEA-CCNL
- 封神榜总论文(中英双语):https://arxiv.org/abs/2209.02970
- 封神榜主页:https://github.com/IDEA-CCNL/Fengshenbang-LM
引用
[1]Impossible Triangle: What’s Next for Pre-trained Language Models?https://readpaper.com/paper/4612531641570566145
文章版权声明
1 原创文章作者:0008,如若转载,请注明出处: https://www.52hwl.com/46654.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别