论文:
《Language Models as Knowledge Bases?》
最近,pretrained
的大型语言模型,如 ELMo
和 BERT
在 NLP
中变得越来越重要。这些模型的参数似乎储存了大量的、对下游任务有用的语言知识。这种知识通常可以通过两种方式来访问:在 latent context representations
上进行 conditioning
;通过使用原始模型的权重来初始化 task-specific model
然后再进一步微调。这种类型的知识迁移对于目前在广泛的任务上取得 SOTA
结果至关重要。
相比之下,知识库(knowledge bases
)是通过实现诸如(Dante, born-in, X)
这样的 query
来访问 annotated gold-standard relational data
的有效解决方案。然而,在实践中,我们经常需要从文本或其他模式中抽取关系数据(relational knowledge
)来填充这些知识库。 这需要复杂的 NLP pipeline
,涉及实体抽取、共指消解、实体链接、关系提取。这些组件通常需要监督数据和固定的 schemas
。此外,错误很容易在整个 pipeline
中传播和积累。
相反,我们可以尝试 query
神经语言模型从而用于关系数据,要求它们在"Dante was born in [Mask]"
这样的文本序列中填充 masked tokens
,如 Figure 1
所示。在这种情况下,语言模型具有各种有吸引力的特性:它们不需要 schema engineering
、不需要人类标注、而且它们支持一组开放的 query
。
鉴于语言模型作为关系知识(relational knowledge
)的潜在 representations
的上述特性,我们对 ELMo
和 BERT
等现有的 pretrained
语言模型中已经存在的关系知识感兴趣。它们储存了多少关系知识?对于不同类型的知识(如关于实体的事实、常识、通用问答),这些知识有什么差异?它们在没有微调的情况下的表现与从文本中自动提取的 symbolic knowledge base
相比如何?除了收集对这些模型更好的一般理解外,我们认为这些问题的答案可以帮助我们设计更好的无监督 knowledge representation
,可以将事实性知识和常识性知识可靠地迁移到下游任务。
为了回答上述问题,我们引入了 LAnguage Model Analysis: LAMA
探针(probe
),由一组知识源(knowledge sources
)组成,每个知识源由一组事实(facts
)组成。我们定义,如果一个 pretrained
语言模型能够成功预测诸如 "Dante was born in ___"
这样的表达事实的完形填空句子中的 masked objects
,那么它就知道一个事实 (subject, relation, object)
,如 (Dante, born-in, Florence)
。我们对各种类型的知识进行测试:存储在 Wikidata
中的实体之间的关系、来自 ConceptNet
的概念之间的常识性关系、以及回答 SQuAD
中自然语言问题所需的知识。在后一种情况下,我们手动将 SQuAD
问题的一个子集映射到完形填空句子上。
我们的调查显示:
最大的 BERT
模型(BERT-large
)捕获的(准确的)关系知识,与以下二者相当:现成的关系提取器、来自语料库(该语料库是表达相关的知识)的 oracle-based entity linker
。
事实性知识可以从 pretrained
语言模型中恢复得很好,然而,对于某些关系(特别是 N-to-M
关系)来说性能非常差。
BERT-large
在恢复事实性知识和常识性知识方面一直优于其他语言模型,同时对 query
的措辞更加鲁棒。
BERT-large
在 open-domain QA
方面取得了显著的成果,达到 57.1%
的 precision@10
,而使用 task-specific supervised relation extraction system
构建的知识库则为 63.5%
。
相关工作:许多研究已经调查了 pretrained
的 word representations
、 sentence representations
、 以及 language models
。现有的工作集中在了解 word representations
的语言属性和语义属性,或者 pretrained
的 sentence representations
和语言模型如何将语言知识迁移到下游任务中。相比之下,我们的调查试图回答 pretrained
的语言模型在多大程度上储存了事实性知识和常识性知识,并将它们与传统 relation extraction
方法所填充的 symbolic knowledge base
进行比较。
《Don’t count, predict! Asystematic comparison of context-counting vs. context-predicting semantic vectors》
对 neural word representation
方法和更传统的 count-based distributional semantic
方法在词汇语义任务(如语义相关性和概念分类)上进行了系统的比较分析。他们发现,在大多数所考虑到的任务中,neural word representations
的表现优于 count-based distributional
方法。
《Simlex-999: Evaluating semantic models with (genuine) similarity estimation》
研究了 word representations
在多大程度上捕捉了由 word pairs
之间的相似性所衡量的语义。
《Targeted syntactic evaluation of language models》
评估了 pretrained
语言模型的语法性。他们的数据集由一个有语法的句子和一个无语法的句子组成。虽然一个好的语言模型应该给符合语法的句子分配更高的概率,但他们发现 LSTM
并不能很好地学习语法。
另一项工作是研究 pretrained
的sentence representations
和语言模型将知识迁移到下游自然语言理解任务的能力(《GLUE: A multi-task benchmark and analysis platform for natural language understanding》
)。虽然这样的分析揭示了 pretrained
模型在理解短文方面的迁移学习能力,但它对这些模型是否能与 symbolic knowledge base
等代表知识的传统方法竞争提供了很少的洞察。
最近,《Right for the wrong reasons: Diagnosing syntactic heuristics in natural language inference》
发现:对于自然语言推理,基于 BERT
的模型学会了严重依赖易犯错的 syntactic heuristics
,而不是对自然语言输入的更深入理解。
《Dissecting contextual word embeddings: Architecture and representation》
发现,ELMo
中的低层擅长局部的句法关系,而高层可以学习对长距离关系进行建模。
同样, 《Assessing bert’s syntactic abilities》
发现,BERT
对英语句法现象的捕捉非常好。
《What do you learn fromcontext? probing for sentence structure in contextualized word representations》
调查了语言模型在多大程度上为不同的句法和语义现象编码了句子结构,并发现他们在前者方面表现出色,但对属于后者的任务只提供小的改进。虽然这提供了对语言模型的语言知识的见解,但它并没有提供对其事实知识和常识知识的见解。
《Improving language understanding by generative pre-training》
介绍了一种基于 Transformer
的 pretrained
语言模型,他们称之为生成式预训练( GPT-1
)。 《Language models are unsupervised multitask learners》
(GPT-2
) 已经在包含 7000
本书的图书语料库上进行了训练。与我们的调查最接近的是 GPT-2
的工作,他们调查了他们的语言模型在一系列下游任务中的 zero-shot
迁移情况。他们发现,GPT-2
在回答 CoQA
中的问题时达到了 55
的 F1
得分,在 Natural Questions
数据集上达到了 4.1%
的准确率,在这两种情况下都没有使用标记的 question-answer pairs
或信息检索步骤。
虽然这些结果令人鼓舞,并暗示了非常大的 pretrained
语言模型记忆事实知识的能力,但大型 GPT-2
模型尚未公开,而公开的小版本在 Natural Questions
上取得的成绩不到 1%
(比大型模型差 5.3
倍)。因此,我们决定不将GPT-2
纳入我们的研究中。同样,我们也没有将 GPT-1
纳入本研究,因为它使用了有限的小写字母的词表,使得它与我们评估其他语言模型的方式不兼容。
略。详情参考原始论文。
因为这里都是简单的关于语言模型、
BERT
的知识。
我们引入了 LAnguage Model Analysis: LAMA
探针来测试语言模型中的事实性知识和常识性知识。它提供了一组由 facts
的语料库组成的知识源。facts
要么是 subject-relation-object
三元组,要么是 question-answer pairs
。每个 fact
都被转换为一个完形填空语句,用于 query
语言模型的 missing token
。我们根据每个模型对 ground truth token
在固定词表中的排名高低来评估该模型。这类似于 knowledge base completion
文献中的 ranking-based
指标。我们的假设是,在这些完形填空语句中, ground truth tokens
排名高的模型有更多的事实性知识。接下来我们详细讨论每个步骤,并在下面提供关于探针(probe
)的考虑。
知识源 (Knowledge Sources
):我们涵盖了各种事实性和常识性知识的源。对于每个源,我们描述了事实三元组(或 question-answer pairs
)的来源,我们如何将它们转化为完形填空模板,以及维基百科中存在多少已知表达特定 fact
的 aligned text
。我们在 supervised baseline
中使用后者的信息,直接从对齐的文本中提取 knowledge representations
。
这些知识源包括:Google-RE, T-REx, ConceptNet, SQuAD
。详细内容参考原始论文。
模型:如下 pretrained
的、大小写敏感的语言模型(见Table 1
):fairseq-fconv (Fs), Transformer-XL large (Txl), ELMo original (Eb), ELMo 5.5B (E5B), BERT-base (Bb), BERT-large (Bl)
。
为了进行公平的比较,我们让模型在一个统一的词表上生成,这个词表是所有模型的词表的交集(大约 21K
个大小写敏感的 tokens
)。
baseline
:
Freq
:对于一个 (subject, relation) pair
,这个基线根据每个单词在测试数据中作为给定 relation
的 object
出现的频率来排序。
已知三元组的
(subject, relation)
,需要补全object
。
RE
:对于 relation-based
知识源,我们考虑 《Context-aware representations for knowledge base relation extraction》
的 pretrained
的 Relation Extraction: RE
模型。这个模型是在维基百科的一个子语料库上训练的,该子语料库上有 Wikidata
的关系标注。它使用基于 LSTM
的编码器和注意力机制从一个给定的句子中提取 relation
三元组。
我们考虑了这个程序的两个版本,它们在实现 entity linking
的方式上有所不同:
RE_n
使用了基于精确字符串匹配的朴素的 entity linking
解决方案。
而 RE_o
除了字符串匹配之外,还使用了 entity linking
的一个 oracle
。
换句话说,假设我们查询一个句子 test subject-relation fact
RE
从该句子 relation
实例,不管它的 subject
或 object
是否错误,RE
都可以返回正确的解
DrQA
:《Reading wikipedia to answer open-domain questions》
介绍了 DrQA
,一个用于开放领域问答的流行系统。DrQA
使用一个两步的 pipeline
来预测自然语言问题的答案。
首先,使用 TF/IDF
信息检索步骤,从大量的文档存储(如维基百科)中找到相关文章。
然后,在检索到的 top-k
篇文章中,一个神经阅读理解模型随后提取答案。
为了避免给语言模型带来竞争优势,我们将 DrQA
的预测限制在 single-token
答案上。
指标:precision at k (P@k)
指标。
为了考虑到 subject-relation pair
的多个有效对象(即 N-M
关系),我们遵循 《Translating embeddings for modeling multi-relational data》
的做法,在测试时将训练数据中除我们测试的 object
之外的所有其他有效 objects
从候选中删除。
考虑因素:在创建 LAMA
探针时,我们做了几个重要的设计决定。下面我们将为这些决定提供更详细的理由。
手动定义的模板:对于每种关系,我们手动定义一个模板,用于查询该关系中的 object slot
。我们可以预期,模板的选择会对结果产生影响,情况确实如此:对于某些关系,我们发现使用另一个模板查询相同的信息(就一个给定的模型而言),情况有好有坏。我们认为,这意味着我们正在度量语言模型所知道的下限。
Single Token
:我们只考虑单个 token
的 object
作为我们的预测目标。我们包括这一限制的原因是,multi-token decoding
增加了许多额外的可调优参数(beam size
、候选评分权重、长度归一化、n-gram
重复惩罚等),这些超参数掩盖了我们试图测量的知识。此外,well-calibrated
的 multi-token generation
仍然是一个活跃的研究领域,特别是对于双向模型。
Object Slots
:我们选择只查询三元组中的 object slot
,而不是 subject slot
或 relation slot
。通过包括反向关系(如 contains
和 contained-by
),我们也可以查询 subject slot
。
我们不查询 relation slot
有两个原因。
首先,relations
的表面形式的实现会跨越几个 tokens
,正如我们上面所讨论的,这构成了一个技术挑战,不在本工作的范围之内。
第二,即使我们可以很容易地预测 multi-token
短语,关系通常可以用许多不同的措辞来表达,这使得我们不清楚关系的 gold standard pattern
应该是什么,以及如何在这种情况下衡量准确率。
词表的交集:我们考虑的这些模型是用不同的词表训练的。例如,ELMo
使用一个 800K tokens
的列表,而 BERT
只考虑 30K tokens
。词表的大小可以影响 LAMA prob
模型的性能。具体来说,词表越大,就越难将 gold token
排在最前面。出于这个原因,我们考虑了一个由 21K
个大小写敏感的 tokens
组成的公共词表,这些 tokens
是由所有考虑的模型的词表的交集得到的。为了进行公平的比较,我们让每个模型只对这个公共词表中的 tokens
进行排名。
由于设计上的约束,因此本文的结论是有局限性的:仅限于采用自定义模板的场景、仅限于
single token
的object
、仅限于object
预测、仅限于一个较小词表中的tokens
。
我们在 Table 2
中总结了主要的结果,它显示了不同模型在所考虑的语料库中的平均精度(P@1
)。在本节的其余部分,我们将详细讨论每个语料库的结果。
Google-RE
:我们使用每种关系的标准完形填空模板来查询语言模型。
BERT_base
和 BERT_large
都以很大的幅度超过了所有其他模型。
此外,与 oracle-based RE baseline
相比,BERT_base
和 BERT_large
分别获得了2.2
和 2.9
的平均准确率改进。
此外,RE
基线通过 entity linking oracle
得到了大量帮助。
值得指出的是,虽然 BERT-large
做得更好,但这并不意味着它是出于正确的原因来达到的。模型可能已经从 co-occurrence
模式中学习了 object
与 subject
的关联。
T-REx
:结果与 Google-RE
基本一致。按关系类型划分,BERT
的性能对于 1-to-1 relations
(例如,capital of
)非常高,对于 N-to-M relations
则很低。
Figure 2
显示了所考虑的模型的平均 P@k
曲线。对于 BERT
,正确的 object
在大约 60%
的情况下被排在 top-10
、在 80%
的情况下被排在 top-100
。
为了进一步研究为什么 BERT
取得了如此强大的结果,我们计算了 P@1
和一组指标之间的皮尔逊相关系数,如 Figure 3
所示。
我们注意到,训练数据中提到一个 object
的次数与模型性能呈正相关,而关系的 subject
次数则不是这样的。
此外,预测的对数概率与 P@1
强烈正相关。 因此,当 BERT
对其预测有很高的信心时,它往往是正确的。
性能也与 subject
向量和 object
向量之间的余弦相似度呈正相关,并与 subject
中的 tokens
数量略有关联。
最底部一行给出了
P@1
和其它指标之间的相关系数;其它行给出了不同指标之间的相关系数。
Table 3
显示了随机挑选的、 BERT-large
的完形填空模板 query
所生成的样本。我们发现,BERT-large
通常预测出正确类型的 object
,即使预测的 object
本身并不正确。
为了了解 pretrained
语言模型的性能如何随 query
特定事实的不同方式而变化,我们分析了每种关系中最多 100
个随机事实,我们从 T-REx
中随机选择了维基百科中 10
个对齐的句子。在每个句子中,我们掩盖 fact
的 object
,并要求模型预测它。对于我们的几个语言模型来说,这也测试了它们从训练数据中记忆和回忆句子的能力,因为这些模型已经在维基百科上进行了训练(见 Table 1
)。
Figure 4
显示了每个事实的十个 query
的平均排名的分布。
两个 BERT
模型和 ELMo 5.5B
表现出最低的方差,同时将正确的 object
平均排在靠近顶部的位置。
令人惊讶的是,ELMo original
(即,Eb
)的性能与 BERT
相差无几,尽管这个模型在训练期间没有看到维基百科。
Eb
的性能和BERT
还是差距挺大的,作者表述有误?
Fairseq-fconv
和 Transformer-XL
在其预测中经历了更高的方差。请注意,BERT
和 ELMo 5.5B
比 fairseq-conv
和Transformer-XL
在维基百科上训练了更多的内容,在训练期间可能看到了更多包含 test query
的句子。
ConceptNet
:结果与 Google-RE
和 T-REx
一致。BERT-large
模型一直取得了最好的性能。
SQuAD
:Table 2
显示了 BERT-large
和 DrQA
在我们的SQuAD
任务上的性能差距,其中 DrQA
的效果要好得多。请再次注意,pretrained
语言模型是完全无监督的,它没有经过微调,而且它无法访问专门的信息检索系统。此外,在比较 DrQA
和 BERT-large
的 P@10
时,我们发现差距非常小(BERT-large
为57.1
、DrQA
为 63.5
)。
论文:
《How Can We Know What Language Models Know?》
近年来,语言模型的主要作用从生成自然文本、或评估自然文本的流畅性,过渡到成为文本理解的有力工具。这种理解主要是通过将语言建模作为用于 feature extractors
的预训练任务来实现的,其中,语言建模目标学到的隐向量随后被用于下游语言理解系统。
有趣的是,语言模型本身也可以作为文本理解的工具,通过用自然语言制定化 query
,直接生成文本答案,或者评估多个选项并挑选最可能的一个。例如,语言模型被用来回答事实性问题、回答常识性查询、或提取关于实体之间关系的事实性知识。无论最终任务是什么,语言模型中包含的知识都是通过提供 prompt
,让语言模型要么生成 prefix
的延续(例如,"Barack Obama was born in __"
),或者预测完形填空风格的模板中的缺失单词(例如,"Barack Obama is a __ by profession"
)。
然而,虽然这种范式已经被用来实现一些耐人寻味的结果(这些结果关于语言模型所表达的知识),但它们通常依赖于基于实验者的直觉而手工创建的 prompts
。这些手动创建的 prompts
(例如,"Barack Obama was born in "
)可能是次优的,因为在训练过程中,语言模型可能已经从完全不同的上下文中学习了目标知识(例如,"The birth place of Barack Obama is Honolulu, Hawaii."
)。因此,很有可能由于 prompts
不是对 fact
的有效查询,导致语言模型无法检索那些实际上已经知道的事实。因此,现有的结果只是对语言模型所包含的知识程度的一个下限,事实上,语言模型的知识可能比这些初步结果所显示的还要丰富。在本文中,我们提出了一个问题:我们如何才能收紧这个下限,并对 SOTA
的语言模型所包含的知识有一个更准确的估计?这在科学上和工程上都很有意思,前者是对语言模型所包含的知识的探测(probe
),后者则是在使用语言模型作为知识提取系统的一部分时会带来更高的召回率。
具体而言,我们专注于 LAMA
的设定,他们研究了关于实体之间关系的知识提取。我们提出了两种自动方法来系统地提高 prompts
的广度和质量,其中这些 prompts
用于查询 relation
存在与否。具体来说,如 Figure 1
所示,这些方法是基于挖掘(mining-based
)的方法,其灵感来自于以前的关系提取(relation extraction
)方法(《Learning surface text patterns for a question answering system》
),以及基于转述(paraphrasing-based
)的方法(该方法采用一个 seed prompt
,无论是手动创建的还是自动挖掘的,并将其转述为其他几个语义相似的表述)。此外,由于不同的 prompts
在查询不同的 (subject, object) pair
时可能效果更好,我们还研究了轻量级的 ensemble
方法,将不同 prompts
的答案组合在一起。
我们在 LAMA
基准上进行了实验,这是一个英语基准,旨在测试语言模型检索实体间关系的能力。我们首先证明,改进后的 prompts
明显提高了这项任务的准确率,通过我们的方法提取的最佳 prompt
将 BERT-base
的准确率从 31.1%
提高到 34.1%
,BERT-large
也获得了类似的收益。我们进一步证明,通过 ensembling
使用多样化的 prompts
,进一步提高了准确率,达到 39.6%
。我们进行了广泛的分析和消融实验,既收集了关于如何最好地查询知识(那些存储在语言模型中的知识)的见解,也收集了关于将知识纳入语言模型本身的潜在方向的见解。最后,我们发布了由此产生的 LMPrompt And Query Archive: LPAQA
,以促进未来对语言模型中包含的知识进行探测的实验。
相关工作:许多工作都集中在了解 neural NLP models
中的内部表征(《Analysis methods in neural language processing: A survey》
),或者通过使用外在的 probing tasks
来研究是否可以从这些 representations
中预测某些语言属性、或者通过对模型的消融来研究行为如何变化。特别是对于 contextualized representations
,一套广泛的 NLP
任务被用来分析句法属性和语义属性,提供证据表明 contextualized representations
在不同 layers
上编码语言知识。
与 probing the representations
本身的分析不同,我们的工作遵循 《Language models as knowledge bases?》
、《BERT is not a knowledge base (yet): Factual knowledge vs. Name based reasoning in unsupervised QA》
对事实性知识的探测。他们使用手动定义的 prompts
,这可能低估了语言模型的真实性能。在这项工作的同时,《Inducing relational knowledge from BERT》
也提出了类似的观点,即使用不同的 prompts
可以帮助更好地从语言模型中提取 relational knowledge
,但他们使用的是显式训练的模型从而用于提取关系,而我们的方法是在没有任何额外训练的情况下检查语言模型中包含的知识。
此外,以前的一些工作整合了外部知识库,使语言生成过程明确地以符号知识为条件。类似的扩展已经应用于像 BERT
这样的 pre-trained LM
,其中 contextualized representations
用 entity embeddings
来增强。相比之下,我们关注的是通过对语言模型的prompts
来实现更好的知识检索,而不是修改语言模型。
从语言模型中检索事实性知识,与查询标准的陈述性的知识库(knowledge base: KB
)有很大不同。在标准的知识库中,用户将其信息需求表述为由 KB schema
和 query language
所定义的结构化查询。例如, SELECT ?y WHERE {wd:Q76 wdt:P19 ?y}
是一个SPARQL query
,用于搜索 Barack_Obama
的出生地。相比之下,语言模型通过自然语言 prompts
进行查询,例如 "BarackObama was born in__"
,在空白处分配的概率最高的单词将被返回作为答案。与对知识库的确定性查询不同,语言模型不提供正确性或成功的保证。
虽然 prompts
的想法在从语言模型中提取各种各样知识的方法中很常见,但在本文中,我们特别遵循 LAMA
的表述,其中事实性知识是三元组 subject
),object
),而 prompt
tokens
的一个序列组成,序列中的两个 token
是 subject
和 object
的占位符(例如,"x plays at y position"
)。通过用 subject
来替换 missing object
"LeBron James plays at __ position"
):
其中:tokens
(如,subject
和 prompt
)给定的条件下来预测空格处的 groundtruth
因为我们希望我们的 prompts
能够最有效地引导语言模型本身所包含的任何知识,所以一个 ”好“ 的 prompt
应该尽可能多地引导语言模型去预测 ground-truth objects
。
在以前的工作中(《The natural language decathlon: Multitask learning as question answering》
、《Language models are unsupervised multitask learners》
、《Language models as knowledge bases?》
),prompt
。正如导言中所指出的,这种方法不能保证是最优的,因此我们提出了从一小部分训练数据中学习 effective prompts
的方法,这些数据由每种关系的 gold subject-object pairs
组成。
首先,我们处理 prompt generation
:该任务为每种关系 prompts
prompts
能有效地引导语言模型来预测 ground-truth objects
。我们采用两种实用的方法:要么从大型语料库中挖掘 prompt candidates
、要么通过转述来使 seed prompt
多样化。
Prompt Generation
的核心是:如何使得prompts
多样化、以及如何使用多样化的prompts
。这篇论文的
prompts
本质上是zero-shot
的,那么few-shot
是不是会更好?
我们的第一个方法受到 template-based relation extraction
方法的启发,这些方法是基于这样的观察:在大型语料库中,subject
object
distant supervision
假设,确定所有的这类 WikiPedia
句子:该句子同时包含特定关系 subject
和 object
;然后提出两种提取 prompts
的方法:
Middle-word Prompts
:根据观察,subject
和 object
中间的单词往往是 relation
的指示,我们直接使用这些单词作为 prompts
。例如,"Barack Obama was born in Hawaii"
通过用占位符替换 subject
和 object
被转换成 "x was born in y"
的 prompt
。
Dependency-based Prompts
:《Representing text for joint embedding of text and knowledge bases》
指出,在中间不出现单词的模板情况下(例如,"The capital of France is Paris"
),基于句法分析的模板可以更有效地进行关系提取。
我们遵循这一见解,即用 dependency parser
来解析句子,以确定 subject
和 object
之间最短的 dependency path
,然后使用 dependency path
中从最左边的单词到最右边的单词的 phrase spanning
作为 prompt
。例如,上述例子中的 dependency path
是:
其中最左边的单词和最右边的词分别 "capital"
和 "Paris"
,给出的 prompt
是 "capital of x is y"
。
这种方法依赖于外部的
dependency parser
,因此不是端到端的方案。
值得注意的是,这些基于挖掘的方法不依赖于任何手动创建的 prompts
,因此可以灵活地应用于我们可以获得一组 subject-object pairs
的任何关系。这将导致多样化的 prompts
,覆盖了 relation
在文本中可能表达的各种方式。然而,这也容易产生噪音,因为以这种方式获得的许多 prompts
可能对该 relation
的指示性不强(例如,"x, y"
),即使它们很频繁出现。
基于挖掘的方法依赖于第三方数据源,即维基百科。这在实验部分提到了这一点。因此,如果任务包含的关系不在维基百科中,那么基于挖掘的方法不可用。
我们的第二种生成 prompts
的方法更有针对性,它的目的是在相对忠实于原始 prompts
的情况下提高词汇的多样性。具体而言,我们通过对原始 prompts
进行转述(paraphrasing
),使之成为其他语义相似或相同的表达。例如,如果我们的原始 prompts
是 "x shares a border with y"
,它可以被转述为 "x has a common border with y"
、以及 "x adjoins y"
。这在概念上类似于信息检索中使用的 query expansion
技术,即重新表述一个给定的 query
以提高检索性能(《A survey of automatic query expansion in information retrieval》
)。
虽然许多方法可以用于转述,但我们遵循使用 back-translation
的简单方法(《Improving neural machine translation models with monolingual data》
、《Paraphrasing revisited with neural machine translation》
):
这种方法依赖于外部的翻译模型,因此也不是端到端的。
首先将初始 prompt
翻译成另一种语言的
然后将每个候选翻译成原始语言的
最后,我们根据 round-trip
概率进行排名,并保留 top T
个 prompts
。其中 round-trip
概为:
其中:prompt
,prompt
,final prompt
。
round-trip
概率的物理含义为:给定原始语言输入的条件下,得到原始语言输出 的概率。
这里我们介绍如何使用所生成的 prompts
。
下面的所有方法都需要一个验证集来筛选以及
ensemble
候选的prompts
。
对于每个 prompt
,我们可以用以下公式来衡量其预测 ground-truth objects
的准确率(在训练数据集上):
其中:
subject-object pairs
的集合。
prompt
。
Kronecker’s delta function
,当内部条件为 true
时返回 1
,否则返回 0
。
在用于查询语言模型的最简单的方法中,我们选择准确率最高的 prompt
,并只使用这个 prompt
进行查询。
接下来,我们研究了不仅使用 top-1 prompt
,而且将多个 prompts
组合在一起的方法。这样做的好处是,在训练数据中,语言模型可能在不同的上下文中观察到不同的 entity pairs
,而拥有各种各样的 prompts
可能会允许引导那些出现在这些不同上下文中的知识。
我们的第一种 ensembling
方法是一种无参数的方法,对 top-ranked prompts
的预测进行平均。我们根据训练集上预测 objects
的准确率对所有的 prompts
进行排名,并使用 top-K prompts
的平均对数概率来计算 object
的概率:
其中:
prompt
。
prompts
上,较大的 prompts
的多样性。
上述方法对 top K prompts
一视同仁,这是次优的,因为到一些 prompts
比其他 prompts
更可靠。因此,我们还提出了一种直接优化 prompt weights
的方法。形式上,我们将
其中:prompts
上的一个分布并且被
对于每一个 relation
,我们要学习对一组不同的 candidate prompts
进行评分,所以参数的总数是关系数量的 gold-standard objects
的概率
这可以通过固定语言模型,并且学习
网络参数来实现。
数据集:LAMA benchmark
的 T-REx
子集。它有一个更广泛的 41
种关系的集合(相比之下,Google-RE
子集只包括 3
种关系)。每种 relation
关联来自维基数据的最多 1000
个 subject-object pairs
,同时也关联一个手动设计的 prompt
。
为了学习挖掘 prompts
、对 prompts
进行排序、或学习 ensemble
权重,我们为每个关系创建了一个单独的 subject-object pairs
训练集,该训练集也来自维基数据,与 T-REx
数据集没有重叠。我们把这个训练集称为 T-REx-train
。为了与 LAMA
中的 T-REx
数据集保持一致,T-REx-train
也被选择为只包含单个 token
的 objects
。
为了研究我们方法的通用性,我们还报告了我们的方法在 Google-RE
子集上的表现,该子集的形式与 T-REx
类似,但相对较小,只包括三种关系。
《BERT is not a knowledge base (yet): Factual knowledge vs. Name based reasoning in unsupervised QA》
指出,LAMA
中的一些事实可以只根据 entities
的表面形式来猜测,而不需要记忆事实。他们过滤掉了那些容易猜测的事实,创造了一个更难的基准,表示为 LAMA-UHN
。我们还对 LAMA-UHN
的 T-REx
子集(即 T-REx-UHN
)进行了实验,以研究我们的方法是否还能在这个更难的基准上获得改进。
数据集的统计数据总结在下表中。
模型:BERT-base, BERT-large
。
此外,我们实验了一些通过外部 entity representation
来增强的 pretrained model
,如 ERNIE
(《ERNIE: Enhanced language representation with informative entities》
)、KnowBert
(《Knowledge enhanced contextual word representations》
)。
评估指标:
micro-averaged accuracy
:首先计算每种关系
然而,我们发现一些 relation
的 objects
分布是极其倾斜的(例如 native language
这个关系,所对应的 objects
有一半是 French
),这可能会导致欺骗性的高分。
macro-averaged accuracy
:首先独立地计算每个 unique object
的准确率,然后在所有 object
上取平均。
方法:我们尝试了不同的 prompt generation
和 selection/ensembling
方法,并将其与 LAMA
中使用的人工设计的 prompt
进行比较。
Majority
:为每种 relation
预测占比多数的 object
。
Man
: LAMA
中使用的人工设计的 prompt
。
Mine
:使用通过中间单词和 dependency path
从维基百科挖掘的 prompt
。
Mine+Man
:将 Mine
和人工 prompt
相结合。
Mine+Para
:为每个 relation
将排名最高的被挖掘的 prompt
进行转述。
Man+Para
:将人工 prompt
进行转述。
这些得到的 prompts
可以通过 TopK
或 Opti.
等方法结合起来。Oracle
代表 generated prompts
的性能上限:如果任何一个 prompt
使得语言模型成功地预测该 object
,则该事实被判定为正确。
实现细节:
超参数:
我们删除了如下类型的 prompts
从而减少噪音:仅仅包含 stopwords
或标点符号、长度超过 10
个单词。
我们使用在 WMT'19
上预训练的 round-trip English-German neural machine translation model
进行回译,因为 English-German
是资源最丰富的 language pair
之一。
当优化 ensemble parameter
时,我们使用默认参数的 Adam
,batch size = 32
。
不同方法的实验结果如Table 2, Table3
所示,分别给出了micro-averaged accuracy
、 macro-averaged accuracy
。
Single Prompt
(对应于Table 2, Table3
的 Top1
这一列):所提出的最好的 prompt generation
方法在 BERT-base
上将 micro-averaged accuracy
从 31.1%
提高到 34.1%
,而在 BERT-large
上将 micro-averaged accuracy
从 32.3%
提高到 39.4%
。这表明手动创建的 prompt
是一个有点弱的下限。
Table 4
显示了一些 mined prompts
,与人工 promtps
相比,这些 promtps
带来了很大的性能提升。可以看出,使用 mined prompts
的最大收益似乎发生在人工定义的 prompt
在语法上更复杂的情况下(例如前面的几个),或者使用比 mined prompts
更不常见的措辞时(例如后面的几个)。
Prompt Ensembling
:
Table 2, Table3
的 Top3, Top5, Opti.
这三列给出了 ensembling
的结果。
ensembling
多个 prompts
几乎总是能带来更好的性能。
optimized ensemble
在 BERT-base
和 BERT-large
上进一步将micro-averaged accuracy
分别提高到 39.6%
和 43.9%
,比 rank-based ensemble
(即 Top3, Top5
这两列)要好得多。
这表明,多样化的 prompts
确实可以以不同的方式 query
语言模型,而且 optimization-based
方法能够找到有效地将不同 prompts
结合在一起的权重。
我们在 Table 5
中列出了所学到的 top-3 mined prompts
的权重,以及与只使用 top-1 prompt
相比的准确率增益。
我们还在 Figure 2
中描述了 rank-based ensemble
方法的性能与 prompts
数量的关系。
对于 mined prompts
,top-2
或 top-3
通常能给我们最好的结果。
而对于 mined + paraphrased prompts
,top-5
是最好的。
纳入更多的 prompts
并不总能提高准确率,这一发现与 optimization-based
所学到的权重迅速下降的情况相一致。
Table 2, Table3
的Oracle
和 Opti.
之间的差距表明,使用更好的 ensemble
方法仍有改进空间。
Mining vs. Paraphrasing
:
对于rank-based ensembles
(Top1, 3, 5
),通过转述产生的 prompts
通常比 mined prompts
表现更好。而对于optimization-based ensemble
(Opti.
), mined prompts
表现更好。
我们推测,这是因为与转述相比, mined prompts
表现出更多的变化,而适当的加权是最重要的。这种 variation
的差异可以从每个 class
的 prompts
之间的平均编辑距离中观察到, mined prompts
和 paraphrased promp
的编辑距离分别为 3.27
和 2.73
。
然而,与仅仅使用一个prompt
相比,ensembling paraphrases
所带来的改进仍然是显著的(Top1 vs. Opti.
)。这表明,即使对 prompts
进行小的修改,也会导致预测的相对较大的变化。
Table 6
展示了对一个单词(功能词或内容词)的修改导致显著的准确率提高的案例,表明大型语言模型对查询方式的小变化仍然很脆弱。
Middle-word vs. Dependency-based
:我们在 Table 7
中比较了只使用 middle-word prompts
、以及将其与 dependency-based prompts
相拼接的性能。这些改进证实了我们的直觉,即属于 dependency path
但不在 subject and object
中间的单词也是relation
的指示。
Micro vs. Macro
:对比 Table 2
和Table 3
,我们可以看到,macro-averaged accuracy
比 micro-averaged accuracy
低得多,这表明 macro-averaged accuracy
是一个更具挑战性的指标,它评估了语言模型知道多少 unique objects
。我们 optimization-based
方法在 BERT-base
上将macro-averaged accuracy
从 22.8%
提高到 25.7%
,在 BERT-large
上从 25.7%
提高到30.1%
。这再次证实了 ensembling
多个 prompts
的有效性,但收益要小一些。
值得注意的是,在我们 optimization-based
的方法中,ensemble weights
是在训练集的每个样本上进行优化的,这更有利于优化 micro-averaged accuracy
。优化以提高macro-averaged accuracy
可能是未来工作的一个有趣的方向,这可能会使 prompts
更普遍地适用于不同类型的 objects
。
不同语言模型的性能: 在 Table 8
中,我们将 BERT
与 ERNIE
、KnowBert
进行了比较,后两种方法通过明确纳入 entity embedding
来增强外部知识。
ERNIE
即使在人工 prompts
的情况下也比 BERT
好 1
分,但我们的 prompt generation
方法进一步强调了两种方法之间的差异。这表明,如果对语言模型进行有效查询,高性能模型之间的差异可能会变得更加明显。
KnowBert
在 LAMA
上的表现不如 BERT
,这与 《Knowledge enhanced contextual word representations》
的观察相反。这可能是因为在 《Knowledge enhanced contextual word representations》
中,KnowBert
被用来评估 multi token subjects/objects
,而 LAMA
只包含 single-token objects
。
LAMA-UHN Evaluation
:Table 9
中报告了 LAMA-UHN
基准的性能。尽管与原始 LAMA
基准测试的表现相比,整体表现大幅下降(Table 2
),但 optimized ensembles
仍能以较大的优势胜过人工 prompts
,表明我们的方法在检索无法根据表面形式推断的知识方面是有效的。
接下来,我们进行进一步分析,以更好地了解哪种类型的 prompts
被证明最适合于促进从语言模型中检索知识。
Prediction Consistency by Prompt
:我们首先分析了在什么条件下 prompts
会产生不同的预测。我们用下面的公式来定义两个 prompts
prediction
之间的分歧:
其中:
如果 prompt
Kronecker’s delta
函数,当条件为 true
时取值为 1
,否则取值为 0
。
对于每个关系,我们将两个 prompt
的编辑距离( edit distance
)归一化为 [0, 1]
,并将 normalized distance
分成五个区间,区间间隔 0.2
。我们在下图中为每个 bin
绘制了一个箱形图从而可视化 prediction divergence
的分布,bin
中的绿色三角形代表平均值,bin
中的绿色 bar
代表中位数。
随着编辑距离的变大,divergence
也在增加,这证实了我们的直觉,即非常不同的 prompt
往往会引起不同的预测结果。Pearson
相关系数为 0.25
,这表明这两个变量之间存在着微弱的相关性。
箱线图最下面的
bar
代表最小值、最上面的bar
代表最大值、箱体的底部代表下四分位数、箱体的顶部代表上四分位数。
Google-RE
上的表现:我们还在下表中报告了 optimized ensemble
在 Google-RE
子集中的表现。同样,ensembling diverse prompts
可以提高 BERT-base
和 BERT-large
模型的准确率。与 T-REx
子集上的表现相比,收益要小一些,这可能是由于只有三种 relation
,而其中一种关系(预测一个人的出生日期)特别难,以至于只有一个 prompt
产生非零准确率。
POS-based
分析:接下来,我们试图研究哪些类型的 prompts
往往是有效的,方法是通过检查 prompts
的词性标注( part-of-speech: POS
)模型,其中这些 prompts
成功地从语言模型中提取知识。
在 open information extraction
系统中,人工定义的模式经常被用来过滤掉嘈杂的 relational phrases
。例如, 《Identifying relations for open information extraction》
结合了下表中列出的三个句法约束,以提高 mined relational phrases
的一致性和信息量。为了测试这些模式是否也能表明 prompts
从语言模型中检索知识的能力,我们用这三种模式将我们的方法产生的 prompt
分为四个 cluster
,其中"other" cluster
包含不符合任何模式的 prompts
。然后,我们计算每个 prompt
在所有 extracted prompts
中的排名,并在下图中用箱线图绘制出排名的分布。
我们可以看到,与这些模式相匹配的 prompts
的平均排名要好于 "other"
组中的 prompts
,这证实了我们的直觉,即好的 prompts
应该符合这些模式。一些表现最好的 prompts
的 POS
签名是 "x VBD VBN IN y"
(例如,"x was born in y"
)、以及 "x VBZ DT NN IN y"
(例如,"x is the capital of y"
)。
Cross-model Consistency
:最后,我们有兴趣知道,我们所提取的 prompts
是否是针对某一特定模型的,或者它们是否可以跨模型通用。为了做到这一点,我们使用了两种设置:
一个是比较 BERT-base
和 BERT-large
,相同的模型架构,但规模不同。
另一个是比较 BERT-base
和 ERNIE
,不同的模型架构,但是规模相当。
在每种情况下,我们比较了 optimization-based ensembles
在相同的模型上训练时,或在一个模型上训练并在另一个模型上测试时。如 Table 12
和 Table 13
所示,我们发现:
一般来说,在跨模型的情况下,性能通常会有一些下降(第三列和第五列),但损失往往很小。
query BERT-base
时,最高的性能实际上是由在 BERT-large
上优化的权重实现的。
值得注意的是,在另一个模型上优化了权重的最佳准确率为 40.1%
和 42.2%
(Table 12
)以及 39.5%
和 40.5%
(Table 13
),仍然比 manual prompts
获得的准确率高得多,这表明 optimized prompts
仍然能在不同的模型上提供大的收益。
另一个有趣的观察是,在 ERNIE
上的性能下降(Table 13
的最后两列)比 BERT-large
上的性能下降( Table 12
的最后两列)更大,表明共享相同架构的模型从相同的 prompts
中受益更多。
列标题包含两行:第二行表示训练
prompts
的模型,第一行表示测试prompts
的模型。
Linear vs. Log-linear Combination
:如前所述,我们在主要实验中使用了概率的 log-linear
组合。然而,也可以通过常规的线性插值来计算概率:
我们在下图中比较了这两种结合来自多个 mined prompts
的预测的方式。我们假设 log-linear combination
优于线性组合,因为对数概率使我们有可能惩罚那些在任何 certain prompt
下非常不可能的 objects
。
因为对数概率可以远小于零,因此,对于在任何
certain prompt
下非常不可能的objects
,它的远小于零,从而在 softmax
中是一个很小的数。
最后,除了我们前面提出的主要方法的要素之外,我们还试验了一些额外的方法,这些方法未被证明是非常有效的,因此在我们的最终设计中被省略了。我们在下面简要地描述这些方法,以及粗略的实验结果。
LM-aware Prompt Generation
:我们研究了通过解决一个优化问题来生成 prompts
的方法:
其中 pretrained
语言模型来参数化。
换句话说,这种方法直接寻找 prompt
,使得语言模型分配给 ground-truth objects
的概率最高。然而,我们发现,在我们的初步实验中,由梯度引导的直接优化 prompts
是不稳定的,并且经常产生不自然的英语 prompts
。
其实这就是
P-Tuning
的思想:直接优化prompt embedding
而不是prompt
本身。
因此,我们转而采用了一种更直接的 hill-climbing
,从初始 prompts
开始,然后每次掩码一个 token
,并以其他 tokens
为条件用最有可能的token
来代替它。这种方法的灵感来自于 non-autoregressive machine translation
中使用的 mask-predict decoding
算法(《Mask-predict: Parallel decoding of conditional masked language models》
):
其中:prompt
中的第 token
,token
的所有其他 tokens
。
我们遵循一个简单的规则,从左到右依次修改 prompt
,这样反复进行,直到收敛。
我们用这个方法在 T-REx-train
数据集上 refine
了所有的 mined prompts
和 manual prompts
,并在下表中显示了它们在 T-REx
数据集上的表现。经过微调后, oracle
性能明显提高;而 ensemble
性能(包括 rank-based
和 optimization-based
)略有下降。这表明,LM-aware fine-tuning
有可能发现更好的 prompts
,但部分的 refined prompts
可能过拟合于它们被优化的训练集。
Forward and Backward Probabilities
:最后,考虑到类别不平衡、以及模型过度预测 majority object
的倾向,我们研究了一种方法来鼓励模型预测更强烈一致的 subject-object pairs
。
受 《A diversity promoting objective function for neural conversation models》
使用的 maximum mutual information objective
的启发,我们将每个 prompt
的 backward log probability
optimization-based scoring
函数 objects
的搜索空间很大,我们转而采用一种近似的方法,在训练和测试时只计算由 forward probability
给出的最可能的 backward probability
。
这种方法的思想是:根据
label
和 prompts
来预测。这是 《Improving and Simplifying Pattern Exploiting Training》
的核心思想。后者成功的原因有两个:后者是few-shots
的、后者在forward/backward
中调整了prompts
的格式。
如下表所示,backward probability
带来的改进很小,这表明 diversity-promoting scoring
函数可能对语言模型的知识检索没有必要。
论文:
《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts》
pretrained
语言模型(language model: LM
)在通过微调来适应下游任务时取得了非凡的成功。尽管很清楚,预训练提高了准确率,但很难确定 finetuned LM
所包含的知识是在预训练过程中、还是在微调过程中学习的。我们如何才能直接评估 finetuned LM
中存在的知识,无论是语言的知识、事实的知识、常识的知识,还是特定任务的知识?
人们提出了许多技术从而通过分析 pretrained LM
的内部表征(internal representation
)来获得这种知识。一个常见的策略是使用探测分类器(probing classifier
):使用语言模型的 representationn
作为特征来预测某些属性的浅层分类器(《Whatyou can cram into a single vector: Probing sentence embeddings for linguistic properties》
、《Linguistic knowledge and transferability of contextual representations》
)。然而,探测分类器需要额外的学习参数,因此容易出现假阳性(false positive
);高的探测准确率并不是得出语言模型包含某项知识的充分条件(《Designing and interpreting probes with control tasks》
、《Information theoretic probing with minimum description length》
)。attention visualization
是另一种常见的技术,也有类似的失败模式:注意力得分可能与底层的 target knowledge
相关,但不是由底层的 target knowledge
引起的,这导致了对注意力得分作为解释的批评(《Attention is not explanation》
、《Attention is not not explanation》
)。probing
和 attention
可视化也都难以评估不能被表示为简单的 token-level
分类任务或 sequence-level
分类任务的知识。
由于这些模型毕竟是语言模型,所以从这些模型中引出知识的一个更直接的方法是 prompting
,即把任务转换成语言模型的格式。例如:
GPT-2
将摘要任务设定为一个语言建模任务,通过在文章末尾附加"TL;DR:"
然后从语言模型中生成。
同样,LAMA
手动将知识库补全(knowledge base completion
)任务重新表述为完形填空测试(即完形填空问题)。
与现有的模型分析方法相比,prompting
是非侵入性的:它不引入大量的额外参数,也不需要直接检查模型的 representations
。因此,prompting
提供了一个关于模型 "知道" 什么的下限,因此是一个更有用的分析工具。然而,不幸的是,prompting
需要手动制作上下文从而馈入模型。这不仅耗费时间,而且对于许多任务(例如textual entailment
)来说也是不直观的;更重要的是,模型对这种上下文高度敏感:不恰当的上下文会导致人为的低性能(LPAQA
)。克服 manually specify prompts
的需要,将使 prompting
成为更广泛有用的分析工具。
在本文中,我们介绍了 AutoPrompt
,一种为任何任务生成 prompts
的自动方法,如下图所示。给定一个任务,例如情感分析,AutoPrompt
通过将原始任务输入(例如评论)与根据模板的 trigger tokens
集合相结合来创建一个 prompt
。所有输入都使用相同的 trigger tokens
集合,并使用 《Universal adversarial triggers for attacking and analyzing》
提出的 gradient-based search
策略的变体来学习。对 prompt
的 LM prediction
通过对一组相关的 label tokens
进行 边际化(marginalizing
)从而转换为类别概率,其中 label tokens
集合可以提前学习或人工指定,使得语言模型的评估与其他分类器的评估相同。
我们在许多实验中验证了AutoPrompt
的有效性。
首先,我们使用AutoPrompt
构建 prompts
,测试 pretrained masked language model
的情感分析和自然语言推理。我们的测试显示,在没有任何微调的情况下,masked language model: MLM
在这两项任务中表现良好:经过适当 prompted
的RoBERTa
在 SST-2
上实现了 91%
的准确率,在 SICK-E
数据集的平衡的变体上的准确率为 69%
。
接下来,我们将AutoPrompt
应用于LAMA
的事实检索任务,其中我们构建 prompts
,比使用人工 prompts
、以及从语料库挖掘方法生成的prompts
更有效地引导 MLM
的事实知识。具体来说,我们实现了 43.3%
的 precision-at-1
,而目前最好的 single prompt
结果是 34.1%
。
我们还介绍了这项任务的一个变种,类似于关系提取(relation extraction: RE
),测试 MLM
是否能从给定的文本中提取知识。我们表明,当提供具有真实事实的上下文句子时,MLM
实际上可以胜过现有的 RE
模型,然而,当上下文句子被人为地伪造时,它们就会陷入困境。
最后,尽管 AutoPrompt
的目标是分析模型,但我们发现它比微调提供了某些实际优势。
首先,AutoPrompt
在低数据的情况下比微调实现了更高的平均准确率、 worst-case
准确率。
此外,与微调不同,prompting LM
不需要大量的磁盘空间来存储模型 checkpoints
;一旦找到 prompt
,它就可以用于现成的 pretrained LM
。这在为多个任务 serving
模型时是很有利的。
从 pretrained LM
中获取知识的一种自然方式是将任务设定为完形填空问题。然而,编写 prompts
不仅耗费时间,而且不清楚相同的措辞是否对每个模型都有效,也不清楚什么准则决定了某个特定的措辞是否最能引导出所需的信息。有鉴于此,我们提出了AutoPrompt
,一种为特定任务和感兴趣的MLM
构建 customized prompts
的方法从而使 MLM
产生所需的知识。
Figure 1
提供了AutoPrompt
的说明。该 prompt
是通过获取原始任务输入( tokens
的一个序列或多个序列的集合,例如,Figure 1
中的评论),并使用模板将其映射到 tokens
序列中从而构建。在下面的章节中,我们将描述 AutoPrompt
如何使用 标记的训练数据来构建 prompts
,以及如何使用 MLM
的输出作为任务的 prediction
。
Trigger Tokens
集合是基于梯度的搜索算法来自动产生的集合,它的数量是一个超参数,每个 token
来自于词表。 注意:这里的
prompts
不是位于输入的开头,而是放在输入和输出(即,[MASK] token
)之间。
出于 prompt construction
的目的,我们将原始任务输入 Figure 1
中的评论,"a real joy."
)与馈入 MLM
的 prompt
"a real joy. atmosphere alot dialogue Clone totally [MASK]."
)区分开来。从 prompt
中的位置,以及任何 additional tokens
的位置。具体而言,它还必须定义一个特殊的 [MASK] token
的位置,用于 MLM
进行完形填空(在模板中用 [P]
表示,以区别于其他可能出现的 [MASK] token
)。将 prompt
信息馈入 MLM
会产生一个概率分布 tokens
最有可能填入空白(即,完形填空)。
如果 class labels
自然对应于词表中的 tokens
(例如,knowledge base completion
任务中的实体名称),这种分布可能很容易被解释为 class labels
的分布。然而,对于情感分析这样的任务,可能有一组 label tokens
Figure 1
中,"Cris", "marvelous", "philanthrop"
都表示 positive
情感。在这种情况下,类别概率是通过对 label tokens
的边际化从而得到的:
由于只有一个
[MASK] token
,因此AutoPrompt
仅支持单个token
作为label
的任务。
Gradient-Based Prompt Search
:到目前为止,我们已经展示了如何将分类任务重新表述为使用 prompt
的语言建模任务。在此,我们提出一种基于 《Universal adversarial triggers for attacking and analyzing NLP》
的automatic prompt construction
方法。我们的想法是增加一些 "trigger" tokens
,这些 tokens
在所有 prompt
中都是共享的(在 Figure 1
的示例模板中用 [T]
来表示)。这些 tokens
被初始化为 [MASK] tokens
,然后迭代式地更新,从而在 batch
的样本中最大化 label likelihood
。
正式地,在每个 step
,我们计算将第 trigger token
token
top-k tokens
:
其中:
token
input embedding
。
梯度是相对于 input embedding
其实这就是
P-Tuning
的思想:直接优化prompt embedding
而不是prompt
本身。但是,AutoPrompt
为了确保更新后的prompt
仍然是词表中的一个token
,它将寻找了那些与梯度最相似的tokens
(通过embedding
的内积)。注意:这里没有采用负梯度,因为目标是最大化
。
注意,计算这个候选集合的成本与模型的一次前向传播和反向传播的成本差不多(点积需要的乘法数量与计算 LM output projection
的乘法数量相同)。对于这个集合中的每个候选,我们再对更新后的 prompt
重新评估方程:
并在下一步中保留概率最高的 prompt
,这需要模型的 label tokens
的数量)。Figure 1
显示了该方法为情感分析任务产生的一个样例的 prompt
。
Automating Label Token Selection
:虽然在某些情况下,label tokens
的选择是显而易见的(例如,当class labels
直接对应于词表中的单词时),但对于涉及更抽象的 class labels
的问题(例如,自然语言推断),什么 label tokens
是合适的就不太清楚了。在本节中,我们开发了一个通用的 two-step
法来自动选择 label tokens
集合
在第一步中,我们训练一个 logistic
分类器,使用 [MASK] token
的 contextualized embedding
作为输入来预测 class label
:
我们将分类器的输出写为:
其中:
label
bias
。
[MASK] token
的位置索引。
在第二步中,我们用 MLM
的 output word embedding
label tokens
的集合是由得分最高的 k
个单词来构建:
这等价于寻找与
最相似的 top-k
个tokens
。假设有
label space
的大小为,则需要为每个标签寻找 个 tokens
,则一共需要寻找个 tokens
。
与其他 Prompting
方法的关系:我们的工作适合于通过 prompts
来探测语言模型的知识的工作。以前的工作使用人工定义的 prompts
来研究语言模型的能力。PET
方法将手动构建的 prompts
与半监督学习结合起来用于 few-shot learning
。我们为任何任务自动创建 prompts
,这导致了更高的准确率,并打开了新的现象来分析。
评估设置:在下面的章节中,我们应用 AutoPrompt
来探测 BERT_BASE
( 110M
参数)和 RoBERTa_LARGE
(355M
参数)对以下任务的知识:情感分析、自然语言推理(natural language inference: NLI
)、事实检索、关系提取。
我们使用 PyTorch
的实现和 transformers Python
库提供的 pretrained
权重。
对于情感分析和自然语言推理,我们使用前文描述的基于逻辑回归的启发式方法寻找 label tokens
。对于事实检索和关系提取,我们跳过这一步,因为label
(实体)直接对应于词表中的tokens
。
对于所有的任务,我们进行前文所述的 prompt search
,进行多次迭代。在每个迭代中,我们使用一个 batch
的训练数据来确定候选集 batch
数据上评估 updated prompts
的 label likelihoods
,并在下一次迭代搜索中保留最佳 trigger token
。
在每个迭代结束时,我们在 holdout
的验证数据集上测量 label likelihoods
,并将整个搜索过程中发现的最佳 prompt
作为最终输出。
我们使用适当的特定任务的指标对性能进行评估(在一个单独的holdout
测试数据集上):例如,情感分析和自然语言推断采用准确率指标、事实检索采用 precision@k
指标。
我们的 AutoPrompt
实现在http://ucinlp.github.io/autoprompt
,并支持在任意数据集上为 HuggingFace transformers library
中的 pretrained
模型生成 prompt
。
数据集:Stanford Sentiment Treebank: SST-2
。
设置:
基于 Table 3
中的模板的 prompt
来寻找 label tokens
。
gradient-based prompt search
的超参数网格搜索:
所有的 prompts
都是以用于寻找 label set
的相同模板来初始化的。
手动构建了一个 prompt
(在 automated prompts
生成之前,以避免 bias
)。我们使用 "{sentence} this movie was [P]"
作为模板,并分别使用 "terrible"
和"fantastic"
分别作为负面和正面的 label tokens
。
实验结果如下表所示。我们自动构建的 prompts
比人工 prompts
更有效,而且这些 prompts
很难用人类的直觉来构建:RoBERTa
的最佳模板是 "{sentence} atmosphere alot dialogue Clone totally [P]"
。
上半部分数据为监督学习得到,下半部分为无监督的
prompts
得到。
低数据环境下的准确率:虽然 AutoPrompt
的目标是探测模型的知识,但我们也发现,它可能是低数据环境下微调的一个可行的替代方案。为了证明这一点,我们在使用训练数据中的 {10, 100, 1000}
个样本的随机子集时,测量了 AutoPrompt
的 prompts
的验证集集准确率。结果如下图所示。
我们观察到,虽然微调在情感分析上优于 AutoPrompt
,但 AutoPrompt
在 NLI
上的表现比微调更好。
数据集:SICK
。
设置:
基于 Table 3
中的模板的 prompt
来寻找 label tokens
。
gradient-based prompt search
的超参数网格搜索:
所有的 prompts
都是以用于寻找 label set
的相同模板来初始化的。
结果如下表所示,AutoPrompt
在所有实验中都大大超过了大多数基线。
首先,这里没有看到基线;其次,
AutoPrompt
也没有超过监督学习的方法。
MLM
在矛盾上的表现:我们发现,与 entailment
或 neutral
相比,contradiction
的 label tokens
更容易解释( Table 3
的例子)。我们研究这是否会损害模型在 entailment
或 neutral
类别上的表现。
我们测量了 3-way balanced SICK-E
数据集中每个标签的 precision
。BERT
在 contradiction, entailment, neutral
情况下分别获得 74.9%, 54.4%, 36.8%
的 precision
,而 RoBERTa
分别获得 84.9%, 65.1%, 57.3%
。这些结果表明,AutoPrompt
对于那些可以用自然的 label tokens
轻松表达的概念可能更准确。
数据集:LAMA
。
设置:
我们将三元组 (sub, rel, obj)
映射到模板 "{sub}[T]...[T][P]."
从而重新表述 fact retrieval
。其中,trigger tokens
是特定于关系 rel
的,正确的宾语 obj
是 label token
。
我们使用 LAMA
的原始测试集,以下简称 Original
。
我们使用 5
或 7
个 tokens
的 AutoPrompt
,并使用 T-REx
验证集选择搜索参数。
我们防止训练数据中作为 gold objects
出现的专有名词和专有 tokens
被选作 trigger tokens
。这样做是为了防止AutoPrompt
通过在 prompts
中嵌入通用答案来 "作弊"。
评估指标:mean reciprocal rank: MRR
、precision-at-1: P@1
、precision-at-10: P@10
。
结果如下表所示。
使用 AutoPrompt
生成的 prompts
可以从 BERT
中更有效地提取事实知识:相对于 LAMA
,我们在 Original
上将 P@1
提高了 12
个点。
尽管 AutoPrompt
每个关系只使用一个 prompt
,但它仍然比 LPAQA
的 ensemble
方法(对多达 30
个 prompts
的平均预测)高出约 9
个点。
使用 7
个 trigger tokens
取得的分数比 5
个 trigger tokens
略高,尽管差异不大。
RoBERTa
的表现并不比 BERT
好(右图),这值得在未来的工作中进一步调查。此外,回顾一下,prompts
是对模型知识的一个下限:较低的相对性能并不意味着模型实际上知道的更少。
数据集:T-Rex
。
配置:
我们将三元组 (sub, rel, obj)
映射到模板 "{sent}{sub}[T]...[T][P]."
从而重新表述关系提取 。其中,trigger tokens
是特定于关系 rel
的,正确的宾语 obj
是 label token
。
为了使监督下的关系提取模型的评价公平,我们修改了标准的评价:对于给定的 relation
,只要模型没有预测出主语和宾语的不同 relation
,我们就给它加分;也就是说,我们忽略了"no relation "
的预测、以及所有其他 relation
。
实验结果如下表所示。
当使用 AutoPrompt
时,MLM
可以比有监督的关系提取模型更有效地提取关系信息,提供了高达 33%
的绝对增益。
MLM
在关系提取环境中的强大结果的一个可能的解释是,他们可能已经知道许多关系。因此,他们可能会直接预测 objects
,而不是提取它们。为了分离这种影响,我们通过将测试数据中的每个 object
替换成一个随机的其他 object
,并对 prompt
进行同样的改变来人工地扰乱 relation extraction
数据集。
在扰乱的数据上,关系提取模型的准确率没有明显变化。然而 MLM
的准确率明显下降。这表明 MLM
的准确率有很大一部分来自factual knowledge
,而不是 relation extraction
。尽管如此,我们对 BERT
的 prompts
还是超过了 LAMA
和 LPAQA
对应的 prompts
,这进一步证明了 AutoPrompt
能产生更好的 prompts
。
Prompting
作为 Finetuning
的一种替代方法:在解决现实世界的任务时,prompting
比 finetuning
有一些实际的优势:
首先,在低数据量的情况下,使用 AutoPrompt
生成的 prompts
可以达到比微调更高的准确率。
此外,在试图解决许多不同的任务时,prompting
比 finetuning
更有优势。具体而言,微调需要为每个单独的任务存储大量的语言模型 checkpoints
,并大幅增加系统成本和复杂性,因为它需要在同一时间部署许多不同的模型。相反,prompting
为所有的任务应用相同的 pretrained
模型。
Prompting
的局限性:有一些现象是很难通过 prompts
从 pretrained
语言模型中引导的。在我们对 QQP
和 RTE
等数据集的初步评估中,手动生成的 prompts
、以及用 AutoPrompt
生成的 prompts
并没有表现得比随机预测好很多。然而,我们不能从这些结果中得出结论:BERT
不知道 paraphrasing
或 entailment
的意思。
AutoPrompt
的局限性:
AutoPrompt
的一个缺点是,它需要标记的训练数据。尽管其他探测技术(例如线性探测分类器)也需要这样做,但 manual prompts
依赖于领域/语言的洞察力,而不是 labeled data
。
在
AutoPrompt
中,标记的训练数据用于搜索trigger tokens
和label tokens
。
其次,与人类设计的 prompts
相比,AutoPrompt
生成的 prompts
缺乏可解释性,这与其他探测技术类似,如线性探测分类器。
AutoPrompt
的另一个限制是,当训练数据高度不平衡时,它有时会陷入困境。重新平衡训练数据可以帮助缓解这个问题。
最后,由于在大的离散的短语空间上的贪婪搜索,AutoPrompt
有时很脆弱;我们把更有效的制作技术留给未来的方向。
还有一个局限性,即:仅支持
single-token
作为label
的分类任务。
论文:
《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》
从样本中学习是许多 NLP
任务的主要方法: 一个模型是在一组标记样本上训练出来的,然后从这些样本泛化到 unseen
的数据。由于语言、领域、以及任务的数量庞大,以及数据标注的成本,在 NLP
的实际应用中,只有少量的标记样本是很常见的,这使得 few-shot learning
成为一个非常重要的研究领域。不幸的是,将标准的监督学习应用于小训练集往往表现不佳;许多问题仅仅通过观察几个样本就很难掌握。例如,假设我们得到了以下几段文字:
T1: This was the best pizza I’ve ever had.
T2: You can get better sushi for half the price.
T3: Pizza was average. Not worth the price.
此外,设想我们被告知 T1
和 T2
的标签分别是 T3
的正确标签。仅仅根据这些样本,这是不可能的,因为 T3
。这说明,如果我们还有任务描述(task description
),即帮助我们理解任务内容的文本解释,那么仅凭几个样本来解决一个任务就会变得容易得多。
随着 GPT
、BERT
和 RoBERTa
等 pretrained language model: PLM
的兴起,提供任务描述的想法对于神经架构来说已经变得可行: 我们可以简单地将这种自然语言的描述附加到输入中,让 PLM
预测 continuations
从而解决任务(GPT-2
、《Zero-shot text classification with generative language models》
)。到目前为止,这种想法大多是在完全没有训练数据的 zero-shot
场景中考虑的。
在这项工作中,我们表明,在 few-shot setting
中,提供任务描述可以成功地与标准的监督学习结合起来。我们引入了 Pattern-Exploiting Training: PET
,这是一个半监督的训练程序,使用自然语言模式将输入的样本重新表述为 cloze-style phrases
。如下图所示,PET
分三个步骤工作:
首先,对于每个模式,在一个小的训练集 PLM
进行微调。
然后,模型的 ensemble
被用来通过 soft label
来标注一个大的unlabeled dataset
最后,在 soft-labeled dataset
上训练一个标准的分类器。
这里已经得到了
的 soft label
了,为什么还需要继续训练一个标准的分类器?这是因为我们的目标不仅仅是预测未标记数据集,而是要泛化到 unseen
的数据。
我们还设计了 iPET
,这是 PET
的一个迭代式的变体:在这个过程中,这个过程反复进行,并且每次迭代时增加了训练集的规模。
在多语言的各种任务中,我们表明,只要有少量到中等数量的标记样本,PET
和 iPET
的表现就大大超过了无监督方法、监督训练和强大的半监督基线。
相关工作:
GPT-2
以自然语言模式的形式提供提示,从而用于阅读理解和问答等挑战性任务的 zero-shot learning
。这一想法已被应用于无监督文本分类、常识性知识挖掘、论证关系分类(argumentative relation classification
)。
《Zero-shot learning of classifiers from natural language quantification》
使用任务描述进行 zero-shot classification
,但需要一个 semantic parser
。
针对关系提取,《Inducing relational knowledge from BERT》
自动识别模式,该模式表达给定的关系。
《The natural language decathlon: Multitask learning as question answering》
将几个任务重新表述为 QA
问题。
T5
将各种问题形式化为语言建模任务,但他们的模式只是松散地类似于自然语言,不适合于 few-shot learning
。
最近的另一项工作是使用完形填空风格的短语来探测 PLM
在预训练期间获得的知识,这包括探测事实的和常识性的知识、语言能力、对稀有词汇的理解、以及进行符号推理的能力。LPAQA
考虑的问题是:找到表达给定任务的最佳模式。
NLP
中的其他 few-shot learning
方法包括利用相关任务的样本、使用数据增强,其中后者通常依赖于 back-translation
(《Improving neural machine translation models with monolingual data》
)并且需要大量的平行数据(parallel data
)。
使用 textual class descriptors
的方法通常假定每个类别都有丰富的样本可用。相比之下,我们的方法不需要额外的标记数据,并提供一个直观的接口来利用 task-specific
的人类知识。
iPET
背后的思想(即,在前几代标注的数据上训练多代模型)与 self-training
、 bootstrapping
方法有相似之处,这些方法用于词义消岐、关系提取、parsing
、机器翻译、序列序列生成等任务。
令 masked language model
,它的词表为 mask token
label
集合。我们把任务 token
序列所构成的短语空间;例如,如果
我们将模式(pattern
)定义为一个函数 mask token
。也就是说,verbalizer
为一个injective function
label
映射到词汇 pattern-verbalizer pair: PVP
。
”模式“ 其实就是模版,它们都是将输入的一个或多个句子转换为一个句子。
使用PVP
input representation
mask token
。例如,考虑识别两个句子 verbalizer
"Yes"
、将 "No"
。给定一个 input pair
的例子:
现在的任务已经从分配一个没有固有意义的标签,变成了回答 masked position
最可能的选择是"Yes"
还是 "No"
。
核心问题是:
PVP
从何而来?
PVP Training and Inference
:令 PVP
。我们假设可以获得一个小的训练集 mask token
的序列 masked position
取值为
然后在所有标签上通过 softmax
获得概率分布:
我们使用 ground-truth
分布(一个 one-hot
)之间的交叉熵来作为损失函数,从而用于微调
注意:这里并没有调优
prompts
,而是微调模型。即:微调模型,使得模型来匹配 prompts
。注意:这里微调的是模型的
head
,模型的head
以外的参数保持冻结。
prompt engineering
的思路是:调优/微调prompts
,使得prompts
来匹配模型。因此,
PET
是微调输出侧(LM head
)、prompt engineering
是微调输入侧(LM input
)。
Auxiliary Language Modeling
:在我们的应用场景中,只有少量训练样本可用,而且可能发生灾难性遗忘。由于针对某些 PVP
进行微调的 PLM
的核心仍然是一个语言模型,我们通过使用语言建模作为辅助任务来解决这个问题。用
这个想法最近 《An embarrassingly simple approach for transfer learning from pretrained language models》
应用在一个数据丰富的场景中。由于
这就是半监督学习的由来:监督信号来自于
、无监督信号来自于 。 这个超参数
需要较大的验证集来调优。
为了获得用于语言建模的句子,我们使用未标记的数据集 masked slot
进行任何预测。
Combining PVPs
:我们的方法面临的一个关键挑战是,在没有大型验证集的情况下,很难确定哪些 PVP
表现良好。为了解决这个问题,我们使用了一种类似于知识蒸馏的策略(《Distilling the knowledge in a neural network》
)。
首先,我们定义了一组PVP
,这些 PVP
对给定的任务
模板怎么定义?模板的选择至关重要,然而论文没有回答这个问题。
然后我们使用这些 PVP
如下:
(1)
:如前所述,我们为每个 PVP
,这种微调也很便宜。
(2)
:我们使用所有 finetuned
模型的 ensemble
class score
合并为:
其中:PVP
的权重因子。
我们实验了两种权重因子:简单地对所有的 uniform
和 weighted
。LPAQA
在 zero-shot setting
中使用了一个类似的想法。
我们使用 softmax
将上述分数转化为概率分布 《Distilling the knowledge in a neural network》
,我们使用 soft distribution
。所有的 pair
soft-labeled
训练集
为什么用
?这里应该在验证集上调优。
(3)
:我们在 sequence classification head
对 PLM
然后,经过微调的模型 Figure 2
中描述;一个例子如 Figure 1
所示。
物理含义:
训练期间:基于每个模板来微调,从而为每个模板得到一个
finetuned LM
。推断期间:将每个
finetuned LM
的预测结果进行投票(平均投票、或者按照预测能力进行投票)。
将所有各个模型的知识蒸馏成单个分类器
为了弥补这一缺陷,我们设计了 iPET
,一个关于 PET
的迭代式变体。iPET
的核心思想是:在越来越大的数据集上训练多代模型。为此:
首先,我们随机选择一些训练好的 PET
模型,然后用这些模型标注来自 Figure 2(a)
。
然后,我们在扩大的数据集上训练新一代的 PET
模型,参考 Figure 2(b)
。
这个过程要重复几次,参考 Figure 2(c)
。
更正式地,令 PET
模型,其中 PVP
PVP
的数量。我们训练
即:除了初始的监督信号来自于
之外,后续的监督新来都来自前一轮的 soft label
。
在每轮迭代中,我们将训练集的大小乘以一个固定的常数
每次迭代时,并不是使用所有的未标记数据,而是选择预测效果最好(通过
来衡量)的一批未标记数据。这类似于标签传播的思路。
从前一代中随机选择
注意:这是用其它
finetuned LM
来 ”训练“ 当前的第个 finetuned LM
,这和self-training
有一定差异。
使用这个模型集合,创建标记数据集:
对于每个
因为最终的数据集还包含原始的监督数据集
,因此只需要选择 标签为 的 个样本。
为了避免在错误标记的数据上训练下一代模型,我们倾向于选择模型的 ensemble
对其预测有信心的例子。基本的直觉是,即使没有 calibration
,标签被预测为高信心的样本通常更有可能被正确分类(《On calibration of modern neural networks》
)。因此,当从
我们定义
在训练了 PET
模型后,我们使用 basic PET
那样训练
经过小幅度调整,iPET
甚至可以在 zero-shot setting
下使用。
为此,我们定义 untrained models
集合,10
个样本上训练的,这 10
个样本在所有标签上平均分布 。由于 100
个样本
即,这里并没有标记数据集
,因此 是未经过微调的。
对于随后的每一代,我们完全按照 basic iPET
进行。
整体过程又臭又长,都是规则公式,而且没有理论指导和实验说明、效果又不好、找到的
verbalizers
的解释性较差,因此不推荐这里的方法(还不如人工设计)。
给定一组模式 token
相对应的 verbalization
automatic verbalizer search: AVS
,这是在给定训练集 verbalizers
的程序。
这
个模式从何而来?作者未说明。
假设我们已经有一个PVP
token
verbalization
。为此,我们定义
其中:
物理含义:类别
上的平均概率、类别 上的平均概率,二者之间的差值。
这可以让我们很容易地计算出 verbalization
,因为:
verbalizations
AVS
解决这个问题的方法如下: 我们首先给所有的标签分配随机的verbalizations
,然后重复地重新计算每个标签的最佳 verbalization
。由于我们不希望得到的verbalizer
强烈地依赖于初始的随机分配,我们只需考虑多个这样的分配。
具体来说,我们定义一个初始概率分布 verbalization
的概率。对于每个 verbalizers
物理含义:
作为 verbalizer
在所有个模版上的平均表现。
这些分数使我们能够定义一个概率分布,这个概率分布能更紧密地反映一个单词作为给定标签的 verbalizer
的适合程度:
其中:
我们重复这个过程,得到概率分布的序列 tokens
作为 verbalizers
。在训练和推理过程中,针对每个标签,我们通过 verbalizers
上进行平均计算出 unnormalized
分数
我们分析了 AVS
在所有任务中的表现,其中 token
tokens
中,我们只保留 10k
个 tokens
。
结果显示在 Table 7
中。可以看出,精心手工制作的 verbalizers
比 AVS
的表现好得多;然而,PET
与 AVS
的表现仍然大大优于常规的监督训练,同时消除了手工寻找合适的 verbalizers
的挑战。
Table 8
显示了在 Yelp
数据集上使用AVS
找到的最有可能的 verbalizers
。虽然这个数据集的大多数 verbalizers
在直觉上是有意义的,但我们发现 AVS
在为 Yahoo
数据集的 10
个标签中的 3
个、以及 MNLI
数据集的所有标签寻找良好的 verbalizers
时遇到困难。
数据集:Yelp Reviews
、AG’s News
、Yahoo Questions
、MNLI
。此外,我们使用 X-stance
来研究 PET
对其他语言的效果如何。
预处理:在一些使用的数据集中,换行是通过字符序列 "\n"
来表示的。由于 RoBERTa
和 XLM-R
的词表没有换行,我们用一个空格来代替这个 "\n"
。除了将所有的样本缩短到最大序列长度 256
个 tokens
之外,我们不进行任何其他预处理。
评估指标:Yelp, AG's Nes, Yahoo, MNLI
采用准确率;x-stance
采用 macro-average of F1
。
配置:
对于所有的英语数据集,我们使用 RoBERTa_large
;对于 X-stance
,我们使用 XLM-R
。
我们调查了 PET
和所有 baseline
在不同训练集大小下的表现;每个模型使用不同的种子训练三次,并报告平均结果。
由于我们考虑的是 few-shot setting
,我们假设无法获得可以优化超参数的大型验证集。因此,我们对超参数的选择是基于以前工作中的选择和实际考虑:学习率 1e-5
、batch size = 16
、最大的序列长度为 256
。
这种超参数的选择不太科学。
除非另有说明,我们总是使用 PET
的 weighted
变体,并采用辅助语言建模。
对于 iPET
:
我们设定 25%
来为下一轮迭代来标注样本,并在每次迭代中将训练样本的数量增加五倍。
我们训练多轮迭代 ,直到每个模型至少被训练了1000
个样本,也就是说,我们设置
由于我们总是重复训练三次,所以 PVP
的 ensemble
进一步的超参数和对我们所有选择的详细解释见附录 B
。
Patterns
:这里我们描述用于所有任务的 patterns
和 verbalizers
。我们使用 "||"
来标识文本 segments
之间的边界。
这里采用的全部都是人工定义的模式。
Yelp
:该任务是基于客户的文本评论来估计客户给餐馆的打分,打分从 1
星到 5
星。
对于给定的输入文本
xxxxxxxxxx
P1(a) = It was _. a
P2(a) = Just _! || a
P3(a) = a. All in all, it was _.
P4(a) = a || In summary, the restaurant is _.
对于所有的模式,我们定义单个 verbalizer
xxxxxxxxxx
v(1) = terrible v(2) = bad v(3) = okay v(4) = good v(5) = great
AG’s News
:该任务是给定新闻的标题 Word(1), Sports(2), Business(3), Science/Tech(4)
。对于
xxxxxxxxxx
P1(x) = _ : a b
P2(x) = a ( _ ) b
P3(x) = _ - a b
P4(x) = a b ( _)
P5(x) = _ News: a b
P6(x) = [ Category: _ ] a b
我们使用一个 verbalizer
,它将整数 1/2/3/4
分别映射到字符串 "World"/"Sports"/"Business"/"Tech"
。
Yahoo
:该任务是给定一个问题 AG’s News
相同的模式,但是将 "News"
替换为单词 "Question"
。
我们使用一个 verbalizer
,它将整数 1/2/3/4/5/6/7/8/9/10
分别映射到字符串 "Society"/"Science"/"Health"/"Education"/"Computer"/"Sports"/"Business"/"Entertainment"/"Relationship"/"Politics"
。
MNLI
:该任务是文本蕴含任务,给定文本 pair
label = 0
)、label = 1
)、label = 2
)。我们定义如下的模式:
xxxxxxxxxx
P1(x)= "a"? || _, "b"
P2(x)= a? || _, b
我们考虑如下的两种不同的 verbalizers
xxxxxxxxxx
v1(0) = Wrong v1(1) = Right v1(2) = Maybe
v2(0) = No v2(1) = Yes v2(2) = Maybe
将这两种模式与两个 verbalizers
结合起来,共产生了 4
个 PVP
。
X-Stance
:每个样本 label = 0
)还是反对(label = 1
)。我们使用两个简单的模式:
xxxxxxxxxx
P1(x) = "a" || _. "b"
P2(x) = a || _. b
我们定义了一个英语 verbalizer
0
映射到 "Yes"
、将 1
映射到 "No"
;定义了一个 French (German) verbalizer
"Yes"/"No"
替换为 "Qui"/"Non"
("Ja"/"Nein"
)。我们没有定义 Italian verbalizer
,因为 X-stance
不包含任何意大利语的训练样本。
英语数据集:下表显示了英语文本分类和语言理解任务的结果,我们报告了三次 training runs
的平均准确率和标准差。
第 1-2
行(L1-L2
)显示了无监督的性能,即没有任何微调的单个 PVP
(类似于 GPT-1
)。我们同时给出了所有 PVP
的平均结果( avg
)、以及在测试集上效果最好的 PVP
的结果(max
)。两行之间的巨大差异突出了应对以下事实的重要性:如果不看测试集,我们就没有办法评估哪些 PVP
表现良好。
第三行表明,在所有的数据集上,Zero-shot iPET
明显优于无监督的基线( L3 vs L1
)。在 AG’s News
上,Zero-shot iPET
甚至比有1000
个样本的标准监督训练表现更好( L3 vs L13
)。
在只有 10
个训练样本的情况下,标准的 supervised learning
的表现并没有超过随机( L4
)。相比之下,PET
(L5
)的表现比完全无监督的基线(L1-L2
)要好得多。使用 iPET
(L6
)迭代多轮,可以得到持续的改进。
随着我们增加训练集的大小,PET
和 iPET
的性能提升变得更小。对于 50
和 100
个样本,PET
继续大大超过标准的监督训练( L8 vs L7
,L11 vs L10
);iPET
(L9
,L12
)相比 PET
仍然给予一致的改善。
对于 PET
在AG
上相对于监督学习没有优势,但仍然提高了所有其他任务的准确率( L14 vs L13
)。
与 SOTA
的比较:我们将 PET
与 UDA
(《Unsupervised data augmentation for consistency training》
)和 MixText
(《Mix-Text: Linguistically-informed interpolation of hidden space for semi-supervised text classification》
)进行比较,这两种 SOTA
的 NLP
半监督学习方法依赖于数据增强。PET
要求任务可以用模式来表达,并且要找到这样的模式;而 UDA
和 MixText
都使用 back-translation
,因此需要成千上万的标记样本来训练机器翻译模型。
我们使用 RoBERTa-base
进行比较,因为 MixText
是专门针对 12
层的 Transformer
的。 UDA
和 MixText
的原始论文都使用大型验证集来优化 training steps
的数量。相反,我们直接在测试集上尝试这两种方法的几个值,并仅报告获得的最佳结果。尽管如此,Table 2
显示,PET
和 iPET
在所有任务中的表现都大大超过了这两种方法,清楚地表明了以 PVP
的形式纳入人类知识的好处。
对于
UDA
和MixText
,作者这里将测试集作为验证集来使用,这会高估这两个模型的表现。
X-Stance
:我们在 x-stance
上评估了 PET
,以研究 PET
是否对英语以外的语言有效、以及当训练集具有中等规模时 PET
是否也会带来改进。与 《X-stance: A multilingual multi-target dataset for stance detection》
相比,我们没有在验证集上进行任何超参数优化调优,并使用较短的最大序列长度( 256 vs 512
)来加速训练和评估。
为了研究 PET
是否在有大量样本时也能带来好处,我们考虑了 1000/2000/4000
的训练集规模。对于每一种配置,我们分别独立地微调法语模型和德语模型,以便对训练数据进行更直接的下采样。
此外,我们在整个法语( verbalizers
,对于德语则使用 verbalizers
。
最后,我们还研究了在法语和德语数据上联合训练的模型的性能(
结果如下表所示。遵从 《X-stance: A multilingual multi-target dataset for stance detection》
,我们报告了 label 0
和 label 1
的 macro-average of the F1
,在三次运行上取平均平均值。对于意大利语("It"
列),我们报告了德语和法语模型的平均 zero-shot
跨语言性能,因为没有意大利语训练样本。我们的结果表明,即使在超过 1000
个样本的训练中,PET
在所有语言中都带来了巨大的改进;它还大大地提高了 zero-shot
跨语言的性能。
Combining PVPs
:我们首先调查 PET
是否能够应对一些 PVP
的表现比其他 PVP
差很多的情况。对于 PET
与表现最好和最差的模式的性能;我们还包括使用 PET
模型的 ensemble
得到的结果,这些模型对应于没有知识蒸馏的单个 PVP
(即,没有在
对于 finetuned
模型,最佳模式和最差模式之间的差距也很大,特别是对 Yelp
而言。
然而,PET
不仅能够弥补这一差距,甚至比在所有任务中只使用表现最好的模式更能提高准确率。
知识蒸馏比 ensemble
带来了一致的改进;此外,它还大大减少了最终分类器的 size
。
我们发现 PET
的 uniform
变体和 weighted
变体之间没有明显区别。
Auxiliary Language Modeling
:我们分析了辅助语言建模任务对 PET
性能的影响。下图显示了添加语言建模任务对四种训练集规模的性能改进。可以看到:
在只有 10
个样本的训练中,辅助任务是非常有价值的。
随着数据的增加,辅助任务变得不那么重要,有时甚至导致更差的性能。
只有在 MNLI
中,我们发现辅助语言建模一直都有帮助。
Iterative PET
:为了检查 iPET
是否能够在多轮迭代中改善模型,下图显示了所有轮次的模型在 zero-shot setting
中的平均性能。每一次额外的迭代确实能进一步提高 ensemble
的性能。我们没有研究继续这个过程进行更多的迭代是否会有进一步的改善。
另一个自然的问题是,通过更积极地增加训练集的大小,是否可以用更少的迭代获得类似的结果。为了回答这个问题,我们跳过 AG's News
和 Yahoo
的第2
代和第 3
代,对于这两项任务,直接让 ensembl
In-Domain Pretraining
:与我们的监督基线不同,PET
利用了额外的未标记数据集 PET
相对于监督基线的性能提升至少有一部分可能来自于这个额外的 in-domain data
。
为了测试这一假设,我们只需在 in-domain data
上进一步预训练 RoBERTa
,这是提高文本分类准确性的常见技术。由于语言模型预训练在 GPU
使用方面很昂贵,我们只对 Yelp
数据集进行了预训练。下图显示了 with/without
这种 in-domain pretraining
的监督学习和 PET
的结果。虽然预训练确实提高了监督训练的准确率,但监督模型的表现仍然明显比 PET
差,这表明我们的方法的成功不仅仅是由于使用了额外的未标记数据。
有趣的是,in-domain pretraining
对 PET
也有帮助,表明PET
利用未标记数据的方式明显不同于标准的 masked language model pretraining
。
论文
《It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners》
在海量语料库上预训练越来越大的语言模型导致了 NLP
的巨大改进。一个标准的方法是用一个 task-specific head
来取代 pretrained model
的输出层,并在一组 labeled training data
上微调整个模型。然而,语言建模不仅是一个强大的预训练目标,而且许多任务可以被重新表述为完形填空问题,允许 pretrained
语言模型在没有任何标记样本、或只有极少数标记样本下解决这些问题(GPT-2
、PET
)。
最近,《Language models are few-shot learners》
介绍了 GPT-3
,一个拥有 175B
参数的 pretrained
语言模型,并表明它具有惊人的 few-shot
能力: 通过将任务重新表述为语言建模问题,GPT-3
在只给定 32
个标记样本的情况下,对一些 SuperGLUE
任务取得了接近 SOTA
的结果。这是通过 priming
来实现的: GPT-3
被馈入了一些 demonstrations
(由输入和对应的输出组成)从而上下文来用于预测,但没有进行梯度更新。虽然使用起来很简单,但这种方法有两个主要缺点:
它需要一个巨大的语言模型才能很好地工作,这使得它在许多现实世界的场景中无法使用,并导致了巨大的碳足迹(carbon footprint
)。
它不能扩展到更多的样本,因为大多数语言模型的上下文窗口被限制在几百个 tokens
。
priming
的另一个替代方案是 pattern-exploiting training: PET
,它结合了将任务重新表述为完形填空问题、以及常规的 gradient-based fine-tuning
的思想。虽然 PET
还需要未标记的数据,但对于许多现实世界的应用,未标记的数据比标记样本更容易获得。最重要的是,PET
只在语言模型所预测的答案对应于其词表中的单个 token
时才起作用;这是一个严重的限制,因为许多任务不容易被这样表述。
PET
还需要在未标记数据上进行微调(仅微调LM head
),其中未标记样本的soft label
是通过model ensemble
来自动生成的。
在这项工作中,我们使 PET
适用于需要预测多个 tokens
的任务。然后我们表明,结合 ALBERT
,PET
及其迭代式变体(iPET
)在SuperGLUE
上的表现都优于 32-shot GPT-3
,而只需要 GPT-3
的 0.1%
的参数(如下图所示)。此外,用 PET
训练可以在单个 GPU
上几个小时完成,而不需要昂贵的超参数调优。最后,我们表明,在缺乏未标记数据的情况下也可以实现类似的性能,并详细分析了促成 PET
强大性能的因素:它结合多种任务形式的能力、它对难以理解的措辞的弹性、它对标记数据的使用、以及底层语言模型的特性。鉴于 PET
的 "绿色" 特性,我们认为我们的工作是对环境友好的 NLP
的一个重要贡献。
这篇论文是
PET
的扩展,将PET
从输出single token
的任务扩展到输出multi tokens
的任务。主要思想是:muli tokens output
概率拆分为多个single tokens output
的概率乘积。
相关工作:通过提供任务描述使语言模型能够进行 zero-shot learning
是由 GPT-2
提出的,并已被应用于文本分类、常识性知识挖掘、论证关系分类(argumentative relation classification
)。它也常用于探测语言模型中所包含的知识。
由于找到将任务重新表述为被语言模型很好理解的完形填空问题的方法很困难(LPAQA
),《Exploiting cloze questions for few shot text classification and natural language inference》
提出了PET
,该方法使用知识蒸馏(《Distilling the knowledge in a neural network》
)和自训练来轻松结合几个 reformulations
。
我们修改后的 PET
版本使用 masked language model
为文本序列分配概率;这类似于以生成方式使用它们(《BERT has a mouth, and it must speak: BERT as a Markov random field language model》
),之前 《Masked language model scoring》
和 《Mask-predict: Parallel decoding of conditional masked language models》
已经研究过。
与使用基于梯度的优化的 PET
相比,GPT-2
和 GPT-3
研究了 priming
,其中样本作为上下文,但不进行参数更新。
最后,我们专注于减少 few-shot learning
所需的计算量,这与绿色人工智能中旨在提高模型效率的其他努力密切相关,包括知识蒸馏的技术、剪枝、量化、以及推理期间的 early exit
策略。
令 masked language model: MLM
,mask token
。我们把所有的 token
序列的集合表示为 masks
的 token
序列 masked position
取值为 softmax
之前的 logits
用 PET
需要一组 pattern-verbalizer pairs: PVPs
。每个 PVP
一个模式 mask
的完形填空问题。
一个 verbalizer
token
,这个 token
代表输出在模式中的 task-specific
含义。
如下图所示,PET
的核心思想是:从 masked position
的 "correct" token
的概率中,推导出
其中:masked position
的原始得分,masked position
。
对于一个给定的任务,在没有大的验证集的情况下,识别表现良好的 PVP
是具有挑战性的。因此,PET
使多个PVP
的组合
(1)
:对于每个 PVP
MLM
。在实践中,PET
为每个模式训练三个 MLM
,因为性能在不同的 runs
中会有很大的不同。
一共
种模式,所以一共微调得到了 个模型。
(2)
:finetuned MLM
的 ensemble
被用来标注一组未标记的样本:每个未标记的样本 soft labels
。
其中:
(3)
:所得的 soft-labeled dataset
通过最小化模型输出和
这里仅仅微调
LM head
,冻结了语言模型的绝大多数的参数。
由于上述步骤 (2)
和 (3)
与知识蒸馏非常相似(《Distilling the knowledge in a neural network》
),我们也将其简单称为蒸馏。重要的是,这个过程不需要在内存中同时保存整个 MLM
的 ensemble
,因为每个模型的预测都可以按顺序地计算;因此,它并不比使用单个模型更耗费内存。
为了让在不同模式上训练的 MLM
有更多机会相互学习,《Exploiting cloze questions for few shot text classification and natural language inference》
还提出了 iPET
,这是 PET
的一个迭代式的变体,其中若干代模型在由前几代模型所标记的、规模越来越大的数据集上训练。其实现方式如下:
首先,像常规 PET
一样训练 MLM
的 ensemble
。对于每个模型 sofe labeled
样本上,选定的模型子集对其预测最有信心。
然后,每个
这个过程要重复几次,每次都要把
关于进一步的细节,我们参考PET
原始论文。
PET
的一个重要局限性是,verbalizer
token
,这对许多任务来说是不可能的。因此,我们将 verbalizers
泛化为函数 inference
和 training
做一些修改。
我们进一步推广 PET
,因为我们不认为输出空间对每个输入都是相同的:对于每个 PVP
token
数量, mask token
被替换为 masks
的
作为一个例子,我们考虑对具有标签 P(x) = x. It was _.
和一个 verbalizer
verbalizer
将 +1
映射到单个 token "great"
、将 -1
映射到序列 "terri" "ble"
,也就是说,我们假设 MLM
的 tokenizer
将单词 "terrible"
分割成两个 token
: terri
和 ble
。在这个例子中,对于所有的 Figure 3(a)
所示。
Inference
:对于 MLM
的信心选择 next token
进行预测。也就是说,我们设置
其中:
请注意,与原始 PET
不同,sum
结果不等于 1.0
。
上式的物理含义为:
首先,在给定
的条件下,对每个 masked position
,预测对应的tokens
。然后,选择预测概率最大的
masked position
(记做)、及其对应的 token
(记做)。 最后,我们计算下面两项的乘积:
给定
的条件下,第 个 masked position
对应的token
为的概率。 给定
以及第 个 masked position
为的条件下,剩余的 masked positions
分别为的概率。 其中
可以递归地计算。
对于我们的情感分类例子,Figure 3
说明了
由于 token
的概率(Figure 3(a)
)。
然后,我们选择概率最高的 token
,把它放在相应的 mask token
的位置上,并使用产生的完形填空问题 token
的概率( Figure 3(b)
)。
最后,对于
Training
:对每个训练样本
始终插入所要求的最大数量的 mask tokens
从而表达任意输出。
对于每个 token
,其中我们简单地忽略模型对所有 mask tokens
的预测:
对于我们的例子,这意味着我们通过如下的计算来近似
这可以在一次前向传播中完成,因为它只需要处理一次 Figure 3(a)
中的完形填空问题
即,训练期间并行解码。注意,测试期间采用了不同的解码方式:每次选择概率最大的
token
来解码。
由于 multiclass hinge loss
并最小化:
也就是说,我们要求 1
。
我们在 SuperGLUE
上对 PET
和 GPT-3
进行了比较。我们无法使用与 GPT-3
完全相同的训练数据来评估PET
,因为对于大多数任务,对于每个测试样本,GPT-3
使用不同的训练数据集;而对于其他任务,GPT-3
无法提供 request
所对应的训练数据集。然而,样本的确切选择对GPT-3
的性能影响不大。因此,我们通过使用固定的随机种子为每个任务随机选择 32
个样本来创建新的训练集。
我们还为每个任务创建了多达 20k
个未标记样本,这是通过从原始训练集中删除所有标签来完成的。我们把产生的训练样本和未标记样本的集合称为 FewGLUE
。
任务:我们描述每个 SuperGLUE
任务和我们相应的 PVP
。我们使用竖线("|"
)来标识文本片段之间的边界。在考虑的八个任务中,只有 COPA, WSC, ReCoRD
需要使用具有 multi masks
的 PET
。
BoolQ
:是一个问答任务,每个样本由一段话 "yes/no"
问题
xxxxxxxxxx
p. Question: q? Answer: _.
p. Based on the previous passage, q? _.
Based on the following passage, q? _. p
我们定义了两个 verbalizers
,分别将包含真实陈述的问题映射为 yes/true
,将虚假陈述的问题映射为 no/false
,总共有 6
个 PVP
。
CB
和 RTE
是像 MNLI
一样的文本蕴含任务,所以我们使用与PET
类似的 PVP
。对于一个前提
xxxxxxxxxx
h?| _, p
"h"?| _, "p"
h?|_. p
"h"?|_. "p"
我们使用一个 verbalizer
,它将蕴含关系映射为 yes
、矛盾关系映射为 no
、中性关系映射为 maybe
。
给定一个前提 COPA
的任务是在给定两个选项 cause
)或效果(effect
)。
为了确定效果,我们使用以下模式:
xxxxxxxxxx
"c1" or "c2"? p, so _.
c1 or c2? p, so _.
对于确定原因,我们使用相同的模式,但用 because
代替 so
。
用于 verbalizer
是一个恒等映射,即将
对于 WiC
,给定一个词
xxxxxxxxxx
"s1" / "s2". Similar sense of "w"? _.
s1 s2 Does w have the same meaning in both sentences? _
w. Sense (1) (a) "s1" (_) "s2"
对于前两种模式,如果 yes
作为 verbalization
,否则采用 no
。对于第三种模式,我们用 b
和 2
作为 verbalization
。
对于 WSC
,每个样本由一个带有标识的代词 T5, GPT-3
,将WSC
作为一个生成任务。我们用星号来突出
xxxxxxxxxx
s The pronoun '*p*' refers to __.
s In the previous sentence, the pronoun '*p*' refers to __.
s In the passage above, what does the pronoun '*p*' refer to? Answer: __.
我们使用恒等映射作为 verbalizer
。请注意,WSC
与其他任务不同,它需要自由形式的文本补全。这反过来又要求在训练和推理过程中进行一些修改,这些修改将在附录 A
中讨论。
MultiRC
:是一个问答任务。给定一个段落 BoolQ
相同的 verbalizer
和类似的模式:
xxxxxxxxxx
p. Question: q? Is it a? _.
p. Question: q? Is the correct answer "a"? _.
p. Based on the previous passage, q? Is "a" a correct answer? _.
对于 ReCoRD
,给定一个段落 PVP
的空间很小,所以我们只使用了一个平凡的 PVP
:把 verbalizer
。由于只有一个 PVP
,就不需要进行知识蒸馏,所以我们直接使用产生的模型作为我们的最终分类器。
数据集的统计数据如下表所示。
数据预处理:我们不进行任何预处理,只是将所有的样本缩短到最大的序列长度。
配置:作为 PET
的底层的语言模型,我们选择 ALBERT-xxlarge-v2
,这是在常规的完整大小的训练集上进行训练得到的、在 SuperGLUE
上表现最好的 MLM
。我们使用同一模型,并辅以 sequence classification head
,作为我们的最终分类器。
我们在 FewGLUE
训练集上为所有的 SuperGLUE
任务运行 PET
。我们不使用任何验证集来优化超参数;相反,我们使用与《Exploiting cloze questions for few shot text classification and natural language inference》
完全相同的设置和超参数,如下表所示。唯一的区别是对于 iPET
,我们仅训练 3
代模型以加快训练速度。
对于 COPA, WSC, ReCoRD
,我们使用我们提出的对 PET
的修改,从而支持 verbalizers
将标签映射到多个 tokens
;对于所有其他任务,我们使用常规 PET
。我们在所有任务上训练 iPET
,但 COPA, WSC
除外,因为它们的未标记数据集包含远低于 1,000
个样本;ReCoRD
也除外,因为我们只使用一个 PVP
,所以 iPET
对其没有意义。对于这三项任务,我们只是简单地复用常规 PET
的结果。
COPA
:对于 COPA
,我们在训练期间以 50%
的概率随机切换两个选项 PET
模型,我们从每个 PVP
logits
,即 RoBERTa
提出的输入格式。
WiC
:与 COPA
类似,我们在训练期间随机切换输入句子 "|"
标识着两个文本段的边界。
WSC
:与其他 SuperGLUE
任务不同, T5
和 GPT-3
的 WSC formulation
要求自由地补全,这意味着对于每个句子
然而,在许多情况下,这将使语言模型很容易根据提供的 masks
的数量识别出正确的 target
,因此我们通过随机添加最多三个额外的 mask tokens
来修改每个 target
,对于这些mask tokens
,我们要求模型预测一个特殊的 <pad> token
。对于推理,我们总是只随机添加一个 mask token
,以确保多次评估的结果一致,并按照前文所述进行贪婪解码。然后,我们遵从 T5
的做法,将语言模型产生的输出映射到标签
对于蒸馏,给定一个未标记样本 PET
模型提供输入,其中 "|"
是两个文本片段之间的边界,并在
MultiRC
:与PET
使用的超参数不同,我们在训练和推理过程中对 MultiRC
使用最大序列长度为 512 tokens
,因为我们发现许多段落的长度远远超过 256 tokens
。最终序列分类模型的输入形式为 "|"
是两个文本片段之间的边界。
ReCoRD
:对于 ReCoRD
,我们再次使用最大序列长度为 512
,因为许多段落需要超过 256 tokens
。对于一些问题 ReCoRD
训练集包含大量的答案候选者。为了方便训练,我们把每个样本拆分为多个样本:令 9
个负样本,为每个 10
个答案候选。
我们的主要结果显示在 Table 1
中。可以看到:
带PET
的 ALBERT
的表现与 GPT-3 175B
模型相似,后者比前者大 785
倍。
平均而言,PET
的性能比 GPT-3 Med
这个大小相似的模型要好 18
个点。
在我们使用 iPET
的 5
个任务中,有 3
个任务的性能得到了进一步的提高,最明显的是 CB
;但在 MultiRC
任务上,性能略有下降。
尽管 PET
的性能很强,但它的性能显然还是比在常规的、full size
的 SuperGLUE
训练集上训练的 SOTA
模型更差。
我们研究了几个因素对 few-shot
性能的重要性:模式和 verbalizers
的选择、未标记数据和标记数据的使用、以及底层语言模型的属性。我们还研究了我们提出的对 PET
的修改从而与 multiple masks
一起工作,并将其与各种 baseline
进行比较。最后,我们衡量了选择不同的训练样本集合对性能的影响。我们的分析集中在 PET
上,因为 GPT-3
并不公开可用。
Patterns
:将任务重新表述为完形填空问题的方式会对性能产生巨大影响。这些 reformulations
可以是任意复杂的。例如,GPT-3
针对 WSC
所使用的模式包含一个近 30
个单词的 introductory section
。目前还不清楚这种 formulation
能否、以及如何被优化。为了研究模式和 verbalizers
的重要性,我们比较了三组 PVP
:我们在前面内容中定义的初始集合(记做 GPT-3
使用的单个 PVP
(记做
我们用具有三组模式的 PET
来训练 ALBERT
。所选择的 SuperGLUE
任务的结果显示在 table 2
(顶部)。可以看到:
GPT-3
使用的 PVP
在 RTE
上优于我们的 PVP
,而我们的 PVP
在 MultiRC
上表现得更好。这些性能上的巨大差异凸显了找到良好的方法来表述任务为完形填空问题的重要性。由于在没有对大量的样本进行尝试的情况下,很难确定哪些模式表现良好,因此,few-shot
方法的一个关键挑战是:如何弥补语言模型不能很好理解的 PVP
。
从用 PET
能够做到这一点:结合所有的 PVP
不仅能够补偿 RTE
上、以及 MultiRC
上的较差表现,而且与表现最好的一组模式相比,它甚至进一步提高了三个任务的平均性能。这清楚地表明了精心设计一组合适的模式的潜力,而不是仅仅选择单个 formulation
而不对其有效性进行评估。
未标记数据的使用:与 GPT-3
不同,PET
需要未标记数据来将所有基于单个 PVP
的模型的知识蒸馏成单个分类器。对于 iPET
,未标记数据还被用来为未来几代模型生成训练集。其基本假设是可以很容易地获得未标记数据,但在现实世界中可能并不总是如此。因此,我们研究了未标记数据对常规 PET
的重要性。为此,我们比较了 PET
中最终分类器的性能、以及直接使用对应于每个 PVP
的模型的 ensemble
的性能。虽然使用这个 ensemble
完全消除了对未标记数据的需求,但由于我们遵循 PET
的默认设置并且每个 PVP
训练三个模型,PVP
的 ensemble
比 distilled model
要大 PVP
,ensemble
也比 GPT-3
小两个数量级。
由于微调仅仅作用在
LM head
上,因此个 PVP
的ensemble
可以共享底层的、被冻结的LM body
,所以没有比distilled model
大倍。
没有蒸馏的结果可以在 Table 2
(底部)看到。从三个任务的平均值来看,ensemble
的表现甚至比 distilled classifier
更好。这表明,如果目标只是为了达到良好的性能,那么未标记数据是没有必要的;但是,为了获得单个的、轻量级的模型作为 final classifier
,则是需要的。
这是否说明了:对于
PET
,没有必要进行花里胡哨的蒸馏?此外,对于
iPET
,蒸馏是否有必要?
下图说明了用 iPET
训练多代的好处。对于除 MultiRC
以外的所有任务,从第一代到第二代都有很大的改进,而第三代只实现了轻微的额外改进。平均而言,标准差在后面几代中有所减少,这说明模型之间相互学习,其预测结果趋于一致。最后的蒸馏步骤为除MultiRC
之外的所有任务带来了进一步的改进,并将三次 training runs
的标准差降低到几乎为零,说明 PET
和 iPET
是减少微调不稳定性的有效手段。
当然,还有进一步的方法来利用未标记数据,如在微调期间保持一个辅助的语言建模目标(《An embarrassingly simple approach for transfer learning from pretrained language models》
)。虽然我们把调研额外使用这类方法的影响留给未来的工作,但我们注意到,它们可以很容易地应用于 PET
,而没有直接的方法将它们与 priming
相结合。
标记数据的使用: 我们接下来研究标记数据使用方式的影响,这是 priming
和 PET
之间的关键区别之一。
我们首先将 PET
与常规的监督训练(即不使用任何模式)、以及完全无监督的模型(即使用所有 PVP
但没有 labeled
训练样本的 ensemble
)进行比较。给定 32
个样本,PET
明显优于两个 baseline
( Table 3
)。
我们接下来将 PET
与 priming
进行直接的比较。然而,我们不能用 ALBERT
来做,因为它只能处理最多 512 tokens
的序列,这对一组32
个样本来说是不够的。我们改用 XLNet
来做这个比较。如 Table 3
所示,XLNet
总体上表现比 ALBERT
差。更重要的是,带有 PET
的 XLNet
的表现要比 priming
好得多。
我们无法在 MultiRC
上用 priming
获得结果,因为 FewGLUE
中的 32
个样本需要超过 10k tokens
,所以用标准的Transformer
无法处理它们,因为自注意的复杂性是序列长度的平方。这突出了 priming
的另一个重要问题: 它不能很好地扩展到超过少数几个样本;即使是 GPT-3
也只能处理多达 2048 tokens
的序列。虽然有一些Transformer
变体可以处理更长的上下文,但这种模型在多大程度上能很好地利用 long context spans
上的 priming examples
,还有待研究。
priming
是无监督的,因此它的效果不如PET
,这是可以预期的。
我们通过更仔细地观察 GPT-3
的结果来进一步研究 priming
的有效性。为此,Figure 5
显示了在每个任务和模型大小的情况下,用 32
个样本给GPT-3
执行 priming
、以及只用一个样本来 priming
之间的性能差异。可以看到:
对于大多数任务和模型大小来说,用 32
个样本的 priming
只能稍微提高性能。
对于某些任务,增加更多的样本甚至会导致更差的性能,特别是对于较小的模型。
对于 ReCoRD
,即使是最大的模型,在添加更多的样本时,其性能也略有下降。
Figure 5
的底部一行显示了用 PET
训练的 ALBERT
(没有蒸馏)、以及完全无监督的 ALBERT
模型在所有任务上的性能差异。虽然由于底层模型的不同、以及 PVP
的不同,结果不能直接比较,但 PET
的结果与 priming
相比有更大的性能改进,并且在任何任务中都不会使结果恶化。
模型类型:我们接下来通过比较 ALBERT
与 RoBERTa_large
和 GPT-2_medium
来研究底层语言模型对 PET
的影响。由于GPT-2
是一个类似于 GPT-3
的单向模型,它只能处理 mask token
是最后一个 token
的模式。因此,我们对 CB
和 RTE
使用 MultiRC
,我们坚持使用我们的原始的模式集合,因为它们已经满足了这个要求。我们也不进行蒸馏,而是报告 ensemble
的性能,因为没有既定的方法为 GPT-2
配置一个 sequence classification head
。
Table 4
中用 PET
训练所有三种语言模型的结果表明:
使用 ALBERT
作为底层语言模型对 PET
的强大性能至关重要。
用 RoBERTa
而不是 ALBERT
会导致平均性能下降 8
分。然而,RoBERTa
仍然明显优于 GPT-3 13B
,后者比 RoBERTa
大两个数量级。
使用 GPT-2
的 PET
的性能比使用 ALBERT
和 RoBERTa
这两个模型的性能差得多。正如 GPT-3
所预料的那样,性能下降的一个原因可能是,与 GPT-3
一样,GPT-2
是单向的,使需要比较两个序列的任务成为一种挑战。然而,需要注意的是,GPT-2
和其他两个模型之间也有其他实质性的差异,最明显的是预训练数据集。
不管单向性是否是 GPT-2
表现不佳的原因,底层语言模型的双向性对 PET
很重要,因为它消除了 mask token
在最末尾的需要,从而使模式的创建更加灵活。
单向性不是问题,
GPT-3 175B
也是单向的模型,但是在这类任务上可以达到SOTA
。
带有多个 masks
的 PET
:我们对 PET
进行了修改,使其能够适用于需要输出多个 tokens
。为了研究这一修改的影响,我们研究了需要这样做的三个任务: COPA, WSC, ReCoRD
。我们比较了三种策略:
我们的解码策略:即按照分配给它们的概率的顺序来预测 tokens
,我们称之为 max-first
。
从左到右解码(ltr
):这是许多自回归语言模型的常见做法。
并行解码所有 tokens
(parallel
),这是训练期间所做的。
注意:训练期间是并行解码、但是测试期间是采用了不同的解码策略。
此外,我们将 PET
与 untrained ALBERT
进行比较,以衡量我们提出的训练损失的有效性。
结果显示在下表中。可以看到:
在三个任务中,PET
明显优于 untrained ALBERT
。
不进行蒸馏会损害 COPA
的性能,但会导致 WSC
的轻微改善;对于 ReCoRD
,我们没有进行蒸馏,因为我们只使用一个 PVP
。
除了 WSC
之外,我们的解码策略明显优于并行解码,因为 WSC
的大多数预测只由一个或两个 tokens
组成;我们的解码策略比从左到右的解码策略表现略好。
训练样本:回顾一下,我们用 FewGLUE
的训练样本进行实验,FewGLUE
是原始 SuperGLUE
训练数据集的一个随机选择的子集。我们使用一个固定的随机种子 FewGLUE
。令 SuperGLUE
子集,所以 SuperGLUE
的另外两个子集,CB, RTE, MultiRC
运行 PET
。为了只测量改变训练集的效果而忽略未标记样本,我们不使用知识蒸馏。
下表显示,对于所有的任务,改变训练样本集会导致 PET
的性能差异很大。这突出了在比较不同的 few-shot
方法时,使用相同的样本集的重要性,这就是为什么我们公开了 FewGLUE
中的特定的样本集。然而,我们注意到,对于所有的随机数种子,PET
的平均性能与 GPT-3
的平均性能相似。
虽然我们的结果似乎与GPT-3
的观点相反,即对 GPT-3
来说,样本的确切选择并不发挥主要作用。但我们怀疑这是由于 priming
从训练样本中获得的好处比 PET
少得多(如前所述),因此,训练样本的确切集合对 GPT-3
模型性能的影响较小。
论文:
《Do Prompt-Based Models Really Understand the Meaning of Their Prompts?》
假设一个人得到两个句子: “在伊拉克还没有发现大规模杀伤性武器”、“在伊拉克发现大规模杀伤性武器”。现在,在没有给出任何其他额外信息的条件下,我们要求这个人回答句子类别是 0
还是 1
。在这种情况下,人们可能需要大量的试错才能清楚如何进行分类(比如,是判断语法是否错误?还是判断是否包含政治言论?)。这种设置类似于近年来在 NLP
中占主导地位的 pretrain-and-finetune
设置,在这种设置中,模型被要求将一个sentence representation
(例如 CLS token
)进行分类。
相反,假设给一个人如下的 prompt
:“假设 '在伊拉克还没有发现大规模杀伤性武器',那么 '在伊拉克发现大规模杀伤性武器' 这句话肯定正确吗?”。那么,这个人能够更准确地执行任务,而且不需要很多样本就能搞清楚任务是什么,这并不奇怪。
同样地,用类似的 prompt
来重新设置 NLP
任务,与传统的 fine-tuned
模型相比,极大地提高了 zero-shot
和 few-shot
性能。这样的结果自然会产生这样的假设:每个输入样本中包含的额外 prompt text
作为语义上有意义的任务指令,帮助模型更快地学习,就像任务指令帮助人类更快地学习一样。这一假设被许多人隐含地假定,并被 《Natural instructions: Benchmarking generalization to new tasks from natural language instructions》
、 PET
以及 GPT-3
明确地论证了。
虽然去年出现了论文淘金热,提出了 optimizing prompts
的自动化方法,但 《Cutting down on prompts and parameters: Simple few-shot learning with language models》
比较了这些新提出的方法的 representative sample
,并报告说 PET-2
的手动编写的 prompts
在一系列SuperGLUE
任务中的平均表现仍然优于自动搜索的 prompts
。这样的发现表明,专家起草的 prompts
是最好的,这加强了上述假设,即模型从有意义的指令中受益。
在本文中,在 zero-shot/few-shot setting
上,我们通过评估各种语言模型在 NLI
上的表现来测试这一假设,使用超过 30
个手动编写的模板、以及 13
组 LM target words
,总共超过 390
个 prompts
。我们发现:
在大多数情况下,当给出不相关或误导性的模板时,模型的学习速度与给出有指导意义的好模板时相同。
此外,从 235M
到 175B
参数的模型都表现出这种行为,instruction-tuned
的模型(这些模型是在数百个人工书写的 prompts
上训练出来的)也是如此。
虽然我们证实了 T0
的发现,即 instruction tuning
大大改善了 prompts
的性能和稳健性,但我们也发现,从某种意义上说,instruction-tuned
模型可能过于稳健,与 non-instruction-tuned
模型相比,对 prompts
的语义不太敏感。
最后,相对于指令模板的含义,模型对 LM target words
的选择更为敏感。
总而言之,尽管 prompt-based
模型在 zero-shot/few-shot learning
中得到了极大的改善,但我们发现有限的证据表明:模型的改善来自于模型以类似于人类使用任务指令的方式来理解任务指令。
即,并没有很多证据来支持:模型能够理解
prompts
这个结论。
相关工作:
Prompt-Based Models
:在撰写本文时,"prompt tuning"
和 "prompting"
这两个词可以指下面描述的三种方法中的任何一种或组合:
Discrete Prompts
:用一些模板文本重新格式化每个样本。例如,在一个情感分析任务中,模板可以是 {sent} In summary, the restaurant is [prediction]
,其中 predicted mask word
可以通过一个预定义的映射(如:{"great" -> positive, "terrible" -> negative}
)被转换为一个 class prediction
。
prompts
可以是手动编写的(PET
、《FLEX: Unifying evaluation for few-shot NLP》
)或自动生成的(LM-BFF
、AutoPrompt
)。这种方法通常会调优模型的所有参数,但它的 few-shot
的性能可以超过非常大的模型(例如GPT-3 175B
),尽管使用的是小 3
个数量级的语言模型(PET-2
、ADAPET
)。
Priming
(又称 in-context learning
):将 priming examples
放置到 evaluation example
的前面,其中每个 priming example
都可以选择包装在一个模板中,如:
xxxxxxxxxx
Question: {sent_1} True or false? {label_1}
...
Question:{sent_k} True or false? {label_k}
Question: {eval_sent} True or false? [prediction].
值得注意的是,虽然模型看到了 labeled examples
,但模型的参数并没有收到基于这些例子的梯度更新。虽然这种方法很吸引人,但 GPT-3
报告说,它只在最大的 GPT-3
模型上表现良好,该模型的 API
成本很高,难以用于学术研究(详见附录B
)。
Continuous Prompts
:在样本前加上 special tokens
,这些 special tokens
可选择用 word embeddings
进行初始化;但在学习过程中,这些 special tokens
可以任意更新,这样 final embeddings
往往不对应于词表中的任何真正的单词(例如,《The power of scale for parameter-efficient prompt tuning》
、Prefix-Tning
、《Learning how to ask: Querying LMs with mixtures of soft prompts》
)。这种方法通常能有效地调优小得多的模型参数集合,但这些方法还没有报告在 few-shot settings
下取得成功。
此外,放弃用自然语言表达的prompts
,使得研究它们的语义变得更加困难,而且不清楚 continuous prompts
是作为 task-specific
指令、还是仅仅作为更有效的模型参数(详细分析见 《Towards a unified view of parameter-efficient transfer learning》
)。
Analyses of Prompts
:在本文中,我们专注于离散的 prompts
,因为我们可以手动编写并控制 prompts
的措辞和语义。我们通过模型的 k-shot
性能来衡量 prompt
语义的影响,其中 《How many data points is a prompt worth?》
的研究,但他们的研究重点是将整个训练集上的传统微调与 PET-2
已有的一小组 prompts
进行比较,而我们的研究重点是在一组更多样化的 prompts
中的 few-shot learning
,旨在测试关于 prompt
语义对 few-shot learning
速度影响的具体假设。
在 high-level
上,我们的研究结果与 《Natural instructions: Benchmarking generalization to new tasks from natural language instructions》
的说法相矛盾,即模型受益于从众包的 annotation guides
中改编的详细的指令。但要注意的是,他们对 "指令" 的定义更为宽泛,包括 priming examples
,他们发现 "GPT-3
从 positive examples
中受益最多、从definition
中受益较轻、而在 negative examples
中则恶化"。换句话说,如果我们消融研究 priming
,把 "指令" 缩小到仅仅是对任务的描述,我们实际上也有同样的发现,即 instructions
比 no instructions
只有轻微的好处(参考我们的 irrelevant templates
)。在类似的情况下, 《Can language models learn from explanations in context?》
的同期工作发现,prompt
的其他组成部分,如对 priming examples
是有帮助的,但模型对指令是否事实上描述了他们的任务是无动于衷的。
最后,越来越多的同期工作也质疑模型需要有意义的指令的程度(《Prompt waywardness: The curious case of discretized interpretation of continuous prompts》
、《Grips: Gradient-free, edit-based instruction search for prompting large language models》
)。一个特别值得注意的发现是,《Rethinking the role of demonstrations: What makes in-context learning work?》
表明,模型在 priming
中使用不正确的标签和正确的标签时学习效果一样好,结论是 prompts
帮助模型学习输入文本的分布和 possible labels
的空间(而不是任务的特定指令)。
我们实现了一个人工的 discrete prompt model
,其本质上与 PET-2
的模型相同,只是他们的实现包括一些 augmentations
,如 self-labeling
、以及多个 prompts
的 ensembling
以获得竞争结果。为了专注于测量 ensembling
本身的效果,我们的实现不包括这些 augmentations
功能。遵从 T0
和 FLAN
之后,我们通过 target words
的 rank classification
来评估。
Baseline Model
: 在初步实验中,我们对 BERT, DistilBERT, RoBERTa, ALBERT, T5
进行了微调和 prompt-tune
。我们发现 ALBERT
一直产生最好的性能(与 PET-2
、ADAPET
一致),所以我们使用它作为我们的基线模型。
Instruction-Tuned Model
:我们用两种规模的 T0
( 3B
和 11B
),以及它们的 non instruction-tuned
版本 T5 LM-Adapted
(《The power of scale for parameter-efficient prompt tuning》
)作为基线进行实验。
Very Large Model
:我们用最大的 GPT-3 (175B)
进行实验,通过 priming
(又称in-context learning)
)。
数据集:我们专注于 NLI
,因为所有的 T0
变体在其训练中都 holds out
所有的 NLI prompts
和所有的 NLI
数据集,这使得它可以与本文中的其他模型进行公平比较。我们使用 Recognizing Textual Entailment: RTE
数据集,具体而言是 RTE
的 SuperGLUE collection
。
Random Seeds & Example Sampling
:所有实验都是在同一组 4
个随机种子上运行的。在一个给定的种子中,所有模型看到的都是相同的例子集合。
Statistical Tests
:我们同时使用 ANOVA
和它的 nonparametric
等价物(即, Kruskal-Wallis test
)。在发现多个模板之间的显著差异后,我们用独立 two-sample t-test and
和 Wilcoxon rank-sum test
来报告 pairwise significance
。
我们的研究问题是,模型是否将 prompts
理解为类似于人类的有意义的任务指令。为了直观起见,假设一个实验者向人类标注员提供了一个相当容易的任务的 informative
指令。如果标注员理解该指令,我们希望他们的表现比实验者故意提供误导性指令、实验者进行无关紧要的闲聊、或什么实验者都不说时要好。因此,我们编写了与这些不同情况相对应的各种 prompt
模板,并评估模型在zero-shot and few-shot setting
下使用这些模板的表现。
我们写了五类模板(Table 1
所示),每类模板至少有 5
个(指令性类别的模板则有 10
个):
Instructive
:我们将如何向一个从未见过这项任务的人描述 NLI
任务。
Misleading-Moderate
:指示模型执行与 NLI
相关或相近的任务,这样一来,如果模型按照明确的指令执行任务,它在 NLI
上的表现一般都会很差。
Misleading-Extreme
:指示模型执行与 NLI
无关的任务。
Irrelevant
:将 premise
、一个与任何 NLP
任务无关的句子、以及 hypothesis
拼接起来。
Null
:将 premise
、以及 hypothesis
拼接起来,没有任何额外的文本。
我们用 "prompt"
来指一个模板和一个 predefined LM target word
的 unique combination
。例如,{"yes" -> entailment, "no" -> non-entailment}
是模板 {premise} Should we assume that {hypothesis}? [prediction]
的默认 target words
。在这一节中,为了控制 target words
的影响,我们固定 target words
为 "yes"/"no"
,这些 target words
始终表现最好。在下一节中,我们固定了模板,并研究了不同 target words
的影响。
此外,我们进一步控制了标点符号、陈述式与询问式模板、以及拼接的顺序(总是 {premise} some template text {hypothesis}[prediction]).
的顺序)。
经过初步实验,为避免偷梁换柱,本文所报道的所有 prompts
都是在评估前写好的,也就是说,除了一项明确研究标点符号影响的消融研究外,我们不允许追溯性地编辑 prompts
从而提高性能。
结果:
Irrelevant Templates
:我们发现,用不相关模板训练的模型与用指令性模板训练的模型,学习速度一样快,在任何次数的 shots
中都没有实际差别( Figure 2
)。这对我们实验的所有模型和所有数据集都是如此,包括最大的 GPT-3
( Figure 6
)。
Misleading Templates
:用中等误导性的模板(如 {premise} Can that be paraphrased as "{hypothesis}"?
)与极度误导性的模板(如 {premise} Is this a sports news? {hypothesis}).
)训练的模型性能之间没有一致的关系:
T0
(3B
和11B
)在中等误导性的情况下表现更好( Figure 3
)。
ALBERT
和 T5 3B
在极端误导性的情况下表现更好(附录 E
和 G.4
)。
而 T5 11B
和 GPT-3
在这两组上的表现相当( Figure 6
;统计意义的总结也见 Table 2
)。
尽管两个误导性类别之间缺乏模式,然而,一致的是指令性模板上表现出明显更好的性能。
Null Templates
:用空模板训练的模型的表现远不如其他类别的模板(所有空模板的结果见附录 G
)。我们看到,尽管空模板在总体上要差得多,但其中的一些子集(例如,{premise}[mask] {hypothesis}
)在 32-shots
上,仍然能够以几乎与平均指令性模板一样的速度学习(Figure 4
)。
当
shots
数量较大时,{premise}[mask] {hypothesis}
与指令性模板的效果相差无几。
Zero-Shot
:到目前为止,我们主要关注的是 few-shot
的结果。在 zero-shot
时,所有模型(包括 GPT-3 175B
)的表现都只略微高于随机猜测,除了指令微调的 T0
。因此,对于我们的zero-shot
性能分析,我们把重点放在 T0
上。 Figure 5
显示:
在给定指令性模板和任何一类误导性模板的情况下,T0 3B
的性能没有实际差别。
T0 11B
的表现更好,尽管它也显示出在中度误导性模板和指令性模板之间没有实际差异。
最后,T0++
(比其他T0
变体在更多的数据集上训练过),是本文中唯一一个在所有类别的 prompts
中显示出统计学上显著不同性能的模型。然而,仍有一点需要注意的是,它在病态 prompts
方面的绝对表现可以说是太好,这一点我们将在接下来讨论。
讨论:回顾一下,文献中的一个共同假设是,prompts
需要专家清楚地、正确地描述手头的任务。与此相反,Table 2
总结说,除了 T0++
在 zero-shot
的情况下,所有模型在一些病态的 prompts
下的表现基本上与正确的 prompts
下的表现一样好。值得注意的是,尽管 GPT-3
比它的竞争对手大得多,但它显示了相同的行为模式,这表明单纯的 scaling
并不能解决这个问题。同时,来自指令微调的证据是 mixed
的。尽管 《Multitask prompted training enables zero-shot task generalization》
正确地认为,指令微调在性能和稳健性方面产生了实质性的改善,但在区分正确指令和病态指令方面,T0
有些过于稳健,对 prompts
的语义不太敏感,相比于 few-shot setting
下同样大小的 T5
( Figure 6
)。
在 zero-shot setting
中,我们确实看到,用最多的数据集对最大的模型指令进行微调( T0++
),提高了模型对 prompts
语义的敏感性。这是一个积极的结果,但它伴随着一个警告:仍然存在许多病态 prompts
的例子,它们的表现与正确的 prompts
一样好。为了对神经模型中的随机性持宽容态度,我们以更高的标准来要求这项研究,用统计测试来比较类别之间的平均值和中位数。尽管如此,对于我们的研究问题来说,仅仅是存在性证明仍然是令人震惊的。例如,在没有任何梯度更新也没有 priming
的情况下,令人震惊的是,开箱即用的 T0++
在极度误导性的 {premise} Is that grammatically correct? {hypothesis}
下达到了 78%
的准确率,在中等误导性的指令 {premise} Are we justified insaying "{hypothesis}"?
下达到了相同的准确率。如果模型真的是在对文本是否符合语法进行分类,它的得分只有 52.7%
,因为 RTE
是由专家写的,所有的例子都是符合语法的。
即使是表现不佳的模板,指令性模板似乎也是太好。例如,很难想象一个人在像 NLI
这样细微的任务中用 prompt
: {premise} Inflections are annoying and thank god that Middle English got rid of most of them. {hypothesis}
在 zero-shot setting
中得到 72%
。
在这个实验中,我们研究了在一个固定的模板下不同的 LM target words
的效果。我们写了四类 target word
,每类至少有 3
对target words
(除了 yes-no
类):
Yes-no
:模型将 entailment
预测为 "Yes"
、将 nonentailment
预测为 "No"
。
Yes-no-like
:语义上等同于 yes-no
,但使用表面上不同的词,例如,"true"/"false"
、"positive"/"negative"
。
Arbitrary
:语义上与任务没有关系的任意单词,如 "cat"
代表 entailment
、"dog"
代表 non-entailment
。
Reversed
:模型预测出直观上与 Yes-no
相反的表情,如将 nonentailment
预测为 "Yes"
、将 entailment
预测为 "No"
。
全部清单见附录 F.3
。在 Arbitrary
类别中,除了 《How many data points is a prompt worth?》
所使用的常见的英语名字之外,我们还包括语义相似度高的 word pairs
、相似度低的 word pairs
、以及在英语中高度频繁出现的 word pairs
,但我们发现在 Arbitrary
类别的这些不同子类别中没有一致的差异。
结果:对于 ALBERT
和 T0
,我们发现用 yes-no targets
训练的模型比用 yes-no-like targets
训练的模型要学习的更快,比用 arbitrary targets
训练的模型和 reversed targets
训练的模型要快得多。例如,Figure 7
显示了用不同 target words
训练出来的表现最好的指令性模板。在 32 shots
, "yes"/"no"
与 "no"/"yes"
的中位准确率之间的差异是 22.2%
,远远大于不同类别模板的效果差异。对所有模板和 targets
的组合进行汇总, Figure 8
证实了 target words
的选择比模板的含义重要得多。
讨论:模型在使用arbitrary targets
和 reversed target words
时,学习速度始终较慢,这是一个积极的结果:这种类型的性能差异与我们对模型的预期是一致的,因为模型对单词的语义敏感。然而,这些实验中也有几个重要的负面结果。
首先,target words
的影响凌驾于整体 prompt
的语义之上。考虑两种模板与 targets
的组合:
一个不相关的或误导性的模板 + yes-no targets
,例如, {premise} Does the paragraph start with "the"?[yes/no] {hypothesis}
。
一个有指导意义的模板 + arbitrary targets
,例如:{premise} Based on the previous passage, is it true that "{hypothesis}"? [cat/dog]
。
Figure 1
显示,像第一种组合往往大大超过了第二种组合的表现。然而,第二种组合只需要弄清一个映射: "Reply 'cat' if entailed and reply 'dog' if not entailed"
。对于人类来说,这可以在 a few shots
中学会,例如, 《Universal and uniquely human factors in spontaneous number perception》
表明,对于 { more numerous -> star shape, less numerous -> diamond shape}
的任意映射,成年人可以在 18
次试验中达到 60%
的准确率,而不需要接受任何语言指令。相比之下,许多 arbitrary targets
下的模型,即使在有指令性模板的 64 shots
中,也很难达到 60%
的中位准确率( Figure 10
的绿色、Figure 7
的红色和紫色)。
此外,即使给出直观的 yes-no-like targets
,如 "agree"/"disagree"
和 "good"/"bad"
,模型的学习速度也比给出 "yes"/"no"
时慢很多。如 Figure 7
(绿色与深绿色)和 Figure 8
(x
轴的第一组与第二组)所示,在 yes-no targets
和 yes-no-like targets targets
之间存在着巨大的性能差距,直到 256 shots
时才缩小。
此外,当我们试图通过在模板上附加 "True or false?"
等 target hints
来帮助模型时,性能往往反而下降,这与 T0
和 FLAN
的发现相呼应,即在输入序列中包括 answer choices
使模型在某些任务中表现更差。
Summary and Interpretation
:我们的主要研究问题是,模型是否将 prompts
理解为类似于人类的有意义的任务指令。同样,假设一个实验者向人类标注员提供了一个相当容易的任务的 informative
指令。如果标注员理解该指令,我们期望他们的表现比实验者提供误导性的指令、不相关的指令、或根本没有指令时更好。前面的实验显示,大多数模型的性能对指令性模板和不相关模板之间的差异不敏感、对指令性模板和误导性模板之间的差异适度敏感、对指令性模板和空模板之间的差异高度敏感。
然而,与模板的影响相比,进一步的实验显示,模型对 target words
的语义更加敏感:它们对 arbitrary target words
或 reversed target words
的学习速度要慢得多。然而,它们对语义等价的 yes-no-like words
过于敏感(即 "agree"/"disagree"
的表现比 "yes"/"no"
差得多)。而且 target words
的选择凌驾于模板的语义之上(例如,给定一个具有 "yes"/"no" targets
的无关模板,比具有 arbitrary targets
如 "cat/dot"
的指令性模板的表现好得多)。
我们在本文中的主要论点与最近的一系列研究有着相同的逻辑,即语言模型在理想条件下取得良好表现的事实不足以建立语言理解,因为它们在人类灾难性地失败的病态条件(例如,有随机混洗的词序的句子)下也能取得成功。换句话说,模型如此擅长从病态输入中推断出 gold labels
的事实,使人们对模型的推断方式是否与人类的推断方式相似产生了重大怀疑。对于我们的结果,模型如此善于从病态指令中学习的事实,同样使人怀疑模型是否以任何类似于人类理解指令的方式将 prompts
理解为指令。
其他解释和未来方向:与任何外在的评价一样,准确率不能直接衡量 understanding
。例如,一个人可以完全理解一个指令,但是由于任务本身太难(缺乏能力),或者由于他们出于某种原因忽略了指令(缺乏服从性),他们对指令性模板和不相关的模板的准确率仍然是一样的。我们在下面讨论这两种可能性。
缺乏能力:这主要是对 zero shots
下的 non-instruction-tuned
模型的关注,所有模型的表现都只略高于随机猜测,因此,模板类别之间缺乏统计学意义,对于模型是否缺乏对 NLI
指令的理解、以及模型是否缺乏 NLI
任务本身的能力是模糊的。这就是为什么我们的研究主要集中在 few-shot setting
,在这种情况下,缺乏能力就不那么令人担忧了,因为模型确实有能力达到良好的准确率,只是适度低于 SOTA
的 non-few-shot
模型。
对
NLI
指令的理解:知道 “指令” 的含义。
NLI
任务本身的理解:知道NLI
任务是怎么做。
另一个反驳是,也许从来没有模型真正推理出一个premise
是否蕴含一个 hypothesis
。也许它们只是利用了虚假的或启发式的特征,而且,如果它们能够正确地推理出蕴含关系,那么 NLI
指令的含义就会很重要。这个论点是可能的,不过:
首先,它取决于 NLI
(或任何其他行为评估)能在多大程度上衡量语言理解,这是一个超出本文范围的复杂争论。
其次,在初步实验中(附录 K
),我们的模型实际上很好地 zero-shot
迁移到了 HANS
,一个旨在诊断模型使用 NLI heuristics
的数据集,效果相当好。因此,模型不太可能在推理蕴含关系方面完全无能而只依赖启发式方法。
无论如何,进一步区分理解任务指令的能力与理解任务本身的能力是未来工作的一个重要方向。
缺乏服从性:另一种解释是,不相关的 prompts
与指令性的 prompts
表现相同,因为模型只是完全忽略了这些 prompts
。然而,仅仅是缺乏服从性并不能解释我们的结果。如果模型真的忽略了这些 prompts
,我们就不应该看到任何类别的 prompts
之间有任何系统性的差异。相反,我们确实看到了一致的模式,即指令性模版和不相关的模板使模型的学习速度明显快于误导性模板和空模板( Table 2
)。
一个更细微的反驳是,尽管模型没有完全忽视他们的 prompts
,但也许模型 "takes less effort"
从而使用虚假特征或启发式特征进行预测,而不是正确遵循指令所需的更复杂的句法特征或语义特征(《Predicting inductive biases of pretrained models》
、《Learning which features matter: RoBERTa acquires a preference for linguistic generalizations (eventually)》
)。然而,仅靠虚假的特征同样不能解释观察到的性能差距。回顾一下,在每个随机种子中,所有的模型都看到完全相同的训练样本(具有相同的虚假特征)。因此,就模型对某些 prompts
的表现与其他 prompts
不同而言,这可能是由于 prompts
中的(虚假的或语义的)特征与数据样本中的虚假的特征之间的一些复杂的交互。这种交互的一个可能的例子是,标点符号对 irrelevant
模板有很大的影响,但有指令性的模板似乎能够抑制这种影响(附录 A
)。调查这种交互的性质是未来工作的一个有希望的方向,它提出了一种 prompt
的语义可能重要的方式,例如,通过影响模型的 inductive bias
,即使模型不以人类的方式解释或使用指令。
论文:
《How Many Data Points is a Prompt Worth?》
pretrained
模型用于分类任务的主要方法是通过显式的 classifier head
进行微调。然而,另一种方法已经出现:通过自回归文本生成、或完形填空任务完成来直接将 pretrained
语言模型调整为 predictor
。这种方法在 T5
微调中被广泛使用,取得了SuperGLUE
基准测试的 SOTA
结果。
直接的 language generation
进行分类的一个观点是,它允许我们为每个任务选择自定义的 prompts
。这种方法可以用于 zero-shot
分类或 priming
,在低数据情况下,它也可以在微调中提供额外的任务信息给 classifier
。
如果这个观点确实成立,那么自然会问它对模型的样本效率(sample efficiency
)有什么影响,或者更直接地说,一个 prompt
价值多少个数据点?与许多低数据和 pretraining-based
的问题一样,这个问题在微调设置、训练过程、以及 prompts
本身的影响下变得复杂。我们通过使用多样的 prompts
、多次运行、以及低训练数据微调的最佳实践,从而来分离这些变量。我们引入了一个度量标准,即平均数据优势(average data advantage
),来量化 prompt
在实践中的影响。
我们的实验发现,task-targeted prompting
的影响可以很好地用直接训练数据来量化,并且在不同任务的性质上存在差异:
在MNLI
上,我们发现使用一个 prompt
大约相当于增加了 3500
个数据点。
在 SuperGLUE
上,在 RTE
上一个 prompt
大约相当于增加了大约 280
个数据点、在BoolQ
上相当于增加了 750
个数据点。
在低到中等数据量的情况下,这种优势可以对模型的训练作出实质性的贡献。
相关工作:
prompting
已经在基于 zero-shot
和基于微调方法中被使用过。
zero-shot
方法试图通过generation
利用 prompt
而无需通过微调来回答一个任务(GPT-2
)。
GPT-3
将这种方法扩展为一种 supervised priming
方法,通过将训练数据作为 priming
在推理时使用,以便在回答问题时能够关注它们。
T5
和其他 sequence-to-sequence
的 pretrained
模型使用带有 marker prompt
的标准的 word-based
的微调来回答分类任务,并取得了强有力的实验成功。
我们的设置与此不同,我们对使用 task-based prompts and finetuning
感兴趣,介于 T5
和 GPT-2
之间。
我们的设置与 PET
最为相似,它声称 task-specific prompting
有助于迁移学习,特别是在低数据情况下。然而,为了在SuperGLUE
上获得最佳结果,PET
引入了几个其他扩展:通过额外的 pseudo-labeled data
进行半监督学习、使用多个不同prompts
来训练的模型进行 ensembling
,并将 ensemble
蒸馏为线性分类器而不是语言模型。
我们的目标是在 supervised fine-tuning
中分离出 prompting
的具体贡献。
最后,最近的论文实验了通过针对语言模型进行自动化流程来发现 prompts
的方法(LPAQA
、《Automatically identifying words that can serve as labels for few-shot text classification》
)。我们限制自己使用人工编写的 prompts
,因为我们想要确定 prompting
本身是否对 supervised task
增加了信息。关于 automatic prompts
是否能够产生相同的影响,这是一个有趣的问题。
考虑文本分类的两种迁移学习设置:
head-based
:采用一个通用的 head layer
接受 pretrained representations
并预测输出类别。
prompt-based
:采用一个 task-specific pattern
字符串,以引导模型生成与给定类别相对应的文本输出。
这两种方法都可以用于使用监督训练数据进行微调,但 prompts
进一步允许用户自定义 pattern
以帮助模型。
注意:
prompt-based
微调是采用PET
的方案,即微调LM head
从而适配prompt
。而
head-based
方案是微调LM head
从而适配label
(通常是0/1
之类的class
编号)。
对于 prompt model
,我们遵循 PET
中的符号,并将 prompt
分解为 pattern
和 verbalizer
。 pattern
将输入文本转化为完形填空任务,即一个带有单个或多个 masked tokens
(这些 tokens
需要被任务所填充)的序列。
masked word prediction
被映射到一个 verbalizer
,它生成一个 class
(如,"Yes"
映射到 True
、"No"
映射到 False
)。对于同一个任务,可以使用多个 pattern-verbalizer pairs: PVPs
,它们之间可以在 pattern
、verbalizer
、或者 pattern and verbalizer
上有所差异。
微调是通过训练模型生成正确的 verbalization
来完成的。损失函数是正确答案与 verbalizer
中各 tokens
的概率分布之间的交叉熵损失。我们复用了 PET-2
中的pattern choices
,示例可在附录 A
中找到。
我们使用相同的 pretrained checkpoint
(roberta-large
,包含 355M
参数)来运行所有实验,我们从 transformers library
中加载它。根据先前的观察, head-based fine-tuning
性能存在相当大的变化。我们遵循 《On the stability of fine-tuning bert: Misconceptions, explanations, and strong baselines》
和 《Revisiting few-sample bert fine-tuning》
的建议,在低学习率( steps
(至少 250
步,可能超过 100 epochs
)。
我们在 SuperGLUE
和 MNLI
上进行评估。这些数据集包含各种任务,都是英文的,包括 entailment
任务(MNLI
,RTE
,CB
),多项选择问答任务(BoolQ
,MultiRC
)、常识推理任务(WSC
,COPA
,WiC
)。我们不将 ReCoRD
纳入比较范围,因为它已经是一个完形填空任务,没有 head-based
模型可供比较。数据大小从 CB
的 250
个数据点到 MNLI
的 392702
个数据点。由于SuperGLUE
任务的测试数据不公开,我们保留一部分训练数据(从 CB
、COPA
和 MultiRC
的 50
个数据点,到 BoolQ
的 500
个数据点)用于 dev
,并在它们的原始验证集上进行评估。对于 MNLI
,我们使用可用的对应的验证集和测试集。
我们在可用数据的规模上比较模型,从 10
个数据点开始指数级增加(因为高数据性能往往饱和)直到完整数据集。例如,对于MultiRC
,初始数据点为 969
个,我们首先保留 50
个数据点用于 dev
。这样,我们就有了 919
个训练数据点,并且我们使用10、15、20、32、50、70、100、150、200、320、500、750、919
个训练数据点来训练模型。我们每个实验运行 4
次以减小方差,总共在所有任务中进行了 1892
次 training runs
。在每个点上,我们报告了在该数据量或更低数据量下达到的最佳性能。完整的图表可在附录 B
中找到。
Figure 1
展示了使用 head-based fine-tuning
与具有最佳性能 pattern
的 prompt-based fine-tuning
之间进行对比的主要结果。除了 WiC
任务外,prompting
在每个任务上都具有显著优势,这与之前的结果(PET-2
)报告的结果一致。随着更多的训练数据,两种方法都有所改进,但 prompting
始终更好,优势的大小各不相同。SuperGLUE
中的许多任务具有相对较少的数据点,但在像 BoolQ
和 MNLI
这样的大型数据集中我们也看到了优势。
为了量化 prompts
值得多少数据点,我们首先确定两条曲线在准确率上匹配的最低准确率和最高准确率的 y
轴的条带。在这些点的水平线表示 prompting
的优势。然后我们计算该区域的积分,即线性插值曲线之间的面积,除以条带的高度。面积的维度为数据点的数量乘以度量单位,因此除以性能范围就得到了数据点的优势数量。由于 low data training
对噪声敏感,除了遵循最佳训练实践外,我们对每个 bootstrapping
来估计这些 runs
的置信度。具体来说,我们hold out
4 head runs
和 4 prompt runs
(共 16
个组合)中的一个,并计算这些结果的标准差。
我们将这些数量报告在 Table 1
中作为平均优势。对于几乎所有的任务,我们可以看到 prompting
在数据效率方面具有显著的优势,平均而言相当于增加了数百个数据点。
两条曲线之间的面积,单位是
data point * accuracy
。这个面积除以highest acc - lowest acc
就得到数据点的数量。
分析:
Impact of Pattern vs Verbalizer
:prompts
的直觉是,即使只有很少的训练数据,它们也能以自然语言形式引入任务描述。为了更好地理解 prompts
的 zero-shot
和自适应特性,我们考虑了一个 null verbalizer
,这是一个对照组,其中的 verbalizer
没有经过训练因此无法提供语义信息。对于每个需要填充一个单词的任务(不包括更自由形式的 COPA
和 WSC
),我们将 verbalizers
(例如 "yes", "no", "maybe", "right" or "wrong"
)替换为随机的名字 。
这里的
null verbalizer
就是《Do Prompt-Based Models Really Understand the Meaning of Their Prompts?》
中的arbitrary targets
。
Table 1
显示了标准的 prompts
相对于 null verbalizer
的优势。我们发现对于像 CB
这样的小数据任务, null verbalizer
削弱了 prompts
的许多好处。然而,随着更多的训练数据,模型似乎适应了 verbalizer
,同时仍然获得了 pattern
的 inductive bias
优势。
Figure 2
展示了在 MNLI
上的这种 dynamic
。这个结果进一步表明,即使它与训练的 generation
过程不是直接类似,prompting
仍然能够提供 data efficiency
。
Impact of Different Prompts
:如果 prompt
作为任务的描述,人们会期望不同的有效描述有不同的好处。为了比较我们在每个任务上使用的不同 prompts
,我们绘制了每个 prompt
在不同 runs
中的中位数性能。在几乎每个实验中,我们发现这些曲线的置信区间在很大程度上重叠,这意味着 prompt choice
不是一个主要的超参数,即随机种子之间的方差通常超过了 prompt choice
的可能好处。唯一的例外是 BoolQ
的低数据区域,在这个区域内,其中一个 prompt
相对于其他 prompts
具有显著的 few-shot
优势。我们在 Figure 3
中绘制了 MultiRC
的这条曲线,其余曲线见附录 C
。
指标敏感性:在计算 advantage
时,我们线性地处理每个指标;或者,我们可以为每个任务重新参数化 y
轴。这个选择对于 prompting
没有一致的影响。例如,强调接近收敛的 gain
会增加 CB
和 MNLI
上的 prompting advantage
,但会减少 COPA
或 BoolQ
上的 prompting advantage
。
论文:
《Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?》
大型语言模型能够执行 in-context learn
:通过对少量的 (input, label) pair
(即,demonstrations
)进行调节(conditioning
)并对新的输入进行预测,从而仅仅通过inference
来执行一项新的任务。然而,人们对模型如何学习、以及 demonstrations
的哪些方面有助于最终的任务表现了解甚少。
在本文中,我们表明,有效的 in-context learning
其实并不需要 ground truth demonstrations
。具体来说,在一系列分类任务和多项选择任务中,用随机标签取代 demonstrations
中的标签几乎不会损害性能(Figure 1
)。这一结果在包括 GPT-3
系列在内的 12
种不同的模型中是一致的。这强烈地表明,违背直觉地,该模型并不依赖 demonstrations
中的 input-label mapping
来执行任务。
进一步的分析调查了 demonstrations
的哪些部分确实对性能有贡献。我们确定了 demonstrations
的可能方面(例如,label space
和输入文本的分布),并评估了一系列 demonstrations
的变体,以量化每个变体的影响。我们发现:
demonstrations
所指定的label space
、以及输入文本的分布都是 in-context learning
的关键(不管标签对单个输入是否正确)。
指定整体格式也很关键,例如,当 label space
未知时,使用随机的英语单词作为标签明显优于不使用标签。
带 in-context learning objective
的 meta-training
(MetaICL
)放大了这些效果:模型几乎只利用了 demonstrations
的较简单方面(如格式),而不是 input-label mapping
。
总之,我们的分析提供了一种理解 demonstrations
在 in-context learning
中的作用的新方法。我们的经验表明:
模型反直觉地并不像我们想象的那样依赖于 demonstrations
中提供的 ground truth input-label mapping
。
但是模型仍然受益于对 label space
、以及输入分布(这二者都由 demonstrations
指定)的了解。
《Do Prompt-Based Models Really Understand the Meaning of Their Prompts?》
的结论,即:模型对target words
非常敏感,而模板则不那么重要。在本文中,作者不考虑模板而是直接拼接样本,所以这里的 ”输入分布“ 就是样本的分布;作者固定了
target words
,同时考虑在label space
内部随机分配标签(而不是在词表空间中随机分配target words
)。
相关工作:大型语言模型一直是在广泛的下游任务中表现强劲的关键。虽然微调一直是迁移到新任务的流行方法(BERT
),但微调一个非常大的模型(如 10B
参数)往往是不切实际的。GPT-3
提出 in-context learning
作为学习新任务的另一种方式。如 Figure 2
所示,语言模型仅通过推理来学习一个新的任务,通过以 demonstrations
为条件(demonstrations
是通过拼接训练样本而来),没有任何梯度更新。
in-context learning
自推出以来一直是重要的研究焦点。之前的工作提出了更好的问题表述方式、更好的选择标记样本从而用于 demonstrations
、带有显式的 in-context learning objective
的 meta-training
、以及学习 follow instructions
从而作为 in-context learning
的变种。同时,一些工作报告了 in-context learning
的脆弱性和过度敏感性。
相对来说,在理解为什么 in-context learning
有效方面做的工作较少。
《An explanation of in-context learning as implicit bayesian inference》
提供了理论分析,认为 in-context learning
可以被形式化为贝叶斯推断,利用 demonstrations
来恢复潜在的概念。
《Impact of pretraining term frequencies on few-shot reasoning》
表明, in-context learning
的表现与预训练数据中的term
频率高度相关。
据我们所知,本文是第一篇提供实证分析的文章,研究了为什么 in-context learning
比 zero-shot inference
取得了性能提升。我们发现,demonstrations
中的 ground truth input-label mapping
只有很小的影响;我们还衡量了 demonstrations
中更细粒度的方面的影响。
模型:我们总共实验了 12
个模型。我们包括 6
个语言模型(Table 1
所示),它们都是 decoder-only
、稠密的语言模型。 我们遵从 Channel Prompt Tuning
的做法,将每个语言模型用两种推理方法,即 direct
和 channel
。语言模型的大小从 774M
到 175B
不等。我们包括在进行实验时最大的稠密语言模型(GPT-3
)和最大的公开发布的稠密语言模型(fairseq 13B
)。我们还包括MetaICL
,它是从GPT-2 Large
初始化的,然后在具有 in-context learning objective
的监督数据集集合上进行 meta-train
,并确保我们的评估数据集与 meta-training
时使用的数据集不重叠。
评估数据:我们在 26
个数据集上进行评估,包括情感分析、转述检测、自然语言推理、仇恨言论检测、问答和句子补全,如下表所示。我们使用这些数据集是因为它们:
是真正的低资源数据集,只有不到 1
万个训练样本。
包括 GLUE
和 Super-GLUE
中经过充分研究的基准.
涵盖了包括科学、社交媒体、金融等不同领域。
其它细节:
除非另有说明,我们在本文的所有实验中默认使用 demonstrations
。
根据经验,不同的
值可能会得出不同的结论。作者提供了 的消融分析,说明了结论在 的不同取值上都成立。
样本是在训练数据中均匀采样的。
我们使用 5
个不同的随机数种子选择一组 5
次。
对于 fairseq 13B
和 GPT-3
,由于资源有限,我们用数据集的一个子集和 3
个随机种子进行实验。
我们报告了分类任务的 Macro-F1
和多项选择任务的 Accuracy
指标。我们计算每个数据集的所有种子上的平均数,然后报告数据集的 macro-average
。
我们使用 minimal templates
,从一个样本中形成一个输入序列(即,没有添加除了样本的 input text
和 label
之外的任何文本),如 Figure 2
所示。
即,这里没有采用任何
prompt
文本。作者对不同的模板也提供了消融分析。
更多细节请参考附录 B
。所有的实验都可以从 github.com/Alrope123/rethinking-demonstrations
中重复进行。
为了了解 demonstrations
中正确配对的 inputs and labels
的影响(我们称之为 ground truth input-label mapping
),我们比较了以下三种方法:
No demonstrations
:一种典型的 zero-shot
方法,不使用任何标记数据。预测是通过 test input
,
Demonstrations w/ gold labels
:一种典型的 in-context learning
方法,使用了 input-label pairs
拼接起来进行预测。
Demonstrations w/ random labels
:用随机标签而不是来自 gold labels
数据的 gold labels
而形成的。每个
注意:这里的随机标签指的是从
label space
中随机采样的,而不是任意的、从词表中随机采样的文本。
实验结果如 Figure 3
所示。
首先,使用 demonstrations with gold labels
,比 no demonstrations
的性能明显提高,这在之前的许多工作中一直被发现。
其次,我们发现,用随机标签替换 gold labels
只会对性能造成轻微的损害。这一趋势在几乎所有的模型上都是一致的:性能下降的绝对范围是 0-5%
。在多项选择任务中替换标签的影响(平均 1.7%
)小于分类任务(绝对 2.6%
)。
这一结果表明,要想获得性能上的提高,并不需要 ground truth input-label pairs
。这是反直觉的,因为在典型的监督训练中,正确配对的训练数据是至关重要的:它可以告知模型执行下游任务所需的预期的 input-label
对应关系。因此,这些模型在下游任务中确实取得了非同寻常的表现。这有力地表明,这些模型能够恢复任务的预期的 input-label
对应关系。然而,这种 input-label
对应关系并不是直接从 demonstrations
中的配对中得到的。
同样值得注意的是,MetaICL
的性能下降特别少:绝对值为 0.1-0.9%
。这表明,带有显式的 in-context learning objective
的 meta-training
实际上鼓励模型基本上忽略了 input-label mapping
,而利用了 demonstrations
中的其他部分。
下图是所有模型都是在 3
个分类任务和 3
个多项选择任务上评估的,因此可以相互比较。
在附录 C.2
(如下图所示)中,我们提供了额外的结果,显示:
从标签的真实分布(而不是均匀分布)中选择随机标签,可以进一步缩小差距。
下图中,顶部两个子图表示均匀分布中采样、底部两个子图表示从真实分布中采样,纵轴表示与
demonstrations with gold labels
的gap
。
趋势可能取决于数据集,尽管总体趋势在大多数数据集上是一致的。
对于消融分析,我们在 5
个分类数据集、4
个多项选择数据集上实验。
正确标签的数量是否重要:为了进一步研究 demonstrations
中标签的正确率的影响,我们通过改变 demonstrations
中正确标签的数量来进行消融分析。我们评估了 "有 a%
正确标签的 demonstrations
"(pairs
、以及 pairs
(如 Algorithm 1
所示)。这里,in-context learning
,即 demonstrations w/ gold labels
。
即,
比例的正确标记样本、 比例的错误标记样本。
结果在 Figure 4
中报告。模型性能对 demonstrations
中正确标签的数量相当不敏感。
事实上,总是使用不正确的标签明显优于 no-demonstrations
的情况,例如:在分类任务中使用 MetaICL
、在多项选择任务中使用 MetaICL
、在多项选择中使用 GPT-J
,分别得到了 92%, 100%, 97%
的改进。
相比之下,分类任务中的 GPT-J
在更多的错误标签下性能下降相对明显,例如,当总是使用错误的标签时,性能下降近 10%
。不过,总是使用不正确的标签还是明显好于 no demonstrations
的情况。
这个结果是否在不同的 demonstrations
中 input-label pairs
的数量(Figure 5
中报告。
首先,即使在小 demonstrations
也明显优于 no demonstrations
的方法,而且在不同 gold labels
到使用 random labels
的性能下降始终很小,在 0.8 -1.6%
之间。
demonstrations
优于no demonstrations
的方法,数据在哪里?作者没有说明。
有趣的是,当 gold labels
还是使用 random labels
。这与典型的监督训练相反,在监督训练中,模型性能随着 input-label
对应关系,而数据的其他组成部分(如,样本输入、样本标签、数据格式)更容易从小数据中恢复,这有可能是较大的
虽然
更大意味着更多的标记样本,但是这些标记样本并没有提供监督学习(即,梯度更新)。
这个结果是否在更好的模版上保持一致:虽然我们默认使用 minimal templates
,但我们也探索了手动模板,即以特定数据集的方式手动编写的模板,这些模板取自先前的工作(如 Table 3
所示)。Figure 6
显示,这一趋势(即,用 random labels
替换 random labels
几乎没有损害性能)在手动模板上也是如此。值得注意的是,使用手动模板并不总是优于使用 minimal templates
。
如前所述,demonstrations
中的 ground truth input-label mapping
对 in-context learning
的性能提升影响很小。本节进一步研究了 demonstrations
中还有哪些方面导致了 in-context learning
的良好表现。我们确定了 demonstrations
learning signal
(如 Figure 7
所示)。
input-label mapping
:即每个输入
输入文本的分布:即
label space
:即
格式:具体来说,就是使用 input-label pairing
作为格式。
我们设计了一系列关于 demonstrations
的变体,对每个方面的影响进行了单独量化。 然后,我们还讨论了具有 in-context learning objective
的 meta-training
所得到的模型的趋势。在所有的实验中,模型都在 5
个分类数据集和 4
个多项选择数据集上进行了评估。实施细节和实例演示分别见附录 B
和 Table 4
。
我们对 OOD demonstrations
进行了实验,其中包括 out-of-distribution: OOD
文本,而不是来自 unlabeled
训练数据的输入。具体来说,从外部语料库中随机抽出一组 demonstrations
中取代 demonstrations
的 label space
、格式。
结果如下图所示。当使用 Channel MetaICL, Direct GPT-J, Channel GPT-J
时,无论是在分类任务还是多项选择任务中,使用 OOD
输入而不是来自训练数据的输入,都会使性能明显下降,绝对值为 3-16%
。在多项选择任务中使用 Direct GPT-J
的情况下,甚至明显比 no demonstrations
要差。Direct MetaICL
是一个例外,我们认为这是 meta-training
的效果。
这表明,demonstrations
中的 in-distribution inputs
极大地促进了性能的提高。这可能是因为以 in-distribution text
为条件使任务更接近于 language modeling
,因为在训练期间,语言模型总是以 in-distribution text
为条件。
我们还试验了使用随机英语单词作为所有标签的 demonstrations w/ random English words
,用于所有 pairs
。具体来说,我们随机抽取英语单词的一个子集 label space
的影响,同时保持了 demonstrations
的 input text
分布、格式 。
如下图所示,direct
模型和 channel
模型表现出不同的模式。
对于direct
模型,在 label space
内使用随机标签、以及使用随机英语单词之间的性能差距是很大的,绝对值在 5 - 16%
之间。这表明,以 label space
为条件,大大有助于性能的提高。即使对于没有固定标签集合的多项选择任务也是如此。我们假设多项选择任务仍然有一个特定的 choice
分布(例如 OpenBookQA
数据集中的 "Bolts"
或 "Screws"
等对象)。
另一方面,移除输出空间并没有导致 channel
模型的显著下降:绝对值有 0 - 2%
的下降,有时甚至增加。我们假设,这是因为 channel
模型只以标签为条件,因此没有从了解 label space
中获益。这与 direct
模型相反,后者必须产生正确的标签。
前面重点讨论了尽可能保持 demonstrations
格式的变体,这里我们讨论改变格式。虽然格式有很多方面,但我们只做了最小的修改,删除了输入到标签的配对。具体而言,我们评估了 demonstrations with no labels
,其中语言模型以 demonstrations with labels only
则以 "demonstrations with random English words"
和 "demonstrations with OOD inputs"
的 no-format
对应物。
结果如下图所示。
移除格式的结果接近或不如 no demonstrations
,表明格式的重要性。这可能是因为以 input-label pairs
的序列为条件,会触发模型模仿整体格式,并在给定 test input
时按照预期完成新的样本。
更有趣的是,保持格式在保留很大一部分性能提升方面起着重要作用。 例如:
通过 Direct MetaICL
, 在分类任务和多项选择任务中,通过简单地从语料库中随机抽取句子并将其与标签集合随机配对(如Figure 10
),可以分别保留 95%
和 82%
的 in-context learning
(demonstrations with gold labels
)的改进。
同样,在 channel
模型中,在 MetaICL
分类任务、GPTJ
分类任务、MetaICL
多选任务和 GPT-J
多选任务中,通过简单地将 unlabeled
训练数据中的每个输入与一个随机的英语单词配对,可以保留 in-context learning
(demonstrations with gold labels
)中82%, 87%, 86%, 75%
的改进。
对于所有这些情况,删除输入而不是使用 OOD
输入,或者删除标签而不是使用随机英语单词,都会明显变差,说明保持 input-label pairs
的格式是关键。
即使是将
OOD
输入和随机标签进行配对,效果也优于No demonstrations
。
与其他模型不同的是,MetaICL
的训练是以 in-context learning objective
来训练的,这与最近的工作一致,即在大量有监督的数据集上使用多任务训练(称为 meta-training
)来泛化到新任务。我们旨在通过仔细检查 MetaICL
的结果,更好地理解这种 meta-training
与我们的发现之间的关系。
具体而言,我们观察到,到目前为止,我们看到的模式在 MetaICL
中比在其他模型中明显更明显。例如, ground truth input-label mapping
的影响更小,而保持 demonstrations
的格式则更重要。在 Direct MetaICL
中,input-label mapping
和输入分布的影响几乎为零,而在Channel MetaICL
中,input-label mapping
和 label space
的影响则为零。
如
Figure 10
所示:
在
Direct MetaICL
中,(紫色的)OOD + Random labels
的效果与Gold labels
几乎相同。在
Channel MetaICL
中,(浅绿色的)Random labels only
的效果与Gold labels
几乎相同。
基于这一观察,我们假设 meta-training
鼓励模型只利用 demonstrations
中较简单的方面而忽略其他方面。这是基于我们的直觉:
input-label mapping
可能更难利用。
demonstrations
格式可能更容易利用。
用于模型训练的text space
可能比用于模型的条件生成的 text space
更容易利用。
在本文中,我们研究了 demonstrations
对 in-context learning
的成功所起的作用。我们发现,demonstrations
中的 ground truth input-label mapping
比人们想象的要不重要得多:在demonstrations
中用 random labels
取代 gold labels
,只稍微降低了性能。然后,我们确定了demonstrations
中的一系列方面,并考察了哪方面对性能提升的实际贡献。结果显示:
收益主要来自于 input space
和 label space
的独立规范(independent specification
)。
如果使用正确的格式,模型仍然可以通过仅保留正确的输入分布、或仅保留正确的标签来保持高达 95%
的性能收益。
带有 in-context learning objective
的 meta-training
放大了这些趋势。
总之,我们的发现导致了一系列关于 in-context learning
的更广泛的指示,以及未来工作的途径。
模型是否在测试期间学习:如果我们对学习做一个严格的定义,即,捕获训练数据中给出的 input-label
对应关系,那么我们的发现表明,语言模型在测试期间不会学习新的任务。我们的分析表明,模型可能会忽略 demonstrations
所定义的任务,而是使用来自预训练的先验(prior
)。
然而,学习一个新的任务可以被更广泛地解释:它可能包括适应 demonstrations
所建议的特定的输入、以及标签分布、以及格式,并最终得到更准确的预测。根据这种学习的定义,该模型确实从 demonstrations
中学习了任务。我们的实验表明,该模型确实利用了 demonstrations
的各个方面,并实现了性能的提升。
语言模型的能力:模型在执行下游任务时,并不依赖 demonstrations
中的 input-label
对应关系。这表明,模型仅从 language modeling objective
中学到了(隐式的)input-label
对应关系,例如,将正面评论与 "positive"
一词联系起来。这与《Prompt programming for large language models: Beyond the few-shot paradigm》
的观点一致,他们声称 demonstrations
是为了 task location
,执行任务的固有能力是在预训练时获得的。
一方面,这表明 language modeling objective
导致了强大的 zero-shot
能力,即使从朴素的 zero-shot
准确率上看来这并不总是明显的。
另一方面,这表明,在 input-label
对应关系尚未被语言模型所捕获到的任务上,in-context learning
可能不起作用。这就引出了一个研究问题:如何在 in-context learning
不能解决的 NLP
问题上取得进展:我们是否需要一种更好的方法来抽取已经存储在语言模型中的 input-label mappings
、是否需要一种更好的语言模型 objective
的变体从而学习更广泛的任务语义、或者是否需要通过对标记数据的微调进行显式的监督。
与 instruction-following
模型的联系:之前的工作发现,训练遵循任务的自然语言描述(称为 instructions
)并在推理时执行新任务的模型是有前景的。我们认为 demonstrations
和 instructions
对语言模型的作用基本相同,并假设我们的发现对 instruction-following
模型是成立的:instructions
促使模型恢复它已有的能力,但并没有监督模型学习新的任务语义。T0
已经部分地验证了这一点,他们表明模型的性能在不相关的指令、或误导性的指令下不会有太大的下降。我们把对 instruction-following
模型的更多分析留给未来的工作。
大幅提高的 zero-shot
性能:我们的一个关键发现是,通过简单地将每个 unlabeled input
与一个 random label
配对并将其作为 demonstrations
,有可能在不使用任何标记数据的情况下实现接近 k-shot
的性能。这意味着我们的 zero-shot baseline level
要比以前认为的高得多。未来的工作可以通过放宽获取 unlabeled
训练数据的假设来进一步提高 zero-shot
性能。
注意:甚至用
OOD
输入和随机标签进行配对,也能提升效果。
局限性:
任务和数据集类型的影响:本文的重点是已有的 NLP
基准中的任务,其中,这些任务有真实的自然语言输入。正如 《Extrapolating to unnatural language processing with gpt-3’s in-context learning: The good, the bad, and the mysterious》
所观察到的,具有更局限的输入的合成任务实际上可能更多地使用 ground truth labels
。
我们通过研究多个 NLP
数据集的平均性能来报告宏观层面的分析,但不同的数据集可能表现不同。附录 C.2
讨论了这方面的问题,包括发现在一些 dataset-model pairs
中,使用 ground truth labels
和使用 random labels
之间存在较大的差距(例如,在最极端的情况下,在使用 GPT-J
的 financial_ phrasebank
数据集上,绝对值接近 14%
)。自我们论文的第一个版本以来,《Ground-truth labels matter: A deeper look into input-label demonstrations》
表明,使用否定的标签(negated labels
)大大降低了分类的性能。我们认为,了解模型在多大程度上需要 ground truth labels
来成功地进行 in-context learning
是很重要的。
扩展到 generation
任务:我们的实验仅限于分类任务和多选任务。我们假设,在像generation
这样的开放性任务中,ground truth output
可能对 in-context learning
没有必要,但这要留待将来的工作。将我们的实验扩展到这类任务并不简单,因为它需要 output
的一个变体,该变体具有不正确的 input-output
对应关系,同时保持正确的 output distribution
(基于我们在前面的分析,这一点很重要)。
自我们论文的第一个版本以来,《Text and patterns: For effective chain of thought, it takes two to tango》
用chain of thought prompting
进行了类似的分析,它产生了一个理由( rationale
)来执行复杂任务(如数学问题)。他们表明,虽然在 demonstrations
中简单地使用一个随机的理由(例如,将不同的样本与同一个理由来配对)会显著降低性能,但其他类型的反事实理由(counterfactual rationales
)(例如,错误的方程式)并没有像我们想象的那样降低性能。关于理由的哪些方面重要或不重要的更多讨论,请参考该论文。
论文:
《Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity》
大型预训练语言模型(pretrained language model: PLM
)在以适当的文本上下文为条件时表现出卓越的性能。也许最引人注目的是,当用一个由很少的训练样本组成的上下文来引导时,它们产生的文本分类结果可以与那些 fully supervised models
相媲美。这种 few shot setting
,通常被称为"In-context Learning"
(GPT-3
)。
in-context learning
的一个核心组成部分是作为上下文的文本 prompt
。构成一个 prompt
需要:使用模板进行文本线性化(text linearisation
)、以及训练样本拼接(见 Table 1
的例子)。已经确定的是,模板的结构对性能有很大影响(Autoprompt
、LM-BFF
、PET2
、LPAQA
)。然而,据我们所知,没有工作研究过样本排序对 In-context Learning
成绩的影响。
也许与直觉相反的是,我们发现正确的样本顺序和正确的模板一样,可以产生很大的影响。从 Figure 1
中可以看出,对于情感分类任务,一些排列顺序的性能(超过 85%
的准确率)与监督训练相当,而另一些排列顺序的性能接近于随机(约 50%
的准确率)。这种顺序敏感性(order sensitivity
)在不同的模型中是普遍存在的,尽管增加模型的大小在一定程度上解决了这个问题,但对于一些具有数十亿参数的模型来说,这个问题仍然存在( Figure 1
中的 Subj
任务)。
在我们的分析中,我们发现性能良好的样本顺序之间没有共同点,而且它们在不同的模型规模和任务中不能迁移。在一个 fully-supervised setting
中,我们可以依靠一个验证集来选择样本顺序。然而,在验证集的规模非常有限、甚至不可用的 few-shot setting
中,这是不可取的。相反,我们利用语言模型的生成式特性来构建一个无标签的人工验证集,并将其称为 probing set
。由于 probing set
是无标签的,我们使用 predicted label
分布的统计量,并提出了 entropy-based
指标来衡量候选 prompts
的质量。实验结果显示,在所有不同规模(四个数量级)的 PLM
中,我们可以在 11
个不同的文本分类任务中实现平均 13%
的相对改进。
总的来说,我们的贡献有以下几点:
我们研究了 In-context Learning
的顺序敏感性,我们表明这对于在 fews-hot learning
下 pretrained
语言模型的成功至关重要。
我们提出了一种简单的、generation-based
的探测方法,以识别性能良好的 prompts
,而不需要额外的数据。
思路:既然没有验证集,那么让语言模型来自动生成一个验证集。
我们的 probing
方法对不同规模的 pretrained
语言模型、以及不同类型的数据集普遍适用且有效,在广泛的任务中平均取得了 13%
的相对改进。
相关工作:
针对 NLP
的 Unified Interface Design
:以前的工作大多集中在 shared-parameters
的模型上,对一些任务进行预训练,然后针对不同的任务进行微调,例如 ELMo, BERT
等。最终,得到多个 task-specific
的模型。
一段时间以来,人们一直试图为 NLP
任务设计一个统一的接口(《Ask meanything: Dynamic memory networks for natural language processing》
、T5
)。
与这些工作并行,GPT-2
表明,在语言模型输入的末尾追加 trigger tokens
(例如 "TL;DR"
)可以使语言模型表现得像摘要模型。语言模型的 zero-shot
显示了将 NLP
任务统一到 language modelling
框架中的潜力,在这个框架中,微调并不是获得良好性能的必要条件。此外,GPT-3
表明,任务无关的 few-shot
性能可以通过扩大语言模型的规模而得到改善。它有时甚至可以与之前 SOTA
的微调方法竞争。
针对 PLM
的 Prompt Design
:prompt design
的核心挑战是将训练数据(如果存在的话)转换成文本序列。大多数关于 prompt design
的工作集中在如何使 prompts
与语言模型更加兼容。
《Language models as knowledge bases?》
利用人工努力来设计自然语言句子,然后根据 input context
进行 token prediction
。
然而,手工制作的模板需要大量的人力,很可能最终会出现次优的性能。最近的工作探索了自动模板构建:
PET2
使用完形填空风格的任务来构建模板。
LM-BFF
使用外部语言模型来生成模板。
AutoPrompt
使用 gradient-guided search
来寻找性能最大化的模板。
LPAQA
使用一种基于挖掘的方法来自动创建多样化的模板。
Prompt Design
的顺序敏感性:
LM-BFF
证明了基于微调的方法不像 In-context Learning
那样对顺序敏感。
KATE
利用一个标准规模的训练集,使用最近邻搜索来检索与特定测试样本最相关的训练样本。他们成功地检索到了相关的样本,并得出结论:在检索到这些样本后,它们在 prompt
中的顺序对性能几乎没有影响。虽然我们的研究与他们的研究有本质的区别,因为我们没有使用标准规模的训练集,但我们确实得出了相反的结论。
以前所有关于prompt design
的工作都集中在 prompt
的文本质量上,据我们所知,没有一个人详细研究过顺序敏感性。
Few-shot Learning
:《True few-shot learning with language models》
评估了在没有验证集的情况下语言模型的 few-shot
能力。实验结果表明,以前的工作高估了语言模型在这种(真正的 few-shot learning
)环境下的few-shot
能力。
我们的工作则是利用语言模型的生成式特性来构建一个 probing set
,而不依赖 heldout
样本。我们表明,我们的 probing
方法比依靠验证集要好,因此可以实现真正的 few-shot learning
。
在这里,我们研究了排列顺序的性能与各种因素之间的关系。为了便于观察,我们使用 SST-2
数据集中具有平衡标签分布的、由四个样本所组成的固定随机子集(指的是这个随机子集一旦确定下来就固定从而用于下游各种任务),并考虑所有 24
种可能的样本排列顺序。这一设置如下图中所示。
虽然有好处,但增加模型大小并不能保证低方差:我们针对 GPT-2
(0.1B-1.5B
)和 GPT-3
(2.7B-175B
)的四种不同模型规模,评估了样本顺序。正如我们在 Figure 1
中观察到的,模型可以获得优异的 few-shot
性能。我们看到:
GPT2-XL
(1.5B
)模型甚至可以超过 90%
的准确率,只需给出四个样本。这个结果与那些在 6
万多个样本上训练的监督模型相当。
然而,不同排列的性能变化仍然是一个大问题,特别是对于 "较小" 的模型。同一个模型可以在一种样本顺序下表现出近乎完美的行为,但在另一种样本顺序下又会回落到与随机猜测相当。
虽然增加模型的大小(几个数量级)有时可以缓解这个问题,但它仍然不能完全解决这个问题(特别是如果我们考虑 SST-2
以外的任务)。相比之下,supervised fine-tuning
方法的不同初始化通常会导致其测试集性能的标准差小于 1%
(LM-BFF
)。
增加训练样本并没有明显地减少方差:为了进一步探索few-shot prompts
的顺序敏感性,我们增加了训练样本的数量,然后采样了一个子集,并且对这个子集测试了最多24
种不同顺序。在 Figure 3
中,我们可以看到,增加训练样本的数量会导致性能的提高。然而,即使有大量的样本,高方差仍然存在,甚至会增加。
基于此,我们得出结论:无论训练样本的数量如何,顺序敏感性可能是 In-context Learning
的一个基本问题。
GPT-2 Small
的效果反而下降?
表现好的 prompts
不能跨模型迁移: 我们发现,如果将底层模型从 GPT2-XL
(1.5B
)改为 GPT2-Large
(0.8B
),一个特定的排列顺序的性能可能从 88.7%
下降到 51.6%
。这表明,一个特定的排列对一个模型效果好,并不意味着它将为另一个模型提供良好的结果。
为了验证这一假设,我们使用四个样本的所有可能的顺序排列作为 prompts
(一共 24
个)。然后我们对不同的模型进行以这些 prompts
为条件的预测,并计算分数之间的 pairwise Spearman’s rank correlation coefficient
。这些结果显示在Figure 4
中。
如果有一个共同的表现好的 prompts
的模式,那么我们就应该能够观察到不同模型之间的高相关性。然而,即使在同一模型的不同规模中,排列的行为似乎也是随机的。例如,175B
和 2.7B
模型的相关性只有0.05
,这意味着 2.7B
模型的好的排列绝不能保证它对 175B
模型也能产生好的性能。
表现好的 label orderings
在不同的模型中并不一致:除了训练样本的排序,我们还探索了 prompts
的 label ordering
。我们使用上述全部排列的所有模式:六种不同的标签模式。然后我们按照前文的所述,计算不同模型间的 pairwise Spearman
相关性。如 Figure 5
所示, label orderings
的行为在同一模型的不同规模中再次显得很随机。因此,不可能找出一个在不同模型中表现良好的 label ordering
。
注意:假设 P/N
分别代表 positive/negative
,那么六种标签模式分别为:NNPP, NPNP, NPPN, PNNP, PNPN, PPNN
。
这里并不是把所有样本的
label
独立地放在一起,而是根据label
的位置来决定所对应样本的位置。例如,正样本和正样本放在一起、负样本和负样本放在一起。
bad prompts
的退化行为:我们对表现好的 prompts
和不好的 prompts
进行了错误分析,并观察到大多数失败的 prompts
都存在高度不平衡的 predicted label distributions
( Figure 6 (left)
)。解决这个问题的一个直观方法是按照 《Calibrate before use: Improving few-shot performance of language models》
的思路,对输出分布进行校准。然而,我们发现,尽管校准导致了更高的性能,但方差仍然很高( Figure 6 (right)
)。
上一节表明,prompt orderings
对性能有很大的影响,同一模型的同一prompt
的某些顺序提供了随机猜测的性能,而其他 "更好" 的顺序提供了与监督方法竞争的性能。这表明,可能有各种选择 prompt orders
的方法来实现更好的性能,但挑战在于如何在不需要额外标签(例如,验证集)的情况下自动地做到这点。
因此,在这里我们探讨的问题是:怎样才能自动地生成一个 "probing set"
,以找到表现好的 prompt orderings
?
我们通过以下方式来解决这个问题:
首先,对于随机选择的训练样本构成的集合,我们使用这个样本集的每一个可能的排序作为候选。
然后,通过使用所有候选 prompts
作为上下文来查询语言模型,从而构建一个 probing set
。
最后,使用这个 probing set
通过使用 probing
指标对它们进行排序来确定最佳排序。
假设有
个训练样本,那么所有可能的候选是 个,对这 个候选进行推断,非常耗费计算资源。
我们提出了一种简单的方法,通过直接从语言模型本身采样,自动构建一个 "probing set"
。这种方法使得自动生成 probing sets
成为可能,而无需获取任何额外的数据。具体来说,给定一组训练样本
这将每个样本转化为一个标准格式的句子,将集合中的每个元素线性化为自然语言空间
注意,这里的
lalbel
是在训练集上的,而不是验证集/测试集上的。
然后,我们定义 function group
为:24
个可能的排列。
对于每个 prompt
的候选 probing sequence
) pretrained
语言模型的参数。我们从语言模型中解码时,在特殊的 end-of-sentence token
(由一个模板来定义)处、或达到 generation
长度限制时停止解码。我们的 probing set
构建方法如下图所示,其中, objective
是生成一个与训练样本有相似分布的 probing set
。
是 prompts
的prompts
:通过中训练样本的各种排列组合,诱导语言模型生成新的 prompt
,然后用这些新生成的prompt
来作为Probing Set
。作者没有直接把
作为 probing set
,因为probing set
是当做验证集来使用的。
我们对所有可能的 prompt
顺序的排列方式运行这个采样过程,并从中提取 probing
样本 probing set
probing set
包含了每个句子的 predicted label
,但并不能保证这些标签的有效性。因此,我们将 predicted label
从 probing set
中舍弃,因为我们只对来自于语言模型且对应于输入分布的 sampling probes
感兴趣。
核心思想:既然没有验证集,那么让语言模型自动生成一个验证集出来。当然,这个 “验证集” 的
label
是模型预测出来的,因此不保证是有效的。
一旦我们为给定的样本集构建了一个 probing set
,我们现在就可以使用该 probing set
来确定该特定样本集的最佳 prompt ordering
。在此,我们探讨两种选择最佳排序的方法: 全局熵(Global Entropy: GlobalE
),和局部熵(Local Entropy: LocalE
)。
全局熵:GlobalE
背后的动机是,确定特定排序的 prompts
从而避免极不平衡的预测问题(因为我们之前已经确定 unbalanced predictions
是针对表现不好的 prompts
的关键性问题)。
我们计算数据点 predicted label
对于每个标签 target
标签集合),我们计算 probing set
上的标签概率为:
然后,我们使用预测的 category label entropy
作为 GlobalE
得分,如下所示:
核心思想:类别标签的分布尽可能均匀。
注意:训练集合
被用了两次,一次用于生成 probing set
、另一次在这里作为上下文。
局部熵:LocalE
背后的动机是,如果一个模型对所有 probing inputs
都过于自信,那么该模型的行为很可能不符合预期。至少,它的校准工作做得不好,这也可能是区分不同 class
的能力差的表现。
与 GlobalE
的计算类似,我们计算数据点 target label
然后我们计算每个数据点的平均 prediction entropy
作为 LocalE
得分:
LocalE
计算的是数据点 上 prediction
分布的熵,然后对所有数据点取平均。
GlobalE
计算的是全局上的predicted label
分布的熵。
由于我们现在有办法对每个 prompt ordering
进行打分(根据 prompt ordering
在 probing set
上的效果),我们可以根据GlobalE
或 LocalE
分别衡量的性能对每个 prompt ordering
进行排名。
我们使用四种不同大小的 GPT-2
(有 0.1B/0.3B/0.8B/1.5B
参数)和两种大小的 GPT-3
(有 2.7B/175B
参数)。由于上下文窗口大小有限(GPT-2
系列模型最多 1024
个 word-pieces
),除了 AGNews
和 DBPedia
之外,我们对所有的数据集都采用了 4-shot setting
。
我们的实验是基于 GPT-2
模型的 open-source checkpoints
、以及对 OpenAI GPT-3 API
的访问。对于 probing set
的生成,我们将最大 generation
长度限制为 128
。我们还使用温度为 t=2
的采样,我们还利用了 block n-gram repetition
重复(《A deep reinforced model for abstractive summarization》
)来鼓励多样化的generation
。
我们对每组随机选择的训练样本使用 24
种不同的排列,并对每个实验使用 5
个不同的集合(除了具有 175B
参数的 GPT-3
,由于金钱成本高,我们只做两组,每组 12
种不同的排列),总共有 120
次 run
。我们报告了 5
个不同集合的相应评价指标的平均值和标准差。
对于promot
的选择,我们使用 LocalE
和 GlobalE
探测指标对自动生成的 probing set
的 candidate prompts
进行排名。然后,在现有的 24
个排列中,我们选择按最高 entropy
排名的 top K
样本作为表现好的 prompts
,在我们的实验中 prompts
来评估各种数据集的性能,并展示了更好的性能和缩减的方差。
即,选择表现最好的
4
种排列顺序。
我们还提供了一个 majority baseline
的结果,它总是预测数据集中的 majority label
,作为性能的下限。我们还提供了一个 oracle
从而显示性能的上界,即根据验证集上的 prompt
性能选择 top K
性能好的排序。
数据集:十一个文本分类数据集,如下表所示。
为了评估,我们对所有数据集的验证集采样了 256
个样本,以控制 GPT-3
的推理成本,因为它需要使用付费的 API
。
这些任务的 prompts
模板如下表所示。
实验结果如 Table 2
所示,我们观察到 LocalE
和 GlobalE
在所有任务中都有一致的改进。
结论:
无论模型大小如何,entropy-based probing
对表现好的 prompt
的选择是有效的。与不使用 probing
的 prompts
相比,GlobalE
在 11
个不同的句子分类任务中平均实现了 13%
的相对改进;LocalE
略逊于GlobalE
,与基线模型相比,平均有 9.6%
的相对改善。
使用 Entropy-based probing
来排名是鲁棒的:在 Figure 8
中,我们直观地显示了在改变 top K prompt selection
的平均性能。sampled prompt orders
,这相当于 Table 2
中的基线模型性能。
我们可以观察到,所有数据集的曲线斜率都是负的,这表明我们的方法可以有效地对表现好的 prompts
进行排序。虽然
entropy-based probing
在不同的模板中都是有效的:我们对类似于 LM-BFF
和 《Calibrate before use: Improving few-shot performance of language models》
的四种不同模板(table 4
)的 Entropy-based probing
进行评估,用于 SST-2
数据集。Table 3
的实验结果表明,Entropy-based probing
对不同的模板是有效的。这些发现表明,Entropy-based probing
特定的模板并不敏感,因为它对所有的情况都能提供改进。
表现好的 permutation selection
是 In-context Learning
的一个安全选择:我们发现,对于受到高 prompt variance
影响的模型,我们的 prompt selection
过程可以显示出很大的改进(相对改进达 30%
)。此外,对于初始 prompt
性能的方差较低的任务,我们的方法并没有对性能产生负面影响。我们的 prompt selection
在更糟的情况下提供了边际改善,在大多数情况下平均有 13%
的相对改善。
sentence-pair
任务对于较小的模型来说仍然具有挑战性,即使有表现好的 permutation selection
:对于 CB
和 RTE
数据集,GPT-2
模型的性能与 random baseline
的性能没有明显区别。尽管如此,我们发现,我们的方法仍然可以提供小幅的性能提升,尽管这些性能提升仍然在随机猜测或 majority vote
的水平之内。其中一个原因可能是,对于这些任务上的特定规模的模型,不存在好的 prompts
。因此,在这种情况下,优化 prompts
并不是特别有效。在较大的模型规模下,prompt selection
可以大大改善 CB
和 RTE
的性能(对于 GPT-3 175B
模型尤其如此),这一观察进一步支持了这一点。
Entropy-based probing
优于使用训练数据的子集进行调优:如果不依赖 generation
,prompt selection
的另一种方法可以是拆分(有限的)训练数据以形成验证集。为了与这种方法进行比较,我们将 4-shot training samples
(与 Table 2
的设置相同)分成两半。然后我们用验证集的表现来选择表现最好的四个 prompts
。从 Table 5
中可以看出,这种方法一直优于baseline
。然而,两种 Entropy-based probing
方法在所有的模型大小上都能提供更好的性能。
拆分为验证集的方式,相比较于
baseline
,也是有所提升的。