PaperReading-TranSparse《Knowledge Graph Completion with Adaptive Sparse Transfer Matrix》

本文記錄了有關TranSparse《Knowledge Graph Completion with Adaptive Sparse Transfer Matrix》論文的相關情況,如果有做相關內容的同學可以郵件與我聯繫 [email protected]

背景

之前的基於翻譯模型中,將所有的關係是按照同一個標準來進行翻譯,沒有考慮關係在鏈接實體上的特性,在論文中將這種由於關係在鏈接實體上的不同,定義成了兩個問題,異構性和平衡性
1

  • 異構性:不同的關係鏈接的頭尾對兒的個數不一樣
    實際的情況中,一個關係鏈接的頭尾對兒的數量決定了這個關係在圖譜中的重要性,越重要的關係就需要更多的信息來表徵。如果所有的關係的重要性認爲是一樣的時候,就會出現重要的關係表徵能力不夠(欠擬合),不重要的關係添加了太多不必要的表徵內容(過擬合)。因此要對不同重要性的關係進行不同程度的表徵

  • 平衡性:同一個關係鏈接的頭實體和尾實體的個數也不一樣
    同一個關係中頭尾實體的個數不同,決定了這個關係更加關注於頭實體或者尾實體。和上面的異構性含義一樣,更加關係的內容,就需要用更多的語義信息來表徵;如果將頭實體和尾實體認爲是一樣的重要性,也會出現重要的內容表徵能力不夠(欠),不重要的內容含有更多的語義內容造成了噪音(過)

思路

基於對以上兩個問題的思考,TransSparse是基於TransD的基礎上來進行修改的(TranD和這篇論文是同一個作者),主要修改的地方是對於從實體空間到關係空間的映射矩陣的修改。
在TransD中,同一個關係的使用的是同一個映射矩陣,是不能來區分關係的重要性(異構性),關係中的頭尾實體在TransD
中使用了不同的映射矩陣,但是沒有加入關係重要性這個內容。
基於以上的思路,TranSparse的操作是定義了一個稀疏矩陣,稀疏矩陣的稀疏性來表示關係的重要性(異構性),每次更新映射矩陣的時候只更新非0元素,用非0元素來計算從實體空間到關係空間的映射。稀疏矩陣非0元素的位置,論文中給出了兩種做法,結構性和非結構性,其中結構性的最終結果要好於非結構性

1

結構型的稀疏矩陣就是將非0元素依次的排列在對稱軸兩邊,非結構型的稀疏矩陣就是隨機放置非0元素

具體操作

論文中的映射矩陣稀疏性也就是關係的重要性程度用θ\theta表示,設定了一個超參數來表示重要性最小的矩陣的稀疏性(重要性最小也就是該關係鏈接的實體對兒最少)θmin\theta_{min},然後其它矩陣的稀疏性用以下公式計算

1

其中N表示對應矩陣的實體對兒個數。
在計算得到了矩陣的稀疏性之後,生成關係的稀疏映射矩陣M(θr)M(\theta_r),在論文中給出了倆中方式的生成方法,在進行迭代計算時只跟新非0元素

1

具體的構造稀疏映射矩陣時,先計算非0元素的個數,具體的計算方式就是稀疏係數*維度平方,初始化的時候在一個對角的單位矩陣上,如果對角矩陣的維度大於了要有的非0元素的個數,那麼初始化的映射矩陣就是對角單位陣,如果還有剩餘的元素,會按照結構型和非結構型進行安排非0元素。
結構型的稀疏矩陣就是沿着對角線依次的隨機初始化非0元素,如果剩餘的個數並不是恰好能夠滿足沿着對角線的設置就稍微更改下下非0元的個數;非結構型就是完全隨機的初始化。

在得到了映射矩陣之後,就需要計算從實體空間到關係空間的映射,在此論文分成了兩個部分,共享型和獨立型

1

共享型就是頭尾實體共享一個映射矩陣,獨立型就是頭實體單獨計算一個稀疏映射矩陣,尾實體單獨計算一個映射矩陣,計算及生成方式和之前的是一樣的。

之後的計算方式和其它的Trans的思路就一樣了,也是計算的正負三元組的勢能差。

代碼

我沒有在網上找到有關TranSparse(以及TransD)的代碼,如果您手裏有相關的代碼(python語言的,tf或者pythorch框架的),如果方便分享的話,還麻煩您郵件和我聯繫 [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章