prompt模板模式总结记录

文章目录

prompt模板模式总结记录

完形填空模式

Language Models as Knowledge Bases

EMNLP 2019
Facebook AI Research,University College London

motivation

这篇文章的出发点是,作者认为预训练的语言模型(如BERT等)中,包含了(或有潜力)包含实体关系的知识。

Pre-Train的 language model 中包含的知识体现在,如果我们将涉及到一个实体关系的提问,转换成自然语言的完形填空问题,则基于MLM方式训练的自然语言可以预测出缺失的单词。

除了上述出发点,这里作者的另一个贡献是构建了一个LAMA Probe 数据集,这个数据集可以衡量一个language model中的实体关系知识的信息量

作者的贡献总结:

  • BERT-large可以很好的从提取实体关系
  • 虽然预训练模型可以提取实体关系的,但是对于一些多对多的关系抽取,表现的非常的差
  • BERT-large提取实体关系的能力始终强于其他语言模型
  • 在开放域的问答数据集上,BERT-Large依旧可以取得很好的结果

LAMA Probe数据集

  • Google-RE:包含了大约60K事实和5种实体关系,本文从中选取了3种实体关系:出生地点、出生日期和死亡地点,并构造成类似于[S] was born in [O]的自然语言形式。
  • T-REx:T-REx知识源是维基数据三元组的一个子集,本文从中选取了41种实体关系,并为每种关系采样了至多1000条事实知识。
  • ConceptNet:ConceptNet是一个多语言的知识库,本文从中选取了英文部分的16种实体关系。
  • SQuAD :QA数据集,本文从中选取了305个上下文无关的问题,并将其转换为完形填空的形式。

作者将这些数据中的实体关系知识都转换成了完形填空的问题。举个例子来说,有三元组(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)这一条实体关系知识。

部分构造和预测结果如下所示:

prompt模板模式总结记录

; 实验结果

实验部分,本文分别对两个单向的语言模型fairseq-fconv和Transformer-XL以及两个双向的语言模型ELMo和BERT进行了实验测试,使用precision@k(p@k)来表示模型预测的前K个词中,命中正确答案的准确率。

下图是使用的模型以及对应的预训练数据集

prompt模板模式总结记录

实验结果如下所示:

prompt模板模式总结记录
  • Google-RE:实验结果很高,但是作者指出这个数据集和BERT-large本身的训练数据集存在吻合,都是维基百科的一部分,所以这个结果可能只是BERT-large看过类似的数据,所以实验结果很高
  • T-REx:BERT-large在1-1的关系上面表现很好,但是在多对多的关系上面表现很差(可能指在一个关系里面有多种答案)
  • SQuAD:完全开放域的数据集,BERT-large没有经过微调,就可以获得挺好的结果,表格中是结果显示BERT-large的p1结果,作者提到对于p10的结果,BERT-large为57.1,而可以访问专业的信息检索信息的方法DrQA为63.5。

Template-Based Named Entity Recognition Using BART

ACL finding 2021
Zhejiang University,Microsoft Research Asia

motivation

本文关注的任务是少样本的命名实体识别,即在源领域有数量充足的训练样本,但是在目标领域只有少量的训练样本。此外目标领域的实体集合可能和源领域有很大差别。例如新闻领域里提及一个人,类别往往是’PERSON’,但是在电影领域,他的类别可能就是”CHARACTER”。

本文提出了一个基于模板的命名实体识别模型。该模型将命名实体识别从序列标注任务转化为序列生成任务,例如通过生成”A is a PERSON entity”来判断A是’PERSON’类别的命名实体。

构造模板

prompt模板模式总结记录

prompt模板模式总结记录

如上面两个图所示,本文的核心观点就是构建一个模板,将原来的序列标注任务转换成生成任务,但是感觉说是序列生成任务也不是特别的准确,感觉这个只是计算语言模型概率。作者手动构建了多个模板,这些模板会影响到任务的F1值,从上图中可以看到,这些模板的形式会非常严重的影响到最终的结果。

; 实验结果

首先是在正常数据集上训练的结果,作者在CoNLL03数据集上进行了训练,实验结果如下所示,同时作者还对上面提到的那四种模板里面效果比较好的三个进行了集成(投票法),可以看到集成之后的实验结果更高,达到了92.55:

prompt模板模式总结记录

之后是小样本学习,作者从CoNLL03数据集中抽取出来3806个样本,其中包含3925个ORG标签,1423个MISRC标签,50个LOC标签和50个PER标签(这里和图片有点不对应,但是不知道是哪个地方错了),实验结果如下所示:

prompt模板模式总结记录

还有其他的一些实验,这里就不记录了

前缀模式

Prefix-Tuning: Optimizing Continuous Prompts for Generation

ACL 2021
Stanford University

motivation

目前为了让预训练模型可以适应下游任务,最常用的方法就是微调。但是,它会修改所有语言模型参数,因此需要为每个任务存储完整的模型。所以作者提出了前缀调优,这是一种轻量级的自然语言生成任务微调替代方案,它使语言模型参数保持不变,但优化了一个小的连续任务特定向量(Prefix),示意图如下所示。

prompt模板模式总结记录

; 实现方式

这里其实就是在transformer的每一层的前面,加上一个前缀,因为作者认为如果只是在输入层加入前缀,那么这个前缀对于模型的影响能力肯定没有在每一层都加入一个前缀强。然后训练模型的时候,实际上只调整前缀的参数,并不调整其他参数。

在论文中,作者测试了表格文本生成和文摘生成这两个任务,而这种前缀的方式,可以应用到自回归模型(GPT)和encoder-decoder模型中,使用的方式如下图所示

prompt模板模式总结记录

实验结果

对于表格生成文本任务,这里采用的是GPT2模型,对于摘要任务,这里用的是BART模型。

下图分别是在表格生成文本和摘要生成两个任务上的实验结果,其中prefix的百分比是指prefix参数在模型整体参数中所占的比例。其中tabel 1的S,U,A的含义并不清楚,只知道U表示的是零样本学习,下面会介绍。

prompt模板模式总结记录

prompt模板模式总结记录

之后是小样本学习,这里采用E2E数据集来做关于表格文本生成的任务,使用XSUM来做关于摘要生成的任务,同时每个数据集分别采样50 100 200 500四个大小,然后实验结果如下图所示,下面四个折线图中上面两个是摘要任务,下面两个是表格文本生成任务,可以看到,PT始终优于微调。

prompt模板模式总结记录

之后是零样本学习,这里针对表格文本生成,采用WebNLG数据集,WebNLG数据集中的9个类别出现在训练集和验证集中,而5个类别出现在测试集中,实验结果见tabel 1中的U列;而XSUM的实验结果见下表(table 3),其中news-to-sports表示在news领域训练,在sports领域的数据集上测试;而within-news表示在{world, UK, business}上训练,在剩下的news上面测试。,可以看到pt依旧是优于微调的。

prompt模板模式总结记录

prefix长度对实验结果的影响,如下图所示,可以看到长度也并不是越长越好。

prompt模板模式总结记录

prefix在全部的transformer层都加入和只在输入的时候加入对实验结果的影响,以及prefix如果放到文本中间,而不是开头对实验结果的影响,如下图所示。这里可以看到,实验结果和table1相比,都不如prefix效果好。

prompt模板模式总结记录

这里是对prefix使用什么词进行初始化,对小样本学习实验结果的影响,这里应该是对E2E数据集的实验结果,可以看到使用一些和任务相关的词对于实验结果是具有促进作用的,比随机初始化的效果要好。

prompt模板模式总结记录

; GPT Understands, Too

motivation

总的来说,还是因为原来的手动构建token,并不是连续的,很多时候知道什么模板是最优的,之后需要做数据增强、模型融合、知识蒸馏,从而避免单一的prompt不稳定性,但是这就偏离了prompt最开始希望能够低资源的目标;部分研究者致力于自动搜索离散 prompt 并取得了一些成效,但神经网络本质上是连续的,因此离散 prompt 可能并非最优。所以本文就像使用连续的可训练的参数代替原来的离散的目标。

模型结构

如下图所示,可以看到实验结构其实很简单,就是在输入的时候,将原来的离散token,变成了连续的可训练的token。

prompt模板模式总结记录

; The Power of Scale for Parameter-Efficient Prompt Tuning

motivation

这篇论文是对Prefix-Tuning策略的简化,并且作者发现,当模型参数超过十亿的时候,使用他们提出的prompt策略,可以和微调获得相同的性能;同时采用本文的prompt策略,可以很好的超过GPT-3,如下图所示。

prompt模板模式总结记录

论文主要提出以下的一些结论:

  • prompt tuning可以在大型模型上获得与微调类似的性能
  • 经过消融实验,模型的鲁棒性和性能都随着模型规模的增加而增加
  • prompt tuning策略可以很好的帮助模型进行零样本和小样本学习
  • prompt集成学习更加有效

; 实验结果

这篇论文提出的prompt tuning策略其实比较简单,主要是一些实验做的比较细致,所以这个实验主要是从prompt的长度,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%的区域。

prompt模板模式总结记录

下面是零样本学习能力的实验结果。对于表1,是在SQuAD上面进行训练,然后在其他域的数据集上预测的结果;对于表2,是在GLUE任务中选出了两个任务,然后互相测试得到的结果,结果显示,prompt策略和获得高于或者持平微调策略的结果。

prompt模板模式总结记录

prompt模板模式总结记录

之后是prompt集成学习,如下图所示。从这里其实也可以看到prompt的好处之一,微调需要针对每个任务保存一组模型的参数,而prompt只需要一组模型参数,加入不同的”头”就可以了。这里的集成学习,其实就是针对不同的任务,加入不同的”头”,然后组成一个batch放入到模型中进行训练,实验结果如下表所示,可以看到集成学习的结果比原来每个单任务的结果都要好。

prompt模板模式总结记录

prompt模板模式总结记录

最后是prompt的可解释性问题,这里使用余弦相似度来计算prompt和其他词之间的相似度。对于使用分类的类别的作为prompt的头,训练之后,这些prompt头最相似的词集合中依旧包含这些类别;对于随机初始化和使用采样的词初始化的prompt头,在训练之后依旧包含这些类别,这说明模型将目标类别存储到了prompt头中。同时对于比较长的prompt头,这些prompt头中,一些prompt向量是相同的,作者推测可能prompt中缺乏一些顺序结构以及容量过剩,使得模型很难将信息正确的存储到特定的位置。

方法说明

P-Tuning v2: Prompt Tuning Can BeComparable to Fine-tuning Universally Across Scales and Tasks

motivation

本文的出发点是目前的prompt策略,很难在小模型上获得和finetune类似的效果,所以这篇论文就借鉴了Prefix-Tuning的思想,在GPT Understands, Too的基础上提出了P-Tuning v2这个prompt策略。

模型和方法

实际这篇论文的模型没有什么特别的地方,基本就是Prefix-Tuning策略直接搬过来用的。同时做了一些小修改,并做了一些实验。主要是两个小修改:

  • Prefix-Tuning使用MLP层对embedding层的输入进训练编码,这篇论文提到使用MLP层进行编码可能会对一些任务造成性能的下降。
  • 分类使用的标签问题,对于prompt任务,一般会使用一些和任务相关的词代替原来的标签,尤其是分类任务,但是这篇论文发现直接使用对应的标签也可以类似甚至更好的性能。

模型结构如下图右边所示,可以看到这篇基本就是Prefix-Tuning的复现,但是实验做的是比较详细的。

prompt模板模式总结记录

; 实验结果

这篇论文的实验从模型规模,任务类型,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模板模式总结记录

之后是一些困难任务,因为作者认为现在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任务之后,数据集中出现了没有答案的任务,这就导致模型学习的难度加大,所以效果反而下降了。

prompt模板模式总结记录

prompt模板模式总结记录

prompt模板模式总结记录

之后是Prefix-Tuning添加的层数位置对实验结果的影响,如下图所示。图中有两条线,紫色的线的横坐标在上面,绿色的横坐标在下面,而横坐标的数字,如21-24,表示的是将Prefix-Tuning添加到第21-24层的位置。实验结果表明,当Prefix-Tuning加入的位置越靠近模型的上层时,效果会更优于放入模型的下层。

prompt模板模式总结记录

之后是使用embedding还是使用MLP表示层以及Prefix的长度对实验的影响,实验结果如下图所。从图中可以看到,对于是否使用MLP层进行初始化Prefix,针对不同的数据集,得到的结果并不一样,对于SRL的数据集,加入MLP层之后,反而模型的性能下降了。同时针对Prefix的长度来看,对于简单的任务来看,Prefix在较短长度的时候就可以取得较好的结果,但是对于困难的任务,Prefix的长度可能需要超过100才能产生较好的实验结果。

prompt模板模式总结记录

使用Verbalizer还是使用分类的标签,因为自从prompt出来之后,大家都喜欢使用一些和标签语义类似的相关词语来代替原来的标签,但是这篇论文经过实验发现,如果使用原来的标签,对于实验结果而言,并没有特别明显的差异,甚至会更好一些。但是这也带来一个问题,就是在推行到零样本学习或者小样本的学习的时候可能就会存在一些问题。

prompt模板模式总结记录

其他附加论文

PPT: Pre-trained Prompt Tuning for Few-shot Learning

在预训练阶段,将NSP任务修改成为了更加适合prompt的任务,然后进行预训练。这样的好处是为了在后续的few-shot learning中获得较好的效果。

PTR: Prompt Tuning with Rules for Text Classification

这个用规则的方式来构建prompt模板,但是我并没有发现这个和人工构建模板的区别,当然这个是为了解决关系分类这样的多分类问题。

Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification

motivation

这篇论文主要是从Verbalizer的角度来探索prompt在zero-shot learning和few-shot learning方面的效果。作者认为以往在选择Verbalizer的时候,一般都是使用手动或者梯度下降的方式来进行搜索,这样的方法可能会无法全面的覆盖到Verbalizer的相关含义。所以论文提出了一种 knowledgeable prompttuning (KPT),实际上就是扩充Verbalizer词的梳理,来提升模型的性能。

实现细节

prompt模板模式总结记录
; 构建策略

作者这里使用了两个任务来验证KPT的有效性,分别是主题分类任务和情感分类任务。针对主题分类任务,作者提出的方法主要是使用外部数据集(知识图谱以及词向量等)来获得Verbalizer词库的扩充。针对情感分析任务,作者找了两个情感词库来扩充Verbalizer词库negativenegative

zero-shot learning

作者在论文中提到了KPT在zero-shot learning中的三个问题:

  • 部分Verbalizer词库中的词会出现OOV现象,针对这种问题,作者认为虽然这些词没有出现在词典中,但是这些词应该还是可以提供信息的,所以作者直接将这些词的bpe词向量平均作为这个词的表示(不是很理解具体实现的时候这个词向量有啥用)
  • 第二问题是部分词虽然出现在了KB(外部知识库)中,但是在PLM模型的词典中出现的频率比较低。这里作者没有按照词频来给这些词设置阈值进行筛选哪些词可以进入最终的Verbalizer库,而是设置了一个先验概率的阈值
  • 论文中将D D D设置为数据集中的文本库,x x x为一条文本数据,那么使用模型可以获得当前MASK位置为Verbalizer中某个词的期望:
    prompt模板模式总结记录
    prompt模板模式总结记录
    如果当一个Verbalizer词库中的词的先验概率低于阈值的时候(论文设置为了0.5),那就将这个词从Verbalizer词库中移除。这也对应了上面整体模型示意图中删除了一部分词。
    prompt模板模式总结记录
    这样就可以给每个词加一个权重,将每个词的重要程度拉到一致的程度。

在解决这三个问题之后,就可以进行预测,因为zero-shot learning本身不涉及到训练,所以这里直接对一个类别的Verblizer词库的词的先验概率进行平均,得到最高概率的那个类别,即预测出结果:

prompt模板模式总结记录
; few-shot learning

few-shot learning相比zero-shot learning而言,步骤就简单很多。因为few-shot learning有部分训练数据,所以作者就没有再使用CC对先验概率进行纠正,作者提到从实验中可以看到,在10-shot learning中,加不加CC,结果差距并不是很大。这里只是加入了一个可学习的参数w v w_v w v ​,给每个Verbalizer词库中词给予不同的权重:

prompt模板模式总结记录
在预测的时候,也就是将这个权重加入到先验概率中,然后取先验概率最大的那个类别:
prompt模板模式总结记录

实验部分

数据集和模板设置

数据集和模板可以参考原文和附录A,作者这里针对提出的模板的结果取均值,也报了某个模板的最高值。

整体实验

在作者的设置框架下,整体实验结果参考原文。针对zero-shot learning效果还行。但是对于few-shot learning而言,效果一般吧,提升并不是很明显。

分析实验

这里针对三个进行的分析:

prompt模板模式总结记录

这里针对主题分类任务(下面两个数据集)来看,一般C ~ \tilde{C}C ~设置为100就可以满足要求了。但是针对情感分类数据集(上面两个数据集),作者认为本身情感词表的质量比较高,同时实验结果显示随着C ~ \tilde{C}C ~的增加,模型的性能还在提升,所以这里就采用了所有的情感词

prompt模板模式总结记录
prompt模板模式总结记录

总结

整体而言论文创新性不多,偏向工程性,最后的分析实验也比较水。

CPT: Colorful Prompt Tuning for Pre-trained Vision-Language Models

比较有意思的工作,这个是对模型进行图像roi区域和文本信息对齐任务做的。通过对图片roi进行颜色标记,通过颜色信息来进行预测图像中的目标。

WARP: Word-level Adversarial ReProgramming

ACL 2021

motivation

论文提到是从对抗学习的角度考虑,将原来的离散token变成了连续的可搜索的自动prompt模板。这篇论文的提出时间应该早于Prefix-Tuning: Optimizing Continuous Prompts for Generation,或者是同时期的,所以论文的内容就比较旧了。

模型结构

prompt模板模式总结记录

简单来说,WARP是将可训练的token(图中的绿色输入)插入到输入的文本向量中,插入的位置可以是文本的开端,结尾以及中间的任意位置;同时还在输出的部分加入可学习的token(和输入的可训练的token相同维度),这部分有点类似attention的操作,输出部分的可训练token的数量和分类的类别是一样的,感觉就是加入了一个attention操作。

输入的可训练的token的初始化可以是随机初始化(要和模型的词向量的均值方差一样),使用[MASK]进行初始化等等。

; 实验结果

prompt模板模式总结记录
prompt模板模式总结记录

那一列是指参数量,然后W A R P i WARP_i W A R P i ​中的i i i是指prompt的token数量,init应该是说采用mask参数进行初始化,MNLI是用MNLI训练好的对prompt的token进行初始化。实验结果来看的话,需要训练的参数量减少,推理速度变快,但是效果也确实下降了。

Multimodal Few-Shot Learning with Frozen Language Models

参考链接
参考链接

motivation

作者认为一个充分训练的LM模型,能够轻易完成文本生成的任务,这可能预示着他蕴含着非常丰富的知识,在不重新调整参数的情况下,也能完成任务迁移。另一方面,这些LM模型虽然有很强的知识,但是却是个瞎子,希望赋予它视觉的能力。

论文提出的Frozen模型,不重新训练LM模型,让他可以是完成视觉任务。可以支持任意图像和文本混合的输入。可以将从语言上学到的丰富知识应用到多模态上。

模型结构

prompt模板模式总结记录
; 模型结构和训练

LM模型使用了C4数据集进行训练,这是一个从互联网上收集的包含大量文本数据的训练集。然后将LM进行冻结,用一个图片标题数据conceptual Caption对vision encoder进行训练。

Vision Encoder使用NF-ResNet-50 ,这里的LM模型应该是指T5,GPT这类生成式模型。训练任务是给定图片和少量的文本,然后预测最后的几个token,做生成任务。Vision encoder的输入为224224的图片,输出一个D维的向量,D维和token的向量维度一致,然后用MLP将其映射为Dn维,作为Visual Prefix,输入到模型中,在文中给出的实验中,n=1,2,4中,2的效果最好。

作者认为直接对LM和vision encoder一起进行finetune,会损害LM已经学到的知识,图片的position id使用了相对位置编码,主要是为了实现文本和图像之间的任意混排的输入形式。

prompt模板模式总结记录

这里在进行zero-shot learning和few-shot learning的时候,是采用和GPT3类似的策略,将样例和需要预测的样本拼接在一起,然后送入到模型中。

实验结果

prompt模板模式总结记录

Frozen:预训练语言模型初始化并固定,图像编码从头训练。

  • scratch:语言模型不预训练。
  • finetuned:语言模型预训练,但是不固定
  • train-blind:训练方式一样。但训练和测试中,所有图片均为全黑。
  • 400mLM:语言模型替换为小模型(400M参数)。
  • n=0/1/4:利用prompt的方式,引入n个标注样例输入输出作为prefix。
  • VQA:Frozen在全训练数据上做精调
  • VQA-blind:Frozen在全训练数据上做精调,但所有图片均为全黑

其实实验效果一般,但是这是一篇比较具有开创性的将prompt用在多模态领域的工作,原始论文提供了挺多的有意思的实验,在一定程度上证明了可以挖掘出来LM模型的能力,比如说问飞机是谁发明的,可能图文对的训练数据里面没有这个信息,但是LM语言模型学习过这个信息,就可以回答出来是莱特兄弟。

; Prompting as Multimodal Fusing

motivation

这篇论文是Multimodal Few-Shot Learning with Frozen Language Models的一个改进版,现在还在ACL的滚动审核中。作者针对Frozen模型的结构提出了分析,他认为Frozen模型中只更新图像模型的参数,会导致图像模型需要负责两个方面:(1)提取图片的特征(2)对齐图片和文本的特征空间。作者为了让图片模型更好的提取图片特征,所以在LM模型的输入中加入一个可学习的prompt序列,用来负责对齐图片和文本的特征空间。

模型结构

prompt模板模式总结记录

论文中提出了PromptFuse模型,其结构和Frozen模型非常相似,区别在于图片模型VE只作为特征提取模型,加入prefix(红色的)作为对齐图片和文本的特征空间,只训练prefix头,其他的参数都固定。

作者这里还提到,为了防止prefix不是只学习对齐信息,还学习了其他信息,在mask矩阵中,让prefix无法看到除自己之外的其他信息,mask矩阵如下图所示。

prompt模板模式总结记录

; 实验结果

图片模型采用ViT和BART,图片默认采用[CLS]作为图片的表示。

  • Finetune:finetune所有的参数,也包括图片模型的参数
  • Linear:固定图片模型的参数,但是在图片模型的输出和LM模型的输入之间加入一个线性变换层,且可训练。
  • JointProj:将图片特征向量和每个文本token连接起来,然后训练线性层来映射连接的向量,之后再输入到encoder中。
  • BlackImage:将图片变成黑色的。

VQAv2是一个图文问答数据集,实验结果如下:

prompt模板模式总结记录

MUStARD是一个包含视频,语音和文本的讽刺检测数据集,实验结果如下:

prompt模板模式总结记录

intProj:将图片特征向量和每个文本token连接起来,然后训练线性层来映射连接的向量,之后再输入到encoder中。

  • BlackImage:将图片变成黑色的。

VQAv2是一个图文问答数据集,实验结果如下:

prompt模板模式总结记录

MUStARD是一个包含视频,语音和文本的讽刺检测数据集,实验结果如下:

prompt模板模式总结记录

Original: https://blog.csdn.net/kejizuiqianfang/article/details/124028776
Author: kejizuiqianfang
Title: prompt模板模式总结记录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531173/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球