Prompt的范式大抵是两种:
- 续写Prefix:用在GPT2-3那种单向LM预训练模型上,输入「好好学习,翻译成英文:」,输出「good good study」
- 完形填空:用在BERT那种MLM式预训练模型上,比如情感分类任务可以输入「这个饼不错,太X了」,输出「棒」
Prompt主要难在3个方面:
输入端:
- 怎么样选取合适的Prompt,适配不同任务,同时把模型潜能激发出来
- 怎么把Prompt结合输入的句子构成模型的输入
输出端:
- 模型的输出( Answer)不可能与标签相同,拿到answer后如何往标准化的Y(标签空间)映射
训练:
- 怎样利用Prompt机制精调一下模型
举例:
输入端
4个不同的Prompt:
Prompt与输入a的结合:
输出端:Answer的映射
Answer的映射是标签词表的映射:
对于输出1,2,3,4,5依次对应terrible、bad、okay、good、great。
训练
以往模型只要对P(l|x)
建模就好了(l
是label),但现在我们加入了Prompt P
以及标签映射v
,所以这个问题就可以更新为:
s
p
s_p
sp是模型M
的输出logits。再通过softmax,就可以得到概率:
训练过程如下所示: