【讀論文】Trans系列知識表示學習方法梳理

最近要做一個知識庫問答系統,再加上對表示推理有了一點不知道對錯的想法,於是翻出來知識表示學習經典的Trans系列,把論文里描述的模型和清華THUNLP提供的Tensorflow版程序一起看。


一點關於知識表示學習的背景知識

知識圖譜通常是用一個三元組(前件h,關係r,後件t)來表示一條知識,比如:(中國科學院大學,地點,北京),要使用向量表示的話,可以使用one-hot向量(實際使用中通常是mulit-hot向量)來表示。但是問題也來了,one-hot向量維數太高,而且無法表示相近的實體或關係之間的相似程度。所以類比詞向量的表示方法,也想使用分散式表示(distributed representation)來表示知識圖譜中的實體和關係,通過學習獲得它們的低維稠密表示。


TransE

論文題目:Translating Embeddings for Modeling Multi-relational Data(2013)

這是Trans系列的第一篇文章,模型的基本想法是前件的向量表示h與關係的向量表示r之和與後件的向量表示t越接近越好,即h+r≈t。這裡的「接近」可以使用L1或L2範數進行衡量。

要優化的目標函數使用帶negative sampling的max margin損失函數,即L(y,y』)=max(0,margin?y+y』),其中y表示正樣本的得分,y』表示負樣本的得分。最小化這個損失函數可以使正樣本的得分越來越高而負樣本的得分越來越低,但是兩個得分差距大到一定程度(margin)就足夠了,再大的話得到的loss也只是0。在這裡因為正負樣本得分用的是距離,所以要加負號,即最終的損失函數為

其中

為L1或者L2範數。論文中獲得負樣本並不是隨機選取其他的三元組,其中還有一個trick,將正樣本三元組中的前件或後件替換為一個隨機的實體已獲取負樣本。

來看看對應的代碼。

使用embedding_lookup從大矩陣里獲得對應的向量h、r、t,計算h與r之和與t的距離並代入損失函數,也很簡單明了。

但是模型的簡單也就帶來了問題,它只適合處理一對一的關係,不適合一對多/多對一的關係。舉個例子,有兩個三元組(中國科學院大學,地點,北京)和(頤和園,地點,北京),使用TransE進行表示的話會得到中國科學院大學的表示向量和頤和園的表示向量很接近,甚至完全相同。但是它們的親密度實際上可能沒有這麼大。


TransH

論文題目:Knowledge Graph Embedding by Translating on Hyperplanes(2014)

TransH模型的目的就在於處理一對多/多對一的關係問題,而又不過分增加模型的複雜度和訓練難度。模型的基本思想是針對每一個關係r,將前件h和後件t的向量表示投影到一個由向量wr確定的超平面得到向量h⊥和t⊥,在這個超平面上存在一個關係的表示向量r,與TransE一樣通過訓練使得h⊥+r≈t⊥,因此每一個關係實際上是由向量wr和向量r共同表示的。

其中向量在超平面上的投影是這樣計算的:

移項後

可以看到實際上是將向量h在向量wr方向(垂直超平面)和垂直於wr方向(超平面上)進行分解,由於論文中限制向量wr長度為1,因此實際上上式後面那一項其實是h在wr方向上的投影。

目標函數和訓練方法和TransE模型一模一樣,不多贅述。

由於對前件和後件的表示向量進行了分解,因此在使用h和r計算t的時候相當於只使用了向量h的一個分量,因此避免了TransE模型在處理一對多/多對一問題時將兩個實體收斂到過於接近的情況。

代碼與TransE基本相同,多了一步計算投影向量的過程,並且在計算投影之前將向量wr歸一化至單位長度。


TransR

論文題目:Learning Entity and Relation Embeddings forKnowledge Graph Completion(2015)

TransE和TransH模型都假設實體和關係是在同一個語義空間的向量,這樣相似的實體會在空間中相近的位置,然而每一個實體都可以有很多方面,而不同的關係關注的是實體不同的方面。因此,TransR模型對不同的關係建立各自的關係空間,在計算時先將實體映射到關係空間進行計算。因為是在關係空間做向量疊加,所以這個模型叫做TransR。

對於每個關係,有一個變換矩陣Mr和一個在它自己的關係空間的表示向量r。通過變換矩陣將前件和後件的表示向量映射到關係空間

再在關係空間通過訓練使得hr+r≈tr。目標函數和訓練方法和TransE模型一模一樣,不多贅述。

TransR還有一個變體叫做CTransR,其中的C是Cluster聚類。CTransR考慮的問題是對一個關係只用一個表示無法體現這一種關係的多義性,比如關係(location location contains)其實包含country-city、country-university、continent-country等多種含義。因此對於某一種關係的全部實體對(h,t),用h減去t的向量作為它的表示(h和t通過TransE模型得到),對其進行聚類,對於每一類的子關係都學習一個變換矩陣Mr和一個表示向量r,接下來就和TransR模型一樣了。

由於在構造負樣本時替換的是前件或者後件,而關係並沒有替換,因此在代碼中對於正負樣本只獲取了一個變換矩陣。除了在計算距離之前先乘上矩陣進行變換,其他的和TransE模型基本一樣。


TransD

論文題目:Knowledge Graph Embedding via Dynamic Mapping Matrix(2015)

TransR同樣有它的問題,首先對於一種關係,它的前件和後件使用同樣的變換矩陣映射到關係空間,而前件和後件往往是完全不同類的實體,比如(劉康,工作單位,中科院自動化所),其中劉康老師和自動化所就是不同範疇的實體,也應該使用不同的方法進行映射。其次,這種映射是與實體和關係都相關的過程,然而映射矩陣卻只由關係確定。最後,TransR模型運算量大且參數較前兩種模型多得多。(畫外音:以上來自TransD論文原文,好犀利的三條問題)

TransD模型對每個實體或關係使用兩個向量進行表示,一個向量表示語義,另一個(用下表p表示)用來構建映射矩陣。映射矩陣通過以下式子構建

這樣映射矩陣就由實體和關係共同決定了,其中I為單位陣,即通過向量相乘生成的矩陣對單位陣(代表不做變換)進行調整。後面的映射和訓練過程和TransR相同。

這樣的話,TransE模型就變成了TransD模型的一個特例,只要實體表示的維度與關係表示的維度相同且所有用於構建映射矩陣的向量均為0。此外,上面構建映射矩陣和進行空間變換的過程還可以用向量相乘代替,從而避免了耗時的矩陣乘法,即

補0是因為這裡假設關係空間維度比實體空間維度高。

代碼也和前面的結構一樣,這裡可以看到每個實體或關係是由兩個向量表示的,並使用了不需要進行矩陣運算的方法得到實體在關係空間的映射。不過看起來這個代碼並沒有實現實體空間和關係空間維數不同的情況。


結語

每個模型的論文都有它自己的tricks,在這裡沒有詳細敘述。

最後有一點感覺,這些模型(包括之後AAAI2016還有一個TransSparse,使用不同程度的稀疏矩陣進行從實體空間到關係空間的變換)都是基於最初TransE模型的生長,即使用前件和關係向量之和來預測後件向量。向量之和從某種程度是表示的是信息的疊加,但是實體和關係或許不僅僅是信息的疊加而已。


推薦閱讀:

My First Machine Learning Study Notes
【精品】12條核心知識帶你了解機器學習
平移不變的正則線性回歸
基於模糊層次綜合評價法和聚類演算法的多人戰鬥競技類遊戲平衡性分析
技術宅如何進化為女裝大佬

TAG:機器學習 | 知識圖譜 | TensorFlow |