当前位置:   article > 正文

GPT Understands,Too_gpt understands, too

gpt understands, too

1.本文的背景

       GPT之前只能做文本生成任务,不能做文本理解任务。通过提出的P-tuning方法,使用可以训练的连续提示embeddings,在NLU任务上可以达到和同等规模BERT相当的性能,甚至更好。

2.本文的贡献

       文章的贡献(1)在NLU任务上,使用P-tuning的GPT可以取得和BERT相当的效果。意味着GPT结构在NLU任务中的潜力被低估了。(2)P-tuning是一种通用的方法来提升BERT和GPT在小样本和全监督数据设置中的性能。并且使用P-tuning的方法,超过了在LAMA知识探索和小样本SuperGLUE上最新方法的性能,这意味着在预训练期间,语言模型已经学到了比我们认为的更多的world knowledge和先验任务知识。

3.本文的方法实现

       首先,手动设计的提示性能不稳定,模板中一个单词的变化就会导致性能发生剧烈的变化。

此外,手动设计的模板可能不是使得模型性能达到最优的模板。

       一个提示p的功能是将上下文x、目标 y和提示本身组成一个模板T。比如在预测一个国家首都的任务中,一个模板如下所示:"The capital of Britain is [MASK].","The capital of ... is ... ."是模板,"Britain"是上下文 and “[MASK]”是目标。

       P-tuning的模型框架如下图所示

       ※关于上图中的pseudo promptsprompt encoder都被优化的理解,之前自动寻找最优的prompt的工作是进行提示的优化,而P-tuning是将提示和提示编码器一起优化,此方式可以加速最找到最优提示的速率。

       给定一个提示T={[P(0:i)],x,[P(i+1:m)]},传统的离散提示模板将其映射为如下的形式,其中的Pi所用的词语是模型词汇表中的词

P-tuning将[Pi]当成一个伪token(之所以叫伪token是因为后续还将进行更新),将其映射为如下的形式,下面的形式将使我们找到一个更好的连续提示,此连续提示超出了模型词汇表的表示范围

       在下游损失函数的帮助下,可以优化连续提示hi

       当前方法所面临的挑战,(1)Discreteness,在预训练过后,模型的原始单词嵌入已经变得高度离散。如果h用随机分布初始化,使用SGD优化,这被证明只会在一个小范围里改变参数,并且优化器容易陷入局部最小。(2)Association:作者相信提示嵌入hi的值应当彼此相互依赖而不是孤立。所以需要一些机制去将提示嵌入联系起来。

       挑战的解决方法:在P-tuning中,作者建议使用一个由非常简单的神经网络组成的提示编码器,将hi建模为一个序列,以解决离散性和关联问题。在实际中,作者选用了双向LSTM且带有一个ReLU激活层的两层感知机。

       使用LSTM会给提示的训练引入额外的参数,但是与预训练模型的参数相比,二者差好几个数量级。此外,在推理中,只需要训练好的输出嵌入h即可,LSTM就可以被丢弃了。

       此外,作者发现添加少量锚标记(anchor tokens)有助于SuperGLUE的一些NLU任务。比如在RTE(Recognizing Textual Entailment)任务中,模板“[PRE][prompt tokens][HYP]?[prompt tokens][MASK]”中的“?”就是一个锚节点,对性能影响很大。因为锚节点描述了某一个组件,在该例子中“?”意味着[HYP]作为一个问句的部分。

4.实验

(1)Knowledge probing(知识探测)

       知识探测,或被称为事实检索,目的是评估语言模型从预训练中获得多少现实世界的知识。

       LAMA数据集使用完形填空测试对其进行评估,该完形填空测试是从知识库中选择的三元组中创建的。例如将三元组(Dante,born-in,Florence)转换为一个带有手工制作模板的完形填空式句子“Dante was born in[MASK].”,后让LM去推理这个目标。

       在knowledge probing任务上的实验结果如下图所示

       结果描述:在LAMA-34k中,P-tuning极大地推动了知识探测的边界,从43.3%到50.6%,在LAMA-29k中从45.2%到最高64.2%。结果表明,语言模型仅仅通过找到更好的提示,不进行微调,就能捕捉到更多的知识。当P-tuning与以前的离散提示搜索方法,如AutoPrompt,在相同大小的模型上进行比较,P- tuning仍然优于它们。

(2)在SuperGLUE上的实验

       SuperGLUE中有8个任务,使用其中的七个任务,最后一个任务ReCoRD没有采用提示,因此没有P-tuning。

       使用两种设置,fully-supervised setting和a few-shot setting。fully-supervised中使用完整的训练集,并使用开发集选择模型以及调整模型的超参数。而对于few-shot setting,使用SuperGLUE的few-shot版本——FewGLUE,每个任务由32个训练数据(D-train)和一个额外的未标记集合(D-unlated)组成,大小从400到20000不等。

        在该任务中P-tuning微调prompt embedding和预训练的模型。

       ①fully-supervised上的实验效果如下图所示

实验发现如下:      

(1)在基于bert的基本模型和大模型上,P-tunin在五个任务中的效果比其他bert的模型效果好。WiCMultiRC数据集的数据上效果差,原因是WiCMultiRC有相对大的训练集,推测标准微调可以从更大的数据集中获得比P-tuning更多的优势。反过来说,在低资源设置下,P-tuning更容易受益。

(2)在gpt2的基本模型和中等模型上,P-tuning都实现了一个好的效果。

以上结果显示,P-tuning可以有效的提高bert和gpt模型在NLU任务上的性能。

(3)在基础模型的规模下,在7项任务中,有5项任务使用P-tuning的gpt性能优于最佳的bert模型的效果。在大规模模型下,7项任务中有4项任务使用P-tuning的gpt性能优于最佳的bert模型的效果。

       实验总结,使用P-tuning,GPT2实现了比bert模型相当的甚至更好的结果,这个发现颠覆我们的普遍认为——双向模型比单向模型在NLU任务中表现的更好。

       ②few-shot实验

(1)手工提示一个微小的改变就会导致性能发生很大的不同。由此可见预训练的语言模型对提示的选择非常敏感。

(2)使用D-dev选择一个最好的手工提示是不太可能的,相比之下,使用P-tuning只需更少的手动操作,在自动化提示搜索中的效果却很好。

上表显示,在SuperGLUE小样本学习上的最好性能由P-tuning实现。(更大的devluopent sets可以带来额外的显著优势

(1)P-tuning在所有任务上超过了PET和PET-best。

(2)在包括CB、WiC、RTE和WSC的任务中,P-tuning超过了PET/IPET(这些方法采用了辅助技术)。与GPT-3相比(GPT-3比P-tuning所用的模型规模更大),P-tuning在7个任务中有六个任务超过GPT-3的性能。

实验验证了P-tuning在小样本NLU任务中的优势。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/858023
推荐阅读
相关标签
  

闽ICP备14008679号