本文主要是介绍【自然语言处理】【Prompt】语言模型即知识库(Language Models as Knowledge Bases),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
相关博客
【自然语言处理】【可解释性】NKB:用于预训练Transformers的神经知识银行
【自然语言处理】【可解释性】自注意力归因:解释Transformer内部的信息交互
【深度学习】【积分梯度】深度网络的公理归因(Axiomatic Attribution for Deep Networks)
【自然语言处理】【可解释性】Perturbed Masking:分析和解释BERT的无参数探针
【机器学习】【可解释性】LIME
【自然语言处理】【聚类】TELL:可解释神经聚类
【自然语言处理】【Prompt】语言模型即知识库(Language Models as Knowledge Bases)
【自然语言处理】【Prompt】P-tuning
一、简介
预训练语言模型在进行预训练的时候,不但能够学习到语言知识,也能学习到一些世界知识。这些世界知识,可以利用“完形填空”的方式从预训练语言模型中提取出来。后面的各种Prompt也是利用了语言模型作为知识库。相比于结构化的知识库,语言模型知识库具有很多优势:(1) 不需要schema工程(例如关系数据库的设计);(2) 可以查询开发类别;(3) 不需要人类进行监督训练。
论文主要提出了一种称为LAMA的探针,用于探索预训练语言模型中到底包含了多少关系知识?对于不同类型的知识(例如实体、常识、问答等)会有不同吗?与自动构建的知识库相比,基于预训练语言模型的知识库效果怎么样?
实验的最终结论是:
- BERT-large捕获的知识可以与离线抽取知识库相媲美;
- 事实知识可以从预训练语言模型中恢复的很好,但是一些关系(特别是N-to-M)的表现特别差;
- BERT-large在恢复事实和常识知识时会好于其他模型,并且对查询短语更加的鲁棒;
- BERT-large在开放域问答任务上效果显著,其precision@10达到了57.1%,而通过监督关系抽取系统得到的结构化知识库在precision@10上的准确率也只能达到63.5%;
二、背景知识
1. 单向语言模型
给定一个输入序列 w = [ w 1 , w 2 , … , w N ] \textbf{w}=[w_1,w_2,\dots,w_N] w=[w1,w2,…,wN],单向语言模型会将整个输入序列按下面的方式进行分解
p ( w ) = ∏ t p ( w t ∣ w t − 1 , … , w 1 ) p(\textbf{w})=\prod_t p(w_t|w_{t-1},\dots,w_1) p(w)=t∏p(wt∣wt−1,…,w1)
通过神经网络来估计概率
p ( w t ∣ w t − 1 , … , w 1 ) = softmax ( Wh t + b ) p(w_t|w_{t-1},\dots,w_1)=\text{softmax}(\textbf{Wh}_t+\textbf{b}) p(wt∣wt−1,…,w1)=softmax(Wht+b)
其中, h t ∈ R k \textbf{h}_t\in\mathbb{R}^k ht∈Rk是神经网络在位置 t t t的输出向量, W ∈ R ∣ V ∣ × k \textbf{W}\in\mathbb{R}^{|\mathcal{V}|\times k} W∈R∣V∣×k是一个可学习参数,用于将 h t \textbf{h}_t ht映射为词表 V \mathcal{V} V中每个词的非标准化分数。获得 h t \textbf{h}_t ht的神经网络结构可能有所不同,典型的语言模型为GPT。
2. 双向语言模型
单向语言模型通过上文词语来预测下一个词。但是,一个词的含义是同时由上下文决定的。因此,给定输入序列 w = [ w 1 , w 2 , … , w N ] \textbf{w}=[w_1,w_2,\dots,w_N] w=[w1,w2,…,wN]和一个位置 1 ≤ i ≤ N 1\leq i\leq N 1≤i≤N,那么双向语言模型期望估计概率
p ( w i ∣ w 1 , … , w i − 1 , w i + 1 , … , w N ) p(w_i|w_1,\dots,w_{i-1},w_{i+1},\dots,w_N) p(wi∣w1,…,wi−1,wi+1,…,wN)
典型的双向语言模型有ELMo和BERT等。
三、LAMA探针
论文引入的LAMA探针可以用来测试语言模型中的事实和常识知识。该探针本质上提供了一组由事实组成的知识源。这里的事实是指subject-relation-object三元组或者问答对。每个事实都会被转换为“完型填空”形式的陈述句(prompt),然后用来从语言模型中查询目标token。举例来说,给定一个事实(dante, born-in, florence),如果要查询是否包含该知识,可以将其转换为陈述句Dante was born-in ___。
在评估效果时,会根据真实token在候选词表中的位置进行评估,排名越靠前,则认为模型包含越多的知识。
1. 知识源
1.1 Google-RE
语料Google-RE是从wikipedia中人工抽取的、包含60K事实的知识源,其覆盖了5种关系。但LAMA探针仅考虑其中的三种:place of birth、date of birth和place of death。排除另外两种的原因是,在评估中不支持多token对象。对于三元组事实中的每个关系,都会定义一个模板,例如:”[S] was born in [O]“为关系place of birth的模板。
1.2 T-REx
知识源T-REx是wikipedia三元组的子集,其要比Google-RE大得多,且拥有更加广泛的关系集合。LAMA中考虑了41个wikipedia中的关系,并且每种关系采样1000个事实。同Google-RE数据集一样,我们人工为每个关系定义了模板(prompt)。
1.3 ConceptNet
ConceptNet是一个多语言知识库,该知识库是从Open Mind Common Sense(OMCS)中的句子构造出来的。LAMA中仅考虑ConceptNet中英语部分的事实,其中有16种关系具有单个token的ojbect。对于任意ConceptNet三元组,可以从OMCS中找到同时包含subject和object的句子。对该句子中的object进行mask,从而构成一个prompt。若三元组对应多个句子,则随机挑选一个。
1.4 SQuAD
SQuAD是一个常见的问答数据集,LAMA从SQuAD的开发集中挑选了305个具有单token答案且上下文不敏感的问题。人工从这些问题中创建完型填空风格的问题。例如,将"Who developed the theory of relativity?“重写为"The theory of relativity was developed by ___”。
2. 模型
论文中测试的语言模型有:fairseq-fconv(Fs)、Transformer-XL large(Txl)、ELMo original(Eb)、ELMo 5.5B(E5B)、BERT-base(Bb)和BERT-large(Bl)。
模型的目标是预测特定位置t处的token。对于单向语言模型,使用t-1处网络生成的向量 h t − 1 \textbf{h}_{t-1} ht−1进行预测。对于ELMo,则会使用前向的 h t − 1 \textbf{h}_{t-1} ht−1和后向的 h t + 1 \textbf{h}_{t+1} ht+1。对于BERT,则遮盖t处的token,然后将 h t \textbf{h}_t ht输入softmax层。为了公正的比较,生成一个所有模型词表的交集,然后在该交集词表上预测token。
3. 基线
为了比较语言模型与传统系统,论文考虑了下面的baseline。
3.1 Freq
给定一个subject和relation关系对,该baseline会基于测试集中该关系对中出现的所有object的频率进行单词排序。该baseline是预测相同object模型小哥哥的上边界。
3.2 RE
对于基于关系的知识源,使用一个预训练好的关系抽取模型RE,该模型在Wikidata上进行训练。该模型是基于LSTM和注意力机制的编码器,用于从句子中抽取三元组。RE对包含事实的句子进行三元组抽取,并构建知识图谱。在测试时,在图谱上查询指定的subject,然后基于RE返回的置信分数来排序object。
3.3 DrQA
DrQA是一个开放域问答系统,其使用两阶段的pipeline来回答自然语言问题。首先,使用TF-IDF从大量文档中检索出相关的文章,然后在检索出的topK的文章中,使用神经阅读理解模型来抽取答案。这里会显著DrQA只预测单个token,从而可以与语言模型进行比较。
4. 评估指标
使用基于rank的评估指标。
5. 注意事项
5.1 人工定义模板
对于每种关系,人工定义一个模板来查询关系种的object。显然,模板的选择会对预测结果产生影响。因此,LAMA探针任务可以看做是衡量语言模型中包含知识的下边界。此外,传统知识库只能通过一种方式来查询关系知识,例如查询关系 works-For \text{works-For} works-For时,如果用户使用 is-working-for \text{is-working-for} is-working-for,那么准确率就为0。
5.2 单个token
在预测任务中仅考虑单个token。限制单个token的原因是,多token解码会引入额外的可调参数,这会导致不好衡量模型中的知识量。此外,准确确定多token仍然是一个有挑战的问题,特别是对于双向语言模型。
5.3 Object槽
在预测任务中仅对三元组中的object进行预测,因为通过反向关系也可以预测subject。没有查询relation slot的原因有二。首先,关系通常会跨越多个token,但这目前还是挑战。其次,即使能够预测多token的relation,但关系可以由不同的词表达,这会对衡量精度带来问题。
5.4 词表交集
待比较的模型是在不同的词表上进行训练的。例如,ELMo有800K的词表,BERT则仅使用30K的词表。显然,词表大小会影响LAMA探针中不同模型的表现。词表越大,那么就越难从大量token中预测出真正的目标。因此,LAMA中仅考虑一个大小写敏感的21K词表,其是所有待比较模型词表的交集。
6. 结果
上表中汇总了主要的结果,显示了不同模型在不同语料上的top1平均准确率。下面分别讨论不同语料上的结果。
6.1 Google-RE
BERT的base版和large版明显优于其他模型。在整体准确率上,相较于基于知识库的方法有2.2至2.9个准确率的提升。BERT-large的效果虽然很好,但不意味着其是以正确的方式得到的答案。因为,Google-RE中的句子很可能是BERT的训练语料,BERT-large可能并没有理解这些结果,只是通过共现模式学习到了subject和object的关系。(什么是真正的理解,人是理解了关系还是记住了更多的共现?)
6.2 T-REx
Google-RE中仅包含了较少的事实和仅有的3种关系,因此继续在更大的T-REx上进行实验。但是,实验结果与Google-RE一致。所以,BERT在检索事实知识方面的性能接近于现有的关系抽取系统和自动构建的知识库系统。按关系分类来看,BERT在 1-to-1 \text{1-to-1} 1-to-1关系上的表现最好,在 N-to-M \text{N-to-M} N-to-M的关系上表现最差。
此外,下游模型可以利用语言模型输出的向量表示来学习,正确答案即使不排在第1,也会排的足够靠前。下图展示了所有模型的P@k曲线。对于BERT来说,正确的object被排在top10的有60%,排在top100的有80%。
此外,BERT-large即使预测不对object,但也能预测出object的正确类型。(这个性质有益于使用prompt预测实体的类型)
为了研究预训练语言模型对同一个事实的不同询问方式的变化(prompt的模板)。论文分析了每个关系中至多100个事实,并从T-REx中随机挑选出10个对齐的句子。每个句子中,遮盖掉object并使用模型进行预测。这可以测试一些语言模型从训练数据中记忆和召回的能力,因为这些模型已经在Wikipedia上训练过。下图展示了每个事实在10个不同查询上排序的平均分布。BERT和ELMo 5.5B的变化程度最低,正确的object接近平均的顶部。令人惊讶的是,ELMo original的表现也与BERT相差不大,但其并没有在训练时见过Wikipedia数据。Fairseq-fconv和Transformer-XL的变化程度高,因为其在训练时没有见过很多的Wikipedia数据。
6.3 ConceptNet
在ConceptNet上检索事实的结果与Google-RE、T-REx一致,BERT-large的模型表现的最好。
6.4 SQuAD
在开发域问答上BERT-large和DrQA还是有一定的差距(也就是有改进的空间)。但是,预训练语言模型是完全无监督的,且没有专门的信息检索系统。此外,还比较了DrQA和BERT-large的P@10,发现差距十分的小。BERT-large为57.1,而DrQA为63.5。(如果top1更准的话,BERT可以直接作为问答系统)
这篇关于【自然语言处理】【Prompt】语言模型即知识库(Language Models as Knowledge Bases)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!