本文作者 | 陈想(浙江大学)、张宁豫(浙江大学)、谢辛(陈想)、邓淑敏(浙江大学)姚云志(浙江大学)、谭传奇(阿里巴巴),黄非(阿里巴巴),司罗(阿里巴巴),陈华钧(浙江大学)
接收会议 | WWW2022
论文链接 | https://arxiv.org/abs/2104.07650
代码 | https://github.com/zjunlp/KnowPrompt
最近一年以来蓬勃发展的自然语言处理新范式“提示学习”(Prompt Learning),通过构造提示模板和标签映射,显著提升了模型的少样本、跨领域、多任务等能力。在提示学习中,如何针对具体任务,构建出最合适的模板提示和标签映射组合,是提升任务性能的关键。因此,通过植入相关的任务和领域知识来构建提示模板,以“知识提示”指导预训练语言模型,可以提升模型对任务和领域的感知,充分的激发预训练语言模型的潜力,提升任务性能。本文梳理了有关“知识提示”的学习方法,并介绍了被TheWebConf(WWW)2022录用的新工作:KnowPrompt。
2.1 自然语言处理的“第四范式”:提示学习
早年的自然语言处理方法严重依赖特征工程、特征工程,通过精心设计数据特征和网络架构来实现下游任务。近几年随着语言模型如GPT、BERT、BART的出现,“预训练”+“微调”成为了自然语言处理的标准范式,并以统一的模型架构显著提升了大量任务的性能。然而,在预训练和微调的过程中,不同阶段的优化目标不一致。于是,起源于GPT3,并由PET[1,2]、LM-BFF[3]发展而来的一种全新的范式----“提示学习”[4],引起了学者的广泛关注。通过构造提示模板和标签映射,“提示学习”可以统一预训练和微调的优化目标,并实现轻量、高效的下游任务微调,从而更好的完成任务。
随着技术的不断发展,新的提示学习方法不断涌现,不同团队在同一时期提出了大量了新思路、新方法。清华大学提出了可自动学习模板的P-tuning[5]和预训练提示方法PPT[6],以解决需要人工构建模板和最优初始化等问题;斯坦福大学提出了Prefix-tuning[7]以参数可学习的前缀来实现高效的预训练语言模型微调;谷歌提出了FLAN[8]通过自然语言指令微调实现更快、更小、更好的模型优化;Huggingface提出了T0[9]以更加多样化的提示和多任务学习使模型具备更加鲁棒、泛化的能力;浙江大学和阿里巴巴达摩院提出了可同时学习模板和标签映射的DART[10]以实现全流程端到端微调降低模板提示构建成本。更多的工作开始尝试将提示学习应用在如实体识别与分类[11,12,13,14]、关系抽取[15]、自然语言生成[16]、事件抽取[17,18,19]、情感分析[20,21]、语义解析[22]、视觉定位[23]、图像生成[24]、多模态问答[25,26]等任务。相关工作可以参见https://github.com/thunlp/PromptPapers以及CCF关于提示学习的术语解读[27]。
从本质上讲,提示学习通过引入任务相关的模板将下游任务转换成和预训练目标一致的形式。其中,如何构建模板和标签映射至关重要。模板提示在一定程度上是任务和预训练模型交互的接口,通过将任务、领域相关的先验知识植入提示设计,显然可以让模型更加懂任务、懂数据。我们将这一技术思路称作“知识提示”,并介绍相关的方法。
2.2、知识提示学习:Knowledge-informed Prompt Learning
“知识提示学习”旨在通过植入任务、领域相关的知识,通过“Knowledge as Prompt”来降低提示学习的模板构建和标签映射成本,提升预训练模型对领域、任务的感知,激发预训练模型的潜能,提升下游任务的性能。清华大学曾提出了将逻辑规则植入提示学习的方法PTR[28]和通过外部知识图谱扩展标签映射的方法KPT[29],在关系抽取、文本分类等任务场景取得较大的性能提升。一般来说,植入外部知识可以通过输入增强、架构增强、输出正则等形式[30]。然而针对知识提示,如何高效的将外部知识植入提示模板和标签映射仍面临一定的挑战。针对第一问题,我们在提示学习框架中引入实体关系约束,提出了一种高效的知识植入提示学习方法KnowPrompt。
3.1 动机
提示学习在具体的任务中面临诸多挑战。以关系抽取(RE)为例,如下图所示:一方面,为关系抽取构建合适的提示模板需要专业的领域知识,且模板需要大量的验证集进行验证,成本高昂;另一方面当关系抽取的标签的个数发生变化时,标签词搜索过程的计算复杂度非常高(通常与类别个数呈指数关联),因此较难在语言模型词汇表中针对特定的关系标签获得合适的标签词。我们观察到,关系标签之间存在丰富的语义知识,即关系三元组之间存在结构约束。例如,如果一对实体包含“person”和“country”的类型,则[MASK]在关系“org:city_of_headquarters”上的预测概率会相对较低。此外,关系也约束它的实体的类型。
受此启发,我们将实体关系约束知识植入提示学习过程,并提出了KnowPrompt方法。我们通过可学习的虚拟答案词和虚拟类型词构建知识注入的提示,并通过实体关系约束植入外部结构化知识,以降低模板构建成本并提升任务对领域任务的感知。
3.2 方法
具体来说,KnowPrompt模型分为提示的构建和优化两个步骤:
3.2.1 Prompt Construction with Knowledge Injection
因为一个经典的提示由两个部分组成,即模板和一组标签词映射,我们提出了虚拟类型词(实体)和虚拟答案词(关系)的构建,用于关系抽取任务的知识注入。
(1)Entity Knowledge Injection
Type Marker 方法可以额外引入实体的类型信息以提高性能,但需要对类型信息进行额外注释,而实体类型标注在数据集中并不总是可用的。因此,我们通过特定关系中包含的先验知识而不是注释来获得潜在实体类型的范围。例如,给定关系“per:country_of_birth”,很明显与该关系匹配的头实体属于“人”,而与该关系匹配的尾实体属于“国家”。直观地说,我们根据关系类型分别估计在候选集𝐶𝑠𝑢𝑏和𝐶𝑜𝑏𝑗上的潜在实体类型对应的先验分布𝜙𝑠𝑢𝑏和𝜙𝑜𝑏𝑗,其中先验分布是通过频率统计来得到的。我们在实体周围分配虚拟类型词,这些词使用一组潜在实体类型的聚合嵌入进行初始化。由于初始化的虚拟类型词对于特定实体来说不是精确类型,这些可学习的虚拟类型词可以根据上下文动态调整,起到类弱化的Type Marker的作用。具体初始化方法如下:
(2)Relation Knowledge Injection
以往关于提示学习的研究通常通过自动生成在词汇表中的一个标签词和一个任务标签之间建立一对一的映射,这种搜索计算复杂度高,且未能利用关系标签中丰富的语义知识。为此,我们假设在语言模型的词汇空间中存在一个虚拟答案词𝑣′∈V′,它可以表示关系的隐含语义。从这个角度来看,我们在MLM Head 层拓展额外的可学习关系嵌入来作为虚拟答案词集 V',以表示相应的关系标签 Y。我们用掩码位置处的 V′上的概率分布重新形式化 𝑝(𝑦|𝑥)。具体来说,我们设置𝜙𝑅=[𝜙𝑟1,𝜙𝑟2, ...,𝜙𝑟𝑚]和C𝑅=[C𝑟1,C𝑟2, ...,C𝑟𝑚],其中𝜙𝑟表示通过分解关系标签𝑟得到的关系语义词在候选集C𝑟上的概率分布,𝑚是关系标签的数量。此外,我们采用𝜙𝑟的加权平均函数来平均C𝑟中每个单词的嵌入并初始化这些关系表示,这可以为提示构建注入关系的语义知识。虚拟答案词𝑣′=M(𝑦)的可学习关系嵌入初始化如下:
其中
3.2.2 Synergistic Optimization with Knowledge Constraints
由于实体类型和关系标签之间存在密切的交互和联系,且虚拟类型词以及答案词应该与周围的上下文相关联,我们进一步引入了包含结构约束的协同优化方法来优化虚拟类型词和虚拟答案词{
(1)Context-aware Prompt Calibration
尽管虚拟类型和答案词是基于知识初始化的,但它们在潜在变量空间中并非最优,它们应该与周围输入的上下文相关联。因此,需要通过感知上下文来校准它们的表示。给定掩码位置 V′上的概率分布 𝑝(𝑦|𝑥)=𝑝([MASK]=V′|𝑥prompt),我们通过下列损失函数优化虚拟类型词以及答案词:
(2)Implicit Structured Constraints
为了融合结构化知识,我们使用了额外的结构化约束来优化提示。具体来说,我们使用三元组(𝑠,𝑟,𝑜) 来描述关系事实,并定义隐式结构化约束的损失如下:
其中(𝑠′𝑖, 𝑟, 𝑜′𝑖)是负样本,𝛾是margin,𝜎指sigmoid函数,𝑑𝑟是评分函数。
3.3 实验
为了验证KnowPrompt的效果,我们在五个常见的关系抽取数据集上评测(具体的数据已在Github开源发布),并在全监督和少样本两个设定下进行了实验。如下表所示,KnowPrompt在全监督场景和低资源少样本场景都取得了最优的性能。具体的实验结果和分析可以参见论文。
在本文中,我们介绍了基于知识提示的预训练微调,并解读了我们的工作KnowPrompt,通过“Knowledge as Prompt”的思想实现高效的知识植入、知识选择,促进模型对领域任务的感知,提升下游任务的性能。我们也对提示学习的未来提出了如下思考:
提示学习是人机交互的媒介?
在一定程度上,提示学习可能是人类语言指令和大规模预训练模型交互的媒介,通过操作提示可以高效的利用大模型,发挥挖掘大模型的潜力。[33]探讨了提示学习在少样本情境和大模型交互中扮演的角色。
提示学习的理论分析?
提示学习为什么这么高效?[34]以隐马尔科夫理论探讨了提示学习的工作原理;[35] 提出了知识神经元,并分析了语言模型提示对FFN层知识的激活情况;[36]提出了“任务的公共低维本征子空间”。此外,[37]等多个工作曾发现模型可以习得一定程度的人类知识,而[38]发现外部知识提示可以显著提升开放域问答能力。模型何时需要知识,需要何种知识仍值得继续探索。
后提示学习时代可以做什么?
目前已有数百篇关于提示学习的工作,在后提示学习时代,更多的工作开始关注多模态、多任务、多语言提示学习,并将提示学习扩展到更加丰富的下游任务和应用场景中,如软件工程、语音识别等。
提升学习目前带来收益已经越来越少了,如何更好将提示学习落地?
随着提示学习研究进入深水区,目前提示学习带来的性能提升收益已经越来越小了,如何更加高效得将提示学习技术落地是一个很有价值的方向。复旦大学提出黑箱优化方法[39]不失为一种高效的大规模语言模型落地方式;清华大学开发了提示学习开源工具包OpenPrompt[40];浙江大学和阿里巴巴达摩院团队也提出了可微分提示学习技术DART[10],降低了提示学习的人工成本。
[1] Exploiting cloze-questions for few-shot text classification and natural language inference EACL2021
[2] It’s not just size that matters: Small language models are also few-shot learners NAACL2021
[3] Making Pre-trained Language Models Better Few-shot Learners ACL2021
[4]Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing 2021
[5] GPT Understands, Too 2021
[6] Pre-trained Prompt Tuning for Few-shot Learning 2021
[7] Prefix-Tuning: Optimizing Continuous Prompts for Generation ACL2021
[8] Fine-tuned Language Models Are Zero-Shot Learners 2021
[9] Multitask Prompted Training Enables Zero-Shot Task Generalization 2021
[10] Differentiable Prompt Makes Pre-trained Language Models Better Few-shot Learners ICLR2022
[11] Lightner: A lightweight generative framework with prompt-guided attention for low-resource ner 2021
[12] Plug-Tagger: A Pluggable Sequence Labeling Framework Using Language Models 2021
[13] Template-free Prompt Tuning for Few-shot NER 2021
[14] Prompt-Learning for Fine-Grained Entity Typing 2021
[15] Label Verbalization and Entailment for Effective Zero and Few-Shot Relation Extraction EMNLP2021
[16] Few-Shot Text Generation with Pattern-Exploiting Training 2021
[17] Learning to Ask for Data-Efficient Event Argument Extraction AAAI2022(SA)
[18] Eliciting Knowledge from Language Models for Event Extraction 2021
[19] DEGREE: A Data-Efficient Generative Event Extraction Model 2021
[20] Sentiprompt: Sentiment knowledge enhanced prompt-tuning for aspect-based sentiment analysis 2021
[21] Open Aspect Target Sentiment Classification with Natural Language Prompts 2021
[22] The Power of Prompt Tuning for Low-Resource Semantic Parsing 2021
[23] CPT: Colorful Prompt Tuning for Pre-trained Vision-Language Models 2021
[24] Learning to Prompt for Vision-Language Models 2021
[25] Multimodal Few-Shot Learning with Frozen Language Models NeurIPS2021
[26] An Empirical Study of GPT-3 for Few-Shot Knowledge-Based VQA 2021
[27] 联手信息系统专业委员会:“提示学习”术语发布 | CCF术语快线https://mp.weixin.qq.com/s/WMWn9aA6UFRZdeJuhGeWwA
[28] PTR: Prompt Tuning with Rules for Text Classification 2021
[29] Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification 2021
[30]Knowledgeable machine learning for natural language processing. Communications of the ACM 2021
[31] K-BERT: Enabling Language Representation with Knowledge Graph AAAI2021
[32] Drop Redundant, Shrink Irrelevant: Selective Knowledge Injection for Language Pretraining IJCAI2021
[33] Prompt Programming for Large Language Models: Beyond the Few-Shot Paradigm CHI2021
[34] Why Do Pretrained Language Models Help in Downstream Tasks? An Analysis of Head and Prompt Tuning NeurIPS2021
[35] Knowledge Neurons in Pretrained Transformers 2021
[36] Exploring Low-dimensional Intrinsic Task Subspace via Prompt Tuning 2021
[37] Acquisition of Chess Knowledge in AlphaZero 2021
[38] A few more examples may be worth billions of parameters 2021
[39] Black-Box Tuning for Language-Model-as-a-Service 2021
[40] Openprompt: an open-source framework for prompt-learning 2021
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。