(《机器学习》完整版系列)第15章 规则学习——15.9 归纳逻辑程序设计之最小一般泛化

文章介绍了归纳逻辑程序设计(ILP)的基本思想,它结合归纳法、逻辑和程序设计,用于从正例和反例中学习目标概念的描述。ILP关注的是规则的完备性和一致性,即正例完全被覆盖且反例不被覆盖。文中详细阐述了如何通过最小一般泛化(LGG)技术从具体事实泛化为一般规则,以及如何通过泛化和特化调整规则以达到完备性和一致性的要求。
摘要由CSDN通过智能技术生成

完备性与一致性有四种组合
泛化是具体化和实例化的反面,就是使其更一般化,从“多条具体事实(或规则)”中得到更一般化的“一条规则”,要求该规则不与这些事实矛盾或尽可能少矛盾。

归纳逻辑程序设计

前述引入函数和逻辑表达式嵌套,一方面提升了表达力,另一方面,由于嵌套的“无限”性和候选文字的组合爆炸,使得基于“比较”来选择文字成为不可能,必须换个思路处理。 归纳逻辑程序设计(ILP)实际上是三方面(归纳、逻辑、程序设计)的结合体:将归纳法(如,归结和逆归结)用于一阶逻辑,并与程序设计方法结合(对应于PROLOG等逻辑程序设计语言)。

ILP主要关注“概念学习”,即学习一个关于目标概念的描述,任务抽象为:

给定

  • 语言 L L L(定义谓词 p p p
  • 背景知识 B B B(有若干谓词 q i q_i qi
  • 训练集 ε = ε + ∪ ε − \varepsilon =\varepsilon^+\cup \varepsilon^- ε=ε+ε(分别为正例集和反例集)

寻找规则 H H H,使得 H H H ε \varepsilon ε B B B是完备的和一致的,简单地理解就是: ε + \varepsilon^+ ε+正例全被覆盖、 ε − \varepsilon^- ε反例一个也不被覆盖。这里是“硬”要求,也可以“软化”,如, ε + \varepsilon^+ ε+正例“几乎全”被覆盖、 ε − \varepsilon^- ε反例“几乎不”被覆盖。

规则 H H H覆盖示例 e = ( x , f ( x ) ) e=(x,f(x)) e=(x,f(x)),用式子表达为
B K ∧ H ∧ x ⊨ e \begin{align} BK\wedge H\wedge x\vDash e \tag{15.22} \end{align} BKHxe(15.22)
其中, B K BK BK为背景的逻辑表达式。

可以从置换的角度来看覆盖,规则 H H H覆盖示例 e = ( x , f ( x ) ) e=(x,f(x)) e=(x,f(x))是指:将 H H H作置换(即变量取示例中的常量,或者说将示例代入到规则中),其他未取值的变量存在置换为某常量使规则 H H H为真。 即对规则 H H H进行两次置换(先进行限定为示例的置换,再对其余变量作不限定的置换),能使其产生真值。

覆盖的表达式为
c o v e r s ( B , H , ε ) = { e ∈ ε   ∣   B ∪ H ⊨ e } \begin{align} \mathrm{covers}(B,H,\varepsilon)=\{e\in \varepsilon\,|\,B\cup H\vDash e\} \tag{15.23} \end{align} covers(B,H,ε)={eεBHe}(15.23)
注: B ∪ H B\cup H BH表示子句集之并,拼接成句子时,实际上是“且”(式(15.22))。

则完备性是指
c o v e r s ( B , H , ε + ) = ε + \begin{align} \mathrm{covers}(B,H,\varepsilon^+)=\varepsilon^+ \tag{15.24} \end{align} covers(B,H,ε+)=ε+(15.24)
一致性(相容性)是指
c o v e r s ( B , H , ε − ) = ∅ \begin{align} \mathrm{covers}(B,H,\varepsilon^-)=\varnothing \tag{15.25} \end{align} covers(B,H,ε)=(15.25)

完备性与一致性的四种组合情况,如图15.5 所示:(a)即完备又一致;(b)不完备但一致;©完备但不一致;(d)不完备也不一致。 尽量追求(a),但有时其他情况中的“不”占比很少或不关键时,也是可以接受的。
图15.5 完备性与一致性

图15.5 完备性与一致性

ILP模型的 H H H即式(15.5),将函数调整为文字即
A ← B 1 ∧ B 2 ∧ ⋯ ∧ B n \begin{align} A \leftarrow {B}_1\land {B}_2\land \cdots \land {B}_n \tag{15.26} \end{align} AB1B2Bn(15.26)
其中,左侧为规则头,是个原子公式(表示推出的结果),右侧为规则体,是有限个文字的合取。 即规则 H H H为: “若 B 1 {B}_1 B1 B 2 {B}_2 B2 ⋯ \cdots B n {B}_n Bn均成立,则 A A A也成立”(IF-THEN规则)。

寻找(搜索)可以“自下而上”泛化和“自上而下”特化两个方向考虑,同时,对获得的规则 H H H进行检查,若“太强”了(如,覆盖了些反例),则进行特化,若“太弱”了(如,一些正例未被覆盖),则进行泛化。 下面讨论两类常用技术:最小一般泛化和逆归结。

最小一般泛化

可以采用自底向上的规则生成策略:具体事实 ⇒ \Rightarrow 泛化。

泛化是具体化和实例化的反面,就是使其更一般化,从“多条具体事实(或规则)”中得到更一般化的“一条规则”,要求该规则不与这些事实矛盾或尽可能少矛盾。
这里的泛化操作有:

(a) 将规则中的常量替换为逻辑变量;

(b) 删除规则体中的某个文字。

以【西瓜书第15.5.1节的示例】来讨论。 这里重点讨论泛化操作(a),即“最小一般泛化”(LGG)技术。

(i) 先取两个一阶公式: r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2,对相同谓词的文字进行考察,如,谓词为“更好”,依图15.6 中到两条规则:

(1).规则一:同一位置,若值相同,则保持该值不变。 记为: LGG ( t , t ) = t \text{LGG}(t,t)=t LGG(t,t)=t,三个 t t t依次为 r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2 r \boldsymbol{r} r中同一位置的 t t t,如图15.6 中的1。

(2).规则二:同一位置,若值不相同,则用变量替换。 记为: LGG ( s , t ) = V \text{LGG}(s,t)=\mathit{V} LGG(s,t)=V,其中, s , t , V s,t,\mathit{V} s,t,V依次为 r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2 r \boldsymbol{r} r中同一位置的值,如图15.6 中的 10 , 15 , Y 10,15,\mathit{Y} 10,15,Y
图15.6 LGG泛化

图15.6 LGG泛化

(ii) 将得到的 LGG ( t , t ) = t \text{LGG}(t,t)=t LGG(t,t)=t LGG ( s , t ) = V \text{LGG}(s,t)=\mathit{V} LGG(s,t)=V作用于整个 r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2,如,图15.6 中 LGG ( 1 , 1 ) = 1 \text{LGG}(1,1)=1 LGG(1,1)=1 LGG ( 10 , 15 ) = Y \text{LGG}(10,15)=\mathit{Y} LGG(10,15)=Y作用于整个 r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2:即取相同谓词进行配对,再将得到的 LGG \text{LGG} LGG公式代入,示例图15.7 (谓词为“根蒂更蜷”),对其他谓词一样处理,即若满足LGG,则作替换。 于是, r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2变成了【西瓜书p.358最后一行和p.359第一行】。
在这里插入图片描述

图15.7 应用LGG示例1

(iii) 比较 r 1 \boldsymbol{r}_1 r1 r 2 \boldsymbol{r}_2 r2,谓词“声音更沉”在 r 1 \boldsymbol{r}_1 r1中有,而 r 2 \boldsymbol{r}_2 r2中没有,说明它无关紧要,使用泛化操作(b)将其删除,则两条规则变为更一般化的一条了,取它为LGG的结果为 r \boldsymbol{r} r,即【西瓜书式(15.4)】。

(iv) 再增加一条 r 3 \boldsymbol{r}_3 r3【西瓜书式(15.5)】,比较它与 r \boldsymbol{r} r的相同谓词,如,“根蒂更蜷”,如图15.8 所示。

图15.8 应用LGG示例2

图15.8 应用LGG示例2

(v) 将得到的LGG规则: LGG ( Y , 10 ) = Y 2 \text{LGG}(\mathit{Y},10)=\mathit{Y}_2 LGG(Y,10)=Y2 LGG ( 1 , 2 ) = X \text{LGG}(1,2)=\mathit{X} LGG(1,2)=X作用于 r \boldsymbol{r} r r 3 \boldsymbol{r}_3 r3,并删去谓词不同的文字,则得到不包含常量的规则,即是一条最终的LGG,将其作为单条规则加入到规则集中。

虽然增加了规则集中的规则,但后续通过优化(如后剪枝)可以大大简化,得到泛化的规则。

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:15.8 三种蕴涵(你会区分么?)
下一篇:15.10 归纳逻辑程序设计之逆归结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值