参考论文信息
论文名称:《基于提示学习的小样本文本分类方法》
发布期刊:《计算机应用》
期刊信息:CSCD扩展版
在ChatGPT出世这么久之后,终于决定跨入Prompt Learning的大门。我们先来介绍提示学习。
提示学习(Prompt Learning)
Prompt Learning是一种新兴的自然语言处理技术,它可以通过预先定义的提示语来引导模型生成更加准确和连贯的文本。
这种技术的核心思想是,在训练自然语言处理模型时,给定一个特定的输入提示来帮助模型更好地理解所需生成的输出文本。这种技术被广泛应用于各种自然语言处理任务,包括文本生成、问答、摘要、翻译和对话等。
Prompt Learning技术的优点在于,它可以根据任务的不同和预期的输出文本的结构来设计和定义不同的提示语。同时,Prompt Learning技术还可以缩短训练时间,并提高模型的泛化能力。
Prompt Learning是继fine-tuning之后,NLP领域的“第四范式”。
将近代NLP技术的发展总结为四种范式,分别为:
P1. 非神经网络时代的完全监督学习 (Fully Supervised Learning, Non-Neural Network)
P2. 基于神经网络的完全监督学习 (Fully Supervised Learning, Neural Network)
P3. 预训练,精调范式 (Pre-train, Fine-tune)
P4. 预训练,提示,预测范式(Pre-train, Prompt, Predict)
Prompt,也就是提示,就按其字面理解,它就是伴随着输入一起,给予模型的一种上下文,它告诉、指导模型接下来你应当要做什么任务,是一个提示。或者换一种说法,就是前面说的它能够将下游任务改造成预训练模型期望的样子。
举一个例子:在文本分类领域中
我们的 预训练模型 是GPT,bert这样的模型,
我们的 下游任务 是 句子的情感分类问题。
现在我拿到一句话"我喜欢这部电影"
要判断"我喜欢这个电影"这句话的情感(“正面" 或者 “负面”)
对于下游任务来说
我们的输入X:我喜欢这部电影
输出Y应该是:正面y+或者负面y-
我们使用prompt的方法去改造下游任务,让我们的预训练模型可以做这个任务,那我们可以将这句话变成一个完型填空。
在"我喜欢这部电影"这个输入后面,
加上一个模板“[X]整体上来看,这是一个 [Z] 的电影”
即“我喜欢这部电影,整体上来看,这是一个 __ 的电影”
在这里面,[Z]是我们预训练模型要预测的内容,“我喜欢这部电影,整体上来看,这是一个[Z]的电影”这样完形填空式的输入是预训练模型喜欢且擅长做的输入形式。
之后,我们给出两个选项,让模型预测。
A:无聊的 B:有趣的
其中选项A就是无聊的对应的是负面情感,B有趣的对应的就是正面情感。
Z=A -> X=y+ Z=B -> X=y-
就这样,一个下游情感分类的任务改造成了预训练模型可以处理的形态。
Fine-tuning中:是预训练语言模型“迁就“各种下游任务。具体体现就是上面提到的通过引入各种辅助任务loss,将其添加到预训练模型中,然后继续pre-training,以便让其更加适配下游任务。总之,这个过程中,预训练语言模型做出了更多的牺牲。
Prompting中,是各种下游任务“迁就“预训练语言模型。具体体现也是上面介绍的,我们需要对不同任务进行重构,使得它达到适配预训练语言模型的效果。总之,这个过程中,是下游任务做出了更多的牺牲。
但是在这里,一个合适的prompt(提示)对于模型的效果至关重要,像是提示的长度提示词汇的位置等等,一点prompt的微小差别,可能会造成效果的巨大差异。
比如,我们离谱一点,你在上面的话中加一个但字,”我喜欢这本电影,但这本电影是___”,很明显预测出来的东西就完全相反了。
所以现阶段prompt方法再做的大部分事情就是
设计一个合适的提示模板,来创造一个完形填空的题目;
设计一个合适的填空答案,创造一个完型填空的选项;
以此来设计,怎么样给模型一个最好的提示,让下游任务能够更加适配预训练模型。
论文思路
论文提出:“设计一个合适的提示模板,来创造一个完形填空的题目”比较困难,所以使用论文《GPT Understands, Too》中的P-tuning方法,使用连续空间内的向量作为模板。但是由于《GPT Understands, Too》使用的是LSTM,本篇论文提出使用BERT,且在做完形填空的时候,使用BERT的MLM。