第六章 实例学习
  3.学习概括规则
  EBKAS的另一个重要部分是学习概括规则。在获取不同初始状态下的各种求解控制步骤后,系统以这些步骤及其相应的初始状态为例子集,进行归纳学习,从中提取出该领域中一般原理性控制知识。EBKAS的概括学习方法比文献中介绍的方法有较好的通用性。学习概括规则有下列几步。
  (1)收集例子
  为建立例子集,系统变换出不同的初始状态,经过多次解释学习,获取不同的求解步骤。先把它们存在临时学习库中,经过归纳学习后才正式放入知识库。
  例如对猴子香蕉问题,选择了有代表性的六种初始状态,由此得到由六个例子组成的例子集。
  (2)提取有用信息
  上面得到的例子集中的信息一般太笼统,不能确切反映猴子m、梯子1和香蕉b三者之间的实质性关系。因此在这一步先对它们进行分析整理,提取有用信息。有用信息包括m、1、b相互间的位置关系,b是否在天花板上,m是在地板上还是在某物体上。提取出与这些信息有关的五个特征,例子集就成为:


表格
例子 特 征 求 解 步 骤
e1
e2
e3
e4
e5
e6
b on ceiling m=l m≠b l≠b H1=floor
b on ceiling m≠l m≠b l=b H1=floor
b on ceiling m=l m≠b l=b H1=body
b on cei1ing m=l m=b l=b H1=floor
b on ceiling m≠l m≠b l≠b H1=body
b on ceiling m≠l m≠b l≠b H1=floor
carry climb grab
walk climb grab
jump walk climb grab
climb grab
jump walk carry climb grab
walk carry climb grab

  (3)归纳学习
  在这一步,对例子空间应用因果联系归纳法,根据特征与规则序列间的逻辑规律,推出一般性规则。这就是通过比较分析,找出不同初态产生不同求解步骤的关键因素。把这些因素收集起来形成规则,就可获得一般性的控制知识。
  第一步是抽取共同特征。
  定义两个函数TR和SUB。函数TR(d)表示具有d特征的所有例子的集,SUB(E)表示例子集E中各例子的公共特征的集合。
  例如在d=climb时,
  TR(climb)=(e1,e2,e3,e4,e5,e6)
  SUB(e1,e2,e3,e4,e5,e6)=(b on ceiling)
这表明,有climb特征的是全部6个例子,而且6个例子公共特征是b on ceiling。于是可得到一条一般性规则。
  R1:if(b on ceiling) then (climb)
  又如在d=carry时,
  TR(carry)=(e1,e5,e6)
  SUB(e1,e5,e6)=(m≠b,l≠b)
这表明carry规则的条件应考虑m≠b和l≠b。这一步的映射过程突出了各个关键因素,可以缩小下一步学习的搜索范围。
  第二步是比较不同部分和抽取关键特征。
  从上面抽取的共同特征出发,比较不同部分,确定在形成规则时用的关键特征。以carry规则为例,前面初步确定了carry规则的前提条件是(m≠b,l≠b)。但是这还要确认。确认方法是这些前提与不含carry的例子比较。把m≠b、l≠b放在例子e2,e3,e4中比较,发现e2、e3也含有特征m≠b,而l≠b未在e2、e3、e4中出现。于是以l≠b为carry的前提,去掉条件m≠b,得到一条一般性控制规则。
  R2:if(l≠b) then add(carry)
  类似可以得到另外两条一般性规则。
  R3:if (m≠l) then add(walk)
  R4:if(H1=body) then add(jump)
  与常量转成变量的归纳方法比较,这种方法比较安全、可靠。但是如果例子数目少,也容易出错。
  4.使用所获得的控制知识
  用上述方法学到的控制知识,是和领域规则分别存放的。在以后求解类似问题时,按下列步骤取出应用。
  (1)直接使用问题求解步骤
  在给定初始状态和目标后,先查找全局问题求解步骤的知识库,如果库中有相应的初始状态和目标,则直接使用保存的求解步骤。否则转下一步。
  (2)使用一般性控制规则
  先分析给定的初始状态,抽取有关特征。再对比一般性控制规则。如果符合条件,则选用相应的一般性控制规则。
  例如初始状态为
  ((b on ceiling at C)(l at A)(m on box at A))
则抽取出特征
  (b on ceiling,m=l,l≠b,m≠b,H1=box)
对比一般性规则,由(b on ceiling )特征选用了climb规则,由(b≠1)特征选用了carry规则,由(H1=box)特征选用了jump规则。这三条规则加上所有初始状态下都要有的grab动作,就构成所需的规则集。然后转下一步。
  (3)使用局部控制chunks
  在缩小的规则集中,可直接使用已经获取的chunks来求解问题。