APP下载

知识指导的预训练语言模型

2022-05-20韩旭HANXu张正彦ZHANGZhengyan刘知远LIUZhiyuan

中兴通讯技术 2022年2期
关键词:向量符号模型

韩旭/HAN Xu,张正彦/ZHANG Zhengyan,刘知远/LIU Zhiyuan

(清华大学,中国北京100084)

1 知识的重要作用

20世纪90年代前,研究人员将大量的精力投入到语法理论和专家系统的研究中。无论是语法理论中的语言规则还是专家系统中的知识库,其背后的核心思想均为使用符号体系来表示语言理解所需的各类知识。这些离散稀疏的符号系统有利于抽象丰富的人类知识,并通过人为设计的精密规则实现语言理解中的知识推理。

近些年来,陆续构建的大型知识图谱(知识库),诸如Wikidata、YAGO和DBpedia,就采用了结构化的符号形式来存储海量的世界知识,并在语言理解中发挥重要作用。近些年的研究也证明,大规模知识图谱中的丰富知识可以有力驱动一系列人工智能和自然语言处理的应用,例如问答系统、对话系统、文本检索和推荐系统。

符号知识的一大痛点在于难以发挥机器所擅长的数值计算优势。此外,早期的语法规则与专家系统在泛化性上也存在问题。这就需要一套基于数值计算且具有一定泛化性的知识表示框架。统计学习也由此被应用于自然语言处理任务中。20世纪90年代后,支持向量机、决策树、条件随机场的诸多经典统计模型被广泛应用,在各类自然语言处理任务上取得了一系列突破。这些统计方法用模型参数来隐式地表示各类知识,并基于概率计算来进行推理。相对于符号知识的“人类友好”,这种连续数值化的模型知识更加“机器友好”。

统计模型拉开了从符号知识到模型知识的序幕,开启了用数值表示知识的新纪元,但统计模型本身的性能是十分有限的。近年来,神经网络蓬勃发展,它为数值化的知识表示及语义理解提供了更强大的工具。浅层神经网络首先被应用于知识表示中。分布式词向量表示旨在利用低维连续向量来表示词汇相关的语言知识,并通过海量无标签文本的自监督学习来学习词向量。得益于分布式词向量中蕴含的丰富语言知识,词的向量化表示已经成为当前完成各类自然语言处理任务的标准范式,也有效地填补符号知识与数值计算间的鸿沟。

随着神经网络的深度与参数量的增加,大规模预训练语言模型(PLM)被提出,这推动了一系列自然语言处理任务的发展。预训练语言模型的主要特点在于其两阶段的构建方法:第1阶段,与分布式词向量表示类似,在海量无标签文本上进行自监督学习,以学习通用的语言特征和规则(即预训练);第2阶段,将预训练模型在具体的自然语言处理任务上进行小规模、有标注数据的二次训练(即微调),以快速提升模型在这些任务中的性能,最终形成可部署应用的模型。研究表明,在自监督学习过程中,预训练语言模型可以捕捉到丰富的词法知识、句法知识、语义知识、世界知识,并通过庞大的参数将这些知识存储起来。这样一来,微调模型的参数可以有效地将模型知识迁移到具体的任务上。

图1显示了自然语言处理技术的发展脉络,清晰地表明了各个时期知识是如何表示的,以及是如何被运用于语言理解的。在使用上,符号知识与模型知识也各有优势。尽管预训练语言模型已经在当前诸多自然语言处理任务上取得了很好的效果,但大量数据驱动下的预训练语言模型依然在可解释性、鲁棒性上存在不足。数据驱动的预训练语言模型具有善于学习的语义特征,同时符号表示的结构化知识有着善于认知推理的特征。综合发挥以上两个优势,形成知识指导的预训练语言模型,对于揭示自然语言处理机理,实现智能语言理解,具有重要的理论意义与实用价值。

图1 自然语言处理技术发展脉络[11]

2 知识指导的预训练语言模型范式

对于如何将知识有效地应用在预训练语言模型中,我们已在文献[11]中做了简要介绍。本文中我们进一步扩展并提出了知识指导的预训练语言模型。如图2所示,一般来讲,预训练语言模型有4个要素:模型输入、模型架构、训练目标和参数空间。

图2 知识指导的预训练语言模型范式[11]

•对模型输入而言,知识是输入的重要补充,为文本中的关键词句提供更加有效的语义解释和语义特征;

•对模型架构而言,知识可以引入先验指导模型内部的特征处理流程,进而提升模型性能;

•在训练目标上,知识可用于构造新的训练任务,提供更加丰富的训练目标,促进预训练语言模型能力的多样化;

•在参数空间里,相比于随机初始化,用引入知识的方式来约束参数空间可以提供一个更好的参数空间初始点,有利于加速收敛,优化出更好的模型参数。

正如图2所示,知识可被应用于其中任意一部分,以起到强化预训练模型性能的作用。接下来,我们将介绍这个框架的具体内容。在图中,我们给出了结构风险函数在知识指导前后的变化。其中,x、y是样本的输入输出,k是引入的知识信息或者知识驱动的模块,f是预训练语言模型本身,F、K分别是参数空间、知识约束的参数空间。

2.1 知识增强

在语言表达过程中,人们习惯省略一些众所周知的背景知识。这并不影响人类对语言的理解,却不利于机器对语言的理解。知识增强旨在将这部分背景知识显式地作为补充输入,丰富上下文信息,以帮助模型更好地进行文本理解。

知识增强的方式主要有两种。第一种是直接将知识转换成文本形式,并拼接到已有文本中作为输入。最简单的做法就是将相关的结构化图谱信息转换为文本内容。在此过程中,如何找到和输入相关的知识就是一个主要挑战。基于信息检索的预训练语言模型是一个有效的解决方案,例如REALM和RAG。其预训练一个文本检索器,用于构建输入文本和背景知识文本的关联,使用时再将检索到的知识文本与输入文本拼接起来,给模型提供更加丰富的信息。

知识增强的另一种方式则是通过设计特定的知识融合模块,将文本的表示向量和相关知识向量融合在一起。这与上述文本拼接有明显不同:知识不再以符号形式进行表达,而是被蕴含在模型参数中。ELMo是该方向的代表性工作。由于ELMo是一个在超大规模语料上训练的语言模型,其表示向量可以提供丰富的语言知识,解决一词多义等问题。人们通常使用ELMo来代替传统词向量,以提升模型的基本文本理解能力。更进一步地,不少工作将知识图谱中的实体与关系表示为向量,并将这些向量输入到预训练语言模型以进行知识融合,这也是非常有效的知识增强方法。

2.2 知识支撑

知识支撑可以利用大量已有的知识来构建更好的结构先验。具体而言,在模型底层,知识支撑可以作为一种数据预处理模块;而在模型顶层,知识支撑可以指导模型的预测。

知识记忆网络是数据预处理模块的代表技术。根据输入特征,底层的网络结构会动态调整,以连接对应的记忆区域,从而将记忆模块中的知识注入到模型的推理计算中。在此过程中,知识的表示形式通常为低维稠密向量,也就是所谓的模型知识。采用了记忆机制的预训练语言模型在多跳推理、长文本处理等需要长距离语义关系处理的任务上有显著效果。

当知识支撑作为顶层的预测指导模块时,其目标是借助知识的先验信息,构建答案之间的关联,更好地对备选答案进行筛选。在此过程中,知识的表示形式通常是符号化、层次化的。结构化知识库支撑的语言模型是该方向具有代表性的研究工作。在生成句子的过程中,语言模型可以利用知识库信息生成更加适合当前语境的词。

2.3 知识约束

对于知识约束,我们既可以基于已有输入数据并结合相关知识来构建训练目标,也可以直接使用外部知识来构建新数据和新目标。

知识蒸馏是一种代表性的知识约束方法,也是知识结合已有输入数据来构建训练目标的典型案例。知识蒸馏能够利用大模型对已有数据进行预测,从而提供新的监督信号,帮助小模型学习取得更好的效果。具体而言,知识蒸馏要求小模型的中间计算结果和大模型的中间计算结果尽可能保持一致,包括隐层表示以及预测的标签分布。相比于单一的人工标注标签,知识蒸馏能提供更加丰富的模型知识信息。知识蒸馏已被广泛用于预训练语言模型以提升其计算效率与模型表现。

远程监督是另一种具有代表性的知识约束方法,能够根据已有知识图谱和无监督文本自动生成大量新训练数据。远程监督在信息抽取领域获得广泛应用,大大降低了数据标注成本,显著提升了模型性能。我们给出了一个远程监督的简单示例:给定知识图谱中的三元组(包含头实体、尾实体及其关系),找出同时包含头尾实体的文本,并将其标注为该关系类型的样例。基于上述启发式规则,我们可以自动获取大量知识相关的文本分类数据来训练预训练语言模型。尽管这种自动标注方式存在噪音,如标注的样例可能并不反映头尾实体间的标注关系,但不少工作表明,远程监督数据依然能够有效地帮助模型的训练。这些使用远程监督数据增强的预训练语言模型被验证具有强大的实体关系理解能力。

2.4 知识迁移

知识迁移的目的在于利用知识进行参数空间的约束,以降低参数空间的搜索代价,提升最终模型的性能。知识迁移技术已被广泛应用于自然语言处理。迁移学习和自监督学习都是知识迁移的重要研究方向。各种预训练语言模型的微调阶段本身就是一种知识迁移,旨在将预训练阶段获取的丰富模型知识迁移到具体任务上。

对于预训练过程而言,最近的一些工作尝试以已有的预训练语言模型为基底来训练新的预训练模型。部分工作侧重于利用较小的预训练语言模型的模型知识,来降低大规模预训练模型的训练代价;而另一些工作则基于已有预训练语言模型的通用知识,来指导更多垂直领域的知识。

无论是对于预训练语言模型的预训练还是下游任务适配,充分迁移已有的模型知识相较于毫无基础的重新学习,在计算效率和模型效果上均有显著优势。

总之,我们从预训练语言模型的模型输入、模型架构、训练目标和参数空间4个方面入手,构建了全面的知识指导的预训练语言模型框架。在该框架下,符号知识和模型知识均可以得到充分利用,有效提升预训练模型的学习能力和模型表现。

3 预训练语言模型的知识激发

在上一章节中,我们关注的是如何将知识注入预训练语言模型之中。在这一章节中,我们将简单介绍如何激发预训练模型中的知识。这对于应用知识指导的预训练语言模型具有重要意义。

预训练语言模型能够通过微调显著提升下游任务性能,却仍然面临着两个重要挑战:(1)预训练和微调之间的任务形式存在较大差别,预训练只考虑语言建模,但下游任务目标形式可能各有不同,这种差别会显著影响知识迁移的效能。(2)随着预训练模型参数规模迅速增加,即使进行模型微调,也需要大量技术资源。为了解决这些问题,最近学术界提出了一种新的微调技术,即提示学习(Prompt Tuning)。该技术能够有效利用大规模的模型知识,日益获得广泛关注。

提示学习的目的是将下游任务转化为类似于预训练目标的填空任务。采用相同的优化目标有利于在下游任务中更好地激发预训练模型中的知识。以情感分类的提示学习为例(图3),模型的输入由两部分组成:输入数据以及提示学习所需的提示模板。基于该输入,预训练语言模型在一组标签词中选择概率最高的词进行填空,再将预测的词映射到相应的分类标签上。图3中,提示模板为“It was[Mask]”,“[Mask]”代表需要进行填空的位置。标签词为“great”和“terrible”,“great”对应正向情感,“terrible”对应负向情感。提示微调也在一系列自然语言处理任务上取得了成效,包括文本分类、序列标注、文本生成等任务。

图3 预训练、微调、提示学习示意图

为了在下游任务上取得成功,提示模板和标签词(提示语)需要进行精细的设计和选择。为了避免费力而复杂的提示语设计,自动搜索高质量的提示语成为目前工作的一个重点:研究者探索使用梯度优化来搜索最佳提示语,或使用生成模型来提供多个候选提示语,然后逐一评估其有效性,以选择最佳提示语。目前,自动搜索提示语的成本仍然很高,这限制了这些自动方法的使用场景。为此,也有研究者提出用逻辑规则指导提示学习。这种方法将先验知识编码到提示语中,降低搜索以及训练难度,使模型知识可以更好地为下游任务服务。为了避免复杂的提示设计,一些工作采用了可学习的提示向量来驱动预训练语言模型进行提示微调,无须变动预训练模型的任何参数,只须调整提示向量即可。

不少知识探测工作表明,通过设计提示模板,预训练语言模型甚至可以补全结构化知识信息。上述研究表明,除了知识模型的性质外,预训练语言模型也有一定的符号知识特性。输入提示能充分激发出预训练语言模型中各个层面丰富的知识信息,以解决具体问题。预训练语言模型在推动自然语言处理中模型知识的使用方面有着重要作用。从某种程度上而言,预训练模型也将影响自然语言处理中符号知识的使用范式。尽管预训练语言模型仍需符号知识进行强化,但其本身也是一种符号知识的优秀载体,有利于符号知识与模型知识的融合与统一。

4 结束语

在文章中,我们围绕知识对于自然语言处理的重要性、知识指导的预训练范式、预训练语言模型的知识激发3个方面,介绍了知识指导的预训练语言模型的相关技术。在各个方向上,尽管目前均已获得一些成果,但仍有许多尚未解决的重要问题。这需要研究者进一步努力,以取得突破。

清华大学姚远、李涓子和孙茂松在文章的撰写过程中,给出了宝贵的建议,在此表示感谢。

猜你喜欢

向量符号模型
自制空间站模型
向量的分解
让阅读更方便的小符号
加减运算符号的由来
模型小览(二)
圆周运动与解题模型
离散型随机变量分布列的两法则和三模型
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
草绳和奇怪的符号