Neural LP
文章:Differentiable Learning of Logical Rules for Knowledge Base Reasoning
embedding based主要學習關係和實體的表示,而neural logic programming學習邏輯規則。此外,由Neural LP學習的邏輯規則可以應用於訓練時看不到的實體。這是無法通過結構嵌入實現的,因為它的推理能力依賴於實體依賴的表示。
動機:本文提出了一個可微的基於知識庫的邏輯規則學習模型。現在有很多人工智慧和機器學習的工作在研究如何學習一階邏輯規則(邏輯規則的好處是可解釋,保證魯棒性),規則示例如下圖:

關係規則的學習集合是一種統計關係學習,通常底層邏輯是概率邏輯。使用概率邏輯的優點是,通過給邏輯規則配備概率,可以更好地對統計上覆雜和有噪聲的資料進行建模。不幸的是,這個學習問題相當困難——它需要學習結構(即模型中包含的特定規則集)和引數(即與每個規則相關聯的置信度)。
形式化本文關心的邏輯規則如下:

每一個規則由多個約束條件組合而成,並且被賦予一個置信度 α,其中query(Y,X) 表示一個三元組,query 表示一個關係。
不同於基於 embedding 的知識庫推理,規則應該是實體無關的,規則可以應用於任何新新增到知識庫中的實體,但在知識庫 embedding 方法裡,新新增到知識庫中的實體由於沒有對應的表示,無法就這些實體進行相關的推理。
不同於以往的基於搜尋和隨機遊走的規則學習方法,本文的目標是提出一個可微的一階謂詞邏輯規則學習模型,可用基於梯度的方法進行優化求解。
本文提出的NeuralP模型主要收到 TensorLog 的啟發。TensorLog 可視為一個可微的推理機。知識庫中的每個實體用一個 one-hot 向量表示,每個關係 r 定義為一個矩陣運算元 M_r,M_r 為一個稀疏的毗連矩陣,維度為 n_e×n_e, 其中 n_e 表示實體的個數。每一條邏輯規則的右邊部分被表示為以下形式:

所以總結本文關心的優化問題如下:

V_x 和 V_y 分別為一個由規則推理得到的三元組。在上式的優化問題中,演算法需要學習的部分分為兩個:一個是規則的結構,即一個規則是由哪些條件組合而成的;另一個是規則的置信度。由於每一條規則的置信度都是依賴於具體的規則形式,而規則結構的組成也是一個離散化的過程,因此上式整體是不可微的。因此作者對前面的式子做了以下更改:

主要交換了連乘和累加的計算順序,對預一個關係的相關的規則,為每個關係在每個步驟都學習了一個權重,即上式的 a_l^k。其中 T 為超參,表示規則的長度。由於上式固定了每個規則的長度都為 T,這顯然是不合適的。為了能夠學習到變長的規則,Neural LP中設計了記憶向量 u_t,表示每個步驟輸出的答案--每個實體作為答案的概率分佈,還設計了兩個注意力向量:一個為記憶注意力向量 b_t ——表示在步驟 t 時對於之前每個步驟的注意力;一個為運算元注意力向量 a_t ——表示在步驟 t 時對於每個關係運算元的注意力。T是規則的最大長度, 是KB的規則個數,這樣確實可微了,但限定了規則的長度,所以作者又加了這些操作,每個步驟的輸出由下面三個式子生成:

記憶向量 表示第t個步驟輸出的答案,即每個實體作為答案的概率分佈。
記憶注意力向量 表示在第t個步驟時對於之前每個步驟的注意力。
運算元注意力向量 表示在步驟t時對於每個關係運算元的注意力。
都是用RNN網路得出的:

其中隱層變數h_t 由一個LSTM生成。

其中memory存的就是每步的推理結果(實體),最後的輸出即 ,objective就是最大化
,加log是因為非線效能讓效果變好。