预训练、提示和预测:NLP中提示的系统综述

Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing


目录

总结

一、Two Sea Changes in NLP

二、Description of Prompting

2.1 what is Prompt ?

2.2 Design Considerations for Prompting

2.3 Discrete Prompts

2.4 Continue Prompts

三、Challenges and Future

四、(未完待续.......) 

参考(具体细节见原文)​​​​​​​


总结

        作者对NLP中的一种新范式——“prompt-based learning”的研究进行了综述和整理。该框架功能强大且具有吸引力,原因有很多:它允许语言模型在大量原始文本上进行预训练,通过定义一个新的提示函数,模型能够进行few-shot甚至zero-shot。在本文中,作者介绍了提示学习的基础,描述了一组统一的数学符号,并从几个方面介绍了现有工作,例如预训练的模型的选择、提示和调优策略。为了让感兴趣的初学者更容易进入这个领域,作者不仅对现有的工作进行了系统的回顾,对基于提示的工作进行了高度结构化的分类,并且还发布了其他资源,例如包含不断更新的调查和论文列表的NLPedia-Pretrain网站。


一、Two Sea Changes in NLP

        如表1所示,作者将NLP领域分成了四种范式:Fully Supervised Learning(Non-Neural Network)、Fully Supervised Learning(Neural Network)、Pre-train, Fine-tune、Pre-train, Prompt, Predict。在传统NLP任务中,完全监督学习长期扮演着核心角色。在2017-2019年,随着预训练语言模型(PLM)的发展,这种完全监督的范式发挥的作用越来越小,“Pre-train + Fine-tune”逐渐成为新的范式,NLP领域发生了第一次巨变。

        自2018年以来,预训练模型的体量不断增大,如T5、GPT-3、悟道等,大模型成为NLP领域一项非常重要的技术突破。同时,预训练模型Fine-tune过程中所需的硬件和数据需求也在不断增长,丰富的下游任务也使得预训练和微调阶段的设计更为复杂。如何在“大模型”的时代快速高效地进行研究,就成为我们面临的新问题。Prompt就是一个沿着此方向的尝试,NLP领域正在进行第二次巨变。

        融入了Prompt的新模式大致可以归纳成”Pre-train + Prompt + Predict“,在该模式中,下游任务被重新调整成类似预训练任务的形式。例如,通常的预训练任务有Masked Language Model, 在文本情感分类任务中,对于 "I love this movie." 这句输入,可以在后面加上prompt "The movie is ___" 这样的形式,然后让PLM用表示情感的答案填空如 "great"、"fantastic" 等等,最后再将该答案转化成情感分类的标签,这样以来,通过选取合适的prompt,可以控制模型预测输出,从而一个完全无监督训练的PLM可以被用来解决各种各样的下游任务。

二、Description of Prompting

2.1 what is Prompt ?

        Prompt刚刚出现的时候,还没有被叫做Prompt,是研究者们为了下游任务设计出来的一种输入形式或模板,它能够帮助PLM“回忆”起自己在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt了。

        对于输入的文本 x ,有函数 f_{\text {prompt }}(x) ,将 x 转化成prompt的形式 x{}'​​​​​​​ ,即:

 x^{\prime}=f_{\text {prompt }}(x)​​​​​​​

        该函数通常会进行两步操作:

        (1) 使用一个模板,模板通常为一段自然语言,并且包含有两个空位置:用于填输入x​​​的位置[X]​​​和用于生成答案文本z​​​的位置[Z]​​​.

        (2) 把输入x​填到[X]​的位置。

        还用前文提到的例子。在文本情感分类的任务中,假设输入是 ​ x= " I love this movie."   使用的模板是" [X] Overall, it was a [Z] movie."。那么得到的 x{}'就应该是 "I love this movie. Overall it was a [Z] movie."。在实际的研究中,prompts应该有空位置来填充答案,这个位置一般在句中或者句末。如果在句中,一般称这种prompt为cloze prompt;如果在句末,一般称这种prompt为prefix prompt。[X]​​​和[Z]​的位置以及数量都可能对结果造成影响,因此可以根据需要灵活调整。

2.2 Design Considerations for Prompting

        Prompt大致可以从下面三个角度进行设计:Prompt的形状、手工设计模板、自动学习模板

  • Prompt的形状:Prompt的形状主要指的是[X]和[Z]的位置和数量。上文提到cloze promptprefix prompt的区别,在实际应用过程中选择哪一种主要取决于任务的形式和模型的类别cloze prompts和Masked Language Model的训练方式非常类似,因此对于使用MLM的任务来说cloze prompts更加合适;对于生成任务来说,或者使用自回归LM解决的任务,prefix prompts就会更加合适;Full text reconstruction models较为通用,因此两种prompt均适用。另外,对于文本对的分类,prompt模板通常要给输入预留两个空,[X1]和[X2]。
  • 手工设计模板:Prompt最开始就是从手工设计模板开始的。手工设计一般基于人类的自然语言知识,力求得到语义流畅且高效的模板。例如,Petroni等人在著名的LAMA数据集中为知识探针任务手工设计了cloze templates;Brown等人为问答、翻译和探针等任务设计了prefix templates。手工设计模板的好处是较为直观,但缺点是需要很多实验、经验以及语言专业知识,代价较大。
  • 自动学习模板:为了解决手工设计模板的缺点,许多研究开始探究如何自动学习到合适的模板。自动学习的模板又可以分为离散(Discrete Prompts)和连续(Continuous Prompts)两大类。离散的主要包括 Prompt Mining, Prompt Paraphrasing, Gradient-based Search, Prompt Generation 和 Prompt Scoring;连续的则主要包括Prefix Tuning, Tuning Initialized with Discrete Prompts 和 Hard-Soft Prompt Hybrid Tuning。

2.3 Discrete Prompts

        自动生成离散Prompts指的是自动生成由自然语言的词组成的Prompt,因此其搜索空间是离散的。目前大致可以分成下面几个方法:

  • Prompt Mining:该方法需要一个大的文本库支持,例如Wikipedia。给定输入x和输出y,要找到x和y之间的中间词或者依赖路径,然后选取出现频繁的中间词或依赖路径作为模板,即“[X] middle words [Z]”
  • Prompt Paraphrasing:Paraphrasing-based方法是基于释义的,主要采用现有的种子prompts(例如手动构造),并将其转述成一组其他候选prompts,然后选择一个在目标任务上达到最好效果的。一般的做法有:将提示符翻译成另一种语言,然后再翻译回来;使用同义或近义短语来替换等
  • Gradient-based Search:梯度下降搜索的方法是在单词候选集里选择词并组合成prompt,利用梯度下降的方式不断尝试组合,从而达到让PLM生成需要的词的目的。
  • Prompt Generation:既然Prompt也是一段文本,那是否可以用文本生成的方式来生成Prompt呢?该类方法就是将标准的自然语言生成的模型用于生成prompts了。例如,Gao等人将T5引入了模板搜索的过程,让T5生成模板词;Ben-David 等人提出了一种域自适应算法,训练T5为每个输入生成一种唯一的域相关特征,然后把输入和特征连接起来组成模板再用到下游任务中。​​​​​​​
  • Prompt Scoring:Davison等人在研究知识图谱补全任务的时候为三元组输入(头实体,关系,尾实体)设计了一种模板。首先人工制造一组模板候选,然后把相应的[X]和[Z]都填上成为prompts,并使用一个双向LM给这些prompts打分,最后选取其中的高分prompt。

2.4 Continue Prompts

        既然构造Prompt的初衷是能够找到一个合适的方法,让PLM更“听话”地得出我们想要的结果,那就不必把prompt的形式拘泥于人类可以理解的自然语言了,只要机器可以理解就好了。因此,还有一些方法探索连续型prompts——直接作用到模型的embedding空间。连续型prompts去掉了两个约束条件:

  1. 模板中词语的embedding可以是整个自然语言的embedding,不再只是有限的一些embedding。
  2. 模板的参数不再直接取PLM的参数,而是有自己独立的参数,可以通过下游任务的训练数据进行调整。

        目前的连续prompts方法大致可以分为下面几种:

  • Prefix Tuning:refix Tuning最开始由Li等人提出,是一种在输入前添加一串连续的向量的方法,该方法保持PLM的参数不动,仅训练合适的前缀(prefix)。它的形式化定义是,在给定一个可训练的前缀矩阵Mφ​​和一个固定的参数化为θ​​​​的PLM的对数似然目标上进行优化。
  • Tuning Initialized with Discrete Prompts:这类方法中连续prompts是用已有的prompts初始化的,已有的prompts可以是手工设计的,也可以是之前搜索发现的离散prompts。Zhong 等人先用一个离散prompt搜索方法定义了一个模板,然后基于该模板初始化虚拟的token,最后微调这些token的embedding以提高准确率。​​​​​​​
  • Hard-Soft Prompt Hybrid Tuning:这类方法可以说是手工设计和自动学习的结合,它通常不单纯使用可学习的prompt模板,而是在手工设计的模板中插入一些可学习的embedding。Liu等人提出了“P-Tuning”方法,通过在input embedding中插入可训练的变量来学习连续的prompts。并且,该方法使用BiLSTM的输出来表示prompt embeddings,以便让prompt tokens之间有一定的交互。P-tuning还引入了任务相关的anchor tokens(例如关系提取中的“capital”)来进一步提高效果,这些anchor tokens不参与后续的调优。Han等人提出了Prompt Tunning with Rules(PTR)方法,使用手工指定的子模板按照逻辑规则组装成完整的模板。为了增强生成的模板的表示能力,该方法还插入了几个虚拟token,这些虚拟token的embeddings可以和PLM的参数一起被调整,PTR的模板token既有实际token也有虚拟token 。实验结果证明了该方法在关系分类任务中的有效性。

三、Challenges and Future

        尽管Prompt相关研究搞得如火如荼,但目前仍存在许多问题,值得研究者们去探索。

  1. Prompt的设计问题目前使用Prompt的工作大多集中育分类任务和生成任务,其它任务则较少,因为如何有效地将预训练任务和prompt联系起来还是一个值得探讨的问题。另外,模板和答案的联系也函待解决。模型的表现同时依赖于使用的模板和答案的转化,如何同时搜索或者学习出两者联合的最好效果仍然很具挑战性。
  2. Prompt的理论分析和可解释性尽管Prompt方法在很多情况下都取得了成功,但是目前prompt-based learning的理论分析和保证还很少,使得人们很难了解Prompt为什么能达到好的效果,又为什么在自然语言中意义相近的Prompt有时效果却相差很大。
  3. Prompt在PLM debias方面的应用由于PLM在预训练过程中见过了大量的人类世界的自然语言,所以很自然地受到了影响。拿一个简单的例子来说,可能不太恰当,比如说训练语料中有很多的"The capital of China is "Beijing.",导致模型认为下次看到"capital" 的时候都会预测出"Beijing",而不是着重看到底是哪个国家的首都。在应用的过程中,Prompt还暴露了PLM学习到的很多其它bias,比如种族歧视、恐怖主义、性别对立等等。已有相关研究关注是否可以利用Prompt来对这些bias进行修正,但还处在比较初级的阶段,这也会是一个值得研究的方向

四、(未完待续.......) 


参考(具体细节见原文)

原文链接:https://doi.org/10.48550/arXiv.2107.13586https://doi.org/10.48550/arXiv.2107.13586

推荐几个博客(本文主要参考了第一个,致谢作者)完整翻译原文见第四个:

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前世忘语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值