A Systematic Survey of Prompting Methods in Natural Language Processing

《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing》(2021)

摘要

  • 传统的监督学习方法对给定的x训练一个模型,预测对应的y($P(y|x)$)
  • prompt-based learning基于语言模型直接对文本的概率进行建模,具体为:输入x中加入一个模板(template),其中含有需要预测的位置slots,语言模型预测slots中应该出现的词的概率,填充为$\hat x$——y可以从中学到
  • prompt-based learning优势:
    • 在大量的原始文本中预训练
    • 设计一个prompt函数,使模型可以作用于小样本(few-shot)或者零样本(zero-shot)
    • 自适应到其他场景的少量或者没有标签的数据

NLP的两次重大变化

  • 早期NLP模型严重依赖于特征工程

  • 中期转向architecture engineering:设计有助于学习特征的合适网络架构

  • 2017-2019,完全转变方向:从完全监督范式转为预训练+微调范式,需要设计objective engineering,即设计在预训练和微调阶段使用的训练目标

  • 2021,又有一次巨变,pretrain+finetune可能被pretrain+prompt+predict替代

    • 不再通过目标工程(objective engineering)使得预训练模型适应下游任务,重新定制下游任务,借助textual prompt(文本提示)使其看起来像是原始训练期间解决的任务
    • 例如,在文本情感分类的下游任务,给定“I miss the bus”,可以加一个提示“I felt so [mask]“,以此要求LM用一个带有情感的词填充
    • 选择适当的提示,可以操纵模型行为,使预训练的模型本身用于具体任务
  • 由此,完全无监督的方式训练的单个LM可以解决大量的任务,但问题在于如何选择合适的prompt

  • Section2:提供prompt方法的概述和形式化定义

  • Section3:概述使用prompt的预训练模型

  • Section4:prompt engineering

  • Section5:answer engineering

  • Section6:multi-prompt learning methods

  • Section7:prompt-aware training methods

  • Section8:基于prompt学习方法的应用,以及如何利用prompt method

  • Section9:与其他研究领域的联系

  • Section10:挑战性的问题

    image-20220504163729846
image-20220504163944160

A Formal Description of Prompting

NLP监督学习

  • 给定输入x,基于模型$P(y|x;\theta)$预测输出y
  • 数据集为x y的数据对

Prompting Basics

  • 监督学习需要大量监督数据
  • Prompt-based learning通过建模$P(x;\theta)$并使用该概率预测y
  • 三个步骤如下

Prompt Addition

  • 使用一个prompt函数$f_{prompt}(\cdot)$将输入文本x转为提示$x’=f_{prompt}(x)$
  • 大多数以往工作里,函数包含两步:
    • 应用一个模板,模板有两个slot,其中输入slot [X]给x,答案slot [z]给一个中间生成的答案文本z,z之后会映射为y
    • 将slot [X]用x填充
  • cloze prompt:[Z]在模板中间;prefix prompt:[Z]在模板尾部
  • 模板中的单词不一定是NLP中的token,甚至可以是虚拟的词(用数字来代替,并在之后embed的时候嵌入到连续的空间),甚至prompt函数可以直接生成一个连续的向量
  • [X]和[Z]的数目可以灵活调整
image-20220504165658043
  • 答案z对应的集合根据不同任务有不同变换,可以是LM字典的子集(在情感分类中,为带有情感的词汇),也可以是整个字典
  • 定义函数$f_{fill}(x’,z)$,将[Z]用答案z填充,其结果称为filled prompt(已填充提示),填充结果正确则称answered prompt
  • 计算相应已填充提示概率的概率:$\hat z=search_{z\in Z}P(f_{fill}(x’,z);\theta)$,搜索函数可以是argmax搜索,也可以是从字典中采样

Answer Mapping

  • 一些情况下,已填充提示本身就是最终输出(例如翻译任务)
  • 一些情况下,还需要将填充的答案映射为y(例如情感分类)

Prompt的设计考虑

  • 预训练模型的选择(Section3),Prompt Engineering(选择合适的$f_{prompt}(x)$,Section4),Answer Engineering(设计Z,Section5),扩展范例(其他范式,Section6),Prompt-based 训练策略(Section7)

预训练模型

image-20220507145817273

Training Objectives

  • SLM(Standard Language Model):自回归预测文本,从左到右
  • 有时会给输入本文加噪音,然后在给定噪音文本情况下预测原始输入句子$P(x|\hat x)$
  • CTR(Corrupted Text Reconstruction):只计算输入句子中有噪声部分的损失,将处理过的文本恢复到未被破坏的状态
  • FTR(Full Text Reconstruction):计算输入文本整体上的损失,无论输入文本是否有噪声
  • SLM和FTR训练的模型更适合NLG
  • 重构为目标的训练更适合cloze prompt
  • 其他预训练目标:
    • NSP(Next Sentence Prediction )
    • SOP(Sentence Order Prediction)
    • CWP(Capital Word Prediction):每个单词的二分类,预测每个单词是否大写
      • Finbert: A pre-trained financial language representation model for financial text mining,IJCAI 2020
    • SDS(Sentence Deshuffling):多分类任务,用于重新组织permuted segment
      • Finbert: A pre-trained financial language representation model for financial text mining,IJCAI 2020
    • SDP(Sentence distance prediction):三类分类任务,预测两个句子之间的位置关系(同一文档相邻、同一文档不相邻、在不同文档)
      • Finbert: A pre-trained financial language representation model for financial text mining,IJCAI 2020
    • MCP(Masked Column Prediction):给定一个表,恢复被屏蔽列的名称和数据类型
      • Tabert: Pretraining for joint understanding of textual and tabular data,ACL 2020
    • LVA(Linguistic-Visual Alignment):二分类,文本内容是否与可视内容对齐——Vilbert: Pretraining task-agnostic visiolinguistic representations for vision-and-language tasks,NeurIPS 2019
    • IRP(Image Region prediction):给定部分特征被屏蔽(归零)的图像,预测屏蔽区域
      • VL-BERT: pre-training of generic visual-linguistic representations,ICLR 2020
    • RTD(Replaced Token Detection):二分类,预测加噪输入中的每个token是否被生成样本替换
      • Ernie-gram: Pre-training with explicitly n-gram masked language modeling for natural language understanding,NAACL-HLT 2021
    • DRP(Discourse Relation Prediction):预测两个句子之间的语义或修辞关系
      • ERNIE 2.0: A continual pre-training framework for language understanding,AAAI 2020
    • TLM(Translation Language Modeling):平行语料,在源句和目标句中随机屏蔽单词
      • Cross-lingual language model pretraining,2019
    • IRR(Information Retrieval Relevance):预测两个句子的信息检索相关度
      • ERNIE 2.0: A continual pre-training framework for language understanding,AAAI 2020
    • TPP(Token-Passage Prediction):识别段落中出现的段落关键词
      • Finbert: A pre-trained financial language representation model for financial text mining,IJCAI 2020
    • UKTP(Universal Knowledge-Text Prediction ):知识整合到一个预训练LM中
      • ERNIE 3.0: Large-scale knowledge enhanced pre-training for language understanding and generation,CoRR 2021
    • MT(Machine Translation):从源语言翻译成目标语言
      • mt6: Multilingual pretrained text-to-text transformer with translation pairs,CoRR 2021
    • TPSC(Translation Pair Span Corruption):从一对翻译来预测masked span
      • mt6: Multilingual pretrained text-to-text transformer with translation pairs,CoRR 2021
    • TSC(Translation Span Corruption):与TPSC不同,TSC仅屏蔽和预测一种语言的span
      • mt6: Multilingual pretrained text-to-text transformer with translation pairs,CoRR 2021
    • MRTD(Multilingual Replaced Token Detection):用一个GAN来区分来自加噪多语言句子的真实输入token,其中生成器和鉴别器跨语言共享
      • XLM-E: cross-lingual language model pre-training via ELECTRA,CoRR 2021
    • TRTD(Translation Replaced Token Detection):通过GAN来区分翻译对中的真实token和屏蔽token
      • XLM-E: cross-lingual language model pre-training via ELECTRA,CoRR 2021
    • KE(Knowledge Embedding):将知识图(KGs)中的实体和关系编码为分布式的表示
      • KEPLER: A unified model for knowledge embedding and pre-trained language representation,TACL 2021
    • ITT(Image-to-text transfer):为输入图像生成相应的图像描述
      • KEPLER: A unified model for knowledge embedding and pre-trained language representation,TACL 2021
    • MTT(Multimodality-to-text transfer):基于视觉信息和加噪的语言信息生成目标文本
      • KEPLER: A unified model for knowledge embedding and pre-trained language representation,TACL 2021

Noise Functions

image-20220507153810972
  • Masking:mask可以随机选择,也可以专门设计以引入先验知识,例如将mask集中在句子的实体上
  • Replacement:用另一个token或另一个span替换
  • Deletion:将token或多个连续token从文本删除,不添加mask token或任何其他token(通常与FTR一起使用)
  • Permutation:将文本分成不同的span(token、span、句子),将这些span区间重排成新的文本

表征的方向性

  • left-to-right:每个单词的表示根据单词本身和前面的所有单词计算的
  • bidirectional:每个单词的表示是基于句子中的所有单词计算的
  • 其他方式:二者混合、随机permuted
  • 通常通过注意力掩蔽来实现

典型的预训练方法

image-20220507163644706
  • Left-to-Right LM:自回归,链式法则从左到右
  • MLM:最适合NLU任务,也很适合与prompt在微调过程中合用
  • Prefix and Encoder-Decoder:条件文本生成任务,编码输入文本并生成输出文本
    • Prefix LM:从左到右的LM,基于前缀序列解码y,前缀序列将使用相同的参数编码,但会使用一个fully-connected mask;除了在y上用SLM作为训练目标,还会对x加入噪音并重构文本——Unilm系列、ERNIE-M
    • Encoder-decoder:独立的encoder编码x,同样可以对x加入各种噪音——MASS、BART、T5
    • 二者自然地适用于prompt,而其他非生成任务同样可以通过提供合适的prompt重构为生成任务(论文这里有一些引用文献

Prompt Engineering

Prompt Shape

  • 生成任务,或用自回归LM解决的任务通常使用prefix prompt
  • 用MLM解决的任务通常使用cloze prompt
  • 全文重建的模型更加通用,可cloze prompt或prefix prompt同时使用
  • 对于涉及多个输入的任务(如文本对分类),prompt模板必须包含两个或者更多的输入slot

人工模板工程

  • 手工设计prompt

自动模板工程

  • 人工模板的问题:创建和试验手工prompt费时且需要充分经验,并且很可能无法人工发现最佳的prompt

  • 离散的prompt:prompt是文本字符串

    • Prompt Mining:
      • 给定一组训练输入和输出的情况下自动寻找模板
      • 从大型语料库(如维基百科)中搜寻包含x和y的字符串,并记录x和y的中间词或依赖路径,频繁出现的中间词或依赖路径作为模板(“[X] middle words [Z]”
    • Prompt Paraphrasing:
      • 使用现有的种子prompt(例如,手动构建或挖掘),将其解释为一组其他候选prompt,选择在目标任务上实现最高训练准确度的prompt
      • 可通过多种方式完成,包括round-trip translation
    • Gradient-based Search:
      • 对tokens应用基于梯度的搜索,以找到一个短序列,来让预训练LM生成目标预测
    • Prompt Generation:
      • 将prompt的生成视为文本生成任务
      • 有人用T5来做模板搜索
    • Prompt Scoring
  • 连续的prompt:prompt直接用LM的嵌入空间表示,此时模板有自己的参数,可以根据下游任务的训练数据调整

    • Prefix Tuning:一系列连续的特定于任务的向量添加到输入,同时保持LM参数不变,这要求给定可训练前缀矩阵$M_\phi$和一个固定的预训练模型(参数为$\theta$)下,最大化对数似然:$max_\phi logP(y|x;\theta;\phi)=max_\phi\sum_{y_i}logP(y_i|h_{<i};\theta;\phi)$

      • 其中$h_{<i}$是时间步$i$下所有神经网络层的串联,如果相应的时间步在前缀里,则直接从$M_\phi$中复制,否则使用预训练的LM计算得到
    • Tuning Initialized with Discrete Prompts:

      initialize the search for a continuous prompt using a prompt that has already been created or discovered using discrete prompt search methods

    • Hard-Soft Prompt Hybrid Tuning:在hard prompt template中插入一些可调的embedding,例如P-tuning

Answer Engineering

  • 旨在搜索一个答案空间$Z$,和一个原始输出$Y$的映射,从而产生有效的预测模型

Answer Shape

  • 答案的shape代表其粒度,包括:token(预训练LM的字典,或者字典的子集)、span(连续的多个token,通常用于cloze prompt)、sentence(句子或文档,通常和prefix prompt共用)
  • token或者span通常用于分类任务、关系提取、命名实体识别,而sentence级别和较长短语级别的答案通常用于文本生成任务,或者多项选择问答

答案空间设计方法

  • 手工设计
    • 答案空间$Z$就是所有tokens、定长的span或者token序列,此时直接将答案$z$映射到最终输出$z$即可
    • 如果是命名实体识别等分类问题,输出空间是受限的
  • 离散的答案搜索
    • Answer Paraphrasing:初始化一个答案空间$Z’$,使用paraphrasing扩展答案空间。给定一对答案和输出$(z’,y)$,计算候选答案集合中各个候选相应的概率,选择其中概率最大的候选作为问题的答案
    • Prune-then-search:先对答案候选空间进行裁剪,然后再通过算法去搜索得到最终的答案候选
    • Label Decomposition:将类别标签分解为多个token作为该类别的候选答案
  • 连续的答案搜索
    • 此方面的工作较少,主要使用梯度下降法优化的soft answer tokens

Multi-Prompt Learning

  • 以上都是一个输入对应一个单独的prompt
image-20220508122000878

Prompt Ensembling

  • 使用多个没有答案的prompt在推理阶段去做最终的,prompt可以是离散或连续的
  • 有点像机器学习中集成多个方法
  • Uniform averaging:对不同prompt的概率取均值,即$P(z|x)=\frac{1}{K}\sum_i^KP(z|f_{prompt,i}(x))$
  • Weighted averaging:带权平均,每个prompt的权重取决于其在训练集上的表现
  • Majority voting
  • Knowledge distillation:多个深度学习模型可以提高性能,而这种卓越的性能可以使用知识蒸馏提炼成单个模型
  • Prompt ensembling for text generation:此时答案为token串;基于答案序列中下一个单词的集合概率生成输出

Prompt Augmentation

  • 提供一些额外的answered prompts,帮助LM知道如何为实际的输入x提供答案,例如Great Britain’s capital is London . Japan’s capital is Tokyo . China’s capital is [Z]
  • Sample Selection:计算example与输入句子在embedding空间中的距离。选择距离较小的example
  • Sample Ordering:example在prompt中的顺序对结果影响很大,可以用entropy-based的方法计算不同候选排列的得分

Prompt Composition

  • 一些组合的任务由基础的子任务组成,使用多个针对子任务的prompt,然后设计组合策略来拼接这些prompt

Prompt Decomposition

  • 一些需要多种预测值的任务(序列标注),很难直接对输入文本x设计一个完整的prompt
  • 直观的想法是把prompt转为多个不同的sub-prompts,对每一个sub-prompt寻找答案

Training Strategies for Prompting Methods

训练设置

  • zero-shot setting:简单地采用已被训练用于预测$P(x)$的LM来预测slot
  • full-data learning:大量的训练数据用于训练模型
  • few-shot learning:少量训练数据

参数更新方法

  • LM的参数、prompt的参数

  • 五种调优策略如下:(底层LM参数是否已经调优?是否存在与prompt相关的参数?与prompt相关的参数是否已经调优?)

    image-20220508193144324

  • Promptless Fine-tuning:只有预训练+微调

  • Tuning-free Prompting:仅根据提示直接生成答案,不改变预训练LM参数,也被称为无语境学习(in-context learning),适合zero-shot setting

  • Fixed-LM Prompt Tuning:除了预训练LM的参数,还引入额外的prompt相关参数。仅使用下游样本的监督信号来更新prompt的参数,适合few shot,通常比第二种更新方法更好

  • Fixed-prompt LM Tuning:调整LM参数,固定prompt参数

  • Prompt+LM Tuning:prompt参数和LM参数一起微调

应用

  • 知识探索
  • 基于分类的任务
  • 信息抽取
  • 问答
  • 文本生成
    • prefix prompt+自回归LM
    • Language models are unsupervised multitask learners,2019
    • Language models are few-shot learners,2020
    • Few-shot text generation with pattern-exploiting training,2020
    • Prefix-tuning: Optimizing continuous prompts for generation,2021
    • GSum: A general framework for guided neural abstractive summarization,2021
  • 文本生成的自动评估
  • 多模态

Table7、Table8列出了应用(这两个表没看明白,里面有些模型没有用到prompt?)

与Prompt相关的学习方法

挑战