输入“/”快速插入内容

【NLP】Prompt Learning 超强入门教程

作者:sergio
本文主要根据刘鹏飞在北京智源大会上关于 Prompt 的分享以及个人整理而得。关于分享可以查看:【线上直播】Big Model Meetup 第1期:大模型Prompt Tuning技术
首先我们需要了解什么是预训练语言模型,以及其带来的Pretrain + Fine-tuning 的范式。如果不了解的同学,可以参考我关于BERT的文章
在很长的一段时间内,NLP的任务采用的都是 Pretrain + Fine-tuning(Model Tuning)的解决方案,但是这种方案,需要对于每个任务都重新 fine-tune 一个新的模型,且不能共用。但是对于一个预训练的大语言模型来说,这就仿佛好像是对于每个任务都进行了定制化,十分不高效。是否存在一种方式,可以将预训练语言模型作为电源,不同的任务当作电器,仅需要根据不同的电器(任务),选择不同的插座,对于模型来说,即插入不同的任务特定的参数,就可以使得模型适配该下游任务。Prompt Learning 就是这个适配器,它能高效得进行预训练语言模型的使用。
这种方式大大地提升了预训练模型的使用效率,如下图:
左边是传统的 Model Tuning范式:对于不同的任务,都需要将整个预训练语言模型进行精调,每个任务都有自己的一整套参数。
右边是Prompt Tuning,对于不同的任务,仅需要插入不同的prompt 参数,每个任务都单独训练Prompt 参数,不训练预训练语言模型,这样子可以大大缩短训练时间,也极大的提升了模型的使用率。
所以什么是 Prompt, 字面上来讲,Prompt 就是提示:
例如我们有人忘记了某个事情,我们给予特定的提示,他就可以想起来,例如我们说:
白日依山尽,
大家自然而然地会想起来下一句诗:黄河入海流。
亦或者,搜索引擎,可以根据我们的输入,进行输出的提示:
那么在NLPPrompt 代表的是什么呢?
prompt 就是给 预训练语言模型 的一个线索/提示,帮助它可以更好的理解 人类的问题。
例如,下图的BERT/BART/ERNIE 均为预训练语言模型,对于人类提出的问题,以及线索,预训练语言模型可以给出正确的答案。
根据提示,BERT能回答,JDK 是 Oracle 研发的
根据 TL;DR: 的提示,BART知道人类想要问的是文章的摘要
根据提示,ERNIE 知道人类想要问鸟类的能力--飞行
Prompt 更严谨的定义如下:
Prompt is the technique of making better use of the knowledge from the pre-trained model by adding additional texts to the input.
Prompt 是一种为了更好的使用预训练语言模型的知识,采用在输入段添加额外的文本的技术。
目的:更好挖掘预训练语言模型的能力
手段:在输入端添加文本,即重新定义任务(task reformulation)
Prompt 的工作流
Prompt 的工作流包含以下4部分:
1.
Prompt 模版(Template)的构造
2.
Prompt 答案空间映射(Verbalizer)的构造
3.
文本代入template,并且使用预训练语言模型进行预测
4.
将预测的结果映射回label。