知識圖譜的表示學習方法


傳統的知識圖譜表示方法是采用OWL、RDF等本體語言進行描述;隨着深度學習的發展與應用,我們期望采用一種更為簡單的方式表示,那就是【向量】,采用向量形式可以方便我們進行之后的各種工作,比如:推理,所以,我們現在的目標就是把每條簡單的三元組< subject, relation, object > 編碼為一個低維分布式向量。
【表示學習】 :表學習旨在將研究對象的語義信息表示為稠密低維實體向量,知識表示學習主要是面對知識圖譜中的試題和關系進行表示學習,使用建模方法將實體和關系在低維稠密向量空間中,然后進行計算和推理,即--簡單說:將三元組表示成向量的這個過程就稱為表示學習。

知識表示的幾個代模型:翻譯模型、距離模型、單層神經網絡模型、能量模型、雙線性模型、張量神經網絡模型、矩陣分解模型。

 

 

transE模型屬於翻譯模型:將每個三元組實例(head,relation,tail)中的關系relation看做是從實體head到實體tail的翻譯,通過不斷地調整h,r和t(head,relation,tail的向量)使(h+r)盡可能的與t相等,即h+r=t.

TransE是基於實體與關系的分布式向量,受Word2vec啟發,利用了詞向量的平移不變現象。

例如:C(king)-C(queen)~~C(man)-C(woman)  其中,C(W)就是word2vec學習到的詞向量表示。

TransE定義了一個距離函數d(h+r,t),它用來衡量h+r和t之間的距離,在實際應用中可以使用L1或L2范數,在模型的訓練過程中,transE采用最大間隔方法,最小化目標函數,目標函數如下:

其中,S是知識庫中的三元組即訓練集,S'是負采樣的三元組,通過替換h或t所得,是人為隨機生成的,y是取值大於0的間隔距離參數,是一個超參數,[x]+表示正值函數,即x>0時;[x]+=x;當x<=0時,[x]+=0。算法模型比較簡單,梯度更新只需要計算距離d(h+r,t)和d(h'+r,t’)。這個過程和訓練小狗一樣,它做對了,就給骨頭吃,做錯了,就打兩下。

模型訓練過程:

 

 

(1)首先,確定訓練集,超參數y,學習率λ

(2)初始化關系向量與實體向量,對於每一個向量的每一個維度在[-6/√k,-6/√k]內隨機取一個值,k為低維向量的維數,對所有的向量初始化之后要進行歸一化。

(3)進入循環:采用minibatch,一批一批的訓練會加快訓練速度,對於每批數據進行負采樣(將訓練集中的三元組某一實體隨機替換掉),T_batch初始為一個空列表,然后向其添加由元組對(原三元組,打碎的三元組)組成的列表:

 

 拿到T_batch后進行訓練,采用梯度下降進行調參。

 

word2vec + transE 知識表示模型

TransE算法(Translating Embedding)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM