目錄
問題: 如何從知識圖譜中推理得到:
father(David, Ann)
若能推理出這條規則, 問題得解.
歸納邏輯程序設計 (inductive logic programming,ILP)算法是機器學習和邏輯程序設計交叉領域的研究內容。
ILP使用一階謂詞邏輯進行知識表示,通過修改和擴充邏輯表達式對現有知識 歸納,完成推理任務。
作為ILP的代表性方法,FOIL(First Order Inductive Learner)通過序貫覆蓋實現規則推理。
FOIL算法學習過程
概述: 從一般到特殊, 逐步給目標謂詞添加前提約束謂詞, 直到所構成的推理規則不覆蓋任何反例.
1. 給定目標謂詞
Father(x, y)
2. 構造 背景知識樣例樣例 和 目標謂詞訓練樣例
- 背景知識: 知識圖譜中目標謂詞以外的其他謂詞實例化結果(已知謂詞)
- 目標謂詞只有一個正例
Father(David, Mike)
- 反例: 只能在已知兩個實體的關系且確定其關系與目標謂詞相悖時, 才能將這兩個實體用於構建目標謂詞的反例, 而不能在不知兩個實體是否滿足目標謂詞前提下將它們來構造目標謂詞的反例.
3. 依次將謂詞加入到推理規則中作為前提約束謂詞
計算推理規則覆蓋的正例和反例
如:
- 將
Monther(z, y)
作為前提約束謂詞加入, 可得到推理規則Monther(z, y) → Father(x, y)
- 在背景知識中,
Monther(z, y)
有兩個實例:
Monther(James, Mike)
Monther(James, Ann)
- 對於
Monther(James, Mike)
這一實例, z=James, y=MIke, 將z和y帶入Father(x, y)
得到Father(x, Mike)
.
覆蓋了 :
正例Father(David, Mike)
反例Father(James, Mike)
Father(Ann, Mike)
- 對於
Monther(James, Ann)
這一實例, z=James, y=Ann, 將z和y帶入Father(x, y)
得到Father(x, Ann)
.
覆蓋了:
反例Father(James, Ann)
計算信息增益值(information gain)
NA(Not Available): FOIL_Gain為負無窮時
4.基於計算所得FOIL增益值來選擇最佳 前提約束謂詞
Couple(x, z)
5. 建立新的推理規則以及更新訓練樣本集
Couple(x, z)
加入后信息增益最大, 將其加入推理規則, 得到Couple(x, z) → Father(x, y)
- 將訓練樣例中與該推理規則不符的樣例去掉. 由新規則和背景知識樣例可知,
Father(x, y)
中的x只能是David. 新的訓練樣本集如下:
重復3 4 5步驟, 直到新規則不覆蓋任何反例
總結
給定目標謂詞,FOIL算法從實例(正例、反例、背景知識樣例)出發,不斷 測試所得推理規則是否還包含反例,一旦不包含,則學習結束,由此充分展 示了“歸納學習”的能力。在學得推理規則后,再給推理規則中的變量賦予具體例子,經過“演繹”得到新的知識