一:PET:完形填空任务Pattern-Exploiting Training(
它通过人工构建的模版与BERT的MLM模型结合,能够起到非常好的零样本、小样本乃至半监督学习效果,而且该思路比较优雅漂亮,因为它将预训练任务和下游任务统一起来了。
然而,人工构建这样的模版有时候也是比较困难的,而且不同的模版效果差别也很大,如果能够通过少量样本来自动构建模版,也是非常有价值的。
主要的思想是借助由自然语言构成的模版(英文常称Pattern或Prompt),将下游任务也转化为一个完形填空任务,这样就可以用BERT的MLM模型来进行预测了
离散 vs 连续
最早研究自动模版的工作,有些是挖掘实体关系,有些需要大量样本进行基于梯度搜索(如autoprompt),在离散空间下搜索的自然语言模版。也有梯度粗筛+代入模版精筛等等。而连续的Prefix-Tuning和P-tuning 放弃了“模版由自然语言构成”这一要求,从而将其变成了可以简单梯度下降求解的连续参数问题,效果还更好。可能prompt的关键在于它是怎么用的,不在于它由什么构成。
二:Prefix Tuning,在每层前面增加虚拟token
Prefix-Tuning 在模型输入前添加一个连续的且任务特定的向量序列(continuous task-specific vectors),称之为前缀(prefix)。前缀被视为一系列“虚拟 tokens”,但是它由不对应于真实 tokens 的自由参数组成。
与更新所有 PLM 参数的全量微调不同,Prefix-Tuning 固定 PLM 的所有参数,只更新优化特定任务的 prefix。
因此,在生产部署时,只需要存储一个大型 PLM 的副本和一个学习到的特定任务的 prefix,每个下游任务只产生非常小的额外的计算和存储开销。
Prefix-Tuning 在输入前添加前缀,即 Z=[prefix, x, y] , prefix为前缀序列的索引, 在模型每一层都添加前缀向量;
在实验中,作者进行了两组方法变体的对比分析:
- [ Full vs Embedding-only ]:Embedding-only 方法只在 embedding 层添加前缀向量并优化,而 Full 代表的 Prefix-tuning 不仅优化 embedding 层添加前缀参数,还在模型所有层的激活添加前缀并优化。实验得到一个不同方法的表达能力增强链条:discrete prompting < embedding-only < prefix-tuning。同时,Prefix-tuning 可以直接修改模型更深层的表示,避免了跨越网络深度的长计算路径问题。
- [ Prefix-tuning vs Infix-tuning ]:通过将可训练的参数放置在前面 和 中间来研究可训练参数位置对性能的影响,,这种方式成为 Infix-tuning。实验表明 Prefix-tuning 性能好于 Infix-tuning,因为 prefix 能够同时影响 和 的隐层激活,而 infix 只能够影响 的隐层激活。
- 同时,研究表明前缀的 embedding 使用词表中真实单词的激活来初始化明显优于随机初始化。
Prefix-Tuning和Prompt Tuning最主要区别在于,Prefix-Tuning的前缀参数被插入到模