目录
问题: 如何从知识图谱中推理得到:
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算法从实例(正例、反例、背景知识样例)出发,不断 测试所得推理规则是否还包含反例,一旦不包含,则学习结束,由此充分展 示了“归纳学习”的能力。在学得推理规则后,再给推理规则中的变量赋予具体例子,经过“演绎”得到新的知识