P-Tuning v2: Prompt Tuning Can B

2022-03-02  本文已影响0人  Tsukinousag

prompt-tuningv1当模型尺寸较小时,尤其是小于100亿个参数时,它仍然表现不佳。

P-tuning v2 是优化版本 of prefix-tuning,起源于使用deep prompt tuning, 在预训练模型的每一层使用 continuous prompts ,Deep prompt tuning 增加了continuous prompts的容量也缩小了在各种设置中进行微调的差距,尤其是对于小型模型和复杂任务

  1. Simple NLU tasks involve classification
    简单的NLU任务涉及分类在一个标签上

之前的工作

手动构造在词汇表中提取 "IT" , "is" , "[MASK]"

input embedding 可以表示为

但依旧是 discrete natural prompts,使用prompt-learning后

因此这样就可以differentially optimized


  1. Hard sequence NLU tasks

涉及一系列标签的分类,开放式信息提取,命名实体识别、抽取式问答和语义角色标记。

缺乏跨尺度的普遍性 当模型扩展到100亿个参数以上时,prompt-tuning可以与fine-tuning相媲美。但对于那些较小的型号(从100M到1B),prompt-tuning和fine-tuning的性能之间存在显著差异,这大大限制了prompt-tuning的适用性。

任务之间缺乏普遍性 ,v1只适用于简单的NLU任务


P-tuning V2相比P-tuning,区别在于:

取消了reparamerization:对pseudo token,不再使用BiLSTM或MLP进行表征,且不再替换pre-trained model word embedding,取而代之的是直接对pseudo token对应的深层模型的参数进行微调;

Multi-task learning:对于pseudo token的continous prompt,随机初始化比较难以优化,因此采用multi-task方法

P-tuning V2无需verbalizer,而完全变为生成模型,可以在[CLS]部分输出sentence-level class,以及每个token位置上输出token-level class。


1. Deep Prompt Tuning

不同层中的提示作为前缀token加入到输入序列中,并独立于其他层间(而不是由之前的transformer层计算)一方面,通过这种方式,P-tuning v2有更多的可优化的特定任务参数(从0.01%到0.1%-3%),以允许更多的每个任务容量,而它仍然比完整的预训练语言模型小得多

另一方面,添加到更深层的提示可以对输出预测产生更直接和重大的影响,而中间的transformer层则更少

1.1 重新参数化

对于NLU任务,这种技术的好处取决于任务和数据集。对于一些数据集(如RTE和CoNLL04),MLP的重新参数化带来了比嵌入更稳定的改善;对于其他的数据集,重新参数化可能没有显示出任何效果(如BoolQ),有时甚至更糟(如CoNLL12)

1.2 提示长度优化

不同的理解任务通常用不同的提示长度来实现其最佳性能

1.3 多任务学习优化

在一些困难的序列任务中,多任务学习可以作为P-tuning v2的有益补充,表示为MPT-2


2. 实体识别(CoNLL03、OntoNotes 5.0、CoNLL04):

任务旨在对每个token进行分类,并输出对应的标签;
Multi-task版本:三个task混合起来进行训练,并分别对应一个分类器,continuous prompt及其参数则共享;
实验结果如下:


3. 结论

P-tuning在复杂的NLU任务上效果很差;
P-tuning V2可以与传统Fine-tuning有差不多的效果;
Multi-task P-tuning V2效果更好,分析认为可能是变相的数据增强带来的影响。

上一篇下一篇

猜你喜欢

热点阅读