使用预训练语言模型作为知识库的可能性

引言

近年来,预训练语言模型在NLP领域展现出了强大的能力而被广泛采用,成为了解决NLP问题的“银弹”。借助大规模数据集、以Transformer为代表的深度神经网络模型、以及设计好的自监督预训练(pre-train)任务,预训练语言模型展现出了强大的泛化能力,经过微调(fine-tune)后在各个下游任务中得到了优秀的成果,其强大性能让人对其学习到的内容产生了兴趣:预训练语言模型是否真的在预训练过程中学习到了“知识”呢?

最近也有工作提出了prompt范式,通过构建的prompt语句,将特定的下游任务转换为预训练语言模型的预训练任务(如Mask Language Model)从而得到结果,这种形式有点类似于从知识库中使用一定的查询语句找出对应的答案。因此,有研究者开始探索是否能将预训练语言模型作为“知识库”使用。本文针对自然语言处理中的预训练语言模型如何通过预训练建模“知识”、推导知识,以及预训练语言模型是否能作为知识库这三方面进行了简单的论文导读。

预训练语言模型简述

预训练语言模型的其实可以追溯到静态词向量的研究。从最初的One-Hot向量、词袋模型、tf-idf到后来的Word2Vec[1]、FastText[2,3]等方法,研究者通过建模token的统计概率信息,或者上下文的统计概率信息来对语言进行统计学建模。

例如,上图为word2vec提出的两种经典方法CBOW与Skip-gram,它们分别通过“使用周围的词来预测中心词”以及“使用中心词来预测周围的词”这两种方法,使用滑动窗口的方法对窗口大小长度的序列进行上下文建模,最终在训练过程中通过梯度下降的方法优化句子中每个词的词嵌入(embedding)。相比于最初的One-Hot向量表示、词袋模型、tf-idf等传统统计学方法,word2vec等静态词向量方法能够更好地考虑到词的上下文语义信息,同时可以减少传统方法遇到的维度灾难问题。但是,这种静态的词嵌入表示方法也有不少的缺点,最典型的问题是词与词嵌入是一对一的表示,无法正确表示在不同上下文中出现的一词多义信息,即便到了后来研究者提出了一些效果更好的模型(Glove[4])也没能解决这种静态词向量的固有问题。

从词嵌入到预训练语言模型

为了解决上述静态词嵌入表示的问题,研究者提出了基于语言模型嵌入(Embedding from Language Models, ELMo)的方法[5],使用长短时记忆神经网络(LSTM)分别对文本的正向和反向进行语言模型建模:

通过语言模型任务进行预训练后,迁移到其它NLP任务中进行微调,在多个benchmark数据集上都得到了显著的提升:

同时,作者也通过实验对ELMo的消岐能力进行了分析,发现ELMo能够有效地区分多义词。自此以ELMo为代表的各种预训练语言模型开始不断出现,并不断提升各个NLP子任务的效果。

2017年Google提出了用于机器翻译任务的Transformer[6],Transformer基于多头自注意力机制实现,解决了之前LSTM类型模型无法很好处理长距依赖的问题并且更易于进行并行运算,在预训练语言模型领域也展现出了强大的能力,之后的预训练语言模型代表作BERT[7]、GPT[8]均是基于Transformer模型构建的。

Google于2018提出的BERT是预训练语言模型的经典之作。BERT由多层Transformer Encoder模块堆叠构成,作者为其设置了两种预训练任务:Masked Language Model(MLM)与Next Sentence Prediction(NSP),采用两阶段预训练-微调范式,如下图所示:

其中,MLM来自于完形填空任务(Cloze),将一句完整的话中间的某些token抹去,让模型通过上下文来还原该token;NSP为句子对匹配任务,将两个句子拼接后传入模型中,让模型判断这两个句子是否在原语料中为连续关系。得益于这两个预训练任务,BERT在token层面与sentence层面都能通过大规模的无标注语料进行自监督训练,从而获得优秀的预训练模型参数,在迁移至下游NLP任务微调时,可以取得非常好的效果。

在BERT的基础上,研究者们对预训练语言模型的可能性进行了进一步的探索:有使用更大的预训练数据集的、有定义更合理的预训练任务的、以及还有各种尝试引入外部知识强化预训练语言模型的(如K-BERT[9]、thu-ERNIE[10]等)、还有引入特定语种的语言特性的(如baidu-ERNIE[11]、BERTwwm[12]等)、以及最近出现的通过提示(prompt)指导预训练语言模型从而提升效果减少训练数据的工作。邱锡鹏老师等对预训练语言模型进行了详尽的综述[13],下表展示了部分典型的预训练语言模型的模型架构、预训练任务、语料、参数量等信息:

THUNLP实验室也对预训练模型的过去、现在及将来进行了总结与展望[14],下图展示了部分典型预训练语言模型的“族谱”:

在预训练语言模型的训练过程中,模型通过自监督学习任务在非常大规模的语料库上进行了训练,除了学习到了语言模型之外,是否也能通过学习捕获到一定的规律,从而掌握文本中所蕴涵的事实类知识呢?如果预训练语言模型能掌握一些知识,应该如何从模型中把需要的知识查询出来呢?研究者们对此进行了探索性的研究。

Language Models as Knowledge Bases?

此工作[15]由Facebook完成,发表在EMNLP 2019。作者从MLM预训练任务出发,认为以BERT为代表的预训练语言模型可能学习到了事实类的知识(以主谓宾三元组形式存在)。例如,给定一句话“但丁于1265年出生在[MASK]”,通过MLM可以让模型从隐式表示中找出被mask掉的内容是什么。如果MLM模型成功将被隐去的内容还原,就相当于预训练语言模型包含了这条知识(但丁,出生于,佛罗伦萨)。相比之下,在传统的知识图谱上查询此知识需要先将原文本进行信息抽取构建三元组存储在知识库中,然后再构建查询,这些步骤都需要非常复杂的NLP pipeline,可能会产生错误积累从而影响效果。由此,作者设定了探针测试实验,探索预训练语言模型作为知识库的能力和潜力。下图为作者设定的两种查询事实类知识的方式(通过知识库查询以及通过预训练语言模型预测):

LAMA Probe 数据集构造

作者将设定的探针测试命名为LAMA(LAnguage Model Analysis) Probe,用来检测语言模型中包含了多少的事实类与常识类的知识。作者收集了GoogleRE等知识源,通过构造模板将知识三元组构造成模型能接收的完形填空的形式。例如,GoogleRE中包含“place of birth”关系的数据,作者定义了“[S] was born in [O]”这样的模板用于填充。同理,对于常识类的知识,作者也定义了类似的模板,设定包含常识类三元组的数据将宾语mask掉,例如对于“CapableOf”(有...能力)的常识类数据,作者构造为“[S] can [O]”。下表展示了部分作者构造的数据形式:

通过上述的操作,并对数据进行筛选(排除掉不符合MLM范式的多token类型的数据等)后整合得到了最终的LAMA探针测试数据集。

实验

为了评估预训练语言模型在LAMA上的效果,作者设定了几个baseline用于对比:

  1. Freq:直接根据主语和关系对在测试集中找出可能匹配上的宾语,并按照宾语的出现频次进行排名。
  2. RE:作者引入了前人基于LSTM-Att构建的,在维基数据集上训练的关系抽取模型。此模型也包含两种情况,在得到宾语时进行实体链指的RE模型记为REo,直接进行字面值匹配的RE模型记为REn。
  3. DrQA:一个流行的开放域问答系统。

下表展示了使用不同模型(包括ELMo、TransformerXL、BERT以及设定的baseline模型)在LAMA探针实验中得到的结果:

由表中的LM大列可以看到,预训练语言模型确实能重构部分的事实类与常识类知识。可以看到最后一列(Bl,即BERT-large)的效果相较于其它LM-based的方法普遍较好,说明BERT-large相比于ELMo、TransformerXL等预训练语言模型包含了更多的事实类与常识类的知识,作者也推测了这可能与BERT-large预训练的数据量大也有关系。当然,这样的无监督MLM得到的结果还是比不上有监督的特定方法,尤其在SQuAD上与DrQA baseline的差距还相当大。

小结

此工作主要是探索性质的,作者也没有对于预训练语言模型在预训练阶段捕获知识的能力进行详尽的测试(可以通过在LAMA数据集上预训练或continuous learning实现),而是着重探究了已经训练好的预训练语言模型中包含的事实类或常识类知识,并且从文章结构上看作者更加偏向于如何构造和分析LAMA这样的探针测试。从结果上看,虽然指标并不高,但可以说明预训练语言模型是有一定从大规模语料中提炼这些知识的能力的。但此文的限制也相当多,例如需要人工精心构建的模板、提前将不合适的类型或数据筛去等。

How Much Knowledge Can You Pack Into the Parameters of a Language Model?

此工作[16]由Google提出,发表于EMNLP 2020。此文使用了Google自家的T5预训练语言模型[17]作为基础模型。T5模型将所有NLP任务都归结转化为了text-to-text的任务,包括相似度等任务也是以seq2seq的方式生成的结果。而传统的MLM任务在T5中以类似Span Boundary Detection的形式存在,如下图所示:

在一般的问答任务中,通常会提供一个问题与一段包含问题答案的文档,通过模型在文档中找到问题的答案。而此工作基于T5 text-to-text的范式,以“闭卷”(closed-book)的形式在没有对应答案的上下文的情况下直接向模型输入问题以获取对应的答案。这样的问题设定可以说是在考验预训练语言模型在fine-tune的过程中能学到什么,以及考验模型能存储住多少知识。

实验

此文直接使用了QA任务中常用的几个数据集:NQ、WebQuestion和TriviaQA。在这几个数据上,作者使用T5模型进行text-to-text的微调,将问题做为输入并将字面量答案作为预测目标。进行fine-tune后,在测试集上进行评估,得到结果如下表所示:

可以看到,T5通过此方法在“闭卷”问答中可以得到和“开卷”问答模型相当的结果,这说明通过fine-tune是可以将“知识”输入预训练语言模型并存储的。

小结

此文的结论与LAMA类似,都是通过MLM或者text-to-text QA这些具体的任务探索了预训练语言模型存储知识的能力。而此文在QA任务数据集上能取得与“开卷”模型相当的SOTA效果,更是证明了将预训练语言模型作为知识库的潜力。这样端到端通过预训练语言模型在QA任务数据集上微调的形式可以避免复杂的QA pipeline设计,其效果也许还有进一步提升的空间。

oLMpics - On what Language Model Pre-training Captures

此文[18]通过设定多种探针任务,针对“预训练语言模型究竟能捕获到什么信息”这一设问进行了验证。作者为了验证不同的预训练语言模型在不同的“知识”形式、不同“知识推理”上下文情况下的能力,提出了如下几个任务:

  • Always-Never:测定模型对从“绝不会”(Never)到“总是会”(Always)这样的频次或常识情况下的回答能力;
  • Age Comparison:测定模型对年龄的数字比较大小的能力;
  • Object Comparison:测定模型对尺寸等数字比较大小的能力;
  • Antonym Negation:测定模型对反义词的表达能力;
  • Property Conjunction:测定模型对概念中属性的结合的能力;
  • Taxonomy Conjunction:测定模型感知不同概念的共性、共同类别的能力;
  • Encyclopedic Composition:测定模型回答知识库问答的能力;
  • Multi-Hop Composition:测试模型进行多步推理(multi-hop reasoning)的能力。

所有的探测任务都以选择题的形式输入模型,如上表所示,Example列中列出了各个任务的具体示例,Human列中列出了人类在测评对应任务中的表现,Setup列中的字段表示该任务会以怎样的形式进行设定。此文使用了两种设定:MC-MLM - 多选完形填空,适用于答案集较少的情况;MC-QA - 多选问答题,适用于答案和问题差别较大且更为复杂的情况。

实验

此文对BERT、BERT-wwm、RoBERTa三种模型的base或者large版本进行了测评,针对前面提到的8种任务分别进行了fine-tuning和定量计算。最终,作者将不同模型、不同任务的完成情况总结为一张表格:

表格中的“勾”表示该模型在对应任务中有着较高的准确率,“半勾”表示有着一定的准确率,未打钩则表示该模型在对应任务中无法得到明显的效果。

小结

从结果上看,预训练语言模型是可以在部分上述设定的任务中取得一定效果的。较为突出的是RoBERTa Large模型,体现出了较强的能力。但是,在Always-Never任务、百科类推理任务和多跳推理任务中,没有任何一个模型能得到有效的效果。总体上看,在作者的任务设定下,预训练语言模型在知识推理中得到的结果差强人意,其效果与模型和任务组织形式有着明显的相关性。也许在更大规模的预训练语言模型,或更符合预训练语言模型的推理任务设定下,可以让效果更加明显。

Knowledgeable or Educated Guess? Revisiting Language Models as Knowledge Bases

此文[19]是软件所韩先培老师组发表在ACL 2021的工作。作者对设定的“将预训练语言模型作为知识库使用”这一前提进行了探索性实验,主要围绕着prompt范式下从预训练语言模型中获取知识的性能与效果来源进行了实验与分析。

作者根据现有工作,将通过提示语从预训练语言模型中获取知识的方式分为了三大类:

  1. 基于提示语的知识抽取,通过如“Jobs was born in [MASK]”这样的MLM任务直接获取知识;
  2. 基于实例的类比知识抽取,通过形如“Obama was born in Hawaii. [SEP] Jobs was born in [MASK]”这样的类比提示语来提升获取知识的效果;
  3. 基于上下文的知识抽取,构建形如“Jobs lives in California. [SEP] Jobs was born in [MASK]”的提示语,通过上下文来引导知识的获取。

现有工作通过这些提示语的组织形式可以得到良好的效果,作者对它们良好性能的来源提出了质疑,并设计实验分别对这几种通过提示语获取预训练语言模型知识的方式进行了分析。

实验

如上文所述,作者针对不同的提示语构建方式分别定义了几组实验。

  1. 基于提示语的知识抽取

作者使用LAMA与WIKI-UNI两个分布不同的数据集,使用相同的提示语通过MLM进行知识获取,如下图所示:

在图(a)中,可以看到LAMA与WIKI-UNI的答案分布完全不一致,但在图(b)中,作者使用相同的提示语就会得到相似的答案分布,这说明了这种基于MLM的知识抽取形式的效果更加依赖于提示语的设计。后续作者还进行了定量的计算,也支持这个结论。

  1. 基于示例的类比知识抽取

前人工作发现了在构建提示语时,可以通过一些示例来引导MLM的填充,并提升模型的性能。作者对此在LAMA数据集上构建了测试实验,将示例的实体进行同类别替换。

实验结果显示,在加入示例后,整体知识抽取的效果得到了提升,但如果是将已有的实例的实体替换为同样类别的实体,并不能给模型带来更好的效果。因此,可以得出结论:通过向提示语中加入示例,可以提升模型预测类型的能力,但不能提升模型得到具体的答案实体的效果。

  1. 基于上下文的知识抽取

如前面的例子所示:“Jobs lives in California. [SEP] Jobs was born in [MASK]”这样的提示语实际上泄露了答案:California。作者发现这样的现象后,在LAMA上构建实验,将上下文中的答案也进行遮掩,以排除潜在的答案泄露问题。

实验结果如上表所示,在遮罩掉上下文的答案之后,仍然可以获得一定的效果提升。作者提出猜想,可能是把上下文中的答案遮罩之后,模型仍然可以通过MLM的形式重建上下文中的答案,从而造成隐式的答案泄露。为了证明这个猜想,作者将数据集根据是否可以根据上下文重建遮罩答案划分成了两组,如下表所示:

可以发现,在上下文无法重建答案时,根据上下文构建提示语并不能带来很大的效果提升;而如果上下文可以重建答案,则无论是否将泄露的答案遮罩掉,这样的上下文提示语都能带来较大的效果提升。这样的结果也说明了基于上下文构建提示语的知识抽取的优良效果,很大程度上是依赖于显式或者隐式的答案泄露。

根据上面的实验,作者也得出了总体的结论:

基于提示语的知识抽取方法的效果会受到提示语偏差的影响;基于示例的类比知识抽取主要是依赖示例中对应实体的类型的指导提升效果;基于上下文的知识抽取的效果提升主要是依赖上下文中可能存在的答案泄露。

小结

作者通过探索性实验发现,与预训练语言模型知识获取准确性相关的主要因素是提示语的构建,包括提示语偏差、类别指导和答案泄露几种非预期的行为导致了预训练语言模型作为知识库的性能提升,因此在目前的情况下,还不能claim“预训练语言模型可以替代知识库”这一结论。

总结

在本文介绍的这几篇论文中,可以发现现在研究者们仍然是将预训练语言模型作为黑盒进行研究的,主要通过构建不同的探针任务来经验性的判定预训练语言模型学习知识、获取知识的手段与效果。如果后续能对预训练语言模型的机制进行更具体的探讨,以及对fine-tune或prompt等获取知识的方法进行更精细的建模,可能会得到更加可信、更加无偏的结果,这样才能进一步研究或探讨将预训练语言模型代替知识库的可能性。

参考文献

  • [1] Efficient Estimation of Word Representations in Vector Space, ICLR 2013
  • [2] Bag of Tricks for Efficient Text Classification, EACL 2017
  • [3] Enriching Word Vectors with Subword Information, TACL 2017
  • [4] GloVe: Global Vectors for Word Representation, EMNLP 2014
  • [5] Deep Contextualized Word Representations, NAACL 2018
  • [6] Attention Is All You Need, NIPS 2017
  • [7] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL 2019
  • [8] Improving Language Understanding by Generative Pre-Training, 2018
  • [9] K-BERT: Enabling Language Representation with Knowledge Graph, AAAI 2020
  • [10] ERNIE: Enhanced Language Representation with Informative Entities, ACL 2019
  • [11] Ernie: Enhanced representation through knowledge integration, 2019
  • [12] Pre-Training with Whole Word Masking for Chinese BERT, 2019
  • [13] Pre-trained Models for Natural Language Processing: A Survey, Science China Technological Sciences 2020
  • [14] Pre-Trained Models: Past, Present and Future, 2021
  • [15] Language Models as Knowledge Bases?, EMNLP 2019
  • [16] How Much Knowledge Can You Pack Into the Parameters of a Language Model?, EMNLP 2020
  • [17] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020
  • [18] oLMpics - On what Language Model Pre-training Captures, ACL 2020
  • [19] Knowledgeable or Educated Guess? Revisiting Language Models as Knowledge Bases, ACL 2021