這篇博文要記錄的是三個基於神經網絡的模型:ProjE、TransEdge、TransGate。最近看的論文不像一開始的 Trans 系列那么簡單了,需要多花些時間和功夫。
ProjE
paper: ProjE: Embedding Projection for Knowledge Graph Completion
論文
這篇文章是之前沒有聽說過的研究者——美國聖母大學(University of Notre Dame)的兩名作者發表在 AAAI 2017 上的工作。這是我正兒八經讀的第一篇基於神經網絡的模型,要好好記錄一下。文章提出了 ProjE 模型,思想是:輸入的一個實體 e 和一個關系 r,它們的 embedding 經過組合,得到一個 target vector,然后將候選實體“投影”(其實就是矩陣相乘再過激活函數)到該目標向量上,得到相似度得分(即三元組得分)。
模型架構
ProjE 的訓練思想是這樣的,給定兩個輸入 h、r 的 embedding,將預測任務視為候選實體的排序任務(其他的模型在測試時才會這樣),因此將每個候選實體投影到由兩個輸入的 embedding 組合而生的 target vector 上:

\(D_e\) 和 \(D_r\) 是 \(k×k\) 的對角矩陣,\(b_c\) 是偏置。
然后將候選實體投影到上面得到的 target vector,得到三元組得分:

其中,\(f\) 和 \(g\) 是兩個激活函數,\(W_c\) 是候選實體矩陣,\(b_p\) 是投影操作的偏置項。\(h(e,r)\) 最后得到的結果是一個得分向量,向量的每個元素代表 \(W_c\) 中的候選實體與 target vector \(e \bigoplus r\) 的相似性。
網絡可視化展示
ProjE 可以被視為一個兩層的神經網絡,包括一個組合層(combination layer)和一個投影(輸出)層。下圖是網絡結構的可視化展示:

圖中的例子給出了尾實體 Illinois 和關系 CityOf,需要預測頭實體,計算每個候選頭實體的得分。其中,藍色圓點代表的 \(W^E\) 是實體的 embedding 矩陣,綠色圓點代表的 \(W^R\) 是關系的 embedding 矩陣,橙色圓點是用於 combination 操作的兩個對角矩陣。得到 target vector 后,過激活函數 \(f\),為了方便展示,圖中只給出了兩個候選實體示例 San Francisco、Chicago,候選實體矩陣與 \(f\) 的結果相乘后,加偏置,然后過激活函數 \(g\) 得到相似度得分向量。
loss 定義
損失函數的定義形式與之前 Trasns 系列的 pairwise 的形式完全不同,定義了兩種 loss 計算方法。
- ProjE_pointwise

定義正樣本的候選實體的標簽為 1,負樣本的標簽為 0。可以將該任務直觀地試做多分類任務,對於給定的 h 和 r,候選實體列表作為候選類別,判定經過組合后的 h 和 r 屬於哪幾個實體類別。訓練目標就是最大化打分向量 \(h(e,r)\) 和二值的標簽向量之間的似然。公式中前半部分是標簽為 1 的樣本對應的部分,正確候選實體在該部分的得分應該接近標簽 1;公式的后半部分是標簽為 0 的樣本對應的部分,錯誤的候選實體標簽為 0,在這部分得分為0。
這種 loss 計算方式是 pointwise 的,不像 margin-based 的 loss,樣本成對出現,每個正樣本對應一個負樣本,正負樣本的對應比例不一定是 1。在這種方式下,定義兩個激活函數 \(g\) 和 \(f\) 分別為 \(sigmoid\) 和 \(tanh\),因此,三元組打分函數為:

- ProjE_listwise
由於 softmax 回歸 loss 在多分類的圖像標注任務中表現良好,因此這里也定義了用 softmax 激活函數計算的 loss,這種方式稱為 listwise。

這里,只用正樣本候選實體計算 loss,對正樣本候選實體平均分配概率,計算加權得分和作為 loss。
兩個激活函數 \(g\) 和 \(f\) 分別設為 \(softmax\) 和 \(tanh\),因此打分函數為:

候選樣本的負采樣
如果將實體集中的所有實體都作為候選實體的話計算量會非常大,因此使用 Word2Vec 采用的負采樣方法,區實體集 \(W^E\) 中的一部分(子集)作為候選實體集 \(W^c\),用負采樣來減少訓練時模型需要的候選實體的數量。采樣概率遵循 \(P_y \sim B(1,p_y)\) 的二項分布,\(p_y\) 是負樣本被采樣的概率,\(1-P_y\) 是不被采樣的概率,概率采樣決定該候選實體是否被選入 \(W^c\)。
實驗
進行了實體預測、關系預測和本文新提出來的 "fact checking task" 作為實驗。鏈接預測的數據集使用 FB15K。


在 DBpedia 和 SemMedDB 數據集上的 "fact checking test" 任務結果。這個任務沒有細看,不知道它和鏈接預測有什么本質的區別。

代碼
文中給出了代碼,最新的版本是:https://github.com/bxshi/ProjE
后面要讀到的差不多都是基於神經網絡做的模型了,應該是使用框架實現,可讀性會比較強,有時間都應該仔細學習一下代碼、嘗試運行。讀論文的時候總是求快,不想去仔細看代碼,所以代碼能力越來越差,這個毛病要改一改,以后框架實現的論文代碼一定要嘗試運行一下,這樣才能對文章有更深入更具體的理解。
在嘗試運行代碼的過程中,可能會遇到各種問題,如需要搭建環境、裝各種包,在搭環境的過程中可能會遇到各種問題,甚至一搞就是一天,往往因為沒有這樣的時間而選擇放棄運行代碼,需要做這個模型的時候解再決這些問題,是比較有意義的。這時候,只閱讀代碼,學習其實現方式而暫時不去運行,或許是一種折衷的辦法。
小結: 這篇文章雖然不是大牛團隊提出來的,但感覺做的內容還是很不錯的。可能因為是中國人寫的,文章本身讀起來也很容易理解。一點小小的不足可能就是章節內部結構划分不是很清晰,加上標號可能會清楚一些。如果看過一篇文章立刻就放過的話,很快就會忘掉,寫筆記的過程就是再次理解一遍的過程,看代碼就是第三次理解的過程,模型梳理歸納畫思維導圖的過程就是第四次理解的過程,最終這些就會轉化成知識體系的一部分,堅不可摧,也是面對新論文時候的力量和底氣。
TransEdge
paper: TransEdge: Translating Relation-Contextualized Embeddings for Knowledge Graphs
論文
這篇文章是南京大學的研究者發表在 ISWC(CCF-B) 2019 上的工作,主要思想是針對“一對多”和“多對一”(雖然論文中沒明確這么說,但就是這么回事)的復雜關系類型,提出"edge-centric"的嵌入方法,對關系根據其所處的頭尾實體的不同(上下文環境)決定不同的表示,具體有"context compression"和"context projection"兩種方式,但是說白了就是把實體和關系本身的 embedding 攪和攪和,共同作為關系的表示。
這篇文章雖然講了很多,但整體感覺下來,沒有很多新的東西,提出的問題還是復雜關系建模的問題,只是換了種說法,用的方法:MLP、投影操作,也都不是新的。個人認為它可以被錄用的原因可能是因為做了大量的實驗。
問題提出
問題提的很模糊,說使用線性/雙線性的映射函數的關系水平的嵌入模型對於不同的相關實體(存在這種關系的實體對)只有一種 embedding 表示,因此不能區分關系的不同上下文,不能捕捉 KG 里復雜的關系結構(真心覺得這個問題的提出有點勉強的感覺)。然后文章提出了例子來說明這個問題,例如一部電影有多個主演,訓練出的演員實體就會有相近的表示,其中一個演員正好是電影的編劇,因此又會進一步導致"主演"和"編劇"這兩個關系的嵌入相近。之前有模型通過投影操作解決這個問題,但作者說針對具體關系進行投影的操作會給實體 embedding 注入歧義。TransEdge 是一個 edge-centric 的嵌入模型,根據實體上下文區分關系的表示。模型受到 KG 圖結構的啟發:一對實體可以有多重關系(該關系有多個標簽);不同實體對可以有相同的關系(不同的關系可以有相同的標簽)(這個說法有點像多語義關系的問題)。反正就感覺說了半天也不知道它到底想解決個什么問題。
這篇文章與其他模型不太一樣的一點就是,用 KGE 來做實體對齊,因此相關工作模型綜述部分和其他的文章不太一樣,從任務出發,將模型分為用於鏈接預測和實體對齊的兩部分。鏈接預測模型都是常規的 KGE 模型,也是分為了翻譯模型、雙線性和神經網絡三大類。實體對齊模型主要羅列了一些用於實體對齊的方法。
整體架構及能量函數

模型整體架構如圖,\(\psi\) 是 contextualization 操作,其結果得到關系的最終 embedding,文章將頭尾實體的嵌入組合視為"edge direction",關系本身的嵌入視為"edge label",\(\psi\) 操作把這兩部分整合到一起,得到 contextualized 的關系表示。\(h_c\) 和 \(t_c\) 是實體的 interaction embedding。
因此,三元組打分函數定義為:

其中,h 和 t 是實體的 general embedding,帶腳標 c 的 embedding 是交互表示。通用表示用於捕捉實體的幾何位置和關系語義,交互表示編碼它們參與邊的 embedding 的計算。正樣本的能量低,負樣本的能量高。
兩種 Contextualization 操作
contextualization 操作 \(\psi\) 具體給出了兩種形式:context compression 和 context projection。
- context compression

context compression 的方式使用多層感知機(可視為多層前饋神經網絡,包括輸入、輸出和隱藏層),這里的 MLP 使用的是單隱層的,公式化表示為:


激活函數 \(\sigma\) 使用 \(tanh()\)。最終的邊(關系)的表示為:

說白了就是頭尾實體分別都和關系拼接一下,分別過 MLP,然后各自得到的結果再過一個 MLP。
- context projection
明明前面說的具體關系投影的操作會引入歧義,但還是用了投影的操作。

將 edge label (關系本身的 embedding) 投影到 edge direction (hc 和 rc 的組合) 所在的超平面上,超平面由其法向量 \(w_{(h,t)}\) 表示。
法向量由 h、t 的拼接經過 MLP 計算而得:

不清楚這個法向量的計算依據是什么=.=。前面還說 edge direction 和 label 是正交的,正交的點積不是 0 么,為什么可以投影?覺得也是一個漏洞。
損失函數
損失函數也和其他模型不太一樣,是對正負樣本分別定義了 margin:

約束 \(\gamma_1<\gamma_2\),\(\alpha\) 是用於平衡正負樣本的超參。
實體對齊的實現
實體對齊是給定兩個 KG,從中找出指代同一對象的實體。處在 seed alignment 中的實體對共享 embedding(稱為參數共享)。模型規定對於新發現的可能對齊的實體,不必完全共享 embedding,定義了一個基於實體相似度的誤差函數,只需保證相似度誤差在一定范圍內即可。

測試時的具體任務是:給出 KG \(K1\) 里的一個實體,對 KG \(K2\) 里的候選實體排序(基於余弦相似度),正確對齊實體應該被排在高位。
實驗
- 實體對齊
用了 DBP15K 和 DWY100K 兩個數據集進行實體對齊實驗,這兩個數據集又可分別划分為幾個小數據集。


實體對齊的指標和鏈接預測居然是一樣的,也是 Hits@n、MR、MRR。這里論文中提到了一點: MRR 比 MR 更魯棒,因為它可以避免少數表現極差的測試樣本對整體平均結果的影響。
- 鏈接預測

- 復雜關系結構分析
論文還對復雜關系結構進行了分析,分為兩種情況:
(1)一個實體對存在多種關系

TransEdge 比 MTransE 可以更好地處理這種情況。
(2)多個實體對存在同一種關系

對存在"capital"關系的實體降維可視化,發現 TransEdge 訓練出的實體的關系在不同的實體上下文有不同的方向,而 MTransE 卻沒有,它們更容易獲得相似的表示,即使在不同的實體上下文環境中。
- 實體對齊效果對比
論文還將 TransEdge 與傳統的實體對齊方法對比了正確率、召回率和 F1 的效果:

代碼
論文中給出了代碼:https://github.com/nju-websoft/TransEdge ,是基於 tensorflow 實現的。
小結: 這篇論文給我的整體感覺就是——不知所雲,常常不知道作者想要表達的是什么。個人認為方法沒有什么新的東西,不難理解,解決的問題也是之前有模型提到過的模型。但這篇文章實驗的體量非常大,或許是被 B 類會議錄用的原因。因為這幾篇論文放一起連着看的,所以歸位了神經網絡類的方法,但嚴格來說,用了 MLP 的 context compression 部分是神經網絡方法,context projection 部分應該被歸為 Trans 系列方法。
TransGate
paper: TransGate: Knowledge Graph Embedding with Shared Gate Structure
論文
這篇文章是袁珺師兄發表在 AAAI 2019 上的一篇文章,本來聽說是篇短文,原來是長文。個人認為這篇文章做得非常棒,能中頂會也是理所當然的。我覺得能被錄用的主要原因有兩個:一是文章的方法很新,會給人眼前一亮的感覺;二是文章的寫作很清楚,不但方法講的很明白,而且沒有任何模棱兩可的表述,所有的比較都給出確切的數據支撐,所有的原則性表述也都給出了出處。對於和常規做法有出入的做法,也給出了自己的處理方式("filter"那里)。一直不敢翻開頂會的文章,即使是自己組里師兄寫的,即使是與自己同一個方向的,而且之前一直抱有偏見,但讀了之后才有資格評價,真正感覺實至名歸。
文章提出在進行三元組嵌入時引入門結構控制信息的通過量,從而捕捉關系之間的內在關聯,在時間復雜度和空間復雜度上都表現了優勢。模型的idea雖然不復雜,但是很新,而且主打輕量級,在復雜度上給出了詳實的研究數據,以證明模型適用於大規模真實世界 KG。
問題提出及文獻綜述
問題就是很多模型為關系訓練一個單獨的表示,卻忽略了關系之間是存在關聯的。文章將模型分為兩類: indiscriminate 和 discriminate 的。TransE 和一些雙線性模型屬於前者,參數量較少,精度也較低,比較輕便,適用於真實世界 KG;后續的 Trans 系列模型和 NTN 屬於后者,這類模型通常包括兩步:relation-specific 信息判別(投影等轉換操作)和打分,通常參數比較多,專注於提升模型的精度。除這兩類外,還有一些其他的基於 NN 的模型。
門結構

模型的整體架構如圖所示,圓圈的部分是門結構,作用是讓 h 和 r 的信息有選擇地通過。一個門結構包括兩部分:sigmoid 激活函數 + Hadamard 積。標准的門結構使用全連接層。
sigmoid 操作逐點進行,控制信息的通過量:

Hadamard 積是矩陣對應元素的乘積,用於過濾信息:

TransGate 架構
在 TransGate 中,兩個共享門對於不同的關系共享統計強度,實現了非線性的 discrimination。對照架構圖的模型描述為:(1)實體/關系 embed 到相同的維度;(2)設置兩個共享門;(3)實體/關系的embedding 進sigmoid層;(4)將sigmoid輸出與實體embedding逐點相乘;(5)translation計算三元組得分。
具體地,論文提出了兩種實現方式:
- TransGate(fc)
fc 表示 fully connected,這種模式下,使用全連接層的標准門結構,W 是權重矩陣,b 是偏置。

- TransGate(wv)
為了減少參數量,使模型更 scalable,文章提出了 wv 版本,wv 表示 weighted vectors。出發點是認為 embedding 的各維度是獨立的,因此將 fc 模式下的權重矩陣 W 用兩個權重向量來表示,可以避免"矩陣-向量"相乘的計算量。

打分函數及 loss
打分函數和 loss 都是常規的定義:


訓練時使用 Adam 優化。
復雜度分析
因為模型本身並不復雜,所以文章一個很大的賣點就是復雜度上的優勢,因此對時間和空間復雜度作了詳細的比較。

實驗
- 鏈接預測
鏈接預測實驗使用 WN18RR、FB15K、FB15K-237 三個數據集。這里詳細介紹了數據集 WN18RR 和 FB15K-237 的來歷,學習一下:來源於2015年的一篇文獻,指出 WN18 和 FB15K 存在 test leakage,因為測試集中存在很多反向的三元組是對訓練集中的三元組做反向操作得到的。為了解決該問題,因而剔除兩個數據集中的冗余關系三元組得到 WN18RR 和 FB15K-237。超參的選取規則采用:驗證集上 Hits@10 效果的 grid search

- 三元組分類
三元組分類實驗的數據集使用 WN11、FB13 和 FB15K。

最后,作者還進行了不同模型的參數量的比較。
TransGate 沒有給出代碼,Github 上也沒有找到。
小結: 除了沒有代碼,感覺這篇文章還是很棒的,至少讀着很清晰明白,沒有明顯的短處。