Prompt总结

本质上来说,Prompt的本质是一种对任务的指令;是一种对预训练任务的复用;是一种参数有效性学习。(:关于Prompt的相关总结,笔者强烈建议参考王嘉宁的这篇文章,很详细地总结了Prompt的相关知识和发展过程)。

  1. Prompt本质上是对下游任务的指令,可以作为一种信息增强。Prompt会告诉模型需要做什么任务,输出什么内容,借此释放模型的能力。

  2. Prompt本质上是复用预训练目标——实现基于Prompt的统一范式。预训练中往往以Masked Language Modeling(MLM)以及Autoregressive Language Modeling(ALM)为主,而下游任务则各有不同,因此我们需要降低Pre-training阶段和Fine-tuning阶段语义差距过大的问题才能更好地释放预训练大语言模型的潜力。Prompt便通过将所有下游任务转变为预训练任务的方式实现了这个目标,其分为三种范式————基于生成的范式基于抽取的范式以及基于推理的范式,ChatGPT就是基于生成的范式的一个代表。

  3. Prompt的本质是参数有效性学习。在一般的计算资源条件下,大规模的模型(例如GPT-3)很难再进行微调,因为所有的参数都需要计算梯度并进行更新,消耗时间和空间资源。为了解决这个问题,参数有效性学习被提出,其旨在确保模型效果不受太大影响的条件下尽可能地提高训练的时间和空间效率。Prompt是多种参数有效性学习方法中的一种,其余的还有Adapter、BigFit等等。

In-context Learning

ICL是In-context learning的缩写,是一种基于上下文和示例来进行预测的自然语言处理范式,其输入模板是一个可选的Instruction加一系列必选的演示样例的拼接。相较于传统训练模型需要昂贵的监督训练及参数更新,ICL不需要这些操作,因此被视为一种无需训练的学习框架。ICL主要依靠训练好的大型语言模型来实现,具有可解释性和易于将人类知识融入模型中的优点。除了在自然语言处理领域,ICL还具有在数据工程中应用的潜在前景,如用于数据标注、数据增强、数据修剪以及对抗数据生成等领域。相比前面总结的Prompt Learning使用离散提示或者软提示来引导模型的输出,ICL可以视作前者的子类,因为演示也算是提示的一种

Overview

  1. ICL的工作流程如下图所示。首先,ICL需要利用自然语言模板编写一些示例来形成演示上下文。然后,ICL将查询问题和演示上下文的一部分串联在一起形成提示,并将其送入语言模型进行预测。与监督学习需要反向梯度更新模型参数的训练阶段不同,ICL无需进行参数更新,直接利用预训练的语言模型进行预测,希望模型能够学习到演示中隐藏的模式,并依此进行正确的预测。

    ICL

  2. ICL 是一种新的范式,具有多个优势。首先,它使用自然语言编写演示,提供了可解释的接口与LLM交互,这使得将人类知识纳入LLM变得更加容易(改变示范和模板)。其次,基于上下文的学习与人类通过类比学习的决策过程类似。第三,与监督式训练相比,ICL 是一种无需训练的学习框架,能够极大地降低模型适应新任务的计算成本,可轻松应用于大规模的实际任务中。

  3. 整篇文章的主要部分结构如下:

    taxonomy

Model Warmup

ICL同样是以LLM作为backbone,因此关于这一部分文章没有赘述,而是直接关注训练策略。尽管GPT3展示了ICL的强大能力,但是有工作发现在pre-training和ICL推理之间添加一个额外的阶段可以更好地发挥ICL的潜力,这个额外的阶段就是model warmup。在这个阶段中,会通过修改参数或者添加额外参数来调整LLM backbone,这听起来似乎与fine-tuning一样,但实际上二者的目标与方法均不相同。fine-tuning旨在训练模型用于特定任务,而warmup旨在增强模型的ICL能力。此外,fine-tuning需要更多数据来调整模型,而warmup则更注重训练数据的多样性和广泛性,对数据量的要求则很低。

Model warmup有两种形式————有监督和自监督:

  1. 有监督的代表是MetaICL,大致思想是将预训练的 LLM 在多种具有演示样例的任务中不断进行训练,从而增强其少样本学习的能力。此外Instruction-Tuning也是有监督的一种,相比于为每个任务构建多个演示示例的MetaICL,Instruction-Tuning主要考虑如何对任务做出提示。
  2. 自监督的出现是因为研究者希望只使用原始语料库进行warmup,他们把原始语料根据下游任务的ICL格式转换成输入输出对进行自监督训练。

Demonstration Designing

演示样例的格式和顺序等几种因素在很大程度上决定了ICL策略的性能表现,作者对这些因素做了简要介绍:

  1. 演示样例的选择————什么样的演示样例是好的,应当被选择呢?
    • 无监督方法:选择最近邻作为样例(使用基于语句嵌入的L2距离或者余弦相似距离),以互信息为标准进行选择(不需要标签数据和明确的LLM),以困惑度为标准进行选择等等。
    • 有监督方法:使用小LM进行样本选择,使用Q-learning选择样本等等。
  2. 演示样例的顺序————顺序敏感性是一个普遍的问题,那么该如何确定一个合适的顺序呢?
    • 根据样本和输入之间的距离进行选择
    • 根据全局和局部熵进行选择(两者正相关)
  3. 使用格式化指令————对于简单任务,直接将可选指令(如果有)以及样例拼接起来即可,但是对于复杂任务(如数学推理),仅仅k个示例不足以让模型找到输入到输出的映射逻辑,因此一些研究人员使用指令描述任务,让模型更容易理解。
    • 给一些演示样例,LLMs可以自动生成任务指令。Automatic Prompt Engineer (APE) 就是一个代表。
  4. 使用推理步骤————除了使用指令描述任务外,添加一些中间推理步骤可以更好地引导模型。
    • CoT将输入输出映射分解为许多中间步骤,将这些步骤作为提示输入模型,模型就可以模拟出推理步骤。
    • AutoCoT使用“Let’s think step by step”作为提示,实现了效果的飞升。
    • 一些工作使用多阶段ICL进行CoT,实现了更丰富的功能,比如Self-Ask允许LLM为输入生成后续问题,并对自己提出这些问题,然后将问题和中间答案添加到CoT中。

Scoring Function

得分函数决定了我们如何将语言模型的预测转化为特定答案的可能性,主要有三种方法,它们的简介和对比如下:

  1. 直接估计法。使用可以被语言模型词汇表的tokens表示的候选答案的条件概率作为得分函数,选择概率更高的答案作为最终答案。这种方法的缺点是对模板设计做出了限制,例如答案词汇必须置于输入序列末尾。
  2. Perplexity(PPL)。PPL需要计算整个输入序列的句子困惑度,它没有token位置的限制,但是却需要额外的计算时间。
  3. Channel。该模型计算反方向的条件概率,即给定标签估计输入的概率,这需要语言模型生成输入中的每个token,这可以提高在不平衡训练数据下的性能。

compare

Analysis

what influence ICL performance

根据以往的工作,作者总结了一个表格,列出了一些跟ICL性能强相关的影响因素,如下图所示:

factors

  1. 预训练阶段。
    • 领域来源比语料库大小更重要。
    • 将多个语料库放在一起可能会极大地提高ICL的能力。
    • 对下游任务相关的语料库进行预训练并不总是能提高ICL的性能。
    • 具有较低困惑度的模型在ICL中并不总是能表现地更好。
    • 当模型的参数或预训练步数达到某个规模的时候会出现涌现现象。
  2. 推断阶段。
    • 演示样例格式、标签空间的暴露程度以及输入的分布都对ICL的性能有很大贡献。
    • 样本的顺序也会影响ICL的性能。
    • 与查询样本嵌入更接近的演示样本通常会带来比较好的性能,而与之离得更远的演示样本则性能差一点。

why ICL works

  1. 训练数据的分布。
    • 当训练数据的样本聚集并且只有很少的类别时,ICL能力会出现。
    • 有工作将ICL解释为隐式的贝叶斯推断。
  2. 学习的机制。
    • Transformers能够编码有效的学习算法来学习未见过的线性函数,而且研究者们发现ICL模型中编码的学习算法可以达到与最小二乘法相当的误差。
    • Transformers能够通过隐式经验风险最小化为演示样例实现适当的函数类。
    • 基于Transformer的上下文学习模型能够隐式实现标准微调算法。
  3. 功能模块。
    • 有工作认为归纳头构成了ICL的机制,并借助实验证明了这一点。

Application

  1. 模型编辑。通过上下文演示调整LLM中记忆的知识。
  2. 数据标注。可以降低数据标注的成本。
  3. 多模态。
  4. 线性探测。

Challenges and Future Directions

  1. 寻找新的预训练策略。当前预训练和ICL之间的鸿沟通过warmup填补,未来可以为ICL定制行的预训练目标和评价指标。
  2. 将ICL的能力迁移到小模型上。有工作使用大规模的教师模型生成CoT数据,然后在CoT数据上微调了小模型,实现了小模型的推理能力。
  3. 知识增强、更新。LLM的知识完全来源于预训练语料库,因此可能缺乏某些知识,在ICL推理过程中有时会产生幻觉,因此要在预训练期间增强LLM学到的知识。类似的,LLM的知识可能是过时的、错误的,但是重新训练的代价过大,因此要想办法实现小代价的知识更新,并且不能影响现有的正确知识。
  4. 演示样例的鲁棒性。ICL的性能不稳定,受到很多因素的影响,因此要想办法提升其稳定性。
  5. 数据工程。LLM的强大推理能力和文本生成能力显示出高质量数据生成的巨大潜力,而ICL只需几个示例就可以学习到数据工程目标,这无疑意味着低成本高质量数据自动生成的可能性。