張良 石珺
東南大學(xué)計算機(jī)科學(xué)與工程學(xué)院 南京 211189
近年來,知識圖譜越來越受到人工智能領(lǐng)域的廣泛關(guān)注,各類知識圖譜在反欺詐、智能問答、人物分析,旅游、醫(yī)療等垂直領(lǐng)域中發(fā)揮了重要作用[1-5]。知識圖譜旨在刻畫客觀世界中的實體及其之間的關(guān)系,其中實體表示成知識圖譜中的節(jié)點,實體之間的關(guān)系對應(yīng)著知識圖譜中各實體之間的連線,可以看成一種有向圖形式的數(shù)據(jù)結(jié)構(gòu)。知識圖譜不僅能清晰地展現(xiàn)各實體間原有的關(guān)系,更能通過推理計算等方法來獲得數(shù)據(jù)之間潛在的聯(lián)系[6]。由于知識圖譜特別是大規(guī)模知識圖譜包含著非常復(fù)雜的結(jié)構(gòu)化信息,以往在處理的時候需要專門設(shè)計相應(yīng)的圖算法來實現(xiàn)知識圖譜的計算和存儲,這樣的方法復(fù)雜度高,可移植性差,效率上往往不能得到保證[7]。
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,知識圖譜表示學(xué)習(xí)方法給這一問題的解決帶來了契機(jī)。深度學(xué)習(xí)在處理大規(guī)模復(fù)雜數(shù)據(jù)時有著一定的優(yōu)勢,而現(xiàn)代社會的知識也隨著網(wǎng)絡(luò)信息的暴漲呈幾何指數(shù)的增長,對應(yīng)著知識圖譜的規(guī)模越來越大,也越來越難以處理。為了高效地對大規(guī)模知識圖譜進(jìn)行計算處理,知識表示學(xué)習(xí)方法被提了出來[8]。知識表示學(xué)習(xí)方法是將實體與關(guān)系投影到統(tǒng)一的低維向量空間中,利用向量對實體和關(guān)系進(jìn)行語義計算。知識表示學(xué)習(xí)在語義搜索,智能問答以及知識圖譜補(bǔ)全等方面有著廣泛的應(yīng)用。然而在實際應(yīng)用中,知識圖譜都會存在不同程度的信息缺失,這樣導(dǎo)致很多知識圖譜都是不完備的。為了嘗試解決這一問題,研究者們提出引入一些額外的上下文信息(例如文本)來彌補(bǔ)知識圖譜中的信息缺失,許多引入了額外信息的知識表示學(xué)習(xí)模型被提出。這些上下文信息都與知識圖譜中的實體和關(guān)系信息是有關(guān)聯(lián)的,這在一定程度上彌補(bǔ)了知識圖譜信息的缺失,但依然存在許多問題。比如引入的文本信息包含了大量噪音,影響了模型的性能,另外這些模型大多只關(guān)注如何處理引入的外部信息,卻忽視了知識圖譜自身的結(jié)構(gòu)化信息,沒有考慮到上下文信息的多樣性。因為知識圖譜內(nèi)部的結(jié)構(gòu)化信息對于每一個實體和關(guān)系也是一種上下文信息,比如與某個實體直接相連接的若干實體,或者某幾個實體組成的路徑等,這些都可以看作知識圖譜內(nèi)部的結(jié)構(gòu)化信息。由于這類信息不會包含噪音,所以會比較準(zhǔn)確地刻畫對應(yīng)的實體和關(guān)系。因此有必要在引入了文本等其它額外信息的同時對知識圖譜自身的結(jié)構(gòu)化信息也加以考慮,即有必要對結(jié)合了多種類型上下文信息的知識表示學(xué)習(xí)模型進(jìn)行探索。
目前大多數(shù)知識表示學(xué)習(xí)模型在建模時只考慮了某一類上下文信息,比如只考慮內(nèi)部的結(jié)構(gòu)化信息或者只考慮外部的文本等其它信息,這樣會使得上下文信息的類別不夠豐富,無法從多個角度對知識圖譜進(jìn)行補(bǔ)全。針對這一問題,本文提出了一種基于混合上下文的知識表示學(xué)習(xí)方法,即同時考慮文本信息以及知識圖譜內(nèi)部的結(jié)構(gòu)化信息。該方法在充分利用了知識圖譜中固有的結(jié)構(gòu)化信息的基礎(chǔ)上引入了外部的文本信息,利用包含實體的文本對知識圖譜進(jìn)行補(bǔ)充。本文余下的內(nèi)容分為五個小節(jié),其中第一小節(jié)介紹了目前知識表示學(xué)習(xí)的一些代表工作,第二小節(jié)對引入外部文本的問題進(jìn)行了定義,第三小節(jié)重點介紹處理文本的方法,第四小節(jié)介紹實驗的評估標(biāo)準(zhǔn),并與其它模型進(jìn)行對比,展示實驗結(jié)果,最后進(jìn)行總結(jié)與展望,下面分別對這幾個小節(jié)進(jìn)行介紹。
目前的知識表示學(xué)習(xí)模型可以分為兩類:一類注重利用知識圖譜本身的結(jié)構(gòu)化信息,例如知識圖譜里的三元組,實體和關(guān)系路徑,子圖等等,這些都可以看作實體和關(guān)系的上下文信息,這類上下文信息可以稱作知識圖譜的內(nèi)部上下文信息。另一類模型主要關(guān)注怎樣把文本、圖像或規(guī)則等信息加入到知識圖譜中,這類信息可以看成知識圖譜的外部上下文信息。
基于內(nèi)部上下文信息的模型又可以大致分為三類:一類是基于三元組的模型,不考慮三元組以外的任何額外信息。這些模型主要包含了 以TransE[8]、TransH[9]、TransR[10]、TransD[11]以及TransSparse[12]等為代表的一系列模型,它們通過對頭實體和尾實體之間的距離進(jìn)行測量,從而評估三元組。第二類是基于路徑的模型,這類模型充分利用了知識圖譜中的路徑信息,例如PTransE[13]將實體間的多個關(guān)系進(jìn)行語義組合得到路徑的向量表示,然后將這種路徑信息加入到模型的構(gòu)建中。第三類是將三元組周圍的上下文信息與模型的構(gòu)建結(jié)合起來。例如GAKE[14]模型,它將實體和關(guān)系作為主語定義了三種上下文,并利用這些上下文信息來預(yù)測當(dāng)前的主語信息,但它并沒有對實體和關(guān)系進(jìn)行有效地區(qū)分。TCE[15]模型在GAKE[14]模型的基礎(chǔ)上進(jìn)行了改進(jìn),它也提出了兩類上下文信息:一類是鄰居上下文;另一類是路徑上下文,這兩類上下文信息都能在一定程度上反映了目標(biāo)實體的語義信息。
這些只考慮了內(nèi)部上下文信息的模型只關(guān)注知識圖譜自身的結(jié)構(gòu)信息,對于圖譜中缺失的信息卻無能為力。實際上大多數(shù)知識圖譜都會存在不同程度的信息缺失,為了彌補(bǔ)知識圖譜中缺失的信息,研究者們開始將文本等外部上下文信息加入到模型中。第一個引入外部信息的模型[15]利用詞向量將文本向量化,然后利用維基百科錨等操作將文本和知識圖譜聯(lián)系起來。清華大學(xué)的劉知遠(yuǎn)等提出了DKRL[17]模型,他們分別將實體和文本進(jìn)行向量表示,其中對文本的處理利用了循環(huán)神經(jīng)網(wǎng)絡(luò)。類似地,TEKE[18]模型通過對文本中的實體進(jìn)行標(biāo)注,構(gòu)造實體與詞語的共現(xiàn)網(wǎng)絡(luò),從而得到實體與關(guān)系在文本中的上下文。其中實體在文本中的上下文為與實體共現(xiàn)的詞,關(guān)系在文本中的上下文為同時與頭尾實體共現(xiàn)的詞。另外還有一些引入其它類型信息的模型,如引入邏輯規(guī)則的模型[19,20],引入了實體類別的模型[21,22]等。這些模型都從不同的角度對知識圖譜進(jìn)行了信息的補(bǔ)全。
無論是基于內(nèi)部上下文還是外部上下文信息構(gòu)建的模型,都只考慮了某一種類型的上下文信息,為了充分利用這兩類上下文信息,我們提出了一種將文本信息與三元組上下文信息結(jié)合的模型,為了使模型更有效,我們選取了已充分利用了內(nèi)部上下文信息的TCE[15]模型作為基礎(chǔ),在此基礎(chǔ)上加入文本信息。
由于我們的模型是在TCE[15]模型的基礎(chǔ)上構(gòu)建的,所以重點介紹文本的引入與處理方法。許多知識圖譜中的三元組很不完整,這樣會對許多應(yīng)用帶來影響,所以需要通過一些方法對缺失的信息進(jìn)行補(bǔ)全。近年來從文本中抽取實體和關(guān)系的方法越來越受到關(guān)注,特別是基于關(guān)系抽取的遠(yuǎn)程監(jiān)督模型[23]越來越受到關(guān)注。這個模型包含了一個著名的假設(shè),即如果兩個實體h和t在知識圖譜中存在某種關(guān)系r,那么包含這兩個實體指稱的句子通常也表達(dá)了其間存在的這種關(guān)系(圖1),利用這種方法可以將知識圖譜中的實體與關(guān)系和文本進(jìn)行關(guān)聯(lián)。本文基于遠(yuǎn)程監(jiān)督的假設(shè),期望通過包含實體指稱的句子對知識圖譜表示學(xué)習(xí)提供語義信息的補(bǔ)充,從而提升效果。
圖1 引入文本的示例
首先引入一些符號的定義。知識圖譜中關(guān)系的集合表示為R,實體的向量表示為ΘE∈Rm×k,關(guān)系的向量表示為ΘR∈Rn×k,其中m和n分別表示為實體和關(guān)系的總個數(shù),k表示實體和關(guān)系的維度。文本中詞語的向量用參數(shù)ΘV∈R|V|×k表示。模型包含的參數(shù)為Θ={ΘE,ΘR,ΘV}。文本語料記為D,它包含干個句子s,即D= {s1,···,s|D|},而每個句子又都是若干個詞語w的序列,記為s= {w1,···,w|s|}。文本中的每個句子均包含兩個實體的指稱 (mention),句子s中兩個實體之間存在的潛在關(guān)系記為rs∈R。由于加入了文本,所以我們的目標(biāo)是對知識圖譜與文本進(jìn)行聯(lián)合訓(xùn)練,從而獲取知識圖譜中實體與關(guān)系以及文本中詞語的向量表示。為此我們需要得到在引入文本的條件下最大化知識圖譜的聯(lián)合概率P,對于一個知識圖譜G,定義優(yōu)化目標(biāo):然后將目標(biāo)函數(shù)定義為:
其中h代表知識圖譜中三元組的頭實體,r表示關(guān)系,t表示尾實體。將文本加入到TCE[15]模型中,TCE[15]模型包含兩類上下文信息,分別是鄰居上下文和路徑上下文。鄰居上下文是指與某個實體有直接關(guān)系的上下文信息。路徑上下文是指從某個實體h出發(fā)到另一個實體t之間所包含的所有關(guān)系信息的總和。
為了實現(xiàn)知識圖譜與文本的聯(lián)合建模,需要將知識圖譜中的實體與關(guān)系和文本進(jìn)行關(guān)聯(lián)。對于知識圖譜中的實體及文本中的實體指稱,我們通過共享其向量的方法來實現(xiàn)語義信息的關(guān)聯(lián)。例如,實體“Apple Inc.”在文本中可能以指稱“Apple”的形式出現(xiàn),但其對應(yīng)于同一個向量,使得其既能夠包含知識圖譜中的結(jié)構(gòu)信息,又能夠包含文本中的語義信息。如果知識圖譜中出現(xiàn)同名實體,則利用實體消岐方法進(jìn)行預(yù)處理。為了對文本進(jìn)行處理,我們采用深度學(xué)習(xí)的方法來進(jìn)行文本語料的訓(xùn)練。
根據(jù)遠(yuǎn)程監(jiān)督的假設(shè),文本中的句子s包含了實體h與t的指稱,且整個句子表達(dá)了兩個實體之間的關(guān)系r。由于無法直接對句子進(jìn)行計算,為了計算關(guān)系r的概率分布P(r|h,t,D;Θ),我們利用卷積神經(jīng)網(wǎng)絡(luò)模型對句子進(jìn)行編碼。整個文本處理框架主要分為詞表示層、特征提取層和輸出層。
在詞表示層里,句子中的每個詞都被表示成一個向量。為了更精確地描述每一個詞的向量信息,我們用兩部分向量來共同描述每個詞的向量x。除了每個詞本身的向量w以外,我們還給每個詞添加了一個位置特征向量p,用于描述句子中每個單詞與兩個實體指稱之間的相對位置。例如在句子“[Donald John Trump] is the 45th and current President of the [United States]”中,單詞“is”相對于兩個實體指稱的位置表示為 [1,-8],說明“is”在實體指稱Donald John Trump 右側(cè),與其距離為 1,在實體指稱 United States 左側(cè),與其距離為 8。句子中每個單詞w相對于兩個實體指稱的位置表示為[d1,d2],其中d1和d2分別表示w相對于兩個實體指稱的方向和距離,將兩個距離向量進(jìn)行首尾拼接可以得到位置特征向量其中k表示位置向量的維度。將單詞的詞向量和位置特征向量進(jìn)行拼接,可以得到每個單詞的向量表示,即x= [w;p]。因此,每個句子s都可以表示為一個向量序列:
在特征提取層我們使用卷積神經(jīng)網(wǎng)絡(luò)從詞表示層輸出的向量中提取出句子級別的特征。卷積層使用大小為d的窗口在輸入句子的向量序列上進(jìn)行滑動,對窗口里的向量進(jìn)行組合,將同一窗口里的向量首尾拼接,得到向量zi∈Rk。然后,對組合向量zi進(jìn)行卷積操作:
其中,參數(shù)矩陣W∈R是卷積核,b∈R是一個偏置向量,tanh(·) 表示雙曲正切函數(shù)。為了進(jìn)一步在隱藏層向量的每一個維度中確定最有用的特征,在進(jìn)行卷積操作以后,對隱藏層向量進(jìn)行最大池化操作。假設(shè)隱藏層中向量的個數(shù)為nh,那么輸出向量q的每一維可以通過以下方式確定:
輸出層將特征提取層輸出的向量轉(zhuǎn)化為每個關(guān)系的概率分布。首先將特征提取層的輸出向量通過一個矩陣變換,轉(zhuǎn)換為一個n維向量y=Mq,矩陣M將q轉(zhuǎn)換為n維向量,其中的每一維表示每個關(guān)系的評分,然后將向量y輸入到Softmax 分類器中,這樣就得到概率了分布。
在實際場景中,一對實體可能出現(xiàn)在多個句子中,不同的句子對這對實體之間關(guān)系預(yù)測的作用也不同,我們需要將多個句子中的信息進(jìn)行融合,從而獲取關(guān)系的概率分布。對于一個知識圖譜中的三元組(h,r,t),并不是所有包含頭尾實體指稱的句子都蘊(yùn)含關(guān)系r。因此,需要模型在預(yù)測關(guān)系r的同時,根據(jù)每個句子與該關(guān)系的關(guān)聯(lián)程度有所側(cè)重地選擇句子中的信息,以不同的權(quán)重對不同的句子進(jìn)行組合。因此本文使用注意力機(jī)制[24]來對不同句子的語義特征進(jìn)行組合,圖2是引入文本的整體流程。
圖2 文本處理流程
將包含實體h和t指稱的句子的集合記作S(h,t),S(h,t)=s1, · · · ,sc,其中包含了c個句子。對于其中的每一個句子,利用卷積神經(jīng)網(wǎng)絡(luò)將其編碼成一個向量q,并將其輸入到一個全連接層,得到每個句子的中間向量表示e,然后,根據(jù)實體與句子的向量表示,計算得出每個句子的權(quán)重:
其中,t?h是基于 TransE 的假設(shè)h+r≈t,用于表示h與t之間存在的潛在關(guān)系。通過t?h與句子中間表示ej的內(nèi)積,可以得到每個句子與實體對之間潛在關(guān)系的關(guān)聯(lián)程度。該式通過一個 Softmax 的形式,使得所有句子的權(quán)重符合概率分布條件。隨后,可以將每個句子的向量加權(quán)求和得到所有句子的向量表示:
將輸出向量通過轉(zhuǎn)換矩陣M變換為n維向量得到每個關(guān)系的評分y=Ms,最后將y輸入到Softmax 函數(shù)中得到最終概率分布:
整個模型的學(xué)習(xí)采用如下算法:
算法 4.1 基于混合上下文的模型學(xué)習(xí)算法
輸入:知識圖譜G,文本語料D= {s},實體集合E,關(guān)系集合R,向量維度k
輸出:更新后的參數(shù)Θ
在參數(shù)初始化階段,首先初始化實體與關(guān)系的向量。引入的文本語料通過word2vec 向量進(jìn)行初始化。然后對每個實體與關(guān)系的向量進(jìn)行標(biāo)準(zhǔn)化,每次從知識圖譜訓(xùn)練集中取出一批數(shù)據(jù)Sbatch,對于其中的每個三元組分別對頭實體、關(guān)系和尾實體進(jìn)行負(fù)采樣,得到三個負(fù)例的集合。對于Sbatch中的每個實體對,從文本語料中找出包含這兩個實體指稱的句子,隨后,對這批數(shù)據(jù)利用目標(biāo)函數(shù)計算損失,并根據(jù)學(xué)習(xí)率對參數(shù)進(jìn)行更新,當(dāng)算法達(dá)到最大迭代上限則停止迭代。
本文實驗的所用數(shù)據(jù)集包含兩部分,第一部分是知識圖譜,第二部分是文本語料。我們選取的知識圖譜數(shù)據(jù)分別是FB15K和FB15K-237。FB15k[8]是從 Freebase 中抽取的一個子集,它總共有 592,213 個三元組,其中包含了 14,951 個實體和 1,345 個關(guān)系。FB15k-237[25]是 FB15k 的一個子集,它包含了 310,116 個三元組,其中包含了 14,541 個實體和 237 個關(guān)系。這兩個數(shù)據(jù)集被分為三個部分:訓(xùn)練集、驗證集和測試集。訓(xùn)練集用于模型的訓(xùn)練,驗證集用于選擇超參數(shù),測試集用于測試模型最終的效果,詳見表1。
表1 知識圖譜數(shù)據(jù)集詳細(xì)數(shù)據(jù)
對于文本語料的選擇,本文使用紐約時報數(shù)據(jù)NYT10[26],該語料對其中出現(xiàn)的Freebase 中的實體進(jìn)行了標(biāo)注。本文根據(jù)遠(yuǎn)程監(jiān)督的假設(shè),抽取出包含以上兩個數(shù)據(jù)集中實體對的句子作為訓(xùn)練文本。對于FB15k,本文從 NYT10 中抽取了194,385 個句子,對于 FB15k-237,本文從 NYT10 中抽取了 78,978 個句子,然后根據(jù)這些實體對在知識圖譜中存在的關(guān)系對抽取的這些句子進(jìn)行標(biāo)注。
本文使用 Mean Rank 和 Hits@10 作為評估標(biāo)準(zhǔn)。給定一個測試三元組 (h,r,t),首先將其中的頭實體h、尾實體t或關(guān)系r去掉,形成一個不完整的三元組。以預(yù)測頭實體h為例,將頭實體 h 從三元組中去掉以后得到 (?,r,t),然后用任意實體 e 進(jìn)行替換,組成新的三元組 (e,r,t),通過評分函數(shù)計算其評分f(e,r,t)。由于e可以取任意實體,因此對于每個實體e都能夠得到一個評分f(e,r,t),將這些實體按得分的降序排列,得到一個實體的序列L= (e1,e2, · · ·,em),在這個序列的基礎(chǔ)上,可以分別得出以下兩種評估標(biāo)準(zhǔn):
Mean Rank 表示對于所有測試三元組,原始頭實體h在序列L中排名的平均值。Mean Rank 越小,表示模型的性能越好。
Hits@10也是一個常用的評估標(biāo)準(zhǔn),它表示在所有測試三元組中,原始頭實體h在序列L中的排名小于等于n的三元組個數(shù)占測試三元組總個數(shù)的比例。Hits@10 越大,表示模型的性能越好。在實體預(yù)測的場景下,一般來說正確的實體在序列L中的排名盡可能靠前,而錯誤的實體排名盡可能靠后。但在序列L中,排名在原始頭實體h前面的某個實體e與 (?,r,t) 組成的三元組(e,r,t)可能是正確的,即存在于原始知識圖譜中。對于這些實際正確的實體,由于模型已經(jīng)讓其獲得了一個靠前的排名,因此不能將其視作錯誤的實體,需要將這些實體對當(dāng)前測試實體排名的影響消除。具體做法是從序列L中去掉除原始頭實體h之外實際正確的實體e,即如果三元組 (e,r,t) 存在于原始知識圖譜中,則將實體e從序列中去除。按照慣例,將這種設(shè)置記為 Filtered(或 Filt.)。
基于TCE[15]模型,我們引入了一些文本參數(shù),分別如下:卷積神經(jīng)網(wǎng)絡(luò)滑動窗口大小d= 3,隱藏層維度kh= 230,實體、關(guān)系和單詞的維度kw= 50,位置向量kp的維度為kp=5,模型的訓(xùn)練和TCE[15]模型一樣用負(fù)采樣的方法。我 們 使 用 DKRL[17]、TEKE[18]、DESP[27]、E +DISTMULT[28]和 Conv-E + DISTMULT[28]作 為對比實驗,因為這幾個模型都將文本信息引入了知識圖譜表示學(xué)習(xí)模型中。
表2 基于混合上下文的模型在 FB15k 和 FB15k-237 上進(jìn)行實體預(yù)測的結(jié)果
基于混合下文與文本的表示學(xué)習(xí)模型實驗結(jié)果如表2所示,其中,“TCE + Text”項表示本文提出的基于混合上下文的表示學(xué)習(xí)模型。從表中可以看出,基于混合上下文的模型在 FB15k 數(shù)據(jù)集上超越了其它同類模型。另外與傳統(tǒng)的表示學(xué)習(xí)模型相比,本文提出的模型在 Hits@10 (Filtered)指標(biāo)上取得的效果也能夠超越大部分模型,說明這種基于混合上下文信息的模型確實可以提升知識圖譜表示學(xué)習(xí)的效果。
本文提出了一種基于混合上下文的知識表示學(xué)習(xí)方法,將文本信息與三元組上下文信息結(jié)合。通過大量豐富文本信息的引入,進(jìn)一步對知識圖譜的內(nèi)容進(jìn)行了補(bǔ)充。實驗表明這種加入了混合信息的模型在實體預(yù)測方面優(yōu)于現(xiàn)有的一些模型,但由于該方法在建模的過程中已經(jīng)用到了關(guān)系路徑的信息,所以無法對關(guān)系進(jìn)行預(yù)測,這也是后續(xù)工作需要完善的方向。無論是外部的文本信息還是知識圖譜內(nèi)部的結(jié)構(gòu)化信息,都只是眾多信息類別中的一小部分。目前已有將多種類別的信息結(jié)合起來進(jìn)行建模的多模態(tài)知識表示方法[29],但都往往顧此失彼,并不能真正地對多種類型的信息進(jìn)行有效地整合。隨著信息的不斷積累,知識圖譜的規(guī)模也會越來越大,知識種類也會越來越多,如何從多種維度進(jìn)行知識表示學(xué)習(xí)的研究是我們應(yīng)該考慮的問題。因為當(dāng)前的人工智能應(yīng)用往往達(dá)不到人們的預(yù)期,或知識表達(dá)能力不足,或缺少邏輯推理等等,其中原因之一可能就是缺乏對知識多樣性的表征。所以將時間、空間、文本、規(guī)則、圖像,甚至視頻等多種知識源進(jìn)行有效地整合,可能會使知識圖譜成為人們邁向真正人工智能時代的堅實基礎(chǔ)。