神經網絡模型(二)— 卷積神經網絡用於知識圖譜嵌入(ConvE、ConvKB、R-GCN、ConvR)


這幾篇論文都是用卷積神經網絡做知識圖譜嵌入的,包括一維、二維卷積、圖卷積和自適應卷積,放在一起閱讀的。

ConvE

paper: Convolutional 2D Knowledge Graph Embeddings

這篇文章是瑞士大學的 Tim Dettmers 發表在 AAAI 2018 上的工作,文章提出了 ConvE(Convolutional Embedding),用二維卷積網路做 KGE。用各種各樣的神經網絡做 KG 嵌入的工作從此鋪天蓋地而來,一開始是卷積、后面有了 attention、膠囊網絡等。其實早在 TransE 的時候,就有用神經網絡做 KG 表示的,只是不像現在用的網絡形式比較多樣。

模型

問題提出

文章首先提出鏈接預測的任務,之前做該任務的模型多是淺層的,相比於深的多層模型,學習特征的能力更弱,因此本文提出了多層的卷積網絡 ConvE。

文章重點強調了另一個問題:數據集 WN18 和 FB15k 存在測試集泄露(test set leakage)問題,具體而言就是測試集中的很多三元組樣本,是訓練集中樣本的反向表示(inverse relaitons),這會使得它們很容易被測試成功,因為模型從訓練集中學到了它們的相關信息。文章專門針對這個問題做了一些研究實驗,甚至專門提出一個模型來處理這類關系。

1D 卷積和 2D 卷積

關於為什么采用 2D 卷積,文章給出的解釋是 2D 卷積比 1D 卷積通過 embedding 之間的交互增強了模型的表現力。

1D 卷積對一維的 embedding 做拼接,然后使用 k=3 的過濾器進行卷積,但這樣只能捕捉到兩個向量拼接點處的交互:

而 2D 卷積將二維的 embedding 進行堆疊,然后用 3x3 的卷積核(過濾器)進行卷積,這樣可以捕捉整個拼接行的交互:

總而言之,二維卷積可以比一維卷積抽取更多的特征交互。

ConvE

ConvE 是最簡單的用做鏈接預測的多層卷積網絡,組成部分包括一個單層的卷積網,一個投影層和一個內積層。ConvE 不僅參數少,並且通過 1-N 打分的方式加速訓練。

打分函數相應定義為:

根據模型的架構圖,將頭實體和關系的向量堆疊,然后 reshape 成二維的張量(類似圖像的表示),經過卷積后,得到 feature map,然后經過全連接層投影到 k 維空間中,在內積層與候選目標的 embedding 進行匹配。值得注意的是該模型大量使用 dropout(幾乎每一層都用了)。

loss 采用二元交叉熵 loss,優化器采用 Adam:

關於采用 1-N 而非 1-1 打分方式提高訓練效率的原理,沒有整明白=.=。
(2022年5月10日補充:評論區有大佬給出了解釋:
@mnkl0981
1-N scoring 的意思是,給定 entity 和 relation 的 embedding 應用矩陣乘法,快速得到 scores (估計這得益於高效的矩陣運算優化)。作者本人親自回答的:https://github.com/TimDettmers/ConvE/issues/49)

實驗

文章做了大量的實驗,不愧是一篇頂會的體量。

數據集

實驗使用的數據集包括:WN18(WN18RR)、FB15k(FB15k-237)、YAGO3-10 和 Countries。

Inverse Model

文章構建了簡單的、基於規則的模型,該模型自動從訓練集中抽取 inverse relations。

模型參數

相比於 DistMult,ConvE 參數更少,但效果更好。

鏈接預測結果

在沒有去除 inverse relations 的 WN18 和 FB15k 上,Inverse Model 的效果居然是最好的,而在去除了 inverse relations 的 WN18RR 和 FB15k-237 上,Inverse Model 的效果是最差的,說明 WN18 和 FB15k 確實存在 inverse relation leakage 的問題。因此文章推薦后續的研究盡量選擇 WN18RR、FB15k-237 和 YAGO3-10。

消融實驗

在 FB15k-237 上進行了消融實驗:

從消融實驗結果看出,hidden 層的 dropout 作用最大,label smoothing 作用最無足輕重。

這里解釋一下 label smoothing:標簽平滑是一種正則化策略,用於防止過擬合;做法是減小真實樣本標簽類別在計算損失函數時的權重。

代碼

文章給出了代碼:https://github.com/TimDettmers/ConvE 。試圖嘗試運行,但是遇到了一點小問題,暫時還沒有解決,先放一放。

小結: 文章是用卷積(二維)做 KGE 的開山之作,后面各種網絡用於 KGE 也是大勢所趨。文章對比的 baseline 不是很多,但做的實驗卻很多,數據集就用了6個,並且對廣泛使用的數據集 WN18 和 FB15k 存在的 test leakage 問題進行了仔細的研究,並給出了實驗數據證明。最近看的 NN 做 KGE 的論文都給出了代碼,我后面的 idea 應該也會向 NN 這方面靠了。

ConvKB

paper: A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network

這篇論文是澳大利亞迪肯大學的 Dai Quoc Nguyen(好熟悉的名字,之前應該也有看過他的論文)發表在 NAACL 2018 上的文章。文章提出了 ConvKB,雖然比 ConvE 提出的晚,但比 ConvE 稍微降了一個層次:ConvE 是二維卷積,ConvKB 就是普通的一維卷積。而且這兩個模型的名字也很容易混淆,都定義的比較泛。ConvKB 是 Convolutional Knowledge Base。整體來說,ConvKB 比 ConvE naive 很多。

模型

文章並沒有明確地指出解決的問題,而是直接介紹 CNN:它可以捕捉知識庫中的全局關系和翻譯的特性。但還是在 Intro 里面小小 diss 了一下 ConvE:它沒有關注三元組 embedding \((v_h,v_r,v_t)\) 的相同維度的全局關系,因此忽略了翻譯模型的翻譯特性。

本文提出的 ConvKB 結構:每個三元組表示為一個三列的矩陣,輸送到卷積層,多個卷積核對其進行卷積操作輸出 feature maps,feature maps 拼接為一個單個的特征向量表示輸入,特征向量與一個權重向量相乘,返回三元組得分。

ConvKB 最終的打分函數為:

loss 定義為:

用 Adam 優化器進行訓練。

實驗

在 WN18RR 和 FB15k 上進行了鏈接預測實驗:

表格最下面四個模型是利用了路徑或外部語料信息的模型。

代碼

文章中給出了 ConvKB 的代碼:https://github.com/daiquocnguyen/ConvKB

在 FB15k237 上跑了一下代碼,很順利,得到的結果與論文中和 github 上給的結果差不多。

作者在 github 上給出的實驗結果:

小結: 整體而言,這個模型比較簡單,論文體量也比較小,但還是算比較經典的,算是用卷積做 KGE 的最簡單的模型了(ConvE 已經不算是最簡單的了)。

R-GCN

paper: Modeling Relational Data with Graph Convolutional Networks

這篇文章是荷蘭阿姆斯特丹大學的 Michael Schlichtkrull 發表在 ESWC(CCF-C) 2018 上的工作,文章提出了 R-GCN(Relational-Graph Convolutional Network)用於建模關系型數據。該首次提出用圖卷積做 KGE,從網上亂飛的論文筆記來看,算是一篇小里程碑式的文章了。只發了 C 可能是因為它的效果不是很好。

模型

文章沒有詳細介紹所解決的問題,上來直接講模型。(有的論文比較注重所解決的問題,有的甚至專門設一小節“problem defination”,有的文章卻沒有)

模型的主體是仿照 GCN 定義了節點的表示,然后具體為不同的任務設計了不同的分類器/編碼器/解碼器。

神經關系建模

  1. 關系圖卷積網定義

在看這篇文章之前本想學習一下圖卷積的知識,但是都是從傅里葉變換講起的。但這篇文章的圖卷積其實就是一個“信息傳播”的思想,用鄰居節點的表示作為當前節點的表示,跟 PageRank,還有 PTransE 里面用的那個衡量路徑置信度的資源分配算法 PCRA,感覺都差不多=.=。總而言之,圖卷積就是用於處理圖的神經網絡。論文中這么說的:GCN 可以被視為一種簡單可微的信息傳播框架。

節點 \(v_i\) 在第 \(l+1\) 層的隱狀態定義為:

其中,\(M_i\) 代表向節點 \(v_i\) 流入的信息的集合,通常使用入邊來代表;\(g_m(\cdot , \cdot)\) 函數用於累積和傳遞流入的信息,具體可以使用線性變換、ReLU 函數等。


每個節點的表示是上一層的鄰居節點表示的加權和和 self-connection 保留一部分自己信息的結果。其實這里的層也可以理解為一個時刻。

仿照 GCN 的架構,為實體中的實體/節點定義了如下的前向傳播策略:

\(N_i^r\) 表示節點 \(v_i\) 在關系 \(r\) 下的鄰居節點集合。\(c_{i,r}\) 為歸一化常量,通常設置為 \(| N_i^r |\)

  1. 正則化

為了防止模型在關系數量較少的情況下過擬合,文章提出了兩種正則化方法:

  • 基函數分解(basis decomposition)

將參數矩陣 \(W_r^{(l)}\) 表示為 \(V_b\)\(a_{rb}\) 的線性組合。

  • 塊對角分解(block-diagonal decomposition)

在塊對角分解的方法中,將 \(W_r^{(l)}\) 定義為低維矩陣的和,這樣得到的 \(W_r^{(l)}\) 是一個塊對角矩陣。

兩種分解方法都可以減少擬合數據所需要的參數量,同時可以緩解在小樣本關系場景下的過擬合。

實體分類

實體分類的任務是判斷實體節點所屬的類別。在 GCN 的最后一層使用 softmax 激活函數。訓練目標為最小化交叉熵 loss:

其中,\(h_{ik}^{(L)}\) 表示第 \(i\) 個節點的網絡輸出的第 \(k\) 個維度的值,\(t_{ik}\) 代表相應的 ground truth label。

鏈接預測

對於鏈接預測任務,用 R-GCN 編碼,得到 embedding,然后用 DistMult 的打分函數計算三元組得分,最后輸出交叉熵 loss:

DistMult 打分函數:

交叉熵 loss:

其中,\(l\) 是 logistic sigmoid 函數,\(y\) 是指示樣本正負的 indicator。

實驗

實體分類實驗

用實體分類任務來評估 KGE 效果還是第一次見,使用的數據集也不常見,包括四個:AIFB、MUTAG、BGS、AM。

鏈接預測

鏈接預測任務使用的數據集是:WN18、FB15k、FB15k-237。

在實驗中,R-GCN 的效果提升都比較微弱,但是因為 GCN 的出現,用它來做 KGE 也會是一種必然,所以自然而然會受到關注。

代碼

演講 video 使用的 slides 中給出了實驗代碼的鏈接。代碼分為了兩部分,一作負責的是鏈接預測的實驗,二作(Thomas Kipf)負責的是實體分類的實驗。代碼項目分別為:https://github.com/MichSchli/RelationPredictionhttps://github.com/tkipf/relational-gcn

鏈接預測的實驗因為 run-trian.py 里面定義的運行環境的路徑與當前的代碼存放路徑不太一樣,沒有運行成功,暫時先不花時間調了;再、作者在 readme 中說該實驗會花費大約幾個小時,並且需要一定量的內存。實體分類的實驗因為代碼中給出的數據集下載鏈接失效了,遂放棄。

作者演講 video:http://videolectures.net/eswc2018_kipf_convolutional_networks/

知乎某大佬做的復現:https://zhuanlan.zhihu.com/p/367721297 ,對應 GitHub 項目:https://github.com/lixuanhng/NLP_related_projects/tree/master/GNN/RGCN

小結: R-GCN 使用 GCN 的信息傳播的思想表示 KG,用上層的卷積輸出作為下層的卷積屬入,slides 中提到實際是做了 3 層。文章針對實體分類和鏈接預測任務設計了不同的輸出層。KG 本身就是一種圖,用 GCN 做 KGE 是理所當然(這里突然想到了 GNN,不知道有沒有 GNN for KGE 的工作,R-GCN 是 2018 年的,三年過去了,我想應該有了)。

【題外話——關於論文學習的兩點】

  1. 找多手資料(paper、code、slides、vedio、別人的筆記等),增進對論文的理解,爭取吃透。最近看論文進入了“疲憊期”,厭倦了“看文章-寫筆記”的固定模式,常常失去了主動做這件事情的意願。今天看之前收藏的 R-GCN 筆記的機會,發現了論文原作在會議上講解論文的視頻,看過一遍,雖然沒有完全聽懂,但也能 get 差不多 50%,而且可以趁機練習英語聽力,學習優秀者的表達方式。因此以后看論文(尤其是新論文)時,可以找多手資料加深對論文的理解,緩解固定學習模式帶來的疲憊,畢竟比起文字,大腦對於圖片和視頻的刺激更為敏感。

  2. 打破舒適圈,英文表達很重要,多看論文 video 增進語感。這篇 paper 的演講匯報足足有 30min,問答環節也有很多提問者在認真地提問,作者也都一一做出了回答。這是一個很棒的 report,作者在節奏、表述方面都把握得很好。又看了這個網站(http://videolectures.net)上的其他會議的視頻,看了幾個 PAKDD 的幾個中國學生的 report,感覺應該是演講者事先寫好了講稿,照着念的錄好的一個 video,也沒有問答環節,果然很水。之前很畏懼英文報告這件事情,但看一些不那么好的,就會重新拾起一點信心,如果直接看一個目前無法達到的高度(比如本文的作者演講),就會很容易放棄。英文演講這件事情,可能並沒有像想象中那么難。做到並不難,做得好才難。 只是“做”的話還是很容易達到的,從“不敢做”到“做”,是邁出的重要的一步,因為走出了自己的舒適圈,突破了自己的能力界限,然后后面的工作就是從“做”向“做得好”的方向發展。最關鍵的一點就是克服自己內心的恐懼,撕掉給自己打上的“我不行”的固有標簽。無論多復雜、多難的事情,只要肯花時間、不急不躁、一點點去做,總會是有希望的。

ConvR

paper: Adaptive Convolution for Multi-Relational Learning

這篇文章是騰訊的一位同學發表在 NAACL 2019 上的一篇工作,指導老師是王斌和王泉老師。文章提出了 ConvR 模型,R 代表 relation,是對 ConvE 做的改進,關系做為卷積核,在實體的表示上進行二維卷積,減少了參數量,豐富了實體-關系間的交互,這種方式稱為適應卷積(adaptive convolution)。

模型

問題提出

1D 卷積僅能捕捉向量拼接處的交互,因此 ConvE 使用圖像處理領域的 2D 卷積用於獲取比 1D 卷積更多的交互,但是 2D 卷積也僅僅能捕捉矩陣堆疊相接行的交互,使得實體-關系間的交互還是不充分。因此,為了最大化實體-關系間的交互,提出了 ConvR 模型, 將關系的 embedding 作為卷積核,對頭實體的“image”進行卷積,可以獲得實體與關系完全的交互。

ConvR

ConvE 中使用的過濾器是外加的 global filter,是固定不變的,而 ConvR 是用關系 emb 代替全局過濾器,對實體的 reshape 進行卷積。具體地,關系 r 的表示分為 c 塊,reshape 為 c 個過濾器(卷積核)。卷積的結果就是 feature map,一個卷積核產生一個 feature map,最后所有的 feature map 堆疊為一個向量 \(c\) (不明白為什么堆疊結果是一個向量),與尾實體做點積計算三元組得分。上圖中的第二個等號右邊的圖展示了二維卷積平鋪在一維中的表示,可以看出,關系的各部分都與實體的整個表示的各部分都有交互,而不僅僅集中於某些特定的位置。

一個 feature map:

feature map 堆疊后得到的向量 \(c\) 經過一個全連接層,與目標向量(候選尾實體)進行點積,計算出三元組 \((s,r,o)\) 的得分:

loss 與訓練

和 ConvE 一樣,使用 1-n 的打分方式加速訓練, 使用交叉熵 loss:

\(y_o^{s,r}\) 是二值標簽,指示三元組樣本 \((s,r,o)\) 的正負。

和 ConvE 一樣,使用 dropout 和 label smoothing 防止過擬合,用 Adam 優化器訓練模型。

實驗

在四個數據集 WN18、WN18RR、FB15k、FB15k-237 上進行鏈接預測實驗。

與 ConvR 的參數量及效果對比(在FB15k-237上):

代碼

文章沒有給出代碼,github 上也沒有找到。但是這個模型應當也被視為 NN for KGE 的一個蠻重要的模型。

小結: 最喜歡這種看起來清楚簡單的論文和模型,我覺得我又行了[doge]。有兩點感悟:1. 模型簡單,大概介紹完但又感覺空洞的話,就用符號進行公式化描述,比如關系分塊的表示、參數減少具體分析下減少了多少等等。2. 想不出 idea 的話,就做能看懂的文章的 future work。比如這篇文章提出的,可以用 ConvR 做 1D 和 3D 卷積;還可以將實體和關系在卷積操作中的角色互換,實體表示做卷積核,關系表示做 “image”;文章的 conclusion 還提到,應當使尾實體也和關系進行交互。


整體小結: ConvE、ConvKB 和 ConvR 都是使用普通的卷積網絡,R-GCN 用圖卷積,這幾篇都是用卷積做 KGE 的工作,再加一篇 GNN 的就好了。幾篇看下來,AI 領域的卷積其實就是——“相加再相乘”,至於和通信領域卷積中的“傅里葉變換”的關系,還沒太 get 到。

【5.19 早感想】很多模型在效果上並不是碾壓式的提升,效果對於論文是否被接收可能只是一方面的因素。所以有了 idea 不必擔心后續還未發生的事情,只是去做就好了,一個 idea 必然會對應一篇論文,要做的只是調參訓練、調整 baseline 的選擇,給出合理的解釋等等,只要有模型實現(實驗)、結果可以標粗,后續的事情一切就都好辦了。


免責聲明!

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



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