prompt综述(截至2021.12.1)

prompt的意义:

以前使用预训练模型都是Pre-train,Fine-tune的模式,这种模式的缺点就是当存在多个下游任务时,需要在上游复制多个模型,因为fine-tune后它们的参数因任务不同而不同。
如果有10个下游任务就要存储并训练10个上游模型,这样就很占空间和资源。

prompt采用Pre-trian,Prompt-tune的方式,上游的预训练模型不变,让下游的任务去适配上游。节省了空间和资源。


prompt的结构:

prompt包含两部分:template和verbalizer。
template负责让模型认识到这是什么任务,然后输出比如it is good,verbalizer就负责将这个good转化成对应的结果:positive。
在这里插入图片描述


AutoPrompt

trigger训练的那个语料来自下游任务相关的数据集。比如任务是情感分析,他就分析大量情感分析的数据集,按loss对每个词的一阶导,得到对这个任务最关键的那些词。

这些词只要加入模型里,模型就一定会输出固定的东西。比如检测到great就一定会输出positive,这种标志性的词。

那他针对一个任务,训练出最标志性的词,然后将他们作为prompt模板,这样就是机器认识这是什么任务,人类可能根本看不懂这个prompt句子(比如sentiment think is thought MASK,这个语法上不成句,但是是由一堆标志性的词组成,模型一定认识是个情感分析任务)
在这里插入图片描述


AutoPrompt & LM-BFF

首先用AutoPrompt搜索出来一组token作为template输入。

比如the capital of Japan is MASK。

以前的模型效果不好,就换模板,the city of Japan is MASK。

他提出来直接训练模板的embedding。因为模板:the capital of … is 都是一系列的embedding嘛,他直接训练这个embedding。

不过这个文章缺点在于他用的是最初的PET的方法来训练,也就是prompt模板是手工指定的。
在这里插入图片描述


prefix-tuning

直接固定PLM的参数,只训练prompt的参数。所以比如有10个下游任务,我们只需要训练10种prompt就可以了,大大减少了参数数量。

其实我们模型占显存的主要部分不是参数,而是参数的中间变量。比如要进行梯度回传,我们要保存所有中间变量的梯度,这个是最占资源的。而这个方法的优势就是大量的参数是在PLM中的,而他的参数是固定的,所以不用梯度回传,不用保存中间变量。大大节省资源。
在这里插入图片描述


P-Tuning v2

思路很简单,就是more parameters。

就是在中间层,给prompt部分,concatente几个embedding。
所以self-attention的个数增加了,大小没变。

相当于输入的prompt变长了,但是为什么不在输入端改呢?因为层数越靠后,效果越显著。在输入端优化,传到末端基本都没了。

大概的流程:一开始初始化ptompt embedding,然后去训,发现效果不好。然后用这个embedding去与其他任务的prompt embedding做一个余弦相似度判断,找出最相似的那个,然后作为新的初始化再进行训练,然后效果好很多。
在这里插入图片描述


CPT

task是一个问题:比如the horse watched by the woman,要指出是那一匹马。
我们有prompt方法,可以用mask预测遮掉的词。但是我们现在要预测视觉内容(是哪一匹马),所以他把所有的对象染上颜色,然后用分类判定这个mask的是什么颜色。
在这里插入图片描述


一个领域每周一两百篇文章,一个人是不可能读的完的。所以要进入一个领域,一定要组团做,大家一起读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值