Prompt Learning进展
1. Background
什么是prompt learning:Prompt Learning-使用模板激发语言模型潜能
1.1 Transformer/Self-supervision
- 在transformer兴起之前主要是有supervised learning;
- 在transformer发展起来之后逐渐变成pre-train+fine-tuning这样的范式。
- 而Prompt Learning也是这个时期的另一种范式:pre-train+prompt
1.2 Language Modal
- 掩码语言模型:BERT。输出为掩码的初始单词条件概率
使用:pre-train + fine-tuning - 自回归语言模型:GPT。输出为下一个单词的条件概率,然后递归生成单词。
GPT提出可以使用prompt而不用fine-tuning模型参数,直接做下游任务。
1.3 introduction
- 具体而言可以针对任务设计一些模板,将输入带入模板。例如在影评任务中,可以将模板设计为:
[input sentence],the movie is [Y]
,而Y就是输入对应的输出 - 优势:模型参数是固定的。(1)计算代价低,模型参数是固定的,不需要微调。因为训练和下游任务的训练方式是一样的,都是“填空”。(2)存储代价低。fine-tuning对应的每个任务都需要存储一份参数。适用于小样本
2. Methods
2.1 training
- 模板也可以通过模型学习而非人工设计。具体做法为:在模型的输入之前加入一些可训练的embedding。在接下游任务时,只有新加入的embedding和任务头的参数需要训练,其他部分都是冻结的。
- 在此基础上的改进:在每一层都加入可学习的embedding,而不是简单地利用上一层的参数,增强了模型的拟合能力
2. 2 why work
essence
让下游任务的数据分布向训练数据进行迁移。prompt的目的是让训练的绝大多数参数固定,所以能改变的只有输入数据,对输入数据进行变换使得其分布向训练数据靠拢,可以从统计上实现更好的效果。
- More idea:现阶段只是对输入进行了简单的添加一些embedding,可以考虑对输入进行更复杂的操作如线性变换、加上一个向量等
why work—attention guidance
- 在prompt中加入的embedding其实是在transformer中加入了注意力指导机制,可以指导tokens对某个任务关注哪些信息。例如影评的情感任务,加入的prompt会更接近与情感相关的词,这样在做点积的时候,那些与情感相关的词就会获得更多的注意力。这样看来,这种prompt embedding在一定程度上提供了一种描述任务特性的一种作用,从而去指导transformer内部注意力分布的改变。
其实我觉得,就是让下游任务与预训练任务更接近,从而大大提高训练参数的使用效率和准确率
when work
根据上述分析,我们可以推测对于那些具有全局特征的任务,prompt learning会有较大的作用;而那些强调输入本身token与token之间交互的任务不work。
- 全局:例如情感分类任务具有全局特性,因此仅仅需要标注一些正/负向词就很容易区分影评的正负性。词性标注任务也具有全局特性,只需要用名词/形容词去描述整个任务就可以很容易地提取特征。
- 局部交互:抽取式问答这种任务不容易work。难以用全局特征描述相应问题需要关注的位置
3. Relation to CV
目前尚不成熟
- NLP 领域的prompt发展得并不成熟。添加embedding的位置和长度并没有系统的统一的研究结果等
- CV领域的BERT发展也并不成熟。BERT系列的研究还处于刚起步的阶段,而prompt需要大量的公开的预训练模型
- 但是prompt在多模态领域已经有了相关研究,例如在多模态问答中的CPT用色块指导问答情景;根据文字生成图片中CogView使用prompt进行风格控制
- 总结:nlp中的prompt还需要改进;cv中的prompt发展还需要预训练模型的大量研究和公开;多模态中的prompt有研究潜力
学习参考视频Prompt Learning