這兩篇文章是去年夏天疫情在家的時候看過的,還講過討論班的,轉眼間一年都過去了。看了下 PPT 的日期,剛好是去年的這個時候(6月下半月),不禁再次感嘆時間過得好快,去年正在一眼望不到畢業盡頭的狀態飄零,趁着疫情完全在家躺平,反而整個人精氣神很好,再次回到學校進步就比較快,各方面都有提升。所以盡管無法完全放棄工作,但是還是要適當給自己放假,從繁忙的工作中抽身出來,留一些屬於自己的時間, 感受活着的感覺呀,這樣才能走得遠。那時候做夢都想不到自己會發出論文並且趕上了這次的開題。好了沒有時間感慨了,還有4篇筆記要寫,寫完要寫開題報告,加油鴨~
R-MeN
paper: A Relational Memory-based Embedding Model for Triple Classification and Search Personalization
簡介: 這篇是 ConvKB 的作者 Dai Quoc Nguyen 發表在 ACL 2020 上的工作,這個作者的論文風格就是淺顯易懂(畢竟我這種小白都能看懂=.=|),非常適合我這種菜鳥。文章提出了關系記憶網絡 R-MeN,利用自注意力機制捕捉 memory 和新的三元組交互,並利用 CNN 解碼計算三元組得分。
模型
文章首先提出的問題是 KGE 模型不擅長記憶,因此本文提出 Relational Memory Network 來編碼關系三元組的內部依賴。
在這里我要插一點點感想,科研象牙塔中的人是不了解工業界中的應用是怎樣的,盡管論文中充斥着“實際應用場景”雲雲,我們不知道實際應用場景及其遇到的問題是怎樣的。因為看了 KG 領域的文章比較多了,覺得灌水現象還是比較嚴重的,隨隨便便的 idea 就可以轉化為一篇 paper,盡管這可以讓我拿到博士學位,但我仍然感覺在僅有的幾個數據集上跑來跑去,提升了一丟丟百分比然后發出一篇甚至是頂會的 paper 是沒有任何意義的,論文中的那些句子越看越覺得是冠冕堂皇的套話,但是又不得不去看、去寫。所以此時的心境又有些偏向工業實戰了,想要看看真實的工業界中會遇到什么樣的問題呢,我的能力能不能解決那樣的問題呢?這樣想……
哦為什么會有上面的一段感慨,是每每在論文中看到 “捕捉交互”、“內部依賴” 這樣模糊的表述,都覺得不清不楚的,看起來是那么回事,但是具體地這個交互是啥、依賴是啥?論文里也沒講清楚。也可能是因為這個領域中國人做的工作比較多,寫作都是一個套路,或許我應當多讀一讀英語母語者的 paper。之前看論文是不敢質疑的,現在越來越能跳出來思考,思考為什么,有的問題會在后文的閱讀中找到答案,更多的沒有答案,但是提問和思考的過程還是很有必要的。還是有進步的。(收)
整體架構

整個模型可以分為 4 個部分:位置編碼、self-attention、記憶與輸入進行交互、CNN 解碼
位置編碼
對頭尾實體和關系加上位置進行編碼:

其中,p 即代表位置 embedding。
self attention 與 memory network
假設一個記憶為 M,它有 N 行,每一行是一個 memory slot。第 t+1 個時刻,第 i 個 memory slot 的值由多頭注意力計算得出:

其中,H 是 attention 頭的數量,n 是 head size,memory size k=nH。attention 權重由如下的 softmax 函數及縮放點積計算得出:

文中提到,在 \(x_t\) 和 \(\hat{M}_{i,:}^{(t+1)}\) 間加了一個殘差連接,然后過一個 MLP,再過記憶門,產生編碼向量 \(y_t\) 和下一時刻的 memory slot \(M_{i,:}^{(t+1)}\)。
CNN 解碼
得到 3 個編碼向量 {\(y_1\),\(y_2\),\(y_3\)},堆疊成矩陣,然后用 CNN 進行解碼:

max 代表 max-pooling 操作,代替了 ConvKB 中的向量拼接,可以從 feature map 中捕捉到更重要的特征,並減少權重參數。
Loss
使用 Adam 優化器進行訓練,loss 定義為:

實驗
采用了兩個比較小眾的實驗:三元組分類和搜索個性化
三元組分類
三元組分類采用的是 FB13 和 WN11 數據集,並采用 GloVe 的 50 維預訓練詞向量作為實體和關系 embedding 的初始化。

還比較了具體每個關系上 R-MeN 與 TransE 的效果:

搜索個性化(search personalization)
搜索個性化實驗是將搜索任務表示為類似三元組的表示形式 \((query,user,document)\),然后套用 KGE 模型。數據集采用 SEARCH17。

超參的影響
在三個數據集上測試了 head size n 和 attention 頭的數量 H 的影響:

消融實驗

沒有位置編碼效果有所下降,但影響不大。
代碼
Conclusion 部分給出了代碼:https://github.com/daiquocnguyen/R-MeN 。(開題完了一定回來看 orz)
小結: 文章提出了 R-MeN,關系記憶網絡,用自注意力機制存儲三元組記憶,並用 CNN 進行解碼,捕捉 KG 三元組中潛在的內在依賴。整體感受中規中矩吧。
SEEK
paper: SEEK: Segmented Embedding of Knowledge Graphs
簡介: 其實嚴格講這篇並不屬於神經網絡模型的類別,只是因為都是 ACL 2020 的文章(去年隨便找的兩篇),又是一起看的,所以筆記就記到了一起。這篇是中山大學的一個研究所和微軟聯名發表在 ACL 2020 上的工作。主要思想是對 embedding 進行分段。
模型
文章首先提出的問題是現有模型不能兼顧模型復雜度和表現力。有的模型簡單,但表現力差,如 TransE、DistMult 等;另一類模型表現力好,但復雜度也較高,如 TransH、R、D、Single DistMult、ConvE、InteractE 等。因此文章提出了一個輕量級的模型,可以在不增加模型復雜度的情況下實現比較好的表現力。該框架主要有兩個重要特點:(1)利用豐富的特征交互(真沒看出來。。。);(2)保留關系的對稱和非對稱的特性。主要工作體現在設計了4種打分函數(雖然有的在之前的模型中出現過。)

f1:多線性點積(Multi-linear Dot Product)
最簡單的一種,是三個向量的線性點積:

這種是不分段的情況,等同於 DistMult。
f2:段間的多線性點積(Multi-linear Dot Product Among Segments)
將 h、r 和 t 分為 k 段,emb 維度為 d,因此每段的長度為 d/k。
關系 r 的分段表示為:

打分函數定義為各段線性點積之和:

特別指出,分 2 段(k=2)的情況等同於 ComplEx 和 HolE (有論文證明了這兩個模型本質上也是一樣的)。
f3:建模對稱和非對稱關系
f2 只能建模對稱的關系,因為 \(f_2(h,r,t) == f_2(t,r,h)\)。為了建模非對稱關系,將關系的分段分為奇數部分和偶數部分,奇數段捕捉對稱特性,偶數段捕捉非對稱特性。打分函數定義為:

這樣就會使得 \(f_2(h,r,t) != f_2(t,r,h)\),因此可以建模非對稱關系。(這個地方死活沒想明白。。。)
給出了分兩段的例子:

f4:減少計算負載
分段方法在未經優化時的計算時間復雜度為:\(O(k^3×d)=O(k^2d)\)。為了降低時間復雜度,在 f3 的基礎上對 t 下標的取值進行限制,換句話說就是省去了一些段的計算。

這樣點積項的數量被減少到 \(k^2\) 個,時間復雜度降低為線性 \(O(kd)\)。同時 f4 保留了奇偶機制,可以建模關系的非對稱性。
給出了分 4 段的例子:

Loss

實驗
鏈接預測


分段數 k 的影響

分段數大於 8 之后,效果就不會再提升了。綠線證實了時間復雜度與分段數 k 呈線性。
Case Study

(case study 的這張圖死活顯示不出來,也不知道是不是上面的人物頭像涉及到了敏感信息,咱也不知道,咱也不敢問。。。)
\(f_2\) 不能捕捉非對稱關系的特性,因此對於非對稱關系,給出了與其正向三元組相同的分數,但顯然這是錯誤的。相比之下,\(f_4\) 給出了與正向三元組差值較大的低分,因此可以建模非對稱關系。
代碼
https://github.com/Wentao-Xu/SEEK 。
小結: 本文提出了 SEEK(Segmented Embedding for KG),通過對 embedding 進行分段,利用充分的特征交互(還是沒看出來),保留了對稱和非對稱的關系特性。思想沒有太高明的地方,本質就是分段,然后進行排列組合,我的那篇爛論文跟這篇有異曲同工之處,或許后面可以借鑒這篇文章改進一下復雜度。
到這里目前攢的神經網絡系列的 paper 就看的差不多了。有文章對這一類模型中典型的幾個做了簡單的比較和總結:https://www.jianshu.com/p/2ad4ea1eecba。
我所寫的這些論文筆記,雖然花了一些時間,但也是按照論文的寫作套路進行的簡單的搬運,由於時間,沒有太多個人的理解和思考,代碼大多也沒有細看,這里涉及到讀論文的廣度和精度的權衡問題,要讀大量論文的話,就沒有辦法每篇都精讀和看代碼。我之前列的 KG 領域的經典論文必須是要看的,跟進最新論文的話,可以先粗度,如果感興趣想要跟進並繼續做的話,再去精讀和看代碼。第二點就是總是寫論文筆記已經膩煩了,開完題以后看論文可以考慮換一種形式,看論文,然后講出來,錄視頻,可能不失為一種鍛煉表達方式的好方法。
還有一篇論文是對幾個經典的 NN 模型進行的重評價 —— $ A Re-evaluation of Knowledge Graph Completion Methods $,里面也有對這些模型的復現,是一篇非常能引人深思、有意義的工作。后面打算復現這類模型的時候可以參考下。