張志遠,蘇加恩
(中國民航大學 計算機科學與技術(shù)學院,天津 300300)
知識圖譜是結(jié)構(gòu)化的語義知識庫,將真實世界存在的不同實體及其屬性通過關(guān)系連接,形成網(wǎng)狀的知識結(jié)構(gòu)[1]。近年來出現(xiàn)的大規(guī)模知識圖譜如Freebase、DBPedia、Wikidata等,為眾多下游任務(wù)提供了知識支撐,例如知識圖譜問答就是對使用自然語言表達的問題,在指定的知識圖譜中查找答案。早期的知識圖譜問答主要處理簡單的一跳問題,如:“Where is Jamarcus Russell from?”,僅使用一個三元組
圖1 基于多跳檢索和知識圖譜嵌入方法例子
EmbedKGQA[8]跳過了主題實體與候選答案實體之間的檢索路徑,所得答案缺乏可解釋性,且與多跳檢索相比性能欠佳。盡管多跳檢索方法可解釋性較好,但也存在一些問題,例如缺少對跳躍次數(shù)的限制。當候選實體與主題實體相距較遠時,由于其路徑中包含更豐富的關(guān)系,在與問題進行語義相似度計算時得分可能偏高。因此,模型可能會越過最佳跳躍次數(shù),反而傾向于選擇距離主題實體跳數(shù)更多的實體作為答案。同時隨著跳躍次數(shù)的增多,搜索空間必然急劇擴大,檢索的準確性也會受到影響,因此對預測結(jié)果進行篩選非常有必要。
針對多跳檢索模型缺乏跳躍次數(shù)限制的問題,本文通過選擇更優(yōu)的主題實體減小搜索空間,并在損失函數(shù)中增加懲罰項鼓勵模型使用較少跳躍次數(shù)預測答案。同時為增加多跳檢索結(jié)果的準確性,本文使用知識圖譜嵌入方法從候選答案實體出發(fā)反向匹配主題實體,并去除無法正確匹配主題實體的候選答案。在公共數(shù)據(jù)集WebQuestionsSP的實驗結(jié)果表明本文方法優(yōu)于PullNet及EmbedKGQA等方法。
針對復雜問題的知識圖譜問答技術(shù)主要有兩種類型:基于語義分析[2-4](sematic parsing-based)和基于信息檢索[5-8](information retrieval-based)。兩種類型均需先確定問句中的核心名詞即主題實體(topic entity),并將其鏈接到知識圖譜中的對應(yīng)實體?;谡Z義分析的方法將問句轉(zhuǎn)換為查詢圖、程序段等結(jié)構(gòu)化的邏輯形式,最終轉(zhuǎn)換為SPARQL等查詢語句,在知識圖譜中執(zhí)行并獲得答案。基于信息檢索的方法根據(jù)問句中包含的實體,在給定知識圖譜中獲得與當前問題最相關(guān)的實體和關(guān)系構(gòu)成的子圖,然后從子圖中的主題實體出發(fā),通過多跳檢索,計算不同候選路徑與問題描述的語義相關(guān)性,從而得到最終答案。Lan等[5]使用迭代關(guān)系匹配以拓展關(guān)系路徑,使用束搜索刪除低得分路徑,使用得分閾值確定迭代次數(shù)。Qiu等[6]使用強化學習的方法,通過對推理路徑的擴展實現(xiàn)對復雜問題的回答。Han等[7]使用兩次有向超圖卷積操作實現(xiàn)對問題子圖的推理。由于質(zhì)量問題,知識圖譜中可能缺少問題中的某些關(guān)系,導致推理路徑中斷。為克服這一問題,Saxena等提出EmbedKGQA[8]方法,首次將知識圖譜嵌入應(yīng)用于面向復雜問題的多跳檢索問答中,通過將問題轉(zhuǎn)化為知識圖譜中的虛擬關(guān)系,直接通過一跳檢索,選取從頭實體出發(fā)的評分函數(shù)靠前的若干尾實體作為候選答案實體。然后計算各候選答案實體與主題實體的最短關(guān)系路徑與問題的語義相似度得分,并將得分最高的候選答案實體作為最終答案。
知識圖譜G由實體集E和關(guān)系集R組成,即G={
多跳檢索模型的搜索空間相對較大,模型的預測答案集很可能包含錯誤實體,本文結(jié)合多跳檢索和知識圖譜嵌入,首先使用多跳檢索模塊實現(xiàn)由主題實體到候選答案實體的前向檢索,然后利用知識圖譜嵌入模塊實現(xiàn)候選實體到主題實體的反向檢索,保留反向檢索中預測實體為主題實體的候選答案。同時,在多跳檢索模型中,添加對主題實體調(diào)整,并在目標函數(shù)中添加了限制跳躍次數(shù)的懲罰項。
問答模型由前向多跳檢索和反向知識圖譜嵌入檢索兩部分構(gòu)成,其中前向多跳檢索模塊如圖2所示,其主要思想是根據(jù)問題中包含的實體,由知識圖譜生成與問題提及實體相關(guān)度最高的若干個三元組構(gòu)成知識圖譜子圖,以減小答案實體的搜索空間。然后,在生成的子圖中從問題對應(yīng)的主題實體出發(fā),沿著與問題描述最相似的候選路徑進行逐跳檢索,最終獲得答案實體集。
圖2 多跳檢索模塊
為獲得關(guān)于當前問題的子圖,使用與Sun等[9]類似的方法。采用與STAGG[10]相同的實體鏈接方法獲得問題句子中包含的若干個實體作為種子實體(seed entity),保留種子實體及距離種子實體兩跳以內(nèi)實體及實體間的關(guān)系作為搜索子圖。利用預訓練模型Glove[11]獲得問題及子圖中不同類型關(guān)系的嵌入表示。具體地,首先對問句及關(guān)系分別使用其單詞嵌入表示相加的和作為它們的向量表示,然后使用向量點積計算問題和不同類型關(guān)系之間的相似度作為子圖中邊的權(quán)重。與問題相似度越高,邊權(quán)重越大。最后,使用個性化PageRank[12]方法進一步處理搜索子圖,獲得與問題相關(guān)度最高的n個實體。問題中的種子實體、與問題相關(guān)度最高的n個實體以及連接這些實體之間的關(guān)系構(gòu)成了該問題的可能推理路徑集合。
問題中的主題實體通常是事先給定的,但有時并非最優(yōu)。如圖1中的問題:“Who plays London Tipton in Suite Life on Deck?”,數(shù)據(jù)集中給定主題實體為“Suite Life on Deck”,正確檢索路徑為兩跳,關(guān)系為“has character”和“starred actor”。然而,由于該電視劇包含多個角色,從主題實體經(jīng)過關(guān)系“has character”將到達多個中間實體,導致搜索空間變大。若主題實體為“London Tipton”,則直接通過關(guān)系“starred actor”便可到達答案實體。跳躍次數(shù)的減少能夠有效減小搜索空間,提高預測的準確性。針對此情況,使用spaCy對問句進行依存分析,若主題實體位于句尾且主題實體前一位置為介詞如in,on等,則重新選擇位于介詞之前且與介詞位置最近的實體作為主題實體。
為豐富主題實體e0的嵌入表示所包含的語義信息,使用圖注意力思想,聚合與其相連的所有關(guān)系,如式(1)所示,其中r∈Rh,W∈Rh×h,b∈Rh,W和b均為訓練參數(shù),R表示實數(shù)域
(1)
主題實體確定后,接下來的關(guān)鍵問題是如何利用給定問題的上下文信息,生成下一跳(hop)匹配信號,以匹配候選路徑上的關(guān)系信息。與Lan等[5]方法類似,當遍歷候選路徑到達實體et-1時,主要關(guān)注關(guān)系rt與問題的語義匹配程度,對于已遍歷關(guān)系則忽略。具體地,首先刪除問句中描述主題實體的單詞以使問題中僅包含關(guān)系信息,使用Glove獲得其嵌入表示,然后使用單向LSTM獲得句子每個位置的隱藏狀態(tài)表示 (h1,h2,…,h|question|)。 由于句末位置的隱藏狀態(tài)包含前面位置的相關(guān)信息,選擇其作為問句的向量表示,即hq=h|question|,hq∈Rd。 當前跳下問句的向量表示如式(2)所示,其中s(hop-1)為上一跳的匹配信號,初始匹配信號s(0)為全0向量。s(hop-1)∈Rd, 訓練參數(shù)W(hop)∈Rh×2d,b(hop)∈Rh
(2)
不同跳關(guān)注問句中不同位置的單詞,為此采用注意力機制計算問句中不同位置單詞在當前跳的權(quán)重
(3)
然后根據(jù)不同位置的權(quán)重和隱藏狀態(tài)表示,獲得當前跳的匹配信號
(4)
在進行多跳檢索過程中,由當前實體出發(fā)存在多種關(guān)系類型,不同關(guān)系類型通過與上述式(4)獲得的匹配信號進行語義相似度計算,可獲得由當前實體通過不同關(guān)系類型到達其它實體的概率。語義相似度計算方法很多,如余弦相似度、歐式距離等,然而Wang等[13]的實驗結(jié)果表明,使用向量間哈達瑪積(hadamard product),再通過全連接層計算向量間的相似度效果更好,如式(5)所示,其中t(hop)∈Rh,Wr∈Rh×h為訓練參數(shù)
t(hop)=Relu(Wrr⊙s(hop))
(5)
設(shè)y(hop)∈Rm表示當前跳后子圖中n個實體的得分情況(在初始化的y(0)向量中,主題實體對應(yīng)位置的得分為1,其余為0),則y(hop-1)表示在當前跳中各個實體作為出發(fā)實體的概率,y(hop-1)中各實體得分是從第1跳到第(hop-1)跳候選路徑 (e(0),r(1),e(1),…,r(hop-1),e(hop-1)) 上關(guān)系與匹配信號相似度得分不斷更新的結(jié)果
(6)
其中,e(hop)∈Rd。
(7)
(8)
E(hop)矩陣中包含從主題實體出發(fā)到各個實體的前(hop-1)跳關(guān)系路徑與問題的匹配程度,以及當前各實體作為尾實體的三元組中關(guān)系和匹配信號計算哈達瑪積結(jié)果。為獲得各實體與當前跳的匹配信號的匹配程度,利用式(9)
y(hop)=softmax(WsE(hop))
(9)
其中,可訓練參數(shù)Ws∈Rd。
令y(n)表示子模塊最終預測的各實體得分情況。設(shè)向量y(label)為子模塊訓練的標簽,為方便損失函數(shù)的計算,y(label)應(yīng)該和y(n)維數(shù)相同。y(label)向量的生成方法為:當前問題的k個標準答案實體對應(yīng)位置設(shè)為1/k,其余位置設(shè)為0。使用KL散度計算預測實體分布情況y(n)和標簽實體分布y(label)之間的差異。為避免模型執(zhí)行過多的檢索動作,鼓勵其預測盡可能短的關(guān)系路徑,在損失函數(shù)中增加相鄰跳之間實體分布的差異作為懲罰項(注:本文最多允許3跳)。損失函數(shù)定義如式(10)所示,其中,β為超參數(shù)
Loss=KL(y(n),y(label))+β(KL(y(2),y(1))+KL(y(3),y(2)))
(10)
知識圖譜嵌入使知識圖譜中的實體和關(guān)系均對應(yīng)一個特殊的向量表示,各實體和關(guān)系的向量表示反映自身在知識圖譜中與其它實體和關(guān)系的相互聯(lián)系,是對當前知識圖譜各實體和關(guān)系間結(jié)構(gòu)特征的表示。多跳檢索模塊是根據(jù)問題同各關(guān)系的語義相似度進行實體預測,而知識圖譜嵌入模塊則可根據(jù)各實體和關(guān)系間在結(jié)構(gòu)上的相互關(guān)系實現(xiàn)對實體的預測。
知識圖譜嵌入定義為將知識圖譜中任一實體和關(guān)系均映射為對應(yīng)的指定維數(shù)的向量表示。通過定義一個得分函數(shù)f(h,r,t), 使得當知識圖譜存在三元組
ComplEx方法將實體和關(guān)系均映射為復向量表示,并通過點積計算三元組的得分情況。在預訓練各實體和關(guān)系的復向量表示時,對于給定三元組
(11)
知識圖譜嵌入模塊如圖3所示。首先獲得頭實體在預訓練結(jié)果中對應(yīng)復向量表示eh∈Cf。 問句刪除主題實體詞并添加句首和句尾標記輸入預訓練模型RoBERTa進行編碼,獲得句首位置的向量表示hq∈R768, 使用全連接層將其轉(zhuǎn)換為維度為2f的向量,該向量表示問題轉(zhuǎn)化為知識圖譜中的虛擬關(guān)系rq∈Cf。 Re(.) 與Im(.) 分別表示取復向量中各復數(shù)的實部和虛部。下列式(12)和式(13)表示計算給定的頭實體和問題對應(yīng)的虛擬關(guān)系各維度的復數(shù)相乘
圖3 知識圖譜嵌入模塊
re_tmp=Re(eh)*Re(rq)-Im(eh)*Im(rq)
(12)
im_tmp=Re(eh)*Im(rq)+Im(eh)*Re(rq)
(13)
由預訓練結(jié)果獲得知識圖譜中各實體的復向量表示,組成實體嵌入矩陣Eentity∈C|entity|×f, 則Re(Eentity),Im(Eentity)∈R|entity|×f,|entity| 表示實體的數(shù)目
score=re_tmp·(Re(Eentity))T+im_tmp·(Im(Eentity))T
(14)
則score∈R|entity|表示知識圖譜中各實體作為尾實體的得分情況。
為實現(xiàn)反向使用知識圖譜嵌入模塊,在訓練知識圖譜嵌入模塊時將答案實體作為頭實體,問題對應(yīng)的主題實體作為尾實體,生成對應(yīng)的標簽alabel∈Rf, 答案實體對應(yīng)向量中位置取值為1,其余置0。使用KL散度作為損失函數(shù),計算預測值score與標簽alabel之間的分布差異程度,并使用標簽平滑,使模型更具有泛化性。在進行預測時,根據(jù)多跳檢索模塊獲得的若干個候選答案實體分別作為頭實體,預測尾實體,保留預測結(jié)果中m個最高得分尾實體包含原問題主題實體的頭實體作為最終答案實體。
實驗數(shù)據(jù)集采用WebQuestionsSP[14],包含4737個自然語言問題和答案集對,原始數(shù)據(jù)集中訓練集個數(shù)為3098,測試集個數(shù)1639。與GraftNet[9]中的設(shè)置相同,選擇原始訓練集中250個問題答案集對作為驗證集,使用Freebase作為檢索知識圖譜。由于數(shù)據(jù)集僅涉及Freebase中小部分實體和關(guān)系,而Freebase過于龐大,需對該知識圖譜進行篩選。由于WebQuestionsSP中大部分問題可用不超過兩跳動作即可從主題實體到達答案實體,因此篩選方法為根據(jù)STAGG方法對問句實體鏈接生成的命名實體識別結(jié)果,保留數(shù)據(jù)集中每個問題提及實體兩跳之內(nèi)的三元組。篩選后的知識圖譜包含180萬個實體和570萬條三元組數(shù)據(jù)。為進一步減小搜索空間,提高多跳檢索模塊的預測效率,使用3.1中介紹方法,生成每個問題對應(yīng)的子圖。得分最高實體個數(shù)n設(shè)為2000,生成的所有問題子圖中至少包含一個答案的比率為94.9%。
知識圖譜問答模型最終生成每個預測實體的概率。評價指標使用普遍采用的Hit@1指標,衡量模型預測結(jié)果的準確性。具體地,當對某問題預測概率最大的實體存在于標準答案集中,則視該問題回答正確。
多跳檢索模塊這對各不同類型的關(guān)系使用維度為50的向量進行隨機初始化,即h為50。對問句中的單詞使用300維的Glove嵌入表示,即d為300。同樣使用Adam優(yōu)化器,學習率設(shè)為0.0005,設(shè)置固定檢索次數(shù)為3。每個實體均添加一條連接到自身的關(guān)系self-loop。
知識圖譜嵌入模塊實體的復向量嵌入表示維度f為64,使用Adam優(yōu)化器,學習率設(shè)為0.0002。實體和關(guān)系表示使用隨機初始化,使用Complex評分函數(shù)進行預訓練。
為驗證模型有效性,實驗對比當前主流基準模型:
KV-Mem[17]:將三元組轉(zhuǎn)換為鍵值對進行存儲。將問題轉(zhuǎn)換為鍵,對應(yīng)的值作為預測的答案。
GraftNet[9]:使用圖卷積網(wǎng)絡(luò)的變種方法,對問題生成的異構(gòu)子圖進行多跳推理。
PullNet[18]:根據(jù)給定問題作為驅(qū)動,在每次迭代中,使用圖卷積網(wǎng)絡(luò)擴展與問題相關(guān)的實體。在對當前問題生成的特定子圖中使用圖卷積網(wǎng)絡(luò)獲得答案。
EmbedKGQA[8]:將問題和主題實體分別轉(zhuǎn)換為嵌入表示,獲得候選答案。根據(jù)候選答案與主題實體最短路徑上關(guān)系相似程度確定最終答案。
FMRBE(forward multi-hops retrieval backward embedding):使用多跳檢索模塊實現(xiàn)由主題實體到候選答案實體的前向檢索,然后利用知識圖譜嵌入模塊實現(xiàn)候選實體到主題實體的反向檢索,保留反向檢索中預測實體為主題實體的候選答案。
FEBMR(forward embedding backward multi-hops retrieval):前向使用知識圖譜嵌入模塊根據(jù)問題和主題實體的嵌入表示獲得m個得分最高的實體,再將m個實體作為多跳檢索模塊的起始實體,利用問題獲得匹配信號進行多跳檢索動作,篩選m個實體中檢索結(jié)果為原問題中主題實體的實體作為最終答案。
表1表明僅使用知識圖譜嵌入模塊EBM(embedding module)在Hit@1評價指標上只獲得55.0%準確率,僅使用多跳檢索模塊MHM(multi hop module)就已獲得74.6%的準確率,比多跳檢索模型PullNet高6.5個百分點,說明加入對主題實體調(diào)整和在目標函數(shù)中添加限制跳躍次數(shù)的懲罰項可有效提高答案準確率。子模塊組合模型FEBM相較于單一使用知識圖譜嵌入模塊EBM,通過添加反向使用多跳檢索模塊,對知識圖譜嵌入模塊預測獲得的m個得分最高的實體進一步篩選,實驗性能獲得顯著提升。同時,多跳檢索模塊可生成每一跳下個實體的分布情況,使模型更具有可解釋性。FMRBE相較MHM增加了反向知識圖譜嵌入模塊,利用不同實體嵌入表示反映出的不同實體在知識圖譜結(jié)構(gòu)上的特征信息對多跳檢索模塊預測的實體進一步篩選,實驗結(jié)果較MHM提高0.3個百分點,驗證該模型具有一定效果。
表1 不同模型實驗結(jié)果
本節(jié)驗證對多跳檢索模塊的兩項改進措施的有效性,設(shè)計模塊:①MHM(first),在損失函數(shù)的懲罰項中僅計算第二跳生成的實體分布和第一跳生成的實體分布之間的差異情況。②MHM(w/o penalty),在損失函數(shù)中不添加懲罰項。③MHM(w/o penalty &entity),在②的基礎(chǔ)上,使用原主題實體作為多跳檢索的起始實體。④MHM(ori)在③基礎(chǔ)上使用原問題描述獲得問題的嵌入表示,不刪除問題中描述主題實體單詞。
如表2表明僅使用多跳檢索模塊的各變體進行問答的準確性。MHM(w/o penalty &entity)相較于MHM(ori)在問句中刪除描述主題實體的單詞,實驗結(jié)果提升1.2%。這是由于多跳檢索是通過計算問題和關(guān)系的語義相似度,而問句中描述主題實體的語義信息將影響語義相似度計算的準確性。MHM(w/o penalty)相較于MHM(w/o pe-nalty &entity)實現(xiàn)對問句中主題實體的更改,減小多跳檢索中起始實體與正確答案實體間距離,由此可減小搜索空間,獲得0.3%的性能提升。比較MHM(w/o penalty)、MHM(first)和MHM間實驗結(jié)果表明在損失函數(shù)中添加懲罰項,約束實體分布的變化情況,鼓勵模塊在進行預測時使用盡可能短的關(guān)系路徑是非常有效的。
表2 多跳檢索模塊消融實驗結(jié)果
圖4展示對測試集中問題:“Where are Samsung based?”的預測結(jié)果,其中圖中僅展示預測得分最高的檢索路徑。圖4(a)中展示相較于MHM(w/o penalty)在式(10)中增加相鄰跳之間實體分布的差異作為懲罰項后成功預測標準答案實體,而圖4(b)則在刪去懲罰項后預測結(jié)果錯誤。觀察圖4(a)和圖4(b)中主題實體和預測實體間路徑上的關(guān)系信息,可發(fā)現(xiàn)圖4(b)中的各個關(guān)系的描述信息與問題均有一定的語義相似,使實體“South Korea”在各跳語義相似度累計的得分結(jié)果大于實體“Suwon”,進而導致預測結(jié)果錯誤。而添加懲罰項的作用則為在訓練模型時,鼓勵模型往盡量少變化實體分布方向進行優(yōu)化,使模型在進行預測時使用較少的檢索步。
圖4 針對測試集中某問題的預測結(jié)果
多跳檢索模塊僅通過計算問題與關(guān)系的語義相似度進行答案實體預測。圖5 展示FMRBE模型對測試集中問題“Who played Darth Vader at the end of Return of the Jedi?”的預測情況,其中該問題需要關(guān)注中間實體為“Return of the Jedi”的情況時,在進行預測時將到達錯誤的中間實體:“Revenge of the Sith”進而預測錯誤實體“Hayden Christensen”。由于知識圖譜嵌入可反映不同實體間的結(jié)構(gòu)上的特征信息,F(xiàn)MRBE模型通過對預測的答案實體“Hayden Christensen”和“David Prowse”使用反向知識圖譜嵌入方法進行篩選。以“David Prowse”作為頭實體使用反向知識圖譜嵌入可到達主題實體“Darth Vader”,而“Hayden Christensen”則可預測“Little Italy”等實體,主題實體“Darth Vader”不在其預測結(jié)果中,由此可獲得正確答案實體為“David Prowse”。
圖5 FMRBE模型對測試集中某問題的預測情況
本文通過結(jié)合知識圖譜嵌入和多跳檢索模塊對預測的答案實體進行驗證。同時針對多跳檢索模塊通過修改主題實體以減少跳躍次數(shù),增加懲罰項以鼓勵模塊使用盡可能少跳躍次數(shù)完成檢索,提高了多跳檢索模塊的性能。通過在WebQuestionsSP數(shù)據(jù)集上的實驗驗證,本文提出的方法獲得較好的實驗結(jié)果。但在多跳檢索模塊生成知識圖譜子圖時存在知識圖譜子圖中不包含正確答案實體的問題,未來計劃改進對問題最相關(guān)實體的篩選方法,以提高最終預測的準確率。