©PaperWeekly 原创 · 作者 | 李泺秋
学校 | 浙江大学硕士生
研究方向 | 自然语言处理、知识图谱
最近注意到 NLP 社区中兴起了一阵基于 Prompt(模版)增强模型预测的潮流:
从苏剑林大佬近期的几篇文章《必须要 GPT3 吗?不,BERT 的 MLM 模型也能小样本学习》,《P-tuning:自动构建模版,释放语言模型潜能》,到智源社区在 3 月 20 日举办的《智源悟道 1.0 AI 研究成果发布会 暨大规模预训练模型交流论坛》[1] 中杨植麟大佬关于“预训练与微调新范式”的报告,都指出了 Prompt 在少样本学习等场景下对模型效果的巨大提升作用。
本文根据上述资料以及相关论文,尝试梳理一下 Prompt 这一系列方法的前世今生。
不知道哪里来的图……
本文目录:
追本溯源:从GPT、MLM到Pattern-Exploiting Training
-
Pattern-Exploiting Training
解放双手:自动构建Prompt
-
LM Prompt And Query Archive
AUTOPROMPT
Better Few-shot Fine-tuning of Language Models
异想天开:构建连续Prompt
-
P-tuning
小结
追本溯源:从GPT、MLM到Pattern-Exploiting Training
要说明 Prompt 是什么,一切还要从 OpenAI 推出的 GPT 模型说起。
GPT 是一系列生成模型,在 2020 年 5 月推出了第三代即 GPT-3。具有 1750 亿参数的它,可以不经微调(当然,几乎没有人可以轻易训练它)而生成各式各样的文本,从常规任务(如对话、摘要)到一些稀奇古怪的场景(生成 UI、SQL 代码?)等等。
在这里,我们关注到 GPT 模型在零样本场景下的运行方式——基于一定的任务描述(task description),按这一描述的指定生成文本:
▲ 嘿,注意:图中的 Prompt 不是本文的 Prompt
仅仅几个单词组成的任务描述,就可以为语言模型的预测提供指导,这启发了一些少样本领域的工作——在缺少训练数据的场景下,利用任务描述能很好地提升模型的效果。
另一个灵感来自预训练语言模型的 Masked Language Model/MLM 任务:
在 BERT 的训练中,有 15% 的输入词被选中,其中的绝大部分又被替换为 [MASK] 标签或者随机的其他词,并在最终的 hidden states 中对被遮盖的词进行预测,通过还原遮盖词让模型学习单词级别的上下文信息。
将这两个灵感融合,就得到了以下将介绍的 Pattern-Exploiting Training,或 PET 方法。
补充:从这里就可以提出一个问题,Mask 和 Prompt,具体而言是哪一部分对模型预测起了作用?
1.1 Pattern-Exploiting Training
PET 来自 2020 年的论文(已发表在 EACL 2021)《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》,其中介绍了一种基于模版和词遮盖将文本分类任务转换为完形填空(cloze)任务的半监督训练方法,仅使用 RoBERTa-base 模型就在多个半监督场景下取得了 SOTA:
1. 首先,针对少量样本设计描述的模版(pattern),如下图中对 “Best pizza ever!” 的情感分类任务,生成一个 “It was ___” 的句子并拼接在原始输入后作为补充;
对模版中遮盖的词(即下划线部分),设计候选词对应不同的情感极性(图中 great 对应 positive,bad 对应 negative),然后将模型预测 “great” 的概率作为原来预测 “positive” 的概率,从而将情感分类任务转换为完形填空任务。
当然,原文中对 NLI 任务也进行了模版构建,其操作有所不同,在此不展开;
注意,完形填空和 MLM 不是一个任务,虽然二者都是词分类任务,但是类别一个是候选词集,一个是模型中全部的词集;
2. 对有标签样本集设计不同的模版,然后对每一个模版,分别训练模型;
因为有标签样本比较少,所以训练成本低于全量数据训练一个完整的模型;
这里的训练因为是有监督的,所以结合了完形填空的词分类 loss 和 MLM Loss 进行训练: