第17次周报

摘要

This week I read a review about the prompt learning.In this article,the authors summarized several projects and technology for prompt learning and have argued that prompt-based learning is a promising new paradigm.According to this article, I have a basic understanding of the field of prompt learning.
这周我读了一篇关于提示学习的综述,在这篇文章中,作者总结并分析了提示学习的几种工程和相关技术,并认为基于提示的学习是一种有前途的新范式,根据这篇文章,我对提示学习这个领域有了基础的了解。

文献阅读

论文名《Pre-train, Prompt, and Predict: A Systematic Survey
of Prompting Methods in Natural Language Processing》
作者:PENGFEI LIU and WEIZHE YUAN,JINLAN FU,ZHENGBAO JIANG, HIROAKI HAYASHI, and GRAHAM NEUBIG
期刊:《ACM Computing Surveys》

一、研究背景:

完全监督学习,即只在目标任务的输入输出例子的数据集上训练特定任务的模型,长期以来在许多机器学习任务中发挥着核心作用,自然语言处理(NLP)也不例外。由于这种完全监督的数据集对于学习高质量的模型是永远不够的,所以早期的NLP模型在很大程度上依赖于特征工程,NLP研究人员或工程师利用他们的领域知识来定义和提取原始数据中的突出特征,为模型提供适当的归纳偏差以从这些有限数据中学习。随着用于NLP的神经网络模型的出现,突出的特征被与模型本身的训练共同学习,因此重点转移到了架构工程上。
然而,从2017-2019年,NLP模型的学习发生了巨大的变化,这种完全监督的范式现在发挥的作用越来越小。具体来说,标准转向了预训练和微调范式。在这个范式中,一个具有固定架构的模型被预训练为语言模型(LM),预测观察到的文本数据的概率。由于训练LM所需的原始文本数据大量存在,这些LM可以在大型数据集上进行训练,在此过程中学习它所建模的语言的强大通用特征。然后,上述预训练的LM将通过引入额外的参数和使用特定任务的目标函数进行微调来适应不同的下游任务。在这个范式中,重点主要转向目标工程,设计在预训练和微调阶段都使用的训练目标。

现在, "预训练、微调 "的程序被我们称之为 "预训练、提示和预测 "的程序所取代。在这种模式下,不是通过客观工程使预训练的LM适应下游任务,而是在文本提示的帮助下,重新制定下游任务,使其看起来更像原始LM训练期间解决的任务。例如,当识别一个社交媒体帖子的情感时,“我今天错过了公交车。”,我们可以继续提示 “我感觉如此___”,并要求LM用一个带有情感的词来填补空白。或者如果我们选择提示 “英语。I missed the bus today. 法语:”),LM可能会用法语翻译来填空。这样,通过选择适当的提示,我们可以操纵模型的行为,使预训练的LM本身可以用来预测所需的输出,有时甚至不需要任何额外的特定任务训练。这种方法的优点是,给定一套适当的提示,以完全无监督的方式训练的单一LM可以用来解决大量的任务(Brown等人,2020;Sun等人,2021)。然而,与大多数概念上诱人的前景一样,有一个问题–这种方法引入了提示工程的必要性,即找到最合适的提示,让LM解决手头的任务。

二、Prompting的正式描述

监督学习的主要问题是,为了训练一个模型P(y|x; θ),必须要有任务的监督数据,而对于许多任务来说,无法找到大量的数据。基于提示的NLP学习方法试图规避这个问题,而是学习一个LM,对文本x本身的概率P(x;θ)进行建模,并使用这个概率来预测y,减少或避免了对大型监督数据集的需求。
具体来说,基本提示法通过三个步预测出最高分的y,如下图所示,下文将把这些步骤拆解描述细节。
在这里插入图片描述

2.1提示附加.

这一步中,一个提及函数被应用于把一个输入文本x,修改为一个提示X = fprompt(x),该函数分为两个步骤进行:
(1)应用一个带有2个槽的模板,一个是输入槽【X】用于输入x,一个是答案槽【Z】用于中间生成答案文本z。
(2)用输入的文本填充槽【X】

2.2答案搜索

接下来,我们将搜索能让LM得分最大化的得分最高文本z~。分为两个步骤进行:
(1).我们先定义一个一个函数fill(x’ , z),将潜在的答案z填入提示语x’中的位置[Z](我们将任何经过这个过程的提示语称为填充的提示语,特别是,如果提示被填入一个真实的答案,我们将把它称为一个有答案的提示(表2显示了一个例子)。)
(2).最后,我们使用预训练好的LM,P (·; θ)计算其对应的已填充提示的概率来搜索潜在的答案集z,公式如下图所示
在这里插入图片描述这个搜索函数可以是搜索最高分输出的argmax搜索(使得结果(此处为Z~)最大化的输入x(此处由x’和z决定)),也可以是按照LM的概率分布随机生成输出的抽样。

在生成任务的情况下,Z的范围可以是整个语言,或者在分类的情况下,可以是语言中的一小部分词,例如定义~Z={“优秀”、“良好”、“OK”、“糟糕”、“可怕”}来代表Y={++, +, , -, --}中的每个类别。

2.3答案映射

最后,我们想从最高分的答案zˆ到最高分的输出yˆ。因为对于我们构造的prompt,我们需要知道我们的预测词和我们的label 之间的关系,并且我们也不可能运行z是任意词,这边我们就需要一个映射函数(mapping function)将输出的词与label进行映射,如下图所示:
在这里插入图片描述
这在某些情况下是很简单的,因为答案本身就是输出(如翻译等语言生成任务),但也有其他情况,多个答案可能导致相同的输出。例如,人们可能使用多个不同的带感情色彩的词(如 “优秀”、“美妙”、“精彩”)来代表一个类别(如 “++”),在这种情况下,有必要在搜索到的答案和输出值之间建立一个映射。

三、提示工程

提示工程是创建一个提示函数fprompt(x)的过程,该函数能在下游任务中产生最有效的表现,在提示工程中,人们必须首先考虑提示的形状,然后决定是采取人工还是自动的方法来创建所需形状的提示,提示工程的现有方法如下图所示:
在这里插入图片描述

3.1 提示形式

如上所述,有两种主要的提示方式:填空(cloze)提示(Petroni等人,2019年;Cui等人,2021年),即填补文本字符串的空白,以及前缀(prefix)提示(Li和Liang,2021年;Lester等人,2021年),即延续字符串的前缀。选择哪一种,既取决于任务,也取决于用于解决该任务的模型。一般来说,对于有关生成的任务,或正在使用标准的自回归LM解决的任务,前缀提示往往更有利,因为它们与模型的从左到右的性质很好地融合。对于使用mask式LM解决的任务,cloze提示很适合,因为它们与预训练任务的形式非常接近。全文重构模型的用途更广,既可以使用cloze提示,也可以使用前缀提示。最后,对于一些关于多输入的任务,如文本对分类,提示模板必须包含两个输入的空间,[X1]和[X2],或更多。

3.2手动模板工程

也许创建提示的最自然方式是根据人类的手动创建直观的模板。例如,开创性的LAMA数据集(Petroni等人,2019)提供了手动创建的cloze模板,以探测LM中的知识。Brown等人(2020)创建了人工筛选的前缀提示,以处理各种任务,包括问答、翻译和常识推理的探究任务。Schick和Schu¨tze(2020,2021a,b)在文本分类和条件文本生成任务的few-shot学习设置中使用预定义的模板。

3.3自动模板学习

人工指定模板存在以下问题:
(1)需要时间和经验,特别是对于一些复杂的任务,如语义解析(Shin等人,2021); (2)设计者可能无法手工发现最佳提示(Jiang等人,2020c)。

为了解决这些问题,人们提出了一些方法来实现模板设计过程的自动化。特别是,自动诱导的提示可以进一步分为离散提示和连续提示,前者的提示是一个实际的文本字符串,后者的提示则是直接在基础LM的嵌入空间中描述。
另一个不相关的设计考虑是提示函数fprompt(x)是静态的,对每个输入使用基本相同的提示模板,还是动态的,为每个输入生成一个自定义的模板。静态和动态策略都被用于不同种类的离散和连续提示,我们将在下面提到。

3.4 离散提示

关于发现离散提示(又称硬提示)的工作会自动搜索在离散空间中描述的模板,通常对应于自然语言短语。我们在下文中详细介绍了为此提出的几种方法。

D1: Prompt Mining MINE方法是一种基于挖掘的方法,在给定一组训练输入x和输出y的情况下,自动寻找模板。需要依赖一个较大的文本库(如维基百科)。步骤如下:
(1)选定的文本库需要包含输入和输出
(2)然后去搜索输入和输出之间的中间词或者依赖路径,其中出现最为频繁的中间词或者依赖路径作为模板使用。
(3)模板的表现形式为"[X] 中间词 [Z]"

D2提示语转述 这种方式是对种子模板进行改写,种子模板可以是任意方式生成的(如人工构造的或者挖掘而来),通过改写获得一系列的候选模板,改写的方式是多样的(如多语言的双向翻译、同义词替换,也可以利用神经网络进行改写),然后选择训练结果最好的模板。
D3基于梯度的搜索 这种方式是利用单词候选集中的各种组合来构造模板,利用梯度下降的方式不断迭代尝试模板,最终获得最合适的模板。
D4提示语生成 这种方式将模板的生成视为通常的文本生成任务,,并使用标准的自然语言生成模型来执行这一任务(例如:给 T5 模型来生成模板词,将seq2seq预训练的模型T5引入模板搜索过程)。由于T5已经在填补缺失跨度的任务上进行了预训练,使用T5来生成模板token:(1)指定在模板内插入模板token的位置4(2)为T5提供训练样本来解码模板token。
D5提示评分 研究了借助知识图谱的三元组概念(头实体 - 关系 - 尾实体),首先人工构造一系列三元组模板集作为候选,分别填入输入和答案槽,形成填充提示,利用一个单向的 LM 对这些填入的候选模板进行打分,使用打分最高(LM概率最高)的模板。这将会使得每个输入都可能有不同的模板。

3.5 连续提示

构建提示的目的是找到一种能让LM有效执行任务的方法,而不是供人使用,所以没有必要将提示限定为人类可理解的自然语言。正因为如此,还有一些研究连续提示(又称软提示)的方法,直接在模型的嵌入空间中进行提示。具体来说,连续提示消除了两个约束:
(1)放宽模板词嵌入是自然语言(如英语)词嵌入的限制。
(2)取消了模板由预训练的LM的参数决定的限制。意思是,模板有自己的参数,可以根据下游任务的训练数据进行调整。
C1前缀微调(prefix tuning)是在输入前加入与任务相关的连续前缀向量,这个前缀向量是可训练的,而后续的 LM 参数是固定不变的。
在数学上,这包括对以下对数似然目标进行优化,根据下图公式,给定一个可训练的前缀矩阵Mφ和一个固定的预训练的LM参数为θ。
在这里插入图片描述

其中,φ 为一个可训练的参数,θ 为 LM 参数 h 为在第 i 步时所有神经网络层的 concat 。
这里提到主要的两种方法,一种是构建一个可训练的矩阵,作为生成前缀 embedding,其运作迭代方式对于每一层的 h,当h处于前缀时直接复制这个矩阵,不处于前缀时由 LM 参数计算;另一种方式是加入几个特殊的前缀 token 来作为模板,训练时直接更新这些前缀 token 的 embedding。

C2:用离散提示语初始化的优化 这种方式利用离散模板作为初始化,然后将其连续化,这种方式往往能够提供更好的起始搜索结果。比如利用离散化的模板将其转化为 embedding,然后这些 token 是可以微调的,有点像前缀微调模式的后一种方式。

C3:软硬提示混合优化 这些方法不使用纯粹的可学习提示模板,而是在硬提示模板中插入一些可优化的嵌入。具体来说就是,融合了离散模板和连续模板,其做法在于在静态的模板中插入一些可训练的 embedding。比如之前比较火的 p-tuning 的模板就是由可微调的 trainable token 和不可微调的 anchor token 组成。实验结果证明了这种提示设计方法在关系分类任务中的有效性。

四、答案工程

答案工程的目的是寻找答案空间Z和与原始输出Y的映射,从而形成有效的预测模型。执行答案工程时必须考虑的两个方面:决定答案形式和选择答案设计方法,答案工程的现有方法如下图所示:
在这里插入图片描述

4.1 答案形式

答案的形式表示其粒度。一些常见的选择包括:

  • token。预训练的LM单词表中的一个token,或单词表的一个子集。
  • 跨度。一个简短的多token跨度。这些通常是与cloze提示一起使用的。
  • 句子。一个句子或文件。这些通常与前缀提示一起使用。
    在实践中,如何选择可接受答案的形状取决于我们想要执行的任务。token或文本跨度的答案空间广泛用于分类任务(例如情感分类),但也用于其他任务,例如关系抽取或命名实体识别。较长的短语或句子答案经常用于语言生成任务,但也用于其他任务,如多选题回答(其中多个短语的分数被相互比较)。
    5.2 答案空间设计方法
    接下来要回答的问题是,如果答案不作为最终输出,如何设计合适的答案空间Z,以及与输出空间Y的映射。

4.2 人工设计

在人工设计中,潜在答案的空间Z和它与Y的映射是由感兴趣的系统或基准设计者人工筛选的。根据其答案空间的不同可分为受限空间和非受限空间:
非受限空间指答案可能是全量 token 集或者固定长度的 span 或者 token 序列,这种情况映射是不必要的;受限空间是指输出的答案是有限固定范围的,比如常见的分类任务、实体识别任务、多选择问答任务等,这种情况下就需要一个合适的映射方式。

无约束空间 在很多情况下,答案空间Z是所有token 集,固定长度的 span,或token序列。在这些情况下,最常见的是使用映射将答案z直接映射到最终输出的y。

受限空间 是指输出的答案是有限固定范围的。这通常是针对标签空间有限的任务进行的,如文本分类或实体识别,或多选题回答。例如:相关主题(“健康”、“金融”、“政治”、"体育 "等)、情感(“愤怒”、“快乐”、“悲伤”、"恐惧 "等)或输入文本的其他方面有关的词语列表,以便进行分类。在这些情况下,有必要建立一个合适的映射方式,在答案Z和基础类之间建立一个映射关系Y。

4.3 离散答案搜索

答案改写 这些方法从原始答案空间Z‘(即输出的所有可能结果)开始,然后使用改写(如回译:先翻译成另一种语言,然后再逆向翻译)来扩展这个答案空间,以扩大其覆盖范围。然后定义一个功能使得这个答案空间转化为最终答案(比如可以是 softmax)。
先修剪再搜索 在这些方法中,首先产生一个由几个可信的答案Z组成的初始修剪过的答案空间,然后一个算法在这个修剪过的空间上进一步搜索,选择最终的答案集。
标签分解 在进行关系抽取时,将每个关系标签分解为其组成词,并将它们作为答案。例如,对于关系per:city of death,分解后的标签词将是{person, city, death}。答案跨度的概率将被计算为每个token的概率之和。

4.4 连续的答案搜索

这些token可以通过梯度下降进行优化。由于答案token直接在嵌入空间中被优化,它们不利用由LM学习的嵌入,而是为每个标签从头学习一个嵌入。

五、Multi-Prompt(多提示) 学习

使用多个提示可以进一步提高提示方法的功效,我们将这些方法称为多提示学习方法。下图总结了代表性的多提示学习的方法。
在这里插入图片描述

5.1 提示的集成

提示集成是指在推理时间使用多个待回答的提示输入来进行预测的过程。下图显示了一个例子。这种提示集合具有三方面优势:(1)利用不同提示的互补优势,(2)减轻提示工程的成本,因为选择一个表现最好的提示是具有挑战性的,(3)稳定下游任务的性能。
在这里插入图片描述

实际使用时如何由多个模板最后得到唯一结果,下面介绍了几种方法:
1)一致平均化 在使用多个提示时,取不同提示的结果的概率平均值,即用公式
在这里插入图片描述

(2)加权平均法 对多个提示的结果进行简单的统一平均很容易实现,考虑到一些提示比其他提示的性能更强,也可能是次优的。为了考虑到这一点,一些工作还探讨使用加权平均数进行提示集合,即每个模板贡献的得分是不一致的,而具体使用时权重可以是人为规定的,也可以是训练得出的;

(3)多数投票法 多数投票也可以用来结合不同提示的结果,一般用于下游为分类任务
知识蒸馏 即再训练一个模型的来对原来的多个模板产出的结果进行拟合。
文本生成的提示合集 对于生成任务(即答案是一串token而不是单个token的任务)进行集成的方法是根据答案序列中下一个词的集成概率产生输出。

5.2 提示增强

提示增强,也被称为演示学习,具体做法是提供一些额外的回答提示,可以用来让LM了解实际提示的输出应该是什么。(如:日本的首都是东京。中国的首都是[Z])
在这里插入图片描述

提示增强在两方面具有挑战性:(1) 样本选择:如何选择最有效的例子?(2) 样本排序。如何根据提示对所选的例子进行排序?

样本选择 如何选择提示样本对模型训练效果会产生极大的影响(选择不同的样本其结果可能是sota也可能是接近随机预测结果)。目前提出的一种方式是利用句向量空间,选择与输出相似的向量空间的句子作为样本。

样本排序 即使是相同的提示,不同的排序方式也会导致结果的巨大差别。目前提出的一种方法是基于熵的对不同的候选排列组合进行评分。

5.3 提示融合

把任务拆成多个子任务,使用多个子提示,每个子提示用于一个子任务,然后基于这些子提示组合成一个复合提示。(如,在关系抽取任务中,其目的是提取两个实体的关系,可以将任务分解为几个子任务,包括识别实体的特征和对实体之间的关系进行分类,然后根据逻辑规则将它们组成一个完整的提示,用于关系抽取)
在这里插入图片描述

5.4 提示分解

对于那种需要对一个输入进行多个预测的任务(如序列标注),使用一个模板来直接预测所有的结果会相对困难,解决这个问题的一个直观方法是将其拆分为多个子模板一般会更为简单。比如命名实体识别任务,需要对每个span进行进行预测,而将其拆分为分别对每个 span 进行预测就会更为简单。下图演示了如何用于命名实体识别的提示分解。
在这里插入图片描述

六、应用

下图显示了提示学习被应用于哪些应用。
在这里插入图片描述

七、与提示学习有关的方法

7.1集合学习

它 是一种旨在通过利用多个系统的互补性来提高任务的性能的技术。一般来说,集合学习中使用的不同系统是由架构、训练策略、数据排序和/或随机初始化的不同选择导致的。

7.2 few-shot学习

其目的是在数据稀缺的情况下用few-shot的训练样本学习机器学习系统。实现few-shot次学习的方法有很多,包括模型不可知的元学习、嵌入学习、基于记忆的学习,提示增强可以被看作是实现few-shot学习的另一种方法。与之前的方法相比,提示增强法直接在当前处理的样本中预置几个有标签的样本,即使没有任何参数调整,也能从预训练的LM中获取知识。

7.3 更大背景下的学习

它不仅考虑输入和标签之间的本地关系,而且还考虑更大的上下文信息,例如从训练集或外部数据源检索,来提高系统的性能。提示增强可以被视为将相关的标注样本添加到输入中,但一个小的区别是在大背景学习中,引入的背景不一定是标注的数据。

7.4 查询重构

它通常用于信息检索和问答任务,其目的是通过用相关查询术语扩展输入查询或生成解析,引出更相关的文本(文件或答案)。基于提示的学习和查询重构之间有几个共同点,例如(1)两者都旨在通过提出正确的问题来更好地利用一些现有的知识库(2)知识库通常是一个黑盒子,用户无法使用,所以研究人员必须学会如何根据唯一的问题来优化探测它。

不同之处在于,传统查询重构问题中的知识库通常是一个搜索引擎,相比之下,对于基于提示的学习,我们通常将这个知识库定义为一个LM,并需要找到合适的查询,以便从其中引出一个合适的答案。提示学习中的输入重构改变了任务的形式。

7.5基于QA的任务制定

基于QA的任务制定旨在将不同的NLP任务概念化为一个问答问题。后来,这一想法在信息提取和文本分类中得到了进一步探索。

7.6 受控生成

受控生成可以根据特定的输入条件生成符合预期的文本。具体来说,指导信号可以是样式token,长度规格,领域标签,或任何其他各种用于控制生成文本的信息。它也可以是关键词、关系三要素,甚至是突出的短语或句子来规划生成文本的内容。在某种程度上,这里描述的许多提示方法是一种可控的生成,其中提示通常用于指定任务本身。因此,比较容易找到这两种类型之间的共同点。(1)两者都为输入文本添加额外的信息,以便更好地生成,而这些额外的信号(通常)是可学习的参数。(2)如果 "受控生成 "配备了基于seq2seq的预训练模型(如BART),那么它可以被视为具有输入依赖性的提示学习和提示+LM微调策略,其中提示的和预训练的LM的参数都可以被调整。

另外,受控生成和基于提示的文本生成之间的一些明显差异是。(1)在受控生成工作中,一般是对生成物的风格或内容进行控制,而基本任务保持不变。他们不一定需要一个预训练好的模型。相比之下,使用提示语进行文本生成的主要动机是指定任务本身并更好地利用预训练的模型。(2)此外,目前关于文本生成中的提示学习的大部分工作都共享一个数据集或任务级的提示。

7.7监督注意力

它通过引入一个额外的监督信号,使得模型能够更加地关注重要的输入信息和上下文,并在保持预测准确性的情况下,更加地准确地捕捉输入序列中的相关信息。在这方面,提示学习和监督注意的共同想法是,两者都旨在通过一些线索来提取突出的信息,这些线索需要单独提供。为了解决这个问题,监督注意力方法试图使用额外的损失函数来学习预测人工标注的语料库上的glod注意力。关于提示学习的研究也可以从这些文献中借鉴思路。

7.8 数据增强

数据增强的目标是通过对现有数据进行修改来增加可用于训练的数据量

总结

本周比较忙,认真看了一篇提示学习的综述,对提示学习这个领域有了粗略的了解,下周会继续学习相关的综述性论文,以及补充tansformer模型的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值