第六章 实例学习

  
6.1.3 规则空间
  定义规则空间就是规定表示规则的各种算符和术语,也就是说规定的描述语言可以表示的所有规则的集合是规则空间。与规则空间有关的两个问题是对规则空间的要求和规则空间的搜索方法。因为规则空间表示方法应该支持归纳推理,所以下面先介绍几种归纳推理方法,再介绍对规则空间的要求和搜索方法。
  1. 归纳推理方法
  归纳推理是由特殊到一般的推理。规则空间表示方法应便于通过简单的操作实现归纳。下面介绍几种归纳推理方法。
  (1) 把常量化为变量
  为了学习扑克牌中同花的概念,提供两个正例如下:
例题 例1:
   SUIT(,clubs)∧SUIT(,clubs)
 ∧SUIT(,clubs)∧SUIT(,clubs)
 ∧SUIT(,clubs)FLUSH(,,,,)
例题 例2:
   SUIT(,spades)∧SUIT(,spades)
 ∧SUIT(,spades)∧SUIT(,spades)
 ∧SUIT(,spades)FLUSH(,,,,)

其中例1表示五张梅花牌是同花,例2表示有五张黑桃牌是同花,谓词FLUSH表示同花。把常量clubs和spades换成变量x(代表任何花色),就归纳出一条假设的规则。
  
规则1 SUIT(,x)∧SUIT(,x)∧SUIT(,x)∧SUIT(,x)∧SUIT(,x)
      FLUSH(,,,,)
  (2)去掉条件
  为了学习同花概念,可以提供下列正例。
例题 例3:
   SUIT(,clubs)∧RANK(C1,3)
 ∧SUIT(,clubs)∧RANK(,5)
 ∧SUIT(,clubs)∧RANK(,7)
 ∧SUIT(,clubs)∧RANK(,10)
 ∧SUIT(,clubs)∧RANK(,K)
 FLUSH(,,,,)

为了得到上述的规则1,不但要把常量clubs化为变量x,而且要去掉所有的RANK 谓词。去掉条件的归纳方法是从合取条件中去掉一个条件。如此例中去掉RANK谓词。
  (3)增加选择
  例如要程序学习"人面牌"的概念,而人面牌是一张点数为J、Q、K的牌。提供的两个正例是
例题 例4:
   RANK(,J)FACE()
例题 例5:
   RANK(,K)FACE()
 合并两个正例后等价地得到 
 RANK(,J)∨RANK(,K)FACE()
如果在析取条件中增加一种选择,就得到要求的规则。
  
规则2 RANK(,J)∨RANK(,Q)∨RAND(C1,K)FACE()
  增加选择就是在析取条件中增加一个新的析取项,如上例中的RANK(,Q)。
上述三种方法中,去掉条件就是去掉合取项,也就是去掉部分约束;增加选择就是增加析取项,也就是扩大范围。这二者是对偶的两种方法,二者都是扩大条件适用范围。方法(1)和(3)都是直接扩大范围,但方法(1)更强,归纳过快,因此更容易出错。方法(3)较弱,不易出错,但归纳较慢。例如对例4和例5使用方法(1)就会得到下列的错误。
  
规则3(错误) RANK(,x)FACE()
  这个结果说明归纳过程很容易出错。归纳推理不是保真的,是保假的。这就是说,如果前提真,则由归纳推理得到的结果不一定真;如果前提假,则由归纳推理得到的结果一定假(这里的前提是示教例子,归纳的结果是规则)。实例学习中归纳推理的非保真性是因为:少数示教例子所含的信息往往少于确定规则所需的信息。归纳过程就是从多种归纳方法中选择正确的方法,以得到正确的结果。因此归纳过程就是搜索过程。归纳中出错后就要回溯。发现错误的方法往往是选用新的例子去否定归纳出的错误规则。这正如在两个空间模型中表示的那样。
  (4)曲线拟合
  对数值问题的归纳可以用曲线(或曲面)拟合法。例如系统试图由实例归纳出输出z与输入x和y的关系。提供的每个正例是表示输入与出输出的三元组,形式为(x,y,z)。例如提供三个示才教例子。
例题 例6:
  (0,2,7)
例题 例7:
  (6,-1,10)
例题 例8:
  (-1,-5,-16)

系统用最小二乘回归法拟合出下列平面,该平面就是表示x,y,z间关系的规则。
  
规则4 z=2x+3y+1
  如果同时提供多于三个例子,也可用此方法归纳出规则。