prompt吧 关注:38贴子:86
  • 6回复贴,共1

NLP新宠——浅谈Prompt的前世今生

只看楼主收藏回复

作者:闵映乾,中国人民大学信息学院硕士,目前研究方向为自然语言处理。
《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing》
导读:本文的目标是对近期火爆异常的Prompt相关研究作一些追溯和展望,内容主要参考论文《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing》,并掺杂了笔者的一些个人见解。另外,封面及文中使用的图片均截取自该论文,转载请注明出处。各位知乎er如果有什么问题都可以在评论区留言讨论,欢迎经常交流!
Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
网页链接 本文的内容框架:
一、Prompt的产生和兴起
二、什么是Prompt
三、Prompt的设计方法
四、Prompt面临的挑战


IP属地:北京来自iPhone客户端1楼2023-03-25 23:45回复
    一、Prompt的产生和兴起
    近几年来,有关预训练语言模型(PLM)的研究比比皆是,自然语言处理(NLP)也借着这股春风获得了长足发展。尤其是在2017-2019年间,研究者们的重心逐渐从传统task-specific的有监督模式转移到预训练上。基于预训练语言模型的研究思路通常是“pre-train, fine-tune”,即将PLM应用到下游任务上,在预训练阶段和微调阶段根据下游任务设计训练对象并对PLM本体进行调整。
    随着PLM体量的不断增大,对其进行fine-tune的硬件要求、数据需求和实际代价也在不断上涨。除此之外,丰富多样的下游任务也使得预训练和微调阶段的设计变得繁琐复杂,因此研究者们希望探索出更小巧轻量、更普适高效的方法,Prompt就是一个沿着此方向的尝试。
    融入了Prompt的新模式大致可以归纳成”pre-train, prompt, and predict“,在该模式中,下游任务被重新调整成类似预训练任务的形式。例如,通常的预训练任务有Masked Language Model, 在文本情感分类任务中,对于 "I love this movie." 这句输入,可以在后面加上prompt "The movie is ___" 这样的形式,然后让PLM用表示情感的答案填空如 "great"、"fantastic" 等等,最后再将该答案转化成情感分类的标签,这样以来,通过选取合适的prompt,我们可以控制模型预测输出,从而一个完全无监督训练的PLM可以被用来解决各种各样的下游任务。
    因此,合适的prompt对于模型的效果至关重要。大量研究表明,prompt的微小差别,可能会造成效果的巨大差异。研究者们就如何设计prompt做出了各种各样的努力——自然语言背景知识的融合、自动生成prompt的搜索、不再拘泥于语言形式的prompt探索等等,笔者将会在第三节进行进一步讨论。


    应用达人
    应用吧活动,去领取
    活动截止:2100-01-01
    去徽章馆》
    月老
    每对新人结婚成功的那一刻,送礼最多的吧友可以获得本次求婚的“月老”称号和成就,去领取
    活动截止:2100-01-01
    去徽章馆》
    IP属地:北京来自iPhone客户端2楼2023-03-25 23:45
    回复
      三、Prompt的设计
      Prompt大致可以从下面三个角度进行设计:
      Prompt的形状
      手工设计模板
      自动学习模板
      Prompt的形状
      Prompt的形状主要指的是
      [
      X
      ]

      [
      Z
      ]
      的位置和数量。上文提到cloze prompt和prefix prompt的区别,在实际应用过程中选择哪一种主要取决于任务的形式和模型的类别。cloze prompts和Masked Language Model的训练方式非常类似,因此对于使用MLM的任务来说cloze prompts更加合适;对于生成任务来说,或者使用自回归LM解决的任务,prefix prompts就会更加合适;Full text reconstruction models较为通用,因此两种prompt均适用。另外,对于文本对的分类,prompt模板通常要给输入预留两个空,
      [
      X
      1
      ]

      [
      X
      2
      ]

      手工设计模板
      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。
      离散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。


      应用达人
      应用吧活动,去领取
      活动截止:2100-01-01
      去徽章馆》
      月老
      每对新人结婚成功的那一刻,送礼最多的吧友可以获得本次求婚的“月老”称号和成就,去领取
      活动截止:2100-01-01
      去徽章馆》
      IP属地:北京来自iPhone客户端4楼2023-03-25 23:47
      回复
        牛啊


        IP属地:江苏来自Android客户端5楼2023-03-27 23:08
        回复


          IP属地:黑龙江来自iPhone客户端8楼2023-04-01 00:14
          回复


            IP属地:宁夏来自iPhone客户端9楼2023-09-01 09:30
            回复
              谢谢


              IP属地:河北来自Android客户端10楼2023-12-09 00:27
              回复