官术网_书友最值得收藏!

2.4 知識圖譜的向量表示方法

在這小節中,為大家介紹知識圖譜的向量表示方法。前面已經介紹過,向量化的表示已經在人工智能的其他領域非常常見,例如在自然語言處理中,可以為句子中的每個詞學習一個向量表示(Word Embedding),在圖像視頻中也可以為每個視覺對象學習一個向量表示。對于知識圖譜,也可以為其中的每一個實體和關系學習一個向量表示,并利用向量、矩陣或張量之間的計算,實現高效的推理計算。

2.4.1 從詞向量講起

首先從詞的向量表示講起。在傳統的詞向量表示中,比如One-hot Encoding,每個詞向量的大小是整個詞典的大小。在這個向量中,除了與該詞對應的位置為1外,其他位置均為0,如圖2-9所示。這種方法的一個顯然的缺點是空間消耗比較大。擴展出去,給定一個文檔,可以用這個文檔中出現的所有詞的個數來組成這個文檔的向量表示,這種向量的大小也是整個詞典的大小。這種表示方法的另外一個缺點是實際上無法有效地表示詞的語義。

圖2-9 One-hot Encoding和詞袋模型

這里有一個值得思考的問題,就是詞的語義到底是由什么決定的。事實上,一個詞的含義是很難精確定義的,特別是中文詞的語義。例如關于“徒”字,起初的詞義是“空的、沒有憑借的”,逐步引申變化為“步行”,再引申為“步兵”“同伙”“門徒”等。這里并不想陷入深奧的語言學討論。

從計算的視角,有一種觀點是詞的語義可以由它的上下文來確定。人在運用語言時,其實也沒有記住每個詞的精確語義定義,大腦里面其實也沒有什么精確定義的詞典,而是更多的類比一個詞出現的上下文來理解這個詞的語義。這就是所謂的分布式語義概念的來源。One-hot Encoding模型顯然沒有辦法捕獲詞的上下文這種語義。

所以,希望通過統計詞在大量語料中的上下文規律,并通過詞的上下文計算詞的這種分布式向量表示。和One-hot Encoding不一樣,這種分布式向量的每一個維度都有數值,且它的維度遠遠低于詞庫的大小,并且是通過語料統計學習出來的,稱為低維稠密的向量表示,也稱為詞向量表示(Word Embedding)。例如,通過對大量語料進行統計學習,可以為“蝴蝶”“瓢蟲”“飛”“爬”等詞學習它們的向量表示,會發現這些詞在向量表示空間有一些規律,比如蝴蝶和飛比較接近,而瓢蟲則和爬比較接近,如圖2-10所示。

圖2-10 詞的向量表示舉例

有很多種學習這類詞向量的方法,比如傳統的Word2vector模型CBoW(Continuous Bag of Words)是通過一個詞的前幾個詞和后幾個詞作為該詞的上下文,并通過引導模型預測中間那個詞作為監督訓練信號學習每個詞的表示。SKIP-Gram則是反過來利用中間詞預測前后幾個詞學習每個詞的表示。不論是傳統Word2vector,還是當下流行的預訓練模型,本質都是基于詞的上下文共現規律來近似地捕獲詞的語義。當然這不是本書的重點,不展開介紹,有興趣的讀者可以查閱自然語言處理相關資料進一步了解。

這種詞的分布式語義表示有很多有趣的特性。通過探究幾個詞的維度數值,可以發現同種語義的詞在很多維度上具有相似性,例如Rome和Paris都是首都,而Italy和France都是國家,所以它們在某些維度上數值非常接近,如圖2-11所示。再比如,Rome之于Italy,Paris之于France都存在首都關系,所以它們在某些維度上也有類似的相似性或相關性,如圖2-12所示。然而對于One-hot Encoding,則無法利用這種向量計算得到這種隱含的語義關系。例如Rome和Paris直接計算相似度為0,但這顯然不正確。

圖2-11 詞向量的特性(1)

圖2-12 詞向量的特性(2)

2.4.2 從詞向量到實體向量

接下來從詞的向量表示過渡到知識圖譜的向量表示。有一類詞是代表實體的,假如對這類實體詞的向量做一些計算,比如用Rome向量減去Italy的向量,會發現這個差值和用Paris的向量減去France的向量比較接近。這里的原因是Rome和Italy之間,以及Paris和France之間都存在is-capital-of的關系,如圖2-13所示。這里看到了熟悉的知識圖譜<主語, 謂語, 賓語>三元組結構。這啟發可以利用三元組結構來學習知識圖譜中實體和關系的向量表示,就像可以利用句子中詞的上下文共現關系來學習詞的向量表示一樣。

圖2-13 從詞向量到實體和關系的向量

2.4.3 知識圖譜向量表示學習模型

有很多這樣利用主謂賓三元組結構來學習知識圖譜中實體和關系的向量表示的模型。其中一個比較簡單但有效的模型是TransE。它的想法很簡單,給定一個三元組<h,r,t>,其中h代表head,即主語(subject),r代表relation,即關系謂詞,t代表tail,即賓語(Object),如果它所代表的事實是客觀存在的,那么hrt的向量表示應該滿足加法關系h+r=t。例如Rome+is-capital of應該在向量空間接近于Italy;Paris+is-capital-of的結果也應該接近于France,如圖2-14所示。

圖2-14 TransE采用加法模型

對于每一個三元組,可以定義一個評分函數fr(h,t),然后對所有的三元組累加計算損失函數L,如圖2-15所示。例如給定Margin Loss的定義,這里的優化目標就是讓真實存在的三元組得分盡可能高,而讓不存在的三元組的得分盡可能低。可以采用簡單的梯度下降優化方法,例如,可以隨機初始化所有實體和關系的向量表示,然后一輪一輪地優化這些向量中的參數。如果優化目標能夠收斂,最后學習到的絕大部分實體和關系的向量表示就應該滿足h+r=t的假設。這里的負樣本,也就是不存在的三元組可以有很多種方法構建,一種方法是隨機地替換真實三元組的頭尾實體,這些新生成的三元組大部分是不存在的,因而可以作為模型的負樣本。

圖2-15 TransE目標函數

另外一類知識圖譜嵌入表示學習模型是以DistMult為代表的基于線性變換的學習模型。與TransE采用加法不同,DistMult采用乘法,并用一個矩陣而非一個向量來表示關系,如果一個三元組(h,r,t)存在,那么h的向量乘以r的矩陣,應該接近于t的向量表示,如圖2-16所示。其他關于評分函數和損失函數的定義都和TransE一樣。

圖2-16 DistMult采用乘法模型

那么怎樣評估這些實體和關系的向量表示的好壞呢?最簡單的方法是給定hrt中的兩個,來計算未知的一個,然后看預測的結果是否準確。例如,可以給定hr,預測尾實體t,將hr與知識圖譜中的所有候選實體計算得分,如果待預測的實體t得分最高,則說明向量表示學習的效果非常好,反之則學習得不好。有很多影響實體關系向量表示學習好壞的因素,例如一個影響比較大的因素是稀疏性問題。給定某個實體或關系,它們的向量表示學習的好壞依賴于知識圖譜中是否存在足夠多的包含它們的三元組,如果某個實體是一個孤立實體,自然就很難學習到比較好的表示。關于這些問題,將在知識圖譜表示學習與推理的章節進一步展開介紹。

2.4.4 知識圖譜向量表示的局限性

有非常多的知識圖譜嵌入學習模型。當深入考察一個知識圖譜的結構特性時,就會發現單純地依賴三元組提供的信號是遠遠不夠的。人腦的知識結構比語言還復雜,如果希望向量表示能像符號表示一樣更加精準地刻畫知識結構中的邏輯和語義,并且支持推理,就需要對向量學習的過程增加更多的約束。

例如,為了刻畫一對多、多對一等關系語義,就需要對增加能存儲和捕獲這種一對多、多對一的關系的額外參數。但這勢必又會增加學習的負擔,且對訓練語料的要求也會更高。這就陷入兩難:一方面,客觀問題要求刻畫更加復雜的知識邏輯,另一方面,又受到訓練代價以及訓練語料不充分的約束。所以,知識圖譜的表示學習其實是一個比文本表示學習更復雜的問題。關于這個問題,將在知識圖譜表示學習與推理、圖表示學習及圖神經網絡的章節再進一步展開探討。

主站蜘蛛池模板: 廊坊市| 吉水县| 洪洞县| 乌拉特中旗| 云南省| 黄龙县| 竹北市| 正蓝旗| 闵行区| 衡阳市| 德保县| 万安县| 巴彦淖尔市| 彩票| 巴林右旗| 牟定县| 泽普县| 毕节市| 苏尼特右旗| 逊克县| 仪征市| 景洪市| 杭州市| 谷城县| 大宁县| 宁德市| 临夏县| 宁远县| 武清区| 利津县| 永靖县| 慈溪市| 新乡县| 华池县| 东丰县| 隆回县| 特克斯县| 邓州市| 宁安市| 开平市| 信宜市|