Neural LP閱讀筆記
Differentiable Learning of Logical Rules for Knowledge Base Reasoning 閱讀筆記
NIPS 2017
Introduction
1.邏輯規則是知識庫推理任務的有效表示形式,因為邏輯規則可解釋,而這種可解釋性導致轉移任務的可靠性,因為規則是無關特定實體的。這也是Embedding不能做到的。
2.通過為邏輯程式加上概率,能夠更好地對複雜和嘈雜的資料進行建模。
3.學習邏輯的結構一般來說是一個離散問題。
4.本文提出了一種完全可微的系統:Neural LP,用於學習由一階規則集定義的模型,這使得我們可以將現代的基於梯度的程式設計框架和優化方法用於歸納邏輯變成任務。
6.本文提出的神經LP在TensorLog的基礎上加入了具有注意力機制和記憶體的神經控制器系統,使之能夠同時學習引數和結構。
Framework
1.基於知識推理
知識庫是Relation(head,tail)格式的關係資料的集合,其中head和tail是實體,Relation是兩者之間的關係。
為了實現基於知識庫的推理,我們需要學習以下形式的加權鏈式邏輯規則:
其中α為規則置信度。
推理過程中,給定一個實體x,每個y的得分被定義為query(y,x)的規則置信度的總和,我們將返回一個排序的實體列表,得分越高,排名越高。
2.TensorLog
將所有實體進行one-hot編碼,向量長度為實體個數,對於第i個實體來說,只有i-th位置處為1,其餘位置均為0;
將每個關係定義為一個操作符Mr,其規模為|E|x|E|,取值為0/1,有且僅有R中存在R(i,j),Mr[i,j]才取值為1,其餘位置為0。
利用上述表示,我們可以通過執行矩陣乘法Mp·Mq·Vx=s來模擬任何實體X=x的邏輯規則推理:R(Y,X)<-P(Y,Z)^Q(Z,X),向量s中為1的位置就是y的答案。
推廣到任意規則長度,rule條數為l的情況,我們想為每個查詢(每種關係)學習到的內容為:
l是規則的索引,α表示規則l的置信度,β表示規則l中所有關係的有序列表。
給定Vx,推理規則集得到的各個實體的分數為s中相應位置的值。
為了得到最優化的推理,需要對每個query進行下面的優化:
{x,y}是所有滿足query的實體對,{α,β}是要學習的引數。
3.Neural LP
學習演算法需要學習兩個部分:1)結構,規則尾的組成; 2)每條規則的置信度。規則置信度依賴於具體規則,而規則的確定是一個離散化的過程,所以(4)是不可微的。
作者提出了自己的想法:(交換了求和和積的位置)
其中T是規則的最大長度,|R|表示知識庫中的關係總數。
作者將長度為T的規則中每個關係都與權重相關聯。(mine:第t個關係處對關係集所有可能關係都有一個權重)
但是這樣所有規則的長度都被統一限制為T,為了解決這一問題,論文中提出了一種遞迴公式(實現的大概就是和公式3差不多的事情):
引入了一個輔助記憶向量ut:
ut初始設定為Vx;在(7)描述的每一步中使用記憶體注意向量bt計算在t步之前的所有記憶體向量的加權平均值。通過這種公式,模型可以將TensorLog運算子應用於所有先前部分的運算結果而不僅僅是最後一步。
最後,模型計算所有記憶體向量的加權平均值,因此需要注意選擇恰當的規則長度。
Neural LP引入了一個神經控制系統,用來學習運算子α和記憶體注意向量b。使用迴圈神經網路,因為RNN符合迴圈公式,還因為當前步驟的注意力可能取決於先前的步驟。
在1~T+1的每步中,網路依據公式9,10,11預測α和b;(為什麼這樣算論文沒說,也不知道h是什麼)
系統執行公式7的運算,將每步運算得到的ut(該步的預測結果)放入記憶體,這樣記憶體中會儲存每個步驟的部分推斷結果。
目標是最大化vy的轉置乘u,這裡我們最大化vy的轉置乘u因為經驗上講非線效能夠提升優化效能。
這樣就能得到α和b。
有了這兩個引數,我們就可以推導邏輯公式了。
對於每種query,我們可以得到關於它的置信度和規則結構(α,β)(β就是公式3中提到的規則組合)
通過執行公式7獲得規則,並跟蹤每個矩陣Mrk的係數,詳細的推推導過程如下:
輸入:α和注意力向量b
符號: Rt= {r1, . . . , rl}是步驟t的部分規則集,其中每個規則由一對(α,β)組成,α是置信度,β是關係索引的有序列表。