赞
踩
EMNLP 2019
Facebook AI Research,University College London
这篇文章的出发点是,作者认为预训练的语言模型(如BERT等)中,包含了(或有潜力)包含实体关系的知识。
Pre-Train的 language model 中包含的知识体现在,如果我们将涉及到一个实体关系的提问,转换成自然语言的完形填空问题,则基于MLM方式训练的自然语言可以预测出缺失的单词。
除了上述出发点,这里作者的另一个贡献是构建了一个LAMA Probe 数据集,这个数据集可以衡量一个language model中的实体关系知识的信息量
作者的贡献总结:
作者将这些数据中的实体关系知识都转换成了完形填空的问题。举个例子来说,有三元组(SUBJECT, RELATION, OBJECT)实体关系知识 (Dante, born-in, Florence)。我们可以就该知识提问:Where was Dante born in? 我们进一步可以将这样的问题改写成 Dante was born in [MASK]。对最后这种形式,我们只需要用pretrain的BERT做一次MLM的inference即可得到一个回答。如果BERT预测[MASK]为Florence,则pre train 之后的 BERT 就捕获到了 (Dante, born-in, Florence)这一条实体关系知识。
部分构造和预测结果如下所示:
实验部分,本文分别对两个单向的语言模型fairseq-fconv和Transformer-XL以及两个双向的语言模型ELMo和BERT进行了实验测试,使用precision@k(p@k)来表示模型预测的前K个词中,命中正确答案的准确率。
下图是使用的模型以及对应的预训练数据集
实验结果如下所示:
ACL finding 2021
Zhejiang University,Microsoft Research Asia
本文关注的任务是少样本的命名实体识别,即在源领域有数量充足的训练样本,但是在目标领域只有少量的训练样本。此外目标领域的实体集合可能和源领域有很大差别。例如新闻领域里提及一个人,类别往往是‘PERSON’,但是在电影领域,他的类别可能就是“CHARACTER”。
本文提出了一个基于模板的命名实体识别模型。该模型将命名实体识别从序列标注任务转化为序列生成任务,例如通过生成“A is a PERSON entity”来判断A是‘PERSON’类别的命名实体。
如上面两个图所示,本文的核心观点就是构建一个模板,将原来的序列标注任务转换成生成任务,但是感觉说是序列生成任务也不是特别的准确,感觉这个只是计算语言模型概率。作者手动构建了多个模板,这些模板会影响到任务的F1值,从上图中可以看到,这些模板的形式会非常严重的影响到最终的结果。
首先是在正常数据集上训练的结果,作者在CoNLL03数据集上进行了训练,实验结果如下所示,同时作者还对上面提到的那四种模板里面效果比较好的三个进行了集成(投票法),可以看到集成之后的实验结果更高,达到了92.55:
之后是小样本学习,作者从CoNLL03数据集中抽取出来3806个样本,其中包含3925个ORG标签,1423个MISRC标签,50个LOC标签和50个PER标签(这里和图片有点不对应,但是不知道是哪个地方错了),实验结果如下所示:
还有其他的一些实验,这里就不记录了
ACL 2021
Stanford University
目前为了让预训练模型可以适应下游任务,最常用的方法就是微调。但是,它会修改所有语言模型参数,因此需要为每个任务存储完整的模型。所以作者提出了前缀调优,这是一种轻量级的自然语言生成任务微调替代方案,它使语言模型参数保持不变,但优化了一个小的连续任务特定向量(Prefix),示意图如下所示。
这里其实就是在transformer的每一层的前面,加上一个前缀,因为作者认为如果只是在输入层加入前缀,那么这个前缀对于模型的影响能力肯定没有在每一层都加入一个前缀强。然后训练模型的时候,实际上只调整前缀的参数,并不调整其他参数。
在论文中,作者测试了表格文本生成和文摘生成这两个任务,而这种前缀的方式,可以应用到自回归模型(GPT)和encoder-decoder模型中,使用的方式如下图所示
对于表格生成文本任务,这里采用的是GPT2模型,对于摘要任务,这里用的是BART模型。
下图分别是在表格生成文本和摘要生成两个任务上的实验结果,其中prefix的百分比是指prefix参数在模型整体参数中所占的比例。其中tabel 1的S,U,A的含义并不清楚,只知道U表示的是零样本学习,下面会介绍。
之后是小样本学习,这里采用E2E数据集来做关于表格文本生成的任务,使用XSUM来做关于摘要生成的任务,同时每个数据集分别采样50 100 200 500四个大小,然后实验结果如下图所示,下面四个折线图中上面两个是摘要任务,下面两个是表格文本生成任务,可以看到,PT始终优于微调。
之后是零样本学习,这里针对表格文本生成,采用WebNLG数据集,WebNLG数据集中的9个类别出现在训练集和验证集中,而5个类别出现在测试集中,实验结果见tabel 1中的U列;而XSUM的实验结果见下表(table 3),其中news-to-sports表示在news领域训练,在sports领域的数据集上测试;而within-news表示在{world, UK, business}上训练,在剩下的news上面测试。,可以看到pt依旧是优于微调的。
prefix长度对实验结果的影响,如下图所示,可以看到长度也并不是越长越好。
prefix在全部的transformer层都加入和只在输入的时候加入对实验结果的影响,以及prefix如果放到文本中间,而不是开头对实验结果的影响,如下图所示。这里可以看到,实验结果和table1相比,都不如prefix效果好。
这里是对prefix使用什么词进行初始化,对小样本学习实验结果的影响,这里应该是对E2E数据集的实验结果,可以看到使用一些和任务相关的词对于实验结果是具有促进作用的,比随机初始化的效果要好。
总的来说,还是因为原来的手动构建token,并不是连续的,很多时候知道什么模板是最优的,之后需要做数据增强、模型融合、知识蒸馏,从而避免单一的prompt不稳定性,但是这就偏离了prompt最开始希望能够低资源的目标;部分研究者致力于自动搜索离散 prompt 并取得了一些成效,但神经网络本质上是连续的,因此离散 prompt 可能并非最优。所以本文就像使用连续的可训练的参数代替原来的离散的目标。
如下图所示,可以看到实验结构其实很简单,就是在输入的时候,将原来的离散token,变成了连续的可训练的token。
这篇论文是对Prefix-Tuning策略的简化,并且作者发现,当模型参数超过十亿的时候,使用他们提出的prompt策略,可以和微调获得相同的性能;同时采用本文的prompt策略,可以很好的超过GPT-3,如下图所示。
论文主要提出以下的一些结论:
这篇论文提出的prompt tuning策略其实比较简单,主要是一些实验做的比较细致,所以这个实验主要是从prompt的长度,prompt的初始化,prompt的策略,训练的步数,prompt的参数量,零样本学习能力,prompt集成学习,prompt的可解释性方面进行介绍。
首先介绍prompt的长度,prompt的初始化,prompt的策略,训练的步数四个方面的实验结果:
首先是prompt长度对于实验结果的影响,可以看到图a中,对于模型来说,越大的模型,即使prompt的长度只有1,依旧可以获得非常高的性能,同时对于prompt的长度,如果超过20,获得的收益就比较少了。
之后是prompt的初始化,这里涉及到随机初始化、采样一些单词(选了T5词典里面最常见的5000个词)进行初始化以及采用和任务相关的词进行初始化(例如分类任务使用任务标签进行初始化,多标签的可以采用平均词向量,如果prompt长度太长,那么就再加入一些和任务相关词初始化)。实验结果见图b,可以看到当模型规模比较小的时候,随机初始化的效果是最差的,但是随着模型规模的增加,如T5-xxl的时候,三种初始化方式最终的结果差距就不大了。
之后是prompt的策略,这里主要是考虑到T5模型在训练的过程中,实际上是根据mask位置来生成丢失的文本段,所以在预测的时候就加入了Sentinel标志。但是在下游任务中,根本不会出现Sentinel标志,所以这对于prompt学习就存在了困扰。于是论文设计了三种prompt方法,分别是span corruption:冻结T5的模型参数,然后直接让T5进行生成;span corruption+sentinel:和span corruption一样,但是在所有的下游目标之前都加一个sentinel标志,来尽量的符合T5的预训练任务;LM Adaptation:先对T5模型进行一个自监督训练,即不包含sentinel标志的一个生成预训练,论文这里说参考T5这篇论文,并没有说的很详细。从图c中可以看到,LM Adaptation的方法一直挺好的,但是另外两种只有当模型参数增加的到最大的时候才开始缩小差距
最后是LM Adaptation二次预训练的步数,如图d所示,可以看到步数越多,模型的效果越稳定,但是随着模型规模的增加,步数带来的收益在逐渐降低。
下面是prompt参数量的比较,如图所示。这里的百分比对于绿色的线来说,随着模型规模的增加,其实在下降的,从0.1%的区域下降到了0.01%的区域。
下面是零样本学习能力的实验结果。对于表1,是在SQuAD上面进行训练,然后在其他域的数据集上预测的结果;对于表2,是在GLUE任务中选出了两个任务,然后互相测试得到的结果,结果显示,prompt策略和获得高于或者持平微调策略的结果。
之后是prompt集成学习,如下图所示。从这里其实也可以看到prompt的好处之一,微调需要针对每个任务保存一组模型的参数,而prompt只需要一组模型参数,加入不同的“头”就可以了。这里的集成学习,其实就是针对不同的任务,加入不同的“头”,然后组成一个batch放入到模型中进行训练,实验结果如下表所示,可以看到集成学习的结果比原来每个单任务的结果都要好。
最后是prompt的可解释性问题,这里使用余弦相似度来计算prompt和其他词之间的相似度。对于使用分类的类别的作为prompt的头,训练之后,这些prompt头最相似的词集合中依旧包含这些类别;对于随机初始化和使用采样的词初始化的prompt头,在训练之后依旧包含这些类别,这说明模型将目标类别存储到了prompt头中。同时对于比较长的prompt头,这些prompt头中,一些prompt向量是相同的,作者推测可能prompt中缺乏一些顺序结构以及容量过剩,使得模型很难将信息正确的存储到特定的位置。
本文的出发点是目前的prompt策略,很难在小模型上获得和finetune类似的效果,所以这篇论文就借鉴了Prefix-Tuning的思想,在GPT Understands, Too的基础上提出了P-Tuning v2这个prompt策略。
实际这篇论文的模型没有什么特别的地方,基本就是Prefix-Tuning策略直接搬过来用的。同时做了一些小修改,并做了一些实验。主要是两个小修改:
模型结构如下图右边所示,可以看到这篇基本就是Prefix-Tuning的复现,但是实验做的是比较详细的。
这篇论文的实验从模型规模,任务类型,Prefix-Tuning添加的层数位置,使用embedding还是使用MLP表示层,Prefix的长度,使用Verbalizer还是使用分类的标签以及多任务学习方面进行了实验。
首先是模型的规模的实验,这里选取了两个比较简单的任务的数据集,分别是GLUE的单句分类SST-2和句对分类MNLI,以及SuperGLUE的句对分类RTE、CB和多标题问答分类Boolq。实验结果如下所示,在模型规模从小到大的过程中,这篇论文也观察到了和The Power of Scale for Parameter-Efficient Prompt Tuning这篇论文类似的实验结果,就是prompt的性能和微调的性能的差距在逐渐减少,但是本文也提到P-Tuning v2在各种模型大小都表现的很不错。
之后是一些困难任务,因为作者认为现在prompt在一些比较简单的任务上表现的挺好,但是在一些复杂的任务上表现的就一般了。这里提到的比较困难的任务包含了3个任务,分别是NER:命名实体识别任务;QA:抽取式问答任务;SRL:语义角色标注任务(以句子的谓词为中心,不对句子所包含的语义信息进行深入分析,只分析句子中各成分与谓词之间的关系)。实验结果见下面所示。作者认为PT-v2可以获得和微调类似的实验结果,但是The Power of Scale for Parameter-Efficient Prompt Tuning论文的方法就存在较大的差距,特别是在比较难的问答任务中,PT-v2的表现明显要好一些,针对QA任务中SQuAD2.0任务中PT的结构都一样,作者认为这是因为SQuAD2.0包含一些没有到答案的数据,这样导致PT没有很好的在发挥作用。
同时这里还进行了多任务学习,多任务学习就是将每个任务中的多个数据集混合到一起来训练模型,这感觉和The Power of Scale for Parameter-Efficient Prompt Tuning中使用的方法可能会比较类似,但是针对QA任务,多任务学习的效果反而是在不断下降的,作者猜测这是因为混合了SQuAD2.0任务之后,数据集中出现了没有答案的任务,这就导致模型学习的难度加大,所以效果反而下降了。
之后是Prefix-Tuning添加的层数位置对实验结果的影响,如下图所示。图中有两条线,紫色的线的横坐标在上面,绿色的横坐标在下面,而横坐标的数字,如21-24,表示的是将Prefix-Tuning添加到第21-24层的位置。实验结果表明,当Prefix-Tuning加入的位置越靠近模型的上层时,效果会更优于放入模型的下层。
之后是使用embedding还是使用MLP表示层以及Prefix的长度对实验的影响,实验结果如下图所。从图中可以看到,对于是否使用MLP层进行初始化Prefix,针对不同的数据集,得到的结果并不一样,对于SRL的数据集,加入MLP层之后,反而模型的性能下降了。同时针对Prefix的长度来看,对于简单的任务来看,Prefix在较短长度的时候就可以取得较好的结果,但是对于困难的任务,Prefix的长度可能需要超过100才能产生较好的实验结果。
使用Verbalizer还是使用分类的标签,因为自从prompt出来之后,大家都喜欢使用一些和标签语义类似的相关词语来代替原来的标签,但是这篇论文经过实验发现,如果使用原来的标签,对于实验结果而言,并没有特别明显的差异,甚至会更好一些。但是这也带来一个问题,就是在推行到零样本学习或者小样本的学习的时候可能就会存在一些问题。
在预训练阶段,将NSP任务修改成为了更加适合prompt的任务,然后进行预训练。这样的好处是为了在后续的few-shot learning中获得较好的效果。
这个用规则的方式来构建prompt模板,但是我并没有发现这个和人工构建模板的区别,当然这个是为了解决关系分类这样的多分类问题。
这篇论文主要是从Verbalizer的角度来探索prompt在zero-shot learning和few-shot learning方面的效果。作者认为以往在选择Verbalizer的时候,一般都是使用手动或者梯度下降的方式来进行搜索,这样的方法可能会无法全面的覆盖到Verbalizer的相关含义。所以论文提出了一种 knowledgeable prompttuning (KPT),实际上就是扩充Verbalizer词的梳理,来提升模型的性能。
作者这里使用了两个任务来验证KPT的有效性,分别是主题分类任务和情感分类任务。针对主题分类任务,作者提出的方法主要是使用外部数据集(知识图谱以及词向量等)来获得Verbalizer词库的扩充。针对情感分析任务,作者找了两个情感词库来扩充Verbalizer词库negative和negative
作者在论文中提到了KPT在zero-shot learning中的三个问题:
部分Verbalizer词库中的词会出现OOV现象,针对这种问题,作者认为虽然这些词没有出现在词典中,但是这些词应该还是可以提供信息的,所以作者直接将这些词的bpe词向量平均作为这个词的表示(不是很理解具体实现的时候这个词向量有啥用)
第二问题是部分词虽然出现在了KB(外部知识库)中,但是在PLM模型的词典中出现的频率比较低。这里作者没有按照词频来给这些词设置阈值进行筛选哪些词可以进入最终的Verbalizer库,而是设置了一个先验概率的阈值
论文中将
D
D
D设置为数据集中的文本库,
x
x
x为一条文本数据,那么使用模型可以获得当前MASK位置为Verbalizer中某个词的期望:
作者这里提到一个估计的先验概率阈值,即从训练数据集中随机抽取
C
~
\tilde{C}
C~条数据,然后不管数据的标签是什么,按照下面的公式直接计算Verbalizer词库中的每一个词的先验概率值:
如果当一个Verbalizer词库中的词的先验概率低于阈值的时候(论文设置为了0.5),那就将这个词从Verbalizer词库中移除。这也对应了上面整体模型示意图中删除了一部分词。
第三个问题是作者提到先前的一些工作中提到LM模型的先验概率经常和正确的标签之间存在差距,导致预测的结果出错。而这里论文中提到的思想应该是:Verbalizer词库中的所有的词都是一样重要的,需要一视同仁。但是事实上LM模型很多时候并不会给每个词一样的重视程度,这就导致了作为正确标签词在先验概率中得分的差异,可能一个正确的标签词,因为LM模型本身给了它比较低的先验概率,导致最终模型分类结果出错,所以这里给每个Verbalizer词一个权重,论文提到是contextualized calibration(CC)参数。其实很简单,计算过程如下所示:
这样就可以给每个词加一个权重,将每个词的重要程度拉到一致的程度。
在解决这三个问题之后,就可以进行预测,因为zero-shot learning本身不涉及到训练,所以这里直接对一个类别的Verblizer词库的词的先验概率进行平均,得到最高概率的那个类别,即预测出结果:
few-shot learning相比zero-shot learning而言,步骤就简单很多。因为few-shot learning有部分训练数据,所以作者就没有再使用CC对先验概率进行纠正,作者提到从实验中可以看到,在10-shot learning中,加不加CC,结果差距并不是很大。这里只是加入了一个可学习的参数
w
v
w_v
wv,给每个Verbalizer词库中词给予不同的权重:
在预测的时候,也就是将这个权重加入到先验概率中,然后取先验概率最大的那个类别:
数据集和模板可以参考原文和附录A,作者这里针对提出的模板的结果取均值,也报了某个模板的最高值。
在作者的设置框架下,整体实验结果参考原文。针对zero-shot learning效果还行。但是对于few-shot learning而言,效果一般吧,提升并不是很明显。
这里针对三个进行的分析:
这里针对主题分类任务(下面两个数据集)来看,一般 C ~ \tilde{C} C~设置为100就可以满足要求了。但是针对情感分类数据集(上面两个数据集),作者认为本身情感词表的质量比较高,同时实验结果显示随着 C ~ \tilde{C} C~的增加,模型的性能还在提升,所以这里就采用了所有的情感词
few-shot learning中,加不加CC对结果影响是否很大,实验结果如下所示,可以看到影响很小:
这里就是分析一下分类正确的数据的MASK位置预测出来的词的一般都有哪些(按频率统计的),这里针对politics和sports两个词,计算了相关的词,如下图所示,可以看到模型其实是从多个方面来预测这个结果的,不一定完全和politics以及sports两个
整体而言论文创新性不多,偏向工程性,最后的分析实验也比较水。
比较有意思的工作,这个是对模型进行图像roi区域和文本信息对齐任务做的。通过对图片roi进行颜色标记,通过颜色信息来进行预测图像中的目标。
ACL 2021
论文提到是从对抗学习的角度考虑,将原来的离散token变成了连续的可搜索的自动prompt模板。这篇论文的提出时间应该早于Prefix-Tuning: Optimizing Continuous Prompts for Generation,或者是同时期的,所以论文的内容就比较旧了。
简单来说,WARP是将可训练的token(图中的绿色输入)插入到输入的文本向量中,插入的位置可以是文本的开端,结尾以及中间的任意位置;同时还在输出的部分加入可学习的token(和输入的可训练的token相同维度),这部分有点类似attention的操作,输出部分的可训练token的数量和分类的类别是一样的,感觉就是加入了一个attention操作。
输入的可训练的token的初始化可以是随机初始化(要和模型的词向量的均值方差一样),使用[MASK]进行初始化等等。
#那一列是指参数量,然后 W A R P i WARP_i WARPi中的 i i i是指prompt的token数量,init应该是说采用mask参数进行初始化,MNLI是用MNLI训练好的对prompt的token进行初始化。实验结果来看的话,需要训练的参数量减少,推理速度变快,但是效果也确实下降了。
作者认为一个充分训练的LM模型,能够轻易完成文本生成的任务,这可能预示着他蕴含着非常丰富的知识,在不重新调整参数的情况下,也能完成任务迁移。另一方面,这些LM模型虽然有很强的知识,但是却是个瞎子,希望赋予它视觉的能力。
论文提出的Frozen模型,不重新训练LM模型,让他可以是完成视觉任务。可以支持任意图像和文本混合的输入。可以将从语言上学到的丰富知识应用到多模态上。
LM模型使用了C4数据集进行训练,这是一个从互联网上收集的包含大量文本数据的训练集。然后将LM进行冻结,用一个图片标题数据conceptual Caption对vision encoder进行训练。
Vision Encoder使用NF-ResNet-50 ,这里的LM模型应该是指T5,GPT这类生成式模型。训练任务是给定图片和少量的文本,然后预测最后的几个token,做生成任务。Vision encoder的输入为224*224的图片,输出一个D维的向量,D维和token的向量维度一致,然后用MLP将其映射为D*n维,作为Visual Prefix,输入到模型中,在文中给出的实验中,n=1,2,4中,2的效果最好。
作者认为直接对LM和vision encoder一起进行finetune,会损害LM已经学到的知识,图片的position id使用了相对位置编码,主要是为了实现文本和图像之间的任意混排的输入形式。
这里在进行zero-shot learning和few-shot learning的时候,是采用和GPT3类似的策略,将样例和需要预测的样本拼接在一起,然后送入到模型中。
Frozen:预训练语言模型初始化并固定,图像编码从头训练。
其实实验效果一般,但是这是一篇比较具有开创性的将prompt用在多模态领域的工作,原始论文提供了挺多的有意思的实验,在一定程度上证明了可以挖掘出来LM模型的能力,比如说问飞机是谁发明的,可能图文对的训练数据里面没有这个信息,但是LM语言模型学习过这个信息,就可以回答出来是莱特兄弟。
这篇论文是Multimodal Few-Shot Learning with Frozen Language Models的一个改进版,现在还在ACL的滚动审核中。作者针对Frozen模型的结构提出了分析,他认为Frozen模型中只更新图像模型的参数,会导致图像模型需要负责两个方面:(1)提取图片的特征(2)对齐图片和文本的特征空间。作者为了让图片模型更好的提取图片特征,所以在LM模型的输入中加入一个可学习的prompt序列,用来负责对齐图片和文本的特征空间。
论文中提出了PromptFuse模型,其结构和Frozen模型非常相似,区别在于图片模型VE只作为特征提取模型,加入prefix(红色的)作为对齐图片和文本的特征空间,只训练prefix头,其他的参数都固定。
作者这里还提到,为了防止prefix不是只学习对齐信息,还学习了其他信息,在mask矩阵中,让prefix无法看到除自己之外的其他信息,mask矩阵如下图所示。
图片模型采用ViT和BART,图片默认采用[CLS]作为图片的表示。
VQAv2是一个图文问答数据集,实验结果如下:
MUStARD是一个包含视频,语音和文本的讽刺检测数据集,实验结果如下:
intProj:将图片特征向量和每个文本token连接起来,然后训练线性层来映射连接的向量,之后再输入到encoder中。
VQAv2是一个图文问答数据集,实验结果如下:
MUStARD是一个包含视频,语音和文本的讽刺检测数据集,实验结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。