FOIL算法

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

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

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

注意:

  • 刻画知识图谱中结点之间的关系有两种两种:以James与David为Couple关系为例。

    1.三元组形式:

    2.一阶逻辑形式: Couple (James, David) 在FOIL算法中我们选用一阶逻辑形式表示。

FOIL算法的学习过程

1.给定目标谓词

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

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

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

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

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

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

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

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

FOIL算法_第3张图片
如:

  • 给定目标谓词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).

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

FOIL算法_第4张图片

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

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

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

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

本题的过程如下:


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

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

你可能感兴趣的:(人工智能导论,人工智能,机器学习,算法)