完备性与一致性有四种组合
泛化是具体化和实例化的反面,就是使其更一般化,从“多条具体事实(或规则)”中得到更一般化的“一条规则”,要求该规则不与这些事实矛盾或尽可能少矛盾。
归纳逻辑程序设计
前述引入函数和逻辑表达式嵌套,一方面提升了表达力,另一方面,由于嵌套的“无限”性和候选文字的组合爆炸,使得基于“比较”来选择文字成为不可能,必须换个思路处理。 归纳逻辑程序设计(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}
BK∧H∧x⊨e(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∈ε∣B∪H⊨e}(15.23)
注:
B
∪
H
B\cup H
B∪H表示子句集之并,拼接成句子时,实际上是“且”(式(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),但有时其他情况中的“不”占比很少或不关键时,也是可以接受的。
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}
A←B1∧B2∧⋯∧Bn(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。
(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第一行】。
(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 所示。
(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 归纳逻辑程序设计之逆归结