論文題目:Graph-Based Reasoning over Heterogeneous External Knowledge for Commonsense Question Answering
論文來源:AAAI 2020 信工所,北大,微軟
論文鏈接:https://arxiv.org/abs/1909.05311
關鍵詞:知識圖譜,機器推理,常識問答,GCN,Attention
官方介紹:機器推理系列第一彈:機器推理在常識問答任務中的應用
本文處理的是常識問答任務。使用結構化的ConceptNet和非結構化的Wikipedia中的純文本,作爲兩個外部知識源,並根據問題和答案選項,從兩個知識源中抽取出evidence。再根據evidence構建出圖,提出算法重新定義單詞間的距離,進行節點的表示學習。然後使用GCN和圖注意力機制進行節點的編碼和evidence的聚合,得到最終的表示,用於答案的推斷。
文章目錄
1 摘要
常識問答的目的是回答那些需要背景知識的問題,而且這些知識並沒有在問題中明確表達出來。
主要的挑戰是:如何從外部知識中獲取證據,並根據這些證據做出預測。
最近的研究工作:1)從人工標註的證據中生成證據,但是人工標註證據耗時耗力,難以收集;2)從結構化或非結構化的知識庫中抽取出證據,但不能同時利用這兩種資源。
本文提出新方法,自動地從異質知識來源(heterogeneous knowledge sources)中抽取出證據,並且基於這些證據進行問答。
抽取的證據來源有結構化的知識庫(ConceptNet)和Wikipedia plain texts。作者將這些來源的信息構建成圖,以得到證據間的關係結構。
模型由兩個模塊組成:1**)基於圖的上下文相關的詞表示學習模塊;2)基於圖的推斷模塊**。第一個模塊利用了圖結構的信息,來重新定義單詞間的距離,以更好地學習上下文的詞表示。第二個模塊使用圖卷積網絡,將鄰居信息融合到節點的表示中,並使用圖注意力機制進行證據的聚合,以用於最終答案的預測。
實驗結果顯示,本文提出的方法在以色列特拉維夫大學常識問答任務CommmonsenseQA數據集上取得了目前state-of-the-art的準確率。
2 引言
(1)任務介紹
1)推理
推理是人工智能和自然語言處理中一項重要的富有挑戰的任務,目的是從原理(principle)和證據(evidence)中推理出結論。如果把推理過程看成運行一個機器的話,evidence就是機器的燃料,principle就是機器本身,機器使用燃料來生成預測出的推理結果。
大多數研究只將當前的數據點作爲輸入,忽略了背景知識中的重要證據。
2)常識問答
本文研究的是常識問答,收集背景知識並使用這些知識推理出問題的答案。
CommmonsenseQA是這一領域很有影響力的數據集,任務是給定1個有個tokens的自然語言問題和5個候選答案作爲輸入,要求輸出正確的答案。
該數據集在構建過程中已經保證每個候選答案都和問題中的詞彙具有語義關聯,因此正確回答該數據集中的問題需要有效利用問題和候選答案的相關背景知識。
藍色的單詞是來自問題的信息(concept),綠色的單詞是ConceptNet中的證據(evidence),紅色的單詞表示根據證據選擇出的答案。
上圖就展示了CommmonsenseQA數據集中的一個例子,做出正確的決策需要多個外部知識。根據ConcepNet中結構化的知識,可以選出;根據Wikipedia中的知識可以選出。結合這兩個外部知識可以得出正確的答案。
(2)現有的方法
近些年有學者提出了一些方法來抽取出證據並基於證據進行推理。然而,這些方法要不是根據人工標註的證據生成新證據,要不就是從異質的知識來源中抽取出證據,例如ConceptNet中結構化的知識、Wikipedia中的純文本(plain texts)。這些方法都只針對一種知識來源,不能同時利用這兩種知識來源(結構化的知識和非結構化的純文本知識)。
結構化的知識來源中包含着不同概念間的結構化關聯信息,有助於機器推理,但是它們的覆蓋率很低。純文本可以提供豐富的高覆蓋率的證據,可以對結構化的知識進行補充。
(3)作者提出
從異質的外部知識庫中自動收集證據,並基於這些證據實現常識知識問答。
方法分爲兩個部分:1)知識抽取;2)基於圖的推理。
在知識抽取部分,我們自動地從ConceptNet抽取出圖路徑並從Wilipedia中抽取出句子。爲了更好地利用證據之間的關係信息,我們使用語義角色標註(SRL)從Wikipedia的句子中抽取出三元組並從ConceptNet中抽取出圖路徑,從而構建出圖。
在基於圖的推理部分,我們提出一個基於圖的方法來更好地使用圖中的信息。提出了兩個基於圖的模塊:
1)基於圖的上下文詞表示學習模塊:使用了圖結構信息,對單詞之間的距離進行重定義,以學習到更好的上下文詞表示;
2)基於圖的推斷模塊:先使用GCN將鄰居的信息編碼到節點的表示中,然後使用圖注意力機制進行證據的聚合。
作者在CommonsenseQA數據集上進行實驗,結果顯示這兩個模塊都促進了模型性能的提升。
(4)貢獻
-
使用基於圖的方法,利用異質信息來源中的證據信息,以進行常識問答;
-
提出基於圖的上下文詞表示學習模塊和基於圖的推理模塊,以更好地利用圖中的信息,用於常識問答。
-
在在CommonsenseQA數據集上進行實驗,實現了state-of-the-art。
3 方法概覽
本文方法的概覽如圖2所示,由兩部分組成:知識抽取和基於圖的推理。
(1)知識抽取
根據給出的問題和選項,從結構化的知識庫ConcpetNet和Wikipedia純文本數據中抽取出知識,並使用這些知識的關聯結構,構建成圖。
(2)基於圖的推理
提出兩個模塊:
1)基於圖的上下文詞表示學習模塊:使用圖信息重新定義單詞間的距離,以更好地學習詞表示;
2)基於圖的推斷模塊:使用GCN和圖注意力機制,聚合鄰居的信息,得到節點的表示,以用於最終的預測。
接下來將詳細介紹模型的每一個部分。
4 知識抽取
給定問題和選項,使用本文的方法從ConceptNet和Wikipedia中抽取出證據。
4.1 從ConceptNet抽取出知識
ConceptNet是常用的常識知識庫,包含有百萬級別的節點和邊。ConceptNet中的三元組包括4個部分:兩個節點,一個關係以及關係的權重。
針對每個問題和選項,首先識別出其在給定的ConceptNet圖中對應的實體。然後在圖中搜索從問題中的實體到選項中的實體的路徑,路徑小於3。接着,將覆蓋到的三元組合併到一個圖中,其中節點是三元組,邊表示三元組間的關係。我們將此圖稱爲Concept-Graph。
如果兩個三元組有相同的實體,則爲兩個三元組間添加連邊。
爲了獲得ConceptNet節點的上下文詞表示,我們根據ConceptNet中的關係模板,將三元組轉換爲自然語言序列。
4.2 從Wikipedia中抽取出知識
使用Spacy從Wikipedia中抽取出107M個句子,並使用Elastic Search tools爲句子添加索引。
Spacy:https://spacy.io/
Elastic Search tools:https://www.elastic.co/
首先,去掉給定問題和選項中的停用詞;然後將單詞拼接起來作爲queries,在Elastic Search engine中進行搜索。這個引擎會根據queries和所有Wikipedia句子的匹配得分進行排序。我們選取top K(實驗中K=10)個句子作爲Wikipedia的證據(evidence)。
爲了得到Wikipedia證據中的結構信息,我們將這些證據構建成圖。利用語義角色標註(SRL)爲句中的每個謂詞抽取出對應的要素(argument,例如主語、賓語)。圖中的節點就是這些要素和謂詞,兩者之間的關係對應圖中的邊。
爲了增強圖的連通性,我們去掉了停用詞並根據以下規則在節點間連邊:
(1)節點包含於節點,且中的單詞(word)數量大於3;
(2)節點和節點只有一個單詞不同,並且和中單詞的數量均大於3。
我們將Wikipedia圖定義爲Wiki-Graph。
5 基於圖的推理
我們在抽取出的證據的基礎上,提出基於圖的推理模型,如圖3所示。
模型由兩個模塊組成:
(1)基於圖的上下文表示學習模塊:使用圖信息重新定單詞間的距離,學習到更好的上下文詞表示;
(2)基於圖的推斷模塊:使用GCN和圖注意力機制,得到節點的表示,用於最終的預測。
5.1 基於圖的上下文表示學習模塊
(1)引入預訓練語言模型
一個簡單的方式是:將所有的證據連接成一個序列,將其輸入到XLNet中,得到每個單詞的表示。
對於出現在不同的證據句子中但語義相關的單詞,這種做法會增加單詞間的距離。
(2)使用圖結構
因此我們使用圖結構來重新定義證據單詞(evidence sentences)間的相對位置。這樣的話,語義相關聯的單詞會有較短的相對距離,還可以使用證據內部的關係結構以得到更好的上下文單詞表示。
(3)拓撲排序算法
作者使用如下的拓撲排序算法(算法1),根據構建的圖來重新對輸入的證據進行排序。
1)對於Wikipedia中的句子
對於Wikipedia中的句子,首先,我們構建一個句子圖。evidence sentences 是圖中的節點。對於兩個句子,若在Wiki-Graph中存在邊,其中分別存在於中,則在句子圖中添加邊。
然後,根據算法1,我們就可以得到排序後的evidence sentences 。
2)對於ConceptNet中結構化的三元組
對於ConceptNet中結構化的三元組,我們不直接將其表示成自然語言的形式。而是使用ConceptNet提供的關係模板將三元組轉換成自然語言文本句子。
例如,“mammals HasA hair”降被轉換成“mammals has hair”。通過這種方式,我們就得到抽取出的圖(Concept-Graph)的基於三元組的句子集合。然後使用算法1中的方法,得到重新排序後的evidence 。
(4)融合兩個來源的知識得到詞表示
將排序後的ConceptNet evidence sentences ,排序後的Wikipedia evidence sentences ,問題以及選項,四部分進行拼接,作爲XLNet的輸入。XLNet的輸出就是上下文的word piece的表示。
通過將抽取出的圖(Concept-Graph和Wiki-Graph)轉換成自然語言文本,實現了對兩種異質知識來源信息的融合,將其整合到了同一個表示空間中。
5.2 基於圖的推斷模塊
上述的基於XLNet的模型爲預測提供了有效的word-level的信息。除此之外,圖還可以提供semantic-level的信息,比如關係中的主語/賓語。因此,我們對圖級別的evidence信息進行聚合,用於最終的預測。
(1)圖卷積的使用
我們將Concept-Graph和Wiki-Graph兩個evidence圖視爲一個圖,並使用GCN編碼圖結構的信息,得到節點的表示。爲了在evidence間傳遞信息並在圖上進行推理,GCN通過對鄰接節點的特徵進行池化,來更新節點的特徵。由於關係型的GCN通常會over-parameterize模型,因此我們在無向圖上使用GCN。
第個節點的表示計算如(1)式所示:
其中是第個節點對應的evidence;是XLNet輸出的token 的上下文token表示;是用來降維的,將維度從減少到。
爲了在圖上進行推理,我們使用兩個步驟實現信息的傳播:聚合和結合。
1)聚合
從每個節點的鄰居聚合信息,針對第個節點,聚合得到的信息如(2)式所示。其中表示第個節點的鄰居,是第個節點在第層的表示。
2)結合
包含了第個節點在第層的鄰居信息,將其和轉換後的第個節點的表示相結合,得到更新後的節點表示。
(2)圖注意力的使用
使用圖注意力機制聚合graph-level的表示來進行預測,如下式所示。其中表示第個節點在最後一層的表示;是XLNet中最後一個token的表示,可視爲輸入表示;表示第個節點的重要性;是graph representation(我認爲是一個矩陣,包括了圖中所有節點的表示,因爲沒有下標,也就是不是針對某一節點的鄰居集合)。
(3)進行預測
將輸入的表示和圖表示拼接起來作爲多層感知機(MLP)的輸入,來計算置信度分值。候選的答案是問題的真實答案的概率計算如下,其中是候選答案集合。
選擇置信度分值最高的候選答案作爲預測結果。
注意,如圖3所示,針對每個候選答案都生成一個圖的表示,用於預測該答案是正確答案的概率。
6 實驗
1、實驗設置
數據集爲CommonsenseQA,包含12,102個例子,9,741個用於訓練,1,221個用於驗證,1,140個用於測試。
使用XLNet large cased作爲預訓練模型。在每個選項前拼接“The answer is”,將每個選項轉換成一個句子。
每個選項的輸入形式爲“ question The answer is ”。
基於所有的選項總共得到5個置信度得分,然後使用softmax函數計算出真實值和預測值間的損失,使用交叉熵損失作爲損失函數。
2、Baselines
從leaderborad中已發佈的模型選擇出要和本文模型進行對比的方法,並將其分爲4組;
-
Group 1:不使用描述或papers的模型,包括SGN-lite, BECON (single), BECON (ensemble), CSR-KG and CSR-KG (AI2 IR);
-
Group 2:不使用抽取出的知識的模型,包括BERT-large, XLNet-large和RoBERTa ;
-
Group 3:使用抽取出的知識的模型,包括BERT + AMS和BERT + CSPT,這些模型使用了ConceptNet中結構化的知識來增強模型的能力;
-
Group 4:使用抽取出的無結構知識的模型,包括BERT + AMS和BERT + CSPT。
這些模型要不利用了結構化知識的evidence信息,要不利用了非結構化知識的evidence信息,沒有同時利用這兩種來源的知識。
3、實驗結果
(1)和Baselines對比
(2)消融實驗
基於圖的推理模塊的有效性:
異質知識來源的有效性:
(3)例子學習
問題是:“Animals who have hair and don’t lay eggs are what?”
答案是:“mammals”
前三個節點是來源於ConceptNet evidence graph(Concept-Graph)的,可以看出“mammals is a kind of animals”和“mammals has hair”,爲“mamals”和“animals”、“hair”兩個概念間的關聯提供了信息。
我們還需要能體現“lay eggs”和“mammals”間關聯的evidence。
後三個節點來源於Wikipedia evidence graph(Wiki-Graph),它們提供了信息“very few mammals lay eggs”。
這個例子可以說明結構化的和非結構化的知識來源,對於推理出正確答案的必要性。
(4)錯誤分析
從驗證集中選取了50個回答錯誤的樣本,將其分成了三類:1)缺少evidence;2)有相似的evidence;3)數據集噪聲。
有10個錯誤的樣本是由於缺少evidence,例如圖5中的第一個樣本沒有從ConceptNet和Wikipedia中抽取出evidence,因此沒有足夠的信息以得到正確的答案。使用增強的抽取的策略,增加更多的知識來源,可以緩解這一問題。
有38個錯誤的樣本,它們得到了足夠的evidence,但是evidence太相似了不能對選項加以區別。例如圖5中的第二個例子,有“injury”和“puncture wound”兩個選項,從兩個知識源獲取到的evidence有着相似的信息。爲了緩解這一問題,應該從其他的知識源抽取出更多的evidence。
7 總結
本文解決的是常識問答問題。
本文提出的方法由知識抽取和基於圖的推理兩大部分組成。
在知識抽取部分,我們從異質的知識來源中抽取出來evidence信息。知識源包括:結構化的知識源ConceptNet和Wikipedia中的純文本。我們使用兩個來源的數據分別構建了圖,並利用了關係結構信息。
在基於圖的推理部分,我們提出了基於圖的上下文詞表示學習模塊,以及基於圖的推斷模塊。第一個模塊使用了圖結構信息對單詞間的距離重定義,以學習到更好的上下文詞表示。第二個模塊使用了GCN將鄰居信息編碼到節點的表示中,然後使用圖注意力機制進行evidence的聚合,用於最終答案的推斷。
實驗結果顯示,本文的模型在CommonsenseQA leaderboard上實現了state-of-the-art。
未來工作:添加更多的異質知識源;改進本文模型中的推理模塊以進一步提升模型性能。
本文的亮點在於:
(1)兩種類型的外部知識庫的利用
同時利用了結構化的外部知識源(ConceptNet)和非結構化的外部知識源(Wikipedia)。
其中,結構化的知識源包含概念之間的關聯信息,有助於機器推理,但是覆蓋率較低。非結構化的知識源包含豐富的高覆蓋率的信息,對結構化知識進行了補充。實驗也證明了同時使用這兩種類型的知識源,可以提升模型的性能。
(2)基於圖的方法充分利用了結構上的信息
知識抽取部分:
爲了利用到更多的結構上的信息,作者將從兩個外部知識庫中抽取出的evidence信息構建成圖。
基於圖的推理部分:
1)上下文表示學習模塊:爲了減小在不同的evidence句子中,但是語義關聯的單詞間的相對距離,基於圖結構的信息使用拓撲排序算法,對單詞間的距離進行了重新的定義。將重新排序後兩個圖(Concept-Graph和Wiki-Graph)的evidence句子信息、問題和候選答案進行拼接,作爲XLNet的輸入,得到word-level的信息。
2)基於圖的推斷模塊:在evidence圖(將Concept-Graph和Wiki-Graph看成一個evidence圖)上進行GCN並使用圖注意力機制,得到每個節點(Concept-Graph中的節點是三元組,Wiki-Graph中的節點是謂詞和要素)的表示。每個節點的向量表示羅列在一起得到圖的表示矩陣。