FOIL算法

FOIL算法是一种一阶规则学习算法,遵循 序贯覆盖学习推理原则。

下面通过一个具体的例子说明FOIL算法学习的过程

FOIL算法
上图为一个简单的家庭关系知识图谱,结点代表实体,即家庭成员;边代表家庭成员之间的关系。现从图中已知关系(实线)推出David和Ann具有父女关系(虚线),即FOIL算法的一个学习过程。

注意:

  • 刻画知识图谱中结点之间的关系有两种两种:以James与David为Couple关系为例。 1.三元组形式: 2.一阶逻辑形式: Couple (James, David) 在FOIL算法中我们选用一阶逻辑形式表示。

; FOIL算法的学习过程

1.给定目标谓词

目标谓词: 是需要推断规则的结论,也称为规则头。本例中的目标谓词为 Father(David, Ann)。

2.构造背景知识样例和训练样例

背景知识样例: 知识图谱中除了目标谓词以外其他谓词的实例化。

目标谓词训练样: 训练样例包含正例集合E+ 和反例样例E-。

FOIL算法
注意:只有在已知两个实体之间存在的关系且确定这一关系与目标谓词相悖时,才能将这两个实体用于构建目标谓词的反例;而不能在不知两个实体是否满足目标谓词前提下将他们用于构造目标谓词的反例。如:不能用David和Ann来构建目标谓词的反例。

; 3.添加前提约束谓词并计算对应的FOIL增益值(FOLI_Gain)

前提约束谓词: 背景知识样例中出现的所有谓词依次作为前提约束加入推理规则,如将Mother(x,y)加入推理规则得到新的推理规则:Mother(x, y )——->Father(x, y)。

增益值: 评估添加前提约束谓词后所得新推理规则质量的好坏的标准,增益值的计算方法为:

FOIL算法
如:
  • 给定目标谓词Father(x ,y),推理规则覆盖正例样本数 1 个,即 m+ = 1;覆盖反例样本数 4 个,即 m- = 4;
  • 新推理规则Mother(x, y )——->Father(x, y)中的m+ 和m- 的值。本例中Mother(x,y)有两个实例:Mother(James, Ann)和Mother(James, Mikes).

  • Mother(James, Ann)实例中:将x,y带入Father(x,y)得到实例Father(James, Ann),由训练样本集合可知该实例为 1 个反例

  • Mother(James, Mike)实例中:将x,y带入Father(x,y)得到实例Father(James, Mike),由训练样本集合可知该实例为 1 个反例。因此 m+ = 0, m- = 2(m+和m-上面带尖括号)。代入增益值计算方法可得增益值FOIL_Gain为0, 记为NA。加入其他谓词的计算方法和上述一样。

FOIL算法

4.选取推理规则中FOIL_Gain值最大的谓词作为前提约束谓词加入推理规则形成新的推理规则。

本例中Couple(x, z)作为前提约束条件时,FOIL_Gain值最大为1.32.因此建立的 新的推理规则为Couple(x, z)——-> Father(x, y).

5.建立新推理规则的训练样本集合

FOIL算法
重复过程3和过程4,直到所构成的推理规则不覆盖任何反例

本题的过程如下:

FOIL算法
FOIL算法
加入谓词Mother(z, y )后得到最大FOIL_Gain值,且该推理规则不覆盖任何反例,因此FOIL算法学习结束。学习得到的推理规则为:
FOIL算法
图谱中Mother(James, Ann)和Couple(David, James)已知,因此可推理出新知识Father(David, Ann)。

总结:FOIL算法学习从实例出发,不断测试所得推理规则是否包含反例,一旦不包含,则结束学习,充分展示了”归纳学习”的能力。

Original: https://blog.csdn.net/weixin_45459356/article/details/116019830
Author: 维维sanguine
Title: FOIL算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/556571/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球