Prompt-Based Learning

Prompt-Based Learning

prompt-based learning可以理解成一种范式,分为三个过程:pre-train、prompt、predict。为了提升模型在下游任务中的表现,在prompt阶段对下游任务进行重构,从而适配pre-train的模型。

image-20231017111256672

左边是微调方法的示意图,右边是prompt方法的示意图。

如何进行重构?

假设输入文本为x,构造一个函数\(f_{prompt}(x)\),将输入文本进行转化:\({x}^{'}=f_{prompt}(x)\)。函数主要实现两个目的:

  • 选用一个由文本组成的模板,模板有两个槽位,[X]槽位用于填充输入 \(x\) ,[Z]槽位用于生成答案 \(z\) (之后会被映射为标准的输出 \(y\)

  • 将输入 \(x\)填入[X]槽位

例如:情感分类任务中,令 \(x\) ="I love this movie.",选用模板"[X] Overall, it was a [Z] movie.",则 \({x}^{'}\)="I love this movie. Overall, it was a [Z] movie."。至此,情感分类任务被重构为cloze task。

PS:
  • [Z]可以出现在模板的中间位置,也可以出现在模板的末尾,这两种情况也分别被称为cloze prompt、prefix prompt
  • 组成模板的token,可以是自然语言中真实的word,也可以是虚拟的word(在embedding层以向量形式存在)
  • [X]和[Z]slot的数量不受限,可依实际任务而定

如何对重构后的任务求解?

首先是利用pre-train的模型对重构后的\(x^{'}\)的slot进行预测,输出得分最高的token\(z^{'}\)。生成任务中,\(z\)的取值集合可以无限制。

第二步是将中间输出\(z^{'}\)映射为最终输出\(y^{'}\)


Prompt-Based Learning
http://example.com/2023/10/18/Prompt-Based-Learning/
作者
Z Z
发布于
2023年10月18日
许可协议