【Prompt系列】(一) 简介:NLP又出新范式?预训练新宠Prompt有点火
这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战
Prompt 作为 NLP 领域近期出现的新范式,在近几个月成为 NLP 研究的大热门。作为当代年轻人,我也想跟跟风,从扫盲文章看起,从本篇简介开始逐步深入,结合几篇经典论文的阅读,较为系统地入门一下 Prompt,将收获整理成笔记,积淀下来、分享出来。
本文是【Prompt系列】的开篇,由于 Prompt 已经有很多写得很好的介绍文章用于入门,部分内容我就直接从这些文章中学习、整理了,其间结合了自己的一些思考,希望对大家有所帮助。
文章推荐:
一文跟进Prompt进展!综述+15篇最新论文逐一梳理 - 夕小瑶的卖萌屋
一文了解Prompt的基本知识与经典工作 - 知乎
预训练新范式!为什么Prompt会更有效? - 商业新知
论文推荐:
Prompt 简介
NLP 范式演进历程
- 全监督学习(非神经网络): 仅在目标任务的输入输出样本数据集上训练特定任务模型,严重依赖特征工程。
- 全监督学习(神经网络): 使得特征学习与模型训练相结合,于是研究重点转向了架构工程,即通过设计一个网络架构(如CNN,RNN,Transformer)能够学习数据特征。
- Pre-train,Fine-tune: 先在大数据集上预训练,再根据特定任务对模型进行微调,以适应于不同的下游任务。在这种范式下,研究重点转向了目标工程,设计在预训练和微调阶段使用的训练目标(损失函数)。
- Pre-train,Prompt,Predict: 无需要fine-tune,让预训练模型直接适应下游任务。方便省事,不需要每个任务每套参数,突破数据约束。
What’s Prompt
Prompt:将下游任务的输入输出形式改造成预训练任务中的形式,即 MLM (Masked Language Model) 的形式。
原任务:
Input: I love this movie.
Output: ++ (very positive)
改造后:
Prefix prompt 版(prompt 槽在文本末尾,适合生成任务或自回归 LM,如 GPT-3):
Input: I love this movie. Overall, the movie is [Z].
Cloze prompt 版(prompt 槽在文本中间或结尾,适合 MLM 任务,如 BERT):
Input: I love this movie. Overall, it was a [Z] movie.
Output: [Z] = ‘good’
之前的预训练+微调是让预训练模型去适应下游任务,而 Prompt 则是调整下游任务来适应预训练模型。
Why Prompt
为什么 Prompt 有效
比起微调从零开始学习一个分类器(举例),建立预训练模型输出与分类结果之间的对应,Prompt 的任务形式与预训练相同,直接可以从输入中获取更多的语义信息,因此即便是少量数据甚至是 zero-shot 也可能取得不错的效果。
Prompt 的优点
- 如上所述,prompt 的引入使得预训练模型提取的特征更自然地用于下游任务的预测,特征质量更高。
- 不需要为下游任务新增一个分类器,因为任务形式与预训练模型本身相适应;也不需要从零开始训练本来要加的这个分类器。只需要建立一个简单的映射,将 prompt 范式的输出再转变成下游任务需要的输出形式。
- 在少样本甚至零样本场景下表现优秀。
How Prompt
如何构建 Prompt 的 pipeline
- Prompt Addition:在输入中添加 Prompt;
- Answer Search:根据改造后的输入预测[Z];
- Answer Mapping:把预测的结果转变成下游任务所需要的形式。
如何设计自己的 Prompt 模型
- 预训练模型的选择;
- Prompt Engineering:选择合适的 Prompt,包括两方面:
- prefix prompt 还是 cloze prompt?
- 手动设计还是自动构建(搜索、优化、生成等)?
- Answer Engineering:选择合适的方法将预测结果映射回下游任务需要的输出形式;
- Multi-prompt:设计多个 prompt 以获取更好的效果(集成学习、数据增强等);
- 训练策略:Prompt 模型可能会含有除了 LM 模型以外的 Prompt 参数,训练策略需要考虑的包括:
- 有没有额外的 Prompt Params?
- 是否更新这些 Prompt 参数?