唐廣謙,李 波
(重慶理工大學 計算機科學與工程學院, 重慶 400054)
知識圖譜是針對2個現實中的對象,用兩者的關系將其相連形成(對象A,關系R,對象B)的三元組。Freebase、WordNet等大規模知識圖譜可應用于如知識問答、推薦系統和語義網絡等領域[1-2]。然而,大部分知識圖譜的構建都存在著數據不完整和知識圖譜缺失[3]等問題,因此出現了越來越多對知識圖譜補全的研究。
知識圖譜補全一般指的是從一個現有知識圖譜的事實中推理出新的事實,即通過預測知識圖譜中潛在的事實關系,添加新的三元組,從而提高知識圖譜的完整性和可靠性。 目前,學者們做了很多知識圖譜補全的研究,包括建立TransE、TransH和TransR等平移距離模型,語義匹配模型以及ConvKB、CapsE等神經網絡模型。這些方法的主要目的是提高準確率。有些三元組還需要通過人工規則構建,會造成龐大的時間開銷,且模型建立時靜態固定了實體和關系,導致無法發現上下文中更多的語義信息,造成信息利用不夠充分。
注意力機制可以對不同數據的重要性進行打分。要補充知識圖譜的關系事實,需要針對某一個節點展開拓展工作,即針對這個節點與其他節點是否存在不同的關系加以預測,判斷該節點與其他節點在建立新三元組時的合理性。而引入注意力機制可以給出這個節點在與每個節點組成三元組時,其各自的重要性得分,表征實體和關系的動態屬性和扮演的多重角色,以提升補全的性能。因此,引入注意力機制后,模型可以得出實體和關系在不同語義下的重要程度,在不同的任務條件下,通過重要性和關注度來識別關系和實體承擔的不同角色信息。
本文中提出了動態分配注意力得分的知識圖譜補全模型(dynamically allocate attention scores of KGC,DASKGC),能夠依據不同三元組的上下文獲得不同的注意力得分;提出了“鄰居信息交互編碼器”以及“路徑匹配處理”2個模塊分別對三元組中的實體和關系進行預測,利用從“鄰居信息交互編碼器”獲得的實體嵌入表達,幫助識別最重要的關系路徑;在Nell-995、FB15K-237和DDB14數據集上進行實驗,并與其他經典模型的結果進行了對比,證明了所提出模型的有效性。
知識圖譜補全的主要方法有靜態知識圖譜補全和動態知識圖譜補全。靜態知識圖譜補全主要有平移距離模型、語義匹配模型和神經網絡模型3種。由于靜態知識圖譜補全中所有實體和關系是固定不變的,不能很好地適用于不斷變換的現實。因此,研究者們依據時間信息、文本信息和結構信息構建動態知識圖譜。比較有代表性的模型是Convex、ConvKB和CapsE等模型,但這些動態知識圖譜補全模型大都只處理三元組結構化信息,對于引入的時間信息、文本信息或結構信息,都有明顯的弱勢,靜態補全方法和動態補全方法均存在不足,或者說目前的研究具有局限性。為此,以發現挖掘各節點新的特征關系為出發點,采用圖神經網絡來處理三元組鄰域結構信息[4],補全知識圖譜。
Xiong等[5]提出RESCAL模型,首次將小樣本學習問題引入到知識圖譜領域,并定義了一個全新的匹配網絡GMatching,模型在針對實體嵌入時將所有鄰居節點的貢獻度設為相同,通過LSTM進行多步預測。 Zhang等[6]提出了一種更適合實際場景的FSRL模型,通過基于異質圖和注意力機制的異質鄰居編碼器來學習實體表征,并設計了循環自動編碼器網絡來建立關系,最后通過匹配網絡建立三元組。Sheng等[7]提出能注意到節點在不同任務中存在不同表達的自適應注意力網絡FAAN,針對“在不同任務中節點的作用會不一樣,關系也會存在不同含義”這一問題,提出了動態特征的概念。Li等[8]提出了JSSKGE模型,通過統一的軟邏輯規則來學習實體的結構特征,提拱了從實體周圍的結構信息獲取實體的結構特征的思路。王杰等[9]提出了AAKGC模型,該模型在獲取實體和關系的嵌入表示時引入了自適應注意力機制,能獲取關系在邏輯上最為相符的角色信息。Li等[10]提出了ImpTransE模型,分別設計了 KGNodeRank方法和 MGRIE方法來計算實體重要性和關系重要性,對知識圖譜中隱藏的重要性信息進行了較充分的挖掘。
上述研究一般對鄰居節點分配相同權重,或采取相同的注意力機制計算鄰居和關系,導致無法發現更為豐富實體的上下文關系,在補全的精度上不能達到很好的效果。本文中提出動態分配注意力得分的知識圖譜補全模型,將對實體和關系的注意力得分進行動態分配,獲得實體和關系更為準確的動態表示,提高知識圖譜補全的準確度。
知識圖譜由多組三元組構成,其中有實體集合E={e1,e2,…,em}和關系集合R={r1,r2,…,rn},而三元組一般表示為T={(ei,rk,ej)|ei,ej∈E∧rk∈R},粗體的h、r、t分別表示頭實體h、關系r和尾實體t的嵌入表示向量,d為嵌入向量的維度。
模型的任務是要獲取每個實體的鄰域和路徑信息,即實體的上下文與路徑的嵌入表示,然后通過模型來預測現有知識圖譜中隱藏的信息。模型獲取實體的領域信息,就是獲取節點的鄰居節點信息,如三元組(TA,RA,HA)和三元組(TA,RB,HB)能獲取信息HA和HB都為TA的鄰居節點。獲取實體的路徑信息,就是獲取2個實體間所有的關系路徑,如通過三元組(TA,RA,HA)和三元組(HA,RB,HB)可以得出“TA→RA→RB→HB”關系長度為2的路徑信息。
對于獲取鄰居節點信息,本文中采用基于GNN的消息傳遞機制,通過聚合每個節點的領域信息給出每個鄰居節點的消息向量。對于獲取實體的路徑信息,采用將多跳的關系路徑通過基于LSTM的注意力機制[11-12]得到的每個鄰域關系路徑的嵌入表示形式,再對每條關系嵌入路徑分配注意力得分,得出最優路徑。
圖1是整個DASKGC模型的結構,包含2.2節的鄰居信息交互編碼器和2.3節的路徑的匹配處理2個主要的機制。真實三元組與鄰居信息三元組在經過嵌入表示后,通過鄰居信息交互編碼器得到實體的上下文表示[13];將得到的實體上下文表示作為先驗條件,多跳路徑信息經過嵌入表示后通過路徑匹配處理機制得到關系路徑的嵌入;將實體上下文表示與關系路徑嵌入融合,通過損失函數計算其與真實關系的得分。

圖1 DASKGC模型結構框圖
鄰居信息交互編碼器模塊設計的主要功能是獲取鄰居節點信息。鄰居信息交互編碼器的主要工作原理如圖2所示。該編碼器可以根據所需預測的關系來動態調整節點鄰居的注意力得分,從而得到節點可能的不同角色。要獲取鄰居節點信息,則要關注與鄰居實體間存在的關系,所以用“關系r”來建模確定節點的信息。

圖2 鄰居信息交互編碼器的工作原理
首先,確定每個節點作為頭節點hn時與所有相鄰節點的關系rhn,然后確定需要預測的關系r。定義度量函數d,計算與節點hi相鄰節點的關系rj與需要預測的關系r之間的距離得分。

(1)
其中:W∈Rd×d;b∈Rd為權重矩陣和偏置參數;rj為第n個節點hn的第j個相鄰節點的關系rj的嵌入表示;r為需要預測的關系r的嵌入表示。通過式(1)可知,由d得到的結果越高,則相鄰節點的關系rj與需預測的關系r的相關性越高。
在得到d的得分后,編碼器將得分最高的rj與r賦予高得注意力得分α,表示為

(2)
其中:αrj表示第j個關系rj(當前實體的相鄰節點的第j個關系)針對當前預測任務的注意力得分;Rhn表示第n個實體節點h的相鄰關系集合;e為自然常數。得分α越高,則越能得到更為重要的鄰居實體tn。
為了提升實體嵌入的表達效果,在鄰居信息交互編碼器中定義一個消息傳遞函數機制,其作用是在k次迭代中聚合鄰居節點特征、更新當前節點的表示和讀出聚合表示。首先,獲取得到的各高得分α的tn與hn,通過式(3)得出在第k次迭代中的tn與hn的嵌入表示tn與hn

(3)


(4)



(5)
其中:Z(hn,tn)為agg聚合函數;W和b為參數矩陣和偏置。
上述過程中,鄰居信息交互編碼器模塊通過不同關系來預測對應的實體角色,用消息聚合函數作為實體節點的領域節點動態賦予注意力得分,從而得到關系實體最為準確的上下文信息。
當鄰居信息交互編碼器給出了Z(h,t)后,則進行路徑的匹配處理,對于最相關的路徑,路徑匹配處理的工作原理如圖3所示。

圖3 路徑匹配處理的工作原理
首先,從2.2節可知,從一個實體到另一個實體可以通過多個三元組形成一個關系長度大于1的路徑,這條路徑開頭的實體和結尾的實體也可以看作是h和t,從h到t存在著一條關系長度為n的路徑,將其記作Prn=n=(r0,r1,…,rn-1);而對于h到t的路徑可能存在j條,即不止一條路徑,所以定義Ph→t為從h到t所有關系路徑的集合。對于每一關系路徑Pj∈Ph→t,其在模型中的嵌入表示記為SPj。


(6)
式中:e為自然常數;Z(h,t)為鄰居信息交互編碼器給出的頭尾實體的上下文表示;Ph→t為從h到t所有關系路徑的集合。
最后,為了得到h和t的關系表示Zh→t,通過每條路徑SPj以及其權重βj運算,表達式為

(7)
到此,本文路徑的匹配處理捕通過獲頭尾實體間可能存在的多條路徑,生成最終的關系路徑嵌入Zh→t。
根據預測任務中的聚合函數Z(h,t)和關系表示Zh→t,以及兩者融合生成的實體對和關系路徑中的語義信息來預測目標關系,并通過損失函數來訓練整體模型。
首先,將節點Z(h,t)和關系Zh→t的融合記為Z′,對于損失函數的則通過softmax函數求出Z′的結果Zsm,即Zsm=softmax(Z′)。將所有的Zsm集合記為Zall,則有Zsm∈Zall。為了評估當前訓練得到的概率分布與真實分布的差異情況,采用交叉熵損失函數L刻畫實際輸出概率與期望輸出概率之間的相似度,其交叉熵的值越小,2個概率分布就越接近。

(8)
至此得到了最后的得分。
根據上述信息和DASKGC模型框架流程,可以得出模型的簡要算法過程如下:
1:初始化:
2:r←torch.eye(d) for eachr∈R
eachr∈R
4:P←torch.zeros(|P|,d) for eachP∈Ph→t
5:循環 LOOPK:
6: batch for (h,r,t)

更新h和t
8: 將聚合函數更新的r進入下一次loop
9: LOOP完成獲得Z(h,t)
10:Z(h,t)和每一關系路徑SPj

13:通過損失函數L更新實體和關系嵌入向量及模型參數
在實驗中對頭實體、關系和尾實體數據都進行了分析與處理,使其可以更好地學習與進行模型優化。為了檢驗模型的引用效果,采用公共數據集Nell-995、FB15K-237和DDB14,數據集具體如表1所示。Nell-995、FB15K-237為常用的鏈接預測數據集,DDB14是知識圖譜 Freebase的子集,包含大規模的通用的人類知識,但也存在大量逆反關系。由于可以通過在FB15K的訓練集中反轉三元組,將反比關系去除,從而獲得大量測試三元組,所以FB15K-237為原始數據集的變體,其平均節點度為64.6;NELL-995是從NELL 數據集的第995次迭代中提取的通用知識數據集,其平均節點度為4.3;DDB14為文獻[14]提出的一個新的醫學領域數據集,包含從疾病數據庫中收集的術語和概念,并從原始的三元組中分別隨機抽取了4 000個三元組作為驗證集和測試集,平均節點度為7.9。平均節點度可以判斷數據集的稀疏程度,即FB15K中的數據較為集中,為稠密數據集,Nell-995、FB15K-237的數據較為分散,為稀疏數據集。

表1 實驗所用數據集
實驗環境:Windows 64位操作系統,處理器為Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz,顯卡型號NVIDIA GTX1080。實驗工具為PyCharm,Python 3.6版本。
對于本次實驗,學習率lr={ 0.01,0.05},批處理大小batch為128,隨機失活dropout設置為0.2,每輪最大訓練輪數設為1 000,最大鄰居數max_neighbor為200。
為了準確評估模型,采用平均倒數排名MMR、Hits@1、Hits@5和Hits@10作為結果評判指標來衡量各個模型的性能。選用多個現有模型進行性能對比實驗,包括TransE、CompleX、DisMult、RotatE、SimplE以及QuatE作為對比。
訓練2 000個epoch,并將驗證集準確率達到最高時的各個評估指標作為實驗結果,重復3次后取均值作為最終結果,以粗體突出顯示最佳性能。因為FB15K為稠密數據集,Nell-995和DDB14為稀疏數據集,所以使用2個表格展示其結果,分別見表2和表3。

表2 模型在FB15K數據集的結果

表3 模型于Nell-995和DDB14數據集的結果
從表2和表3可以看出,DASKGC模型在3個數據集上的表現都有著不錯的結果,在分布較稀疏的數據集FB15K上,MMR的效果也只比第一名差一點,而在密集數據集上的MMR結果都比其他模型效果優秀。在FB15K數據集上,Hits@5和Hits@10的表現都是最好的,說明該模型有很強的泛化能力。在Nell-995數據集上,MMR和所有Hit@n的結果都是最好的,在DDB14數據集上的MMR和Hit@5也達到了最好的效果。
從實驗結果能看到,模型在FB15K數據集上,MMR與Hits@1的結果與QuatE與RotatE的結果還有一定的差距,由于QuatE與RotatE存在多維平面與旋轉平面,所以在能夠對稱與逆對稱的三元組測試中會有良好的表現;同時在DDB14數據集上Hits@1與hit@10的結果與CompleX與TransE的結果相比略顯不足,因為DDB14數據集為醫學領域數據集,數據一般是固定的,故對于如TransE的線性模型能給出較好的結果。
相較于前3個模型TransE、CompleX以及DistMult,無論是MMR還是Hit@n的結果都有較大的提升。這3個模型主要獲取的是節點的嵌入表示,說明所提出模型在動態分配注意得分機制上對嵌入式表示有著較大的幫助,能獲取更多的上下文語義信息。
提出了一種通過注意力網絡提取各個三元組實體和關系的動態表示及特征,從而提高補全精度和效果的模型DASKGC。實驗中選取MMR、Hits@n作為模型評估的標準,對3個數據集FB15K-237、Nell-995和DDB14進行建模分析,與TransE、CompleX等模型結果進行對比,證實了DASKGC的補全精度有一定程度的提升,表明通過注意力網絡動態分配實體和關系在模型中的得分是有效果的。