1. 程式人生 > >機器不學習:基於知識圖譜推理的關系推演

機器不學習:基於知識圖譜推理的關系推演

操作 投影 bow 分數 和源 裏的 常見 ati 直接

對於知識圖譜的關註可以分為兩個方面:知識圖譜的構建和基於知識圖譜數據結構的應用。知識圖譜的構建主要關註如何整合結構化、非結構化的數據,實現用統一的語義數據結構如三元組RDF形式的數據存儲。基於知識圖譜的應用主要關註如何從這種語義數據結構中挖掘、發現、推演出相關的隱藏知識或新知識或者實現更上層的應用如搜索、問答、決策、推薦等,具體可以參考《三個角度理解知識圖譜》。本文主要講一下基於知識圖譜推理的關系推演(或者叫做關系預測),主要包括如下幾個方面:

1、知識圖譜推理的主要作用;

2、知識圖譜推理的基本原理;

3、知識圖譜推理的主要方法;

4、TransE算法理解

1、知識圖譜推理的主要作用

針對知識圖譜分析系統,需要考慮哪些具體場景能用到推理算法,根據目前了解,大致可以分為如下的幾種情況:

  • 大量數據表到知識圖譜轉化的時候,有部分數據是沒有直接關聯的,需要通過推理算法來進行類別標註/關系連接補全;加載業務模型時,可以使用一些業務規則(或邏輯規則)進行推理,這些業務規則可以是常用人機交互流程的固化 ,也可以是用戶編輯的業務規則;使用分布式表示學習方法時,可以利用表示學習後向量做一些更高層次的應用,比如計算相似度來做搜索、推薦或輸入其它機器學習算法中去,完
  • 已保存成相關的分類、聚類、推薦等;

2、知識圖譜推理的基本原理

知識圖譜推理根據是否與業務相關,主要可以分為基於規則的推理和基於算法的推理。

(1)基於規則的推理

主要是通過業務本體框架中的相關約束來做相關的推理,比如類別推理、屬性推理等。

  • 想知道實體類別,而沒有直接給出-----類別推理;

由底層類向高層類的推理(是底層類,則必是高層類)

技術分享圖片

  • 通過關系的定義域和值域來推理(關系的定義域和值域是固定的,實例具有這種關系,則實例就是定義域或值域規定的類別)
技術分享圖片

(2)基於算法的推理

基於算法的推理可以分為很多種,基於路徑的建模、分布式表示學習、基於神經網絡、混合推理等,但推理算法獲得的結果具有不確定性,不一定等獲得完全正確的關系,只是一種預測可能性。比如:通過觀察到知識圖譜中包含這樣的一條路徑“梅琳達·蓋茨 - 配偶 - 比爾·蓋茨 -主席 - 微軟 - 總部 - 西雅圖”,推測出梅林達可能居住在西雅圖。

基於算法推理的基本原理一般情況下都是這樣:

存在一定數量的三元組關系數據作為訓練集和測試集,訓練集和測試集的頭/尾實體、關系都來自於固定的實體集合和關系集合(也有基於開放域的),通過訓練集訓練一個評分函數的參數,再通過該函數給測試三元組關系做一個評估打分,然後獲得一個評分排名。

這裏面一般涉及到如下幾個方面:

  • 一個評分函數:

構造一個評分函數來對三元組成立的可能性進行打分:這個打分函數是通過一定的計算操作來獲得實體或關系之間的關聯度。

評分函數一般是計算:

實體e1 與 (關系r o 實體 e2 )的相似度

(實體e1 o 關系r) 與 實體 e2的相似度

關系r 與 (實體e1 o 實體 e2 )的相似度

其中o是一種計算操作:比如加法/乘法/非線性法等

  • 三種操作:

線性:加法、乘法

非線性:神經網絡(自定義的類神經網絡)

  • 雙層組合:

第一層建立表示向量的映射(網絡--編碼);

第二層對表示後的向量進行組合(評分函數--解碼);

當然,以上只是我根據大部分算法給出的一個大致的方法趨勢,並不是所有的算法都是這樣,具體算法需要具體討論。一般來說,理解了TransE的原理和源碼,其它算法的原理及源碼就很好理解了。

3、知識圖譜推理的主要方法

知識圖譜相關的推理算法目前主要分為單步推理(直接關系,沒有考慮路徑特征)和多步推理(間接關系,考慮路徑特征),在單步推理和多步推理中主要包括4個研究方向:基於傳統的規則推理、基於分布式表示推理、基於神經網絡的推理、基於上述方法的混合推理。在每個研究方向又延伸了很多小的方向和方法,已存在的算法和論文比較多,具體可以參考如下的分類圖:

技術分享圖片

常見的一些算法

距離模型SE

單層神經網絡SLM

能量模型SME

雙線性模型LMF

張量神經網絡NTN/ProjE

矩陣分解模型RESCAL

乘法方法 SimplE、DistMULT(不區分頭尾實體)、HOLE(區分頭尾實體)、ComplEx(虛實向量)、Analogy(類比推理)

TransE:同一語義空間表示,向量加法

TransH:讓一個實體在不同關系下有不同的表示

TransR:認為不同的關系擁有不同的語義空間(實體向關系空間投射)

CTransR:細分關系

TransD:為頭尾實體構建不同的投影矩陣(矩陣與實體關系都相關)

TranSparse:為頭尾實體構建不同的投影矩陣(不同的矩陣稀疏度)

TransA:損失函數中距離度量改用馬氏距離,並為每一維的學習設置不同權重

TransG:用高斯混合模型來描述頭尾實體(一種關系,對應多種語義;每種語義用高斯分布表示)

KG2E:頭尾實體的向量差用高斯分布表示,關系也用高斯分布表示,評估兩個分布之間的相似度

ConvE:圖結構的多層卷積網絡

SimplE:

(1)每個實體表示成兩個向量:頭實體向量和尾實體向量(每個向量是獨立的)

(2)每個關系表示成兩個關系:順關系和逆關系向量

DKRL:

(1)結構化信息的表示:原有的算法

(2)描述性信息的表示:用CBOW或者深度學習網絡對描述信息進行建模

(3)能量函數:Es+Ed(Edd+Esd+Eds)

OpenKGC:

(1)只用文本信息特征來學習實體和關系的表示;

(2)能為沒有見過的實體學習表示向量(但該構成該實體的單詞必須是固定的)

PTransE:

(1) 可靠性路徑的選擇;

(2) 路徑的表示學習(語義表示-組合表示)

R-GCN/R-GCN+:

(1) GCN提供了一個為圖節點表示學習的框架;

(2) R-GCN提供了一個三元組自編碼解碼的評分方法;

每種類別下的重要算法

張量神經網絡:SLM、NTN、ProjE

圖卷積網絡:R-GCN/R-GCN+、ConvE

分布式+規則的混合:Naual Lp、DKRL、RTJ、ComplexER、ComplexE+NNE

基於路徑的建模:PTransE

多源信息融合的建模: DKRL、KGC、NLFeat、TEKE_H、SSP

幾個重要趨勢

  • 融合其它多源信息:

融合三元組實體的描述信息

融合三元組實體的屬性信息

融合網絡文本信息(把單詞作為研究基準/把實體作為研究基準)

融合其它知識庫信息

  • 加入路徑信息加入業務規則信息編碼解碼的原理、多層卷積模型混合使用

4、TransE算法理解

TransE模型的目標是學習出實體(entity)和關系(relation)的低維向量表示。對於一個三元組 (h,l,t),其中h和t是實體, h稱為頭實體,t是尾實體,l是它們的關系(也就是屬性),TransE希望它們的嵌入表示 (h,l,t)有如下關系: t≈h+l,也就是說t要和h+l盡可能接近,反之如果這三者不構成三元組,則要盡可能遠離。用圖直觀表示如下:

技術分享圖片

為此,TransE定義了三元組的“能量” e(h,l,t)=d(h+l,t),這裏的“能量”(論文中說的the energy of a triplet)可以看作是損失函數,d是一個距離度量方法(dissimilarity measure),在這裏就是向量之間的距離,即公式:

d(h+l,t)=∣h+l?t∣L1/L2

公式1中的L1/L2指的是L1或L2距離,或者叫L1或L2範數。那麽,只要最小化公式1這個損失函數就行,但為了增強區分度,TransE構造了一些反例三元組,希望反例的距離要盡可能的大,這樣最終的優化目標(損失函數)就是公式:

技術分享圖片

公式2中的 (h′,l,t′)是構造的反例三元組,構造方法是將正例三元組的頭實體或尾實體替換成一個隨機的實體,且二者不能同時被替換,即公式:

S(h,l,t)′={(h′,l,t)∣h′∈E}∪{(h,l,t′)∣t′∈E}

為了防止過擬合,需要加入正則項,然後用隨機梯度下降算法(stochastic gradient descent)來最小化損失函數。

幫助理解:

(1)需要找到一個向量來表示對應的實體、關系;

(2)找到一個什麽樣的向量?

——當表示後的向量能構成t≈h+l這樣一個等式關系,就說明這三個向量可以表示對應的對象。

(3) 如何找到這樣一個向量?

——在向量維度確定的情況下,通過構造一個損失函數,來訓練生成的向量滿足t≈h+l關系,使損失函數值最小,否則調整向量。

(4)具體如何調整向量?

——SGD:獲得第i個維度上的t-h-r,理論上應該接近於零,如果不等於零,則通過學習率來修改t/h/r在該維度上的值,等整個維度都學習一遍,則t/h/r分別對應的向量完成了一次整體的學習。

(5)如何用來預測鏈接?

——預測:固定頭/尾實體和關系,對計算的尾/頭實體與真實的尾/頭實體進行比較(遍歷所有的實體,代入距離評分函數)

——利用top-k準則:對於給定的k值,預測算法會給出基於每個實體計算某種評分的排序來輸出前k個答案

——兩種評估的方法:

  • Mean Rank: 排名的平均值(越小越好);Hit@K: 排名在前K位所占的比例(越大越好);

(6)訓練/測試過程

  • 訓練過程:初始化K維的實體向量和關系向量,對於每一個訓練的三元組,從初始化的向量中獲得對應的表示向量,通過計算loss函數來不斷調整實體向量和關系向量(在每一個維度上根據學習率來修改)測試過程:如果是預測關系,對於輸入的每一個測試三元組,用所有的關系向量依次去替代原關系向量,分別計算L1或L2距離作為評估分數,根據分數計算原關系的排名。

(7) 算法能完成的三個任務

鏈接預測:對頭/尾實體缺失的三元組,進行實體預測,對於每一個測試的三元組,用KG中的所有實體來代替首/尾實體,並對實體進行降序排序三元組分類:判斷一個給定的三元組是否正確,是個二分類問題。設定一個閾值,通過該三元組的分數與閾值進行比較,確定三元組的正負關系抽取:都抽取的三元組進行分類,判斷抽取的關系是否正確

機器不學習:基於知識圖譜推理的關系推演