艾伯特高级人工智能


中国科学院研究生教学丛书 第二版 高级人工智能 史忠植 科学出版社 www.aibbt.com 让未来触手可及 内容简介 人工智能是计算机科学的一个分支,是一门研究机器智能的学科,即用人工的方法和技 术,研制智能机器或智能系统来模仿、延伸和扩展人的智能,实现智能行为。 本书第二版共 16 章,首先讨论人工智能的认知问题和逻辑基础,然后论述约束推理、定 性推理、基于范例推理、概率推理。第七章至第十三章重点讨论机器学习,包括归纳学习、 支持向量机、解释学习、强化学习、粗糙集、关联规则、知识发现。第十四章阐述分布式智 能。最后两章分别讨论进化计算和人工生命。与第一版相比,增加了五章新内容。其他章节 也作了较大的修改和补充。 本书内容新颖,反映该领域的最新研究进展,特别总结了作者多年的科研成果。全书力 求从理论、算法、系统、应用讨论人工智能的方法和关键技术。本书可以作为信息领域和相 关专业的高等院校高年级学生和研究生的教材,也可以供有关科技人员学习参考。 图书在版编目(CIP)数据 高级人工智能/史忠植 -北京:科学出版社, 2006.8 责任编辑 ISBN 7-03-005984-0 北京东黄城根北街 16 号 邮政编码:100717 科学出版社出版 北京东黄城根北街 16 号 邮政编码:100717 中国科学院印刷厂印刷 新华书店北京发行所发行 各地新华书店经销 * 2006 年 8 月第 二 版 开本:787 1092 1/16 2006 年 8 月第一次印刷 印张:21 1/2 印数: 1─6000 册 字数: 582 千字 定价:38.00 元 www.aibbt.com 让未来触手可及 前 言 人工智能的长期目标是建立人类水平的人工智能。人工智能诞生 50 年来, 在崎岖不平 的道路上取得了可喜的进展,特别与机器学习、数据挖掘、计算机视觉、专家系统、自然语 言处理、规划和机器人等相关的应用带来了良好的经济效益和社会效益。广泛使用的互联网 也正在探索应用知识表示和推理,构建语义 Web, 提高互联网信息的效用率。信息化的必然 趋势是智能化,智能革命将开创人类后文明史。如果说蒸汽机创造了工业社会,那么智能机 也一定能奇迹般地创造出智能社会,实现社会生产的自动化和智能化,促进知识密集型经济 的大发展。 人工智能是计算机科学的一个分支,是一门研究机器智能的学科,即用人工的方法和技 术,研制智能机器或智能系统来模仿、延伸和扩展人的智能,实现智能行为。人工智能一般 可分为符号智能和计算智能。符号智能是传统人工智能,它以物理符号系统为基础,研究知 识表示、获取、推理过程。运用知识解决问题是当前符号智能的最基本、最重要的特点,因 此人们经常把当前的人工智能称作为知识工程阶段。知识工程侧重研究知识信息处理的方法 和技术,促进人工智能的发展。 计算智能包括神经计算、模糊系统、遗传算法、进化规划等。要实现智能革命,就要更 深入地了解人的大脑。彻底揭开人脑的奥秘,是自然科学面临的最大挑战之一。21 世纪初, 美国国家科学基金会(NSF)和美国商务部(DOC)共同资助了一个雄心勃勃的计划---“提高 人类素质的聚合技术”(Convergent Technology for Improving Human Performance),将纳 米技术、生物技术、信息技术和认知科学看作 21 世纪四大前沿技术,并将认知科学视为最优 先发展领域,主张这四大技术融合发展,并描绘了这样的科学前景:“聚合技术以认知科学为 先导,因为一旦我们能够在如何(how)、为何(why)、何处(where)、何时(when)这四个 层次上理解思维,我们就可以用纳米科技来制造它,用生物技术和生物医学来实现它,最后 用信息技术来操纵和控制它,使它工作”。这将对人类社会带来巨大影响。在欧盟的第 6 次研 究与技术发展框架最新一轮的研究经费资助中,在大脑科学研究方面投入了 4500 万欧元的资 金。在 2007 年开始执行的第 7 次发展框架中,欧洲议会还会进一步增加对大脑研究的投入。 表面看来,符号智能和神经计算是完全不同的研究方法,前者基于知识,后者基于数据; 前者采用推理,后者通过映射。1996 年,Minsky 在第四届太平洋地区人工智能国际会议的特 邀报告“Computers,Emotions and Common Sense”中认为,神经计算与符号计算可以结合起 来,神经网络是符号系统的基础。致力于混合系统研究的人们,正是从这种结合出发,提出 各种可能的设想。这与我们提出的人类思维的层次模型是吻合的。 本书自 1998 年发行以来,受到了读者广泛的欢迎, 许多院校用作教科书或教材,众多研 究人员用作参考书。在这近十年的时间里,人工智能又取得了许多重要的进展,特别在不确 定推理、机器学习、多主体系统、人工生命等方面,广大读者迫切要求出版第二版。 智能主体(intelligent agent)通过与环境交互,实现智能行为。智能主体从环境接受感 www.aibbt.com 让未来触手可及 知信息,进行协同工作,执行各种智能行为。20 世纪 90 年代以来,多主体系统成为人工智能 研究的核心之一。 人工生命是指用计算机和精密机械等生成或构造表现自然生命系统行为特点的仿真系统 或模型系统。人工生命是形成新的信息处理体系强大的推动力,并成为研究生物的一个特别 有用的工具。人工生命的研究可能将信息科学和生命科学结合起来,形成生命信息科学,成 为人工智能研究新的途径。 本书第二版在第一版基础上作了重大修订,共分 16 章。第一章是绪论,从人工智能的认 知问题出发,介绍本书撰写的指导思想,概要介绍人工智能当前研究的热点。第二章讨论人 工智能逻辑,较系统地讨论非单调逻辑和与智能主体有关的逻辑系统。第三章讨论约束推理, 介绍许多实用的约束推理方法。第四章介绍定性推理,着重讨论几种重要的定性推理方法。 多年来作者及其领导的集体一直从事基于范例推理的研究,其主要成果构成第五章。概率推 理是一种重要的不确定推理,第六章给予重点讨论。机器学习是当前人工智能研究的核心, 也是知识发现、数据挖掘等领域的重要基础,本书用 7 章的篇幅给予论述, 反映研究的最新 进展。第七章论述归纳学习。第八章介绍支持向量机。第九章讨论解释学习。第十章论述强 化学习。第十一章介绍粗糙集理论。第十二章阐述关联规则。集成的知识发现系统给出在第 十三章。近几年来分布智能取得重要进展,结合我们研究的成果,在第十四章重点讨论主体 理论和多主体系统的关键技术。在第十五章,对进化计算进行了探讨,重点讨论遗传算法。 最后一章探讨人工生命,概要介绍人工生命研究的内容和取得的进展。与上一版相比,增加 了许多新内容,包括概率推理、支持向量机、强化学习、粗糙集、关联规则等。其他章节也 在上一版的基础上作了修改,补充了许多新内容,以反映最新研究成果。本书第二版在每章 都增加了习题,以便读者加深理解课文内容。 本书是根据中国科学院研究生院(北京)计算机科学技术专业博士、硕士研究生教学的 需要,作者于 1994 年开设了高级人工智能课程。教材经不断修改和扩充,于 1998 年正式出 版, 定为普通高等教育“九五”国家级重点教材、中国科学院研究生教学丛书。本书实际上 是集体研究成果的总结,先后有 6 位博士后、40 多位博士生、90 多位硕士生参加了研究。陆 汝钤院士、戴汝为院士、李衍达院士、张 钹院士、董韫美院士、高庆狮院士、林惠敏院士、 陈霖院士、郭爱克院士、李国杰院士、何新贵院士、郑南宁院士、钟义信教授、石纯一教授、 涂序彦教授、张成奇教授、王珏研究员、何华灿教授等给予诚挚的帮助和有益的讨论,作者 愿借此机会深表谢意。 本书有关研究得到国家自然科学基金、国家重大基础研究计划、国家 863 高技术计划、 北京市自然科学基金、中国科学院知识创新工程等的资助。科学出版社对本书的出版给予了 大力支持,在此一并致谢。 史忠植 2006 年 3 月 www.aibbt.com 让未来触手可及 目 录 第一章 绪 论...................................................... 1 1.1 人工智能的渊源 ...............................................................1 1.2 人工智能的认知问题 ...........................................................3 1.3 思维的层次模型 ...............................................................4 1.4 符号智能 .....................................................................5 1.5 人工智能的研究方法 ...........................................................7 1.5.1 认知学派 .......................................................................... 7 1.5.2 逻辑学派 .......................................................................... 7 1.5.3 行为学派 .......................................................................... 8 1.6 自动推理 ....................................................................8 1.7 机器学习 ...................................................................10 1.8 分布式人工智能 .............................................................12 1.9 人工思维模型 ...............................................................14 1.10 知识系统 ..................................................................15 习题............................................................................17 第二章 人工智能逻辑.............................................. 19 2.1 概述 .......................................................................19 2.2 逻辑程序设计 ................................................................21 2.2.1 逻辑程序定义 ..................................................................... 21 2.2.2 Prolog 数据结构和递归 ............................................................ 22 2.2.3 SLD 归结 ......................................................................... 23 2.2.4 非逻辑成分:CUT .................................................................. 25 2.3 非单调逻辑 .................................................................27 2.4 封闭世界假设 ...............................................................29 2.5 默认逻辑 ...................................................................30 2.6 限制逻辑 ...................................................................35 2.7 非单调逻辑 NML..............................................................38 2.8 自认知逻辑 .................................................................40 2.8.1 Moore 系统 ℒB .................................................................... 40 2.8.2 Oℒ 逻辑 ......................................................................... 40 2.8.3 标准型定理 ....................................................................... 42 2.8.4 ◇-记号以及稳定扩张的一种判定过程 ................................................ 43 2.9 真值维护系统 ...............................................................45 2.10 情景演算的逻辑基础 ........................................................50 2.10.1 刻划情景演算的多类逻辑 .......................................................... 51 2.10.2 LR 中的基本动作理论 ............................................................. 52 www.aibbt.com 让未来触手可及 2.11 框架问题 ...................................................................53 2.11.1 框架公理 ........................................................................ 53 2.11.2 框架问题解决方案的准则 .......................................................... 54 2.11.3 框架问题的非单调解决方案 ........................................................ 56 2.12 动态描述逻辑 DDL ...........................................................60 2.12.1 描述逻辑 ........................................................................ 60 2.12.2 动态描述逻辑的语法 .............................................................. 62 2.12.3 动态描述逻辑的语义 .............................................................. 64 习题............................................................................67 第三章 约束推理.................................................. 69 3.1 概 述 ......................................................................69 3.2 回溯法 .....................................................................73 3.3 约束传播 ...................................................................74 3.4 约束传播在树搜索中的作用 ...................................................76 3.5 智能回溯与真值维护 .........................................................76 3.6 变量例示次序与赋值次序 .....................................................77 3.7 局部修正搜索法 .............................................................77 3.8 基于图的回跳法 .............................................................78 3.9 基于影响的回跳法 ...........................................................79 3.10 约束关系运算的处理 ........................................................82 3.10.1 恒等关系的单元共享策略 .......................................................... 82 3.10.2 区间传播 ........................................................................ 84 3.10.3 不等式图 ........................................................................ 84 3.10.4 不等式推理 ...................................................................... 85 3.11 约束推理系统 COPS..........................................................86 3.12 ILOG SOLVER ................................................................89 习题............................................................................94 第四章 定性推理.................................................. 95 4.1 概 述 .....................................................................95 4.2 定性推理的基本方法 ..........................................................95 4.3 定性模型推理 ................................................................96 4.4 定性进程推理 ................................................................98 4.5 定性仿真推理 ...............................................................101 4.5.1 定性状态转换 .................................................................... 102 4.5.2 QSIM 算法 ....................................................................... 102 4.6 代数方法 ...................................................................104 4.7 几何空间定性推理 ...........................................................105 4.7.1 空间逻辑 ........................................................................ 105 4.7.2 空间时间关系描述 ................................................................ 107 4.7.3 空间和时间逻辑的应用 ............................................................ 108 www.aibbt.com 让未来触手可及 4.7.4 Randell 算法 .................................................................... 109 习题...........................................................................110 第五章 基于范例的推理........................................... 111 5.1 概述 .......................................................................111 5.2 类比的形式定义 .............................................................112 5.3 过程模型 ...................................................................113 5.4 范例的表示 .................................................................115 5.4.1 语义记忆单元 .................................................................... 115 5.4.2 记忆网 .......................................................................... 116 5.5 范例的索引 .................................................................118 5.6 范例的检索 .................................................................118 5.7 相似性关系 .................................................................120 5.7.1 语义相似性 ...................................................................... 120 5.7.2 结构相似性 ...................................................................... 120 5.7.3 目标特征 ........................................................................ 121 5.7.4 个体相似性 ...................................................................... 121 5.7.5 相似性计算 ...................................................................... 122 5.8 范例的复用 .................................................................123 5.9 范例的保存 .................................................................124 5.10 基于例示的学习 ............................................................125 5.10.1 基于例示学习的任务 ............................................................. 125 5.10.2 IB1 算法 ....................................................................... 126 5.10.3 降低存储要求 ................................................................... 128 5.11 范例工程 ..................................................................130 5.12 范例约简算法 ..............................................................132 5.13 中心渔场预报专家系统 ......................................................134 5.13.1 问题分析与范例表示 ............................................................. 135 5.13.2 相似性度量 ..................................................................... 136 5.13.3 索引与检索 ..................................................................... 137 5.13.4 基于框架的修正 ................................................................. 138 5.13.5 实验结果 ....................................................................... 139 习题...........................................................................140 第六章 概率推理................................................. 141 6.1 概述 .......................................................................141 6.1.1 贝叶斯网络的发展历史 ............................................................ 141 6.1.2 贝叶斯方法的基本观点 ............................................................ 141 6.1.3 贝叶斯网络在数据挖掘中的应用 .................................................... 142 6.2 贝叶斯概率基础 .............................................................144 6.2.1 概率论基础 ...................................................................... 144 6.2.2 贝叶斯概率 ...................................................................... 146 www.aibbt.com 让未来触手可及 6.3 贝叶斯问题求解 .............................................................148 6.3.1 几种常用的先验分布选取方法 ...................................................... 149 6.3.2 计算学习机制 .................................................................... 151 6.3.3 贝叶斯问题求解步骤 .............................................................. 153 6.4 简单贝叶斯学习模型 .........................................................155 6.4.1 简单贝叶斯学习模型 .............................................................. 155 6.4.2 简单贝叶斯模型的提升 ............................................................ 157 6.4.2 提升简单贝叶斯分类的计算复杂性 .................................................. 160 6.5 贝叶斯网络的建造 ...........................................................160 6.5.1 贝叶斯网络的结构及建立方法 ...................................................... 160 6.5.2 学习贝叶斯网络的概率分布 ........................................................ 161 6.5.3 学习贝叶斯网络的网络结构 ........................................................ 163 6.6 贝叶斯潜在语义模型 .........................................................166 6.7 半监督文本挖掘算法 .........................................................170 6.7.1 网页聚类 ........................................................................ 170 6.7.2 对含有潜在类别主题词的文档的类别标注 ............................................ 171 6.7.3 基于简单贝叶斯模型学习标注和未标注样本 .......................................... 172 习题...........................................................................176 第七章 归纳学习................................................. 177 7.1 概 述 .....................................................................177 7.2 归纳学习的逻辑基础 ........................................................178 7.2.1 归纳学习的一般模式 .............................................................. 178 7.2.2 概念获取的条件 .................................................................. 179 7.2.3 问题背景知识 .................................................................... 180 7.2.4 选择型和构造型泛化规则 .......................................................... 182 7.3 偏置变换 ...................................................................184 7.4 变型空间方法 ...............................................................185 7.4.1 消除候选元素算法 ................................................................ 186 7.4.2 两种改进算法 .................................................................... 188 7.5 AQ 归纳学习算法 ............................................................189 7.6 CLS 学习算法 ...............................................................190 7.6 ID3 学习算法 ...............................................................191 7.6.1 信息论简介 ...................................................................... 191 7.6.2 信息论在决策树学习中得以以及应用 ................................................ 191 7.6.3 ID3 算法 ........................................................................ 192 7.6.4 ID3 算法应用举例 ................................................................ 193 7.6.5 连续性属性离散化 ................................................................ 195 7.7 基于偏置变换的决策树学习算法 BSDT ...........................................196 7.7.1 偏置的形式化 .................................................................... 196 7.7.2 表示偏置变换 .................................................................... 197 7.7.3 算法描述 ........................................................................ 198 7.7.4 过程偏置变换 .................................................................... 199 www.aibbt.com 让未来触手可及 7.7.5 基于偏置变换的决策树学习算法 BSDT ............................................... 202 7.7.6 经典范例库维护算法 TCBM ......................................................... 202 7.7.7 偏置特征抽取算法 ................................................................ 203 7.7.8 改进的决策树生成算法 GSD ........................................................ 204 7.7.9 实验结果 ........................................................................ 205 7.8 归纳学习的计算理论 ........................................................207 7.8.1 Gold 学习理论 ................................................................... 207 7.8.2 模型推理系统 .................................................................... 208 7.8.3 Valiant 学习理论 ................................................................ 209 习题...........................................................................210 第八章 支持向量机............................................... 212 8.1 统计学习问题 ...............................................................212 8.1.1 经验风险 ........................................................................ 212 8.1.2 VC 维 ........................................................................... 212 8.2 学习过程的一致性 ...........................................................213 8.2.1 学习一致性的经典定义 ............................................................ 213 8.2.2 学习理论的重要定理 .............................................................. 213 8.2.3 VC 熵 ........................................................................... 214 8.3 结构风险最小归纳原理 .......................................................215 8.4 支持向量机 .................................................................218 8.4.1 线性可分 ........................................................................ 218 8.4.2 线性不可分 ...................................................................... 220 8.5 核函数 .....................................................................222 8.5.1 多项式核函数 .................................................................... 222 8.5.2 径向基函数 ...................................................................... 222 8.5.3 多层感知机 ...................................................................... 223 8.5.4 动态核函数 ...................................................................... 223 8.6 基于分类超曲面的海量数据分类方法 ...........................................225 8.6.2 SVM 直接方法基本思想 ............................................................ 226 8.6.3 实现算法 ........................................................................ 227 8.6.4 实验结果分析 .................................................................... 228 习题...........................................................................231 第九章 解释学习................................................. 233 9.1 概述 ......................................................................233 9.2 解释学习模型 ..............................................................234 9.3 解释泛化学习方法 ..........................................................235 9.3.1 基本原理 ........................................................................ 235 9.3.2 解释与泛化交替进行 .............................................................. 237 9.4 全局取代解释泛化方法 ......................................................238 9.5 解释特化学习方法 ..........................................................241 www.aibbt.com 让未来触手可及 9.6 解释泛化的逻辑程序 ........................................................243 9.6.1 工作原理 ........................................................................ 243 9.6.2 元解释器 ........................................................................ 244 9.6.3 实验例子 ........................................................................ 245 9.7 基于知识块的 SOAR 系统 .....................................................246 9.8 可操作性标准 ..............................................................249 9.8.1 PRODIGY 的效用问题 .............................................................. 250 9.8.2 SOAR 系统的可操作性 ............................................................. 251 9.8.3 MRS-EBG 的可操作性 .............................................................. 251 9.8.4 META-LEX 的处理方法 ............................................................. 252 9.9 不完全领域知识下的解释学习 ................................................252 9.9.1 不完全领域知识 .................................................................. 252 9.9.2 逆归结方法 ...................................................................... 252 9.9.3 基于深层知识方法 ................................................................ 254 习题...........................................................................255 第十章 强化学习................................................. 256 10.1 概 述 ....................................................................256 10.2 强化学习模型 ..............................................................257 10.3 动态规划 ..................................................................260 10.4 蒙特卡罗方法 ..............................................................260 10.5 时序差分学习 ..............................................................262 10.6 Q 学习 ....................................................................264 10.7 强化学习中的函数估计 ......................................................266 10.8 强化学习的应用 ............................................................267 习题...........................................................................269 第十一章 粗糙集................................................. 271 11.1 概 述 ...................................................................271 11.1.1 知识的分类观点 ................................................................. 272 11.1.2 新型的隶属关系 ................................................................. 273 11.1.3 概念的边界观点 ................................................................. 274 11.2 知识的约简 ...............................................................274 11.2.1 一般约简 ....................................................................... 274 11.2.2 相对约简 ....................................................................... 275 11.2.3 知识的依赖性 ................................................................... 276 11.3 决策逻辑 .................................................................276 11.3.1 决策表的公式化定义 ............................................................ 276 11.3.2 决策逻辑语言 .................................................................. 277 11.3.3 决策逻辑语言的语义 ............................................................ 278 11.3.4 决策逻辑的推演 ................................................................ 279 11.3.5 规范表达形式 .................................................................. 280 www.aibbt.com 让未来触手可及 11.3.6 决策规则和决策算法 ............................................................ 280 11.3.7 决策规则中的一致性和不分明性 .................................................. 281 11.4 决策表的约简 .............................................................281 11.4.1 属性的依赖性 ................................................................... 281 11.4.2 一致决策表的约简 ............................................................... 281 11.4.3 非一致决策表的约简 ............................................................. 286 11.5 粗糙集的扩展模型 .........................................................290 11.6 粗糙集的实验系统 .........................................................292 11.7 粒度计算 .................................................................294 11.7 粗糙集的展望 .............................................................294 习题...........................................................................295 第十二章 关联规则............................................... 296 12.1 关联规则挖掘概述 ..........................................................296 12.1.1 关联规则的意义和度量 ........................................................... 296 12.1.2 经典的挖掘算法 ................................................................. 298 12.2 广义模糊关联规则的挖掘 ....................................................300 12.3 挖掘关联规则的数组方法 ....................................................303 12.4 任意多表间关联规则的并行挖掘 ..............................................304 12.4.1 问题的形式描述 ................................................................. 304 12.4.2 单表内大项集的并行计算 ......................................................... 305 12.4.3 任意多表间大项集的生成 ......................................................... 306 12.4.4 跨表间关联规则的提取 ........................................................... 307 12.5 基于分布式系统的关联规则挖掘算法 ..........................................308 12.5.1 候选集的生成 ................................................................... 309 12.5.2 候选数据集的本地剪枝 ........................................................... 310 12.5.3 候选数据集的全局剪枝 ........................................................... 312 12.5.4 合计数轮流检测 ................................................................. 314 12.5.5 分布式挖掘关联规则的算法 ....................................................... 314 12.6 词性标注规则的挖掘算法与应用 ..............................................317 12.6.1 汉语词性标注 ................................................................... 317 12.6.2 问题的描述 ..................................................................... 318 12.6.3 挖掘算法 ....................................................................... 319 12.6.4 试验结果 ....................................................................... 321 习题...........................................................................322 第十三章 知识发现................................................ 324 13.1 概述......................................................................324 13.2 知识发现的任务 ............................................................326 13.2.1 数据总结 ....................................................................... 326 13.2.2 概念描述 ....................................................................... 327 13.2.3 分类 ........................................................................... 327 www.aibbt.com 让未来触手可及 13.2.4 聚类 ........................................................................... 327 13.2.5 相关性分析 ..................................................................... 328 13.2.6 偏差分析 ....................................................................... 328 13.2.7 建模 ........................................................................... 328 13.3 知识发现工具 ..............................................................329 13.4 MSMINER 的体系结构 .........................................................331 13.4.1 数据挖掘模型 ................................................................... 331 13.4.2 系统功能 ....................................................................... 333 13.4.3 体系结构 ....................................................................... 333 13. 5 元数据管理 ...............................................................334 13.4.1 MSMiner 元数据的内容 ........................................................... 334 13.4.2 MSMiner 元数据库 ............................................................... 335 13.4.3 MSMiner 元数据对象模型 ......................................................... 336 13.6 数据仓库 ..................................................................339 13.6.1 数据仓库含义 ................................................................... 339 13.6.2 MSMiner 数据仓库的基本结构 ..................................................... 340 13.6.3 主题 ........................................................................... 342 13.6.4 数据抽取和集成 ................................................................. 342 13.6.5 数据抽取和集成的元数据 ......................................................... 345 13.6.6 数据仓库建模及 OLAP 的实现 ...................................................... 347 13.7 算法库管理 ................................................................351 13.7.1 数据挖掘算法的元数据 .......................................................... 3511 13.7.2 可扩展性的实现 ................................................................. 352 13.7.3 采掘算法的接口规范 ............................................................. 353 习题...........................................................................355 第十四章 分布智能............................................... 356 14.1 概述 .....................................................................356 14.2 分布式问题求解 ...........................................................357 14.2.1 分布式问题求解系统分类 ......................................................... 358 14.2.2 分布式问题求解过程 ............................................................. 358 14.3 主体基础 .................................................................360 14.4 主体理论 .................................................................361 14.4.1 理性主体 ....................................................................... 361 14.4.2 BDI 主体模型 ................................................................... 361 14.4 主体结构 .................................................................362 14.4.1 主体基本结构 ................................................................... 362 14.4.2 慎思主体 ....................................................................... 363 14.4.3 反应主体 ....................................................................... 366 14.4.4 混合结构 ....................................................................... 368 14.4.5 INTERRAP ....................................................................... 369 14.4.6 MAPE 主体结构 .................................................................. 370 14.5 主体通信语言 ACL..........................................................380 www.aibbt.com 让未来触手可及 14.5.1 主体间通信概述 ................................................................. 381 14.5.2 FIPA ACL 消息 .................................................................. 382 14.5.3 交互协议 ....................................................................... 386 14.5.4 ACL 语义学的形式化基础 ......................................................... 387 14.6 协调和协作 ...............................................................389 14.6.1 引言 ........................................................................... 389 14.6.2 合同网 ......................................................................... 391 14.6.3 部分全局规划 ................................................................... 393 14.6.4 基于约束传播的规划 ............................................................. 395 14.6.5 基于生态学的协作 ............................................................... 403 14.6.6 基于对策论的协商 ............................................................... 404 14.6.7 基于意图的协商 ................................................................. 405 14.7 移动主体 .................................................................405 14.8 多主体环境 MAGE...........................................................407 14.8.1 MAGE 系统框架结构 .............................................................. 407 14.8.2 主体统一建模语言 AUML ........................................................... 408 14.8.3 可视化主体开发环境 VAStudio ..................................................... 408 14.8.4 MAGE 运行平台 .................................................................. 409 习题...........................................................................410 第十五章 进化计算................................................ 412 15.1 概述 .....................................................................412 15.2 进化系统理论的形式模型 ...................................................413 15.3 达尔文进化算法 ...........................................................415 15.4 分类器系统 ...............................................................416 15.5 桶链算法 .................................................................420 15.6 遗传算法 .................................................................421 15.6.1 遗传算法的主要步骤 ............................................................. 422 15.6.2 表示模式 ....................................................................... 423 15.6.3 杂交操作 ....................................................................... 424 15.6.4 变异操作 ....................................................................... 426 15.6.5 反转操作 ....................................................................... 426 15.7 并行遗传算法 .............................................................426 15.8 分类器系统 BOOLE ..........................................................427 15.9 规则发现系统 .............................................................430 15.10 进化策略 ................................................................433 15.11 进化规划 ................................................................433 习题...........................................................................433 第十六章 人工生命................................................ 435 16.1 引言 ......................................................................435 16.2 人工生命的探索 ............................................................438 www.aibbt.com 让未来触手可及 16.3 人工生命模型 ..............................................................439 16.4 人工生命的研究方法 ........................................................441 16.5 细胞自动机 ................................................................444 16.6 形态形成理论 ..............................................................446 16.7 混沌理论 ..................................................................447 16.8 人工生命的实验系统 ........................................................448 16.8.1 Tierra 数字生命进化模型 ........................................................ 448 16.8.2 Avida .......................................................................... 449 16.8.3 Terrarium 生物饲养生态系统 ..................................................... 450 16.8.4 人工鱼 ......................................................................... 451 16.8.5 AutoLife    .................................................................. 451 习题...........................................................................452 参考文献......................................................... 454 www.aibbt.com 让未来触手可及 1 第 1 章 绪 论 1.1 人工智能的渊源 人工智能(Artificial Intelligence)主要研究用人工的方法和技术,模仿、延伸和扩展 人的智能,实现机器智能。2005 年, McCarthy 指出人工智能的长期目标是实现人类水平的人 工智能 [McCarthy 2005] 产业革命解放了人的体力劳动,使用机器可以完成蘩重的体力工作,极大地促进了人类 社会的进步和经济的发展。在人类历史发展的过程中,自然会提出如何用机器放大人的脑力 劳动。制造和使用仿人的智能机器是人们长期以来的愿望。 我国曾经发明了不少智能工具和机器。例如,算盘是应用广泛的古典计算机;水运仪象 台是天文观测与星象分析仪器;候风地动仪是测报与显示地震的仪器。我们祖先提出的阴阳 学说蕴涵着丰富的哲理,对现代逻辑的发展有重大影响。 在国外,Aristotle (公元前 384—322) 在《工具论》的著作中提出形式逻辑。Bacon (1561—1626)在《新工具》中提出归纳法。Leibnitz (1646—1716) 研制了四则计算器,提 出了“通用符号”和“推理计算”的概念,使形式逻辑符号化,可以说是“机器思维”研究 的萌芽。 19 世纪以来,数理逻辑、自动机理论、控制论、信息论、仿生学、计算机、心理学等科 学技术的进展,为人工智能的诞生,准备了思想、理论和物质基础。Boole (1815—1864)创 立了布尔代数,他在《思维法则》一书中,首次用符号语言描述了思维活动的基本推理法则。 Godel(1906—1978) 提出了不完备性定理。Turing (1912—1954) 提出了理想计算机模型─ ─图灵机,创立了自动机理论。1943 年,McClloch 和 Pitts 提出了 MP 神经网络模型,开创 了人工神经网络的研究。1946 年, Manochly 和 Eckert 研制成功 ENIAC 电子数字计算机。1948 年, Wiener 创立了控制论,Shannon 创立了信息论。 现实世界中,相当多的问题求解是复杂的,常常没有算法可遵循,或者即使有计算方法, 也是 NP 问题。人们可以采用启发式知识进行求解,把复杂的问题大大简化,可在浩瀚的搜索 空间中迅速找到解答。这是运用专门领域的经验知识,经常会取得有关问题的满意解,但不 是数学上的最优解。这种处理问题的方法具有显著的特色,导致人工智能的诞生。1956 年由 McCarthy、Minsky 等发起,美国的几位心理学家、数学家、计算机科学家、信息论学家在 Dartmouth 大学举办夏季讨论会,正式提出人工智能的术语,开始了具有真正意义的人工智能 的研究。经过三十多年的研究和发展, 人工智能取得了很大的进展。许多人工智能专家系统 研制成功, 并投入使用。自然语言理解、机器翻译、模式识别、机器人、图像处理等方面, 取 得了不少研究成果。其应用渗透到许多领域,促进它们的发展。 在 20 世纪 50 年代,人工智能以博弈、游戏为对象进行研究。1956 年,Samuel 研制成功 www.aibbt.com 让未来触手可及 2 具有自学习能力的启发式博弈程序。同年,Newell、Simon 等研制了启发式程序 Logic Theorist, 证明了《数学原理》书中 38 条定理,开创了利用计算机研究思维活动规律的工作。Chomsky 提出了语言文法,开创了形式语言的研究。1958 年 McCarthy 建立了人工智能程序设计语言 LISP,不仅可以处理数值,而且可以更方便地处理符号,为人工智能研究提供了重要工具。 20 世纪 60 年代前期,人工智能以搜索算法、通用问题求解(GPS)的研究为主。1963 年, Newell 发表了问题求解程序,使启发式程序有更大的普适性。1961 年,Minsky 发表题为“走 向人工智能的步骤”的论文,推动了人工智能的发展。1965 年 Feigenbaum 研制成功了 DENDRAL 化学专家系统,使人工智能的研究从着重算法转向知识表示的研究,也是人工智能研究走向 实用化的标志。1965 年,Robinson 提出了归结原理。1968 年 Quillian 提出了语义网络的知 识表示方法。1969 年,国际人工智能联合会(IJCAI)成立。从 1969 年起,每两年召开一次国 际人工智能学术会议,由 IJCAI 主办的人工智能学报“Artificial Intelligence”于 1970 年创刊。 20 世纪 70 年代前期,人工智能研究以自然语言理解、知识表示为主。1972 年,Winograd 发表了自然语言理解系统 SHRDLU。法国马赛大学的 Colmerauer 创建了 PROLOG 语言。1973 年, Schank 提出了概念从属理论。1974 年,Minsky 提出了重要的框架知识表示法。1977 年, Feigenbaum 在第五届国际人工智能会议上提出了知识工程。他认为,知识工程是人工智能的 原理和方法,对那些需要专家知识才能解决的应用难题提供求解的手段。恰当运用专家知识 的获取、表示和推理过程的构成与解释,是设计基于知识系统的重要技术问题。 20 世纪 80 年代,人工智能蓬勃发展。专家系统开始广泛应用,出现了专家系统开发工具, 开始兴起人工智能产业。特别是 1982 年,日本政府正式宣布投资开发第五代计算机,极大地 推动了人工智能的发展。许多国家制订相应的计划,进行人工智能和智能计算机系统的研究。 我国也将智能计算机系统的研究列入国家 863 高技术计划。 五十年来, 人工智能的研究取得了一定的进展, 提出了启发式搜索策略、非单调推理、 机器学习的方法等。人工智能应用, 特别是专家系统、智能决策、智能机器人、自然语言理 解等方面的成就促进了人工智能的研究。当前, 以知识信息处理为中心的知识工程是人工智 能的显著标志。 人工智能的研究与其它事物发展一样,出现过曲折。从一开始, 人工智能的工作者因过 分地乐观而受人指责。20 世纪 60 年代初,人工智能的创始人 Simon 等就乐观地预言: (1) 十年内数字计算机将是世界象棋冠军。 (2) 十年内计算机将证明一个未发现的重要的数学定理。 (3) 十年内数字计算机将谱写具有相当美学价值的而为批评家所认可的乐曲。 (4) 十年内大多数心理学理论将采用计算机程序的形式。 这些预言至今还未完全实现。甚至连一个 3 岁的小孩也能轻而易举地从一幅图画中辨别出一 棵树来, 而功能最强大的超级计算机也只能在小孩认树方面达到中等水平。对小孩故事的理 解还非常困难。 www.aibbt.com 让未来触手可及 3 人工智能尚缺乏必要的理论。在一些关键技术方面, 诸如机器学习、非单调推理、常识 性知识表示、不确定推理等尚未取得突破性的进展。人工智能对全局性判断模糊信息处理、 多粒度视觉信息的处理是极为困难的。 总的来看, 人工智能还处于智能学科研究的早期阶段, 必须开展智能科学的研究。 智能 科学研究智能的基本理论和实现技术,是由脑科学、认知科学、人工智能等学科构成的交叉 学科。脑科学从分子水平、细胞水平、行为水平研究人脑智能机理,建立脑模型,揭示人脑 的本质。认知科学是研究人类感知、学习、记忆、思维、意识等人脑心智活动过程的科学。 人工智能研究用人工的方法和技术,模仿、延伸和扩展人的智能, 实现机器智能。三门学科 共同研究,探索智能科学的新概念、新理论、新方法,必将在21 世纪共创辉煌[史忠植 2006]。 1.2 人工智能的认知问题 一般认为,认知(cognition)是和情感、动机、意志等相对的理智或认识过程。美国心理 学家 Houston 等人将对“认知”的看法归纳为如下五种主要类型: (1) 认知是信息的处理过程; (2) 认知是心理上的符号运算; (3) 认知是问题求解; (4) 认知是思维; (5) 认知是一组相关的活动,如知觉、记忆、思维、判断、推理、问题求解、学习、想 象、概念形成、语言使用等。 认知心理学家 Dodd 等则认为,认知应包括三个方面,即适应、结构和过程。也就是说, 认知是为了一定的目的,在一定的心理结构中进行的信息加工过程。 认知科学是研究人类感知和思维信息处理过程的科学, 包括从感觉的输入到复杂问题 求解, 从人类个体到人类社会的智能活动, 以及人类智能和机器智能的性质[史忠植 1990]。认知科学是现代心理学、信息科学、神经科学、数学、科学语言学、人类学乃至自然 哲学等学科交叉发展的结果。它是人工智能重要的理论基础。 认知科学的兴起和发展标志着对以人类为中心的认知和智能活动的研究已进入到新的阶 段。认知科学的研究将使人类自我了解和自我控制, 把人的知识和智能提高到空前未有的高 度。它的研究将为智能革命、知识革命和信息革命建立理论基础, 为智能计算机系统的研制 提供新概念、新思想、新途径。 受到纽威尔和西蒙早期研究工作的推动, 认知科学的研究在 50 年代末期就出现了[司马 贺 1986]。认知科学家的研究成果提供了较好的模型以代替行为主义学说关于人的简化模 型。认知科学研究的目的就是要说明和解释人在完成认知活动时是如何进行信息加工的。认 知科学涉及的问题非常广泛, 包括知觉、语言、学习、记忆、思维、问题求解、创造、注意, 以及环境、社会文化背景对认知的影响。 www.aibbt.com 让未来触手可及 4 1991 年,有代表性的杂志“Artificial Intelligence”第 47 卷发表了人工智能基础专 辑,指出了人工智能研究的趋势。Kirsh 在专辑中提出了人工智能的五个基本问题[Kirsh 1991]: (1) 知识与概念化是否是人工智能的核心? (2) 认知能力能否与载体分开来研究? (3) 认知的轨迹是否可用类自然语言来描述? (4) 学习能力能否与认知分开来研究? (5) 所有的认知是否有一种统一的结构? 这些问题都是与人工智能有关的认知问题, 必须从认知科学的基础理论进行探讨。这些 问题都涉及人工智能的关键, 因此成为不同学派的分水岭。各个学派对上述问题都有不同的 答案。 1.3 思维的层次模型 思维是客观现实的反映过程,是具有意识的人脑对于客观现实的本质属性、内部规律性 的自觉的、间接的和概括的反映。由于科学的发展和对思维研究的结果,当代已进入一个注 重自知的阶段,强调自我认识。1984 年,钱学森教授倡导开展思维科学(Noetic Science)的 研究[钱学森 1986]。 人类思维的形态主要有感知思维、形象思维、抽象思维和灵感思维。感知思维是一种初 级的思维形态。在人们开始认识世界时,只是把感性材料组织起来, 使之构成有条理的知识, 所能认识到的仅是现象。在此基础上形成的思维形态即是感知思维。人们在实践过程中,通过 眼、耳、鼻、舌、身等感官直接接触客观外界而获得的各种事物的表面现象的初步认识, 它 的来源和内容都是客观的、丰富的。 形象思维主要是用典型化的方法进行概括,并用形象材料来思维,是一切高等生物所共 有的。形象思维是与神经机制的连接论相适应的。模式识别、图像处理、视觉信息加工都属 于这个范畴。 抽象思维是一种基于抽象概念的思维形式,通过符号信息处理进行思维。只有语言的出 现,抽象思维才成为可能,语言和思维互相促进,互相推动。可以认为物理符号系统是抽象 思维的基础。 对灵感思维至今研究甚少。有人认为, 灵感思维是形象思维扩大到潜意识,人脑有一部分 对信息进行加工, 但是人并没有意识到。也有人认为, 灵感思维是顿悟。灵感思维在创造性 思维中起重要作用, 有待进行深入研究。 人的思维过程中,注意发挥重要作用。注意使思维活动有一定的方向和集中,保证人能 够及时地反映客观事物及其变化,使人能够更好地适应周围环境。注意限制了可以同时进行 思考的数目。因此在有意识的活动中,大脑更多地表现为串行的。而看和听是并行的。 根据上述讨论,作者提出人类思维的层次模型(参见图 1.1)[史忠植 1990;Shi 1992; Shi 1994]。图中感知思维是极简单的思维形态,它通过人的眼、耳、鼻、舌、身感知器官产生表 象,形成初级的思维。形象思维以神经网络的连接论为理论基础,可以高度并行处理。抽象 思维以物理符号系统为理论基础,用语言表述抽象的概念。由于注意的作用,使其处理基本 www.aibbt.com 让未来触手可及 5 上是串行的。 思维模型就是要研究这三种思维形式的相互关系, 以及它们之间的相互转换的微观 过程。人们可以用神经网络的稳定吸引子来表示联想记忆、图像识别的问题。但是要解决从 形象思维到逻辑思维的过渡的微过程, 还需要作长期的进一步研究。 抽象思维 形象思维 感知思维 外界信号 图 1.1 思维的层次模型 1.4 符号智能 智能是什么? 智能是个体有目的的行为、合理的思维, 以及有效的适应环境的综合性能 力。通俗地说, 智能是个体认识客观事物和运用知识解决问题的能力。人类个体的智能是一 种综合性能力, 具体讲, 可以包括感知与认识客观事物、客观世界与自我的能力; 通过学习 取得经验、积累知识的能力; 理解知识、运用知识和运用经验分析问题和解决问题的能力; 联 想、推理、判断、决策的能力;运用语言进行抽象、概括的能力; 发现、发明、创造、创新的 能力;实时地、迅速地、合理地应付复杂环境的能力;预测、洞察事物发展变化的能力等。人 生活在社会中, 其智能与社会环境有密切的关系。随着人类社会的不断进步, 智能的概念也 不断发展。 人工智能(Artificial Intelligence)是相对人的自然智能而言,即用人工的方法和技术, 模仿、延伸和扩展人的智能, 实现某些``机器思维"。作为一门学科,人工智能研究智能行 为的计算模型,研制具有感知、推理、学习、联想、决策等思维活动的计算系统,解决需要 人类专家才能处理的复杂问题。 长期来,人们从人脑思维的不同层次对人工智能进行研究,形成了符号主义、连接主义 和行为主义。传统人工智能是符号主义,它以 Newell 和 Simon 提出的物理符号系统假设为基 础。物理符号系统假设认为物理符号系统是智能行为充分和必要的条件。物理符号系统由一 组符号实体组成,它们都是物理模式,可在符号结构的实体中作为组分出现。该系统可以进 行建立、修改、复制、删除等操作,以生成其它符号结构。 连接主义研究非程序的、适应性的、大脑风格的信息处理的本质和能力。人们也称它为 抽象处理单元 形象处理单元 1 形象处理单元 2 形象处理单元 n 感知处理单元 1 感知处理单元 2 感知处理单元 n www.aibbt.com 让未来触手可及 6 神经计算。由于它近年来的迅速发展,大量的神经网络的机理、模型、 算法不断地涌现出来。 神经网络主体是一种开放式的神经网络环境,提供典型的、具有实用价值的神经网络模型。 系统采用开放方式,使得新的网络模型可以比较方便地进入系统中, 利用系统提供良好的用 户界面和各种工具,对网络算法进行调试修改。另外, 对已有的网络模型的改善也较为简单, 为新的算法的实现提供了良好的环境。 神经计算从脑的神经系统结构出发来研究脑的功能,研究大量简单的神经元的集团信息 处理能力及其动态行为。其研究重点侧重于模拟和实现人的认识过程中的感知觉过程、形象 思维、分布式记忆和自学习自组织过程。特别是对并行搜索、联想记忆,时空数据统计描述 的自组织以及一些相互关联的活动中自动获取知识,更显示出了其独特的能力,并普遍认为 神经网络适合于低层次的模式处理。 神经网络的基本特点集中表现在:①以分布式方式存储信息。②以并行方式处理信息。 ③具有自组织、自学习能力[史忠植 1993b]。正是这些特点,使神经网络为人们在利用机器 加工处理信息方面提供了一种全新的方法和途径。当然, 随着人工神经网络应用的深入,人 们也发现原有的模型和算法所存在的问题,在理论的深入也碰到很多原来非线性理论、逼近 论中的难点。可是我们相信,在深入、广泛应用的基础上,这个领域将会继续发展,并会对 科学技术有很大的促进作用。我们提出的神经场理论是一种新的尝试。 目前,符号处理系统和神经网络模型的结合是一个重要的研究方向。模糊神经网络就是 将模糊逻辑、神经网络等结合在一起,在理论、方法和应用上发挥各自的优势,设计出具有 一定学习能力、动态获取知识能力的系统。 Brooks 提出了无需知识表示的智能[Brooks 1991a],无需推理的智能[Brooks 1991b]。 他认为智能只是在与环境的交互作用中表现出来,在许多方面是行为心理学观点在现代人工 智能中的反映,人们称为基于行为的人工智能,简言之,称为行为主义。 这三种研究从不同侧面研究人的自然智能,与人脑思维模型有其对应关系。粗略地划分, 可以认为符号主义研究抽象思维,连接主义研究形象思维,而行为主义研究感知思维。表 1.1 给出了符号主义、连接主义和行为主义特点的比较。 表 1.1 符号主义、连接主义和行为主义特点的比较 符号主义 连接主义 行为主义 认识层次 离散 连续 连续 表示层次 符号 连接 行动 求解层次 自顶向下 由底向上 由底向上 处理层次 串行 并行 并行 操作层次 推理 映射 交互 体系层次 局部 分布 分布 基础层次 逻辑 模拟 直觉判断 有人把人工智能形成两大类:一类是符号智能,一类是计算智能。符号智能是以知识为 基础,通过推理进行问题求解。也即所谓的传统人工智能。计算智能是以数据为基础,通过 训练建立联系,进行问题求解。人工神经网络、遗传算法、模糊系统、进化程序设计、人工 生命等都可以包括在计算智能。 www.aibbt.com 让未来触手可及 7 目前,传统人工智能主要运用知识进行问题求解。从实用观点看,人工智能是一门知识 工程学:以知识为对象,研究知识的表示方法、知识的运用和知识获取。本书主要介绍和讨 论传统人工智能的内容。有关计算智能的内容请参阅史忠植的《神经计算》等书。 1.5 人工智能的研究方法 从 20 世纪 50 年代以来,人工智能经过发展,形成了许多学派。不同学派的研究方法、 学术观点、研究重点有所不同。这里,仅以认知学派、逻辑学派、行为学派为重点,介绍人 工智能的研究方法。 1.5.1 认知学派 以 Simon, Minsky 和 Newell 等为代表,从人的思维活动出发,利用计算机进行宏观功能 模拟。20 世纪 50 年代,Newell 和 Simon 等共同倡导“启发式程式”。他们编制了称为“Logic Theorist”的计算机程序,模拟人证明数学定理的思维过程。60 年代初,他们又研制了“通 用问题求解程序(General Problem Solver”,简称 GPS, 分三个阶段模拟了人在解题过程中的 一般思维规律:首先拟订初步解题计划;然后利用公理、定理和规则,按规划实施解题过程; 不断进行“目的 — 手段”分析,修订解题规划;从而使 GPS 具有一定的通用性。 1976 年 Newell 和 Simon 提出了物理符号系统假设,认为物理系统表现智能行为必要和 充分的条件是它是一个物理符号系统。这样,可以把任何信息加工系统看成是一个具体的物 理系统,如人的神经系统、计算机的构造系统等。所谓符号就是模式。任何一个模式,只要 它能和其它模式相区别,它就是一个符号。不同的英文字母就是不同的符号。对符号进行操 作就是对符号进行比较,即找出哪几个是相同的符号,哪几个是不同的符号。物理符号系统 的基本任务和功能是辨认相同的符号和区分不同的符号。 20 世纪 80 年代 Newell 等又致力于 SOAR 系统的研究。SOAR 系统是以知识块(Chunking) 理论为基础,利用基于规则的记忆,获取搜索控制知识和操作符,实现通用问题求解。 Minsky 从心理学的研究出发,认为人们在他们日常的认识活动中,使用了大批从以前的 经验中获取并经过整理的知识。该知识是以一种类似框架的结构记存在人脑中。因此,在 20 世纪 70 年代他提出了框架知识表示方法。到 20 世纪 80 年代,Minsky 认为人的智能,根本不 存在统一的理论。1985 年,他发表了一本著名的书《Society of Mind(思维社会)》。书中指 出思维社会是由大量具有某种思维能力的单元组成的复杂社会。 1.5.2 逻辑学派 逻辑学派是以 McCarthy 和 Nilsson 等为代表,主张用逻辑来研究人工智能,即用形式化 的方法描述客观世界。他们认为: www.aibbt.com 让未来触手可及 8 (1) 智能机器必须有关于自身环境的知识。 (2) 通用智能机器要能陈述性地表达关于自身环境的大部分知识。 (3) 通用智能机器表示陈述性知识的语言至少要有一阶逻辑的表达能力。 逻辑学派在人工智能研究中,强调的是概念化知识表示、模型论语义、演绎推理等。 McCarthy 主张任何事物都可以用统一的逻辑框架来表示,在常识推理中以非单调逻辑为中心。 1.5.3 行为学派 人工智能的研究大部分是建立在一些经过抽象的、过份简单的现实世界模型之上,Brooks 认为应走出这种抽象模型的象牙塔,而以复杂的现实世界为背景,让人工智能理论、技术先 经受解决实际问题的考验,并在这种考验中成长。 Brooks 提出了无需知识表示的智能(Brooks 1991a),无需推理的智能(Brooks 1991b)。 他认为智能只是在与环境的交互作用中表现出来,其基本观点: (1) 到现场去; (2) 物理实现; (3) 初级智能; (4) 行为产生智能。 以这些观点为基础,Brooks 研制了一种机器虫,用一些相对独立的功能单元,分别实现 避让、前进、平衡等功能,组成分层异步分布式网络,取得了一定程度的成功,特别对机器 人的研究开创了一种新的方法。 不同的人工智能学派,对基本的认知问题给以不同的回答。以 Nilsson 为代表的逻辑学派, 对认知问题的(1)─(4)给予肯定的回答,对(5)持中立观点。以 Newell 为代表的认知学派, 对认知问题的(1)、(3)、(5)给予肯定的回答。而以 Brooks 为代表的行为学派,对认知问题 (1)─(5)均持否定的看法。 1.6 自动推理 从一个或几个已知的判断(前提)逻辑地推论出一个新的判断(结论)的思维形式称为推理, 这是事物的客观联系在意识中的反映。人解决问题就是利用以往的知识, 通过推理得出结 论。自动推理的理论和技术是程序推导、程序正确性证明、专家系统、智能机器人等研究领 域的重要基础。 自动推理早期的工作主要集中在机器定理证明。开创性的工作是 Simon 和 Newell 的 Logic Theorist。1956 年 Robinson 提出归结原理, 把自动推理的研究向前推进了一步。归结 法推理规则简单, 而且在逻辑上是完备的, 因而成为逻辑式程序设计语言 Prolog 的计算模 型。后来又出现了自然演绎法和等式重写式等。这些方法在某些方面优于归结法, 但它们本 www.aibbt.com 让未来触手可及 9 质上都存在组合问题, 都受到难解性的制约。 从任何一个实用系统来说, 总存在着很多非演绎的部分, 因而导致了各种各样推理算 法的兴起, 并削弱了企图为人工智能寻找一个统一的基本原理的观念。从实际的观点来看, 每一种推理算法都遵循其特殊的、与领域相关的策略, 并倾向于使用不同的知识表示技术。 从另一方面来说,如果能找到一个统一的推理理论, 当然是很有用的。人工智能理论研究的一 个很强的推动力就是要设法寻找更为一般的、统一的推理算法。 人工智能自动推理研究的成果之一是非单调逻辑的发明。这是一种伪演绎系统。所谓非 单调推理, 指的是一个正确的公理加到理论中, 反而会使预先所得到的一些结论变得无效 了。非单调推理明显地比单调推理复杂。非单调推理过程就是建立假设, 进行标准逻辑意义 下的推理, 若发现不一致, 进行回溯, 以便消除不一致, 再建立新的假设。 1978 年 Reiter 首先提出了非单调推理方法封闭世界假设(CWA)[Reiter 1978], 并提出 默认推理[Reiter 1980]。1979 年 Doyle 建立了非单调推理系统 TMS[Doyle 1979]。1980 年 McCarthy 提出限定逻辑[McCarthy 1980]。限定某个谓词 p 就是排除了以 p 的原有事实所建的 大部分模型, 而只剩下有关 p 的最小模型。不同形式的限定公理会引出不同类型的最小化标 准。 定量模拟是计算机在科学计算领域的常规应用。但是人们常常不需要详细的计算数据, 就能预测或解释一个系统的行为。这不能简单地通过演绎进行求解, 人工智能提出定性推理 的方法。定性推理把物理系统或物理过程细分为子系统或子过程, 对于每个子系统或子过程 以及它们之间的相互作用或影响都建立起结构描述, 通过局部因果性的传播和行为合成, 获得实际物理系统的行为描述和功能描述。最基本的定性推理方法有三种:即 de Kleer 的基 于部件的定性方程方法, Forbus 的定性进程方法, Kuipers 的基于约束的定性仿真方法。 定性与定量推理的结合将会对专家系统科学决策的发展产生重大影响。 在现实世界中存在大量不确定问题。不确定性来自人类的主观认识与客观实际之间存在 差异。事物发生的随机性,人类知识的不完全、不可靠、不精确和不一致, 自然语言中存在的 模糊性和歧义性都反映了这种差异, 都会带来不确定性。针对不同的不确定性的起因, 人 们提出了不同的理论和推理方法。在人工智能和知识工程中, 有代表性的不确定性理论和推 理方法有如下几种: 概率论被广泛地用于处理随机性以及人类知识的不可靠性。Bayes 理论被成功地用在 PROSPECTOR 专家系统中, 但是, 它要求给出假设的先验概率。在 MYCIN 中采用确信度方法 是一种简单有效的方法。它采用了一些简单直观的证据合并规则。其缺点是缺乏良好的理论 基础。 Dempster 和 Shafer 提出证据理论。该理论引进了信任函数的概念,对经典概率加以推 广, 规定信任函数满足概率公理更弱的公理, 因此信任函数可以有作概率函数的超集。利用 信任函数, 人们无需给出具体的概率值, 而只需要根据已有的领域知识就能对事件的概率 分布加以约束。证据理论有坚实的理论基础, 但是它的定义和计算过程比较复杂。近年来, www.aibbt.com 让未来触手可及 10 证据理论逐步引起人们的注意, 出现了一些更加深入的研究成果和实用系统。例如, Zadeh 把证据理论的信任函数解释为二阶关系, 并在关系数据库中找到了它的应用。Michacl 则把证 据理论的基本概率函数推广到布尔代数。 1965 年 Zadeh 提出模糊集理论, 以此为基础出现了一系列研究成果, 主要有模糊逻辑、 模糊决策和可能性理论。Zadeh 为了运用自然语言进行推理, 对自然语言中的模糊概念进行 了量化描述, 提出了语言变量、语言值和可能性分布的概念, 建立了可能性理论和近似推理 方法, 引起了许多人的研究兴趣。模糊数学已广泛应用于专家系统和智能控制中, 人们还 研制模糊计算机。我国学者在理论研究和应用方面均做了大量工作, 引起国际学术界的关 注。同时, 这一领域仍然有许多理论问题没有解决, 而且也存在不同的看法和争议, 例如模 糊数学的基础是什么?模糊逻辑的一致性和完全性问题。今后不确定推理的研究重点可能会集 中在如下三个方面:一是解决现有处理不确定性的理论中存在的问题;二是大力研究人类高 效、准确的识别能力和判断机制, 开拓新的处理不确定性的理论和方法;三是探索可以综合处 理多种不确定性的方法和技术。 证明定理是人类特殊的智能行为, 不仅需要根据假设进行逻辑演绎,而且需要某些直 觉技巧。机器定理证明就是把人证明定理的过程通过一套符号体系加以形式化, 变成一系列 能在计算机上自动实现的符号演算过程,也就是把具有智能特点的推理演绎过程机械化。中国 科学院系统所吴文俊教授提出的平面几何及微分几何的判定法, 得到国内外高度评价。 1.7 机器学习 知识、知识表示及运用知识的推理算法是人工智能的核心, 而机器学习则是关键问题。 数百年来, 心理学家和哲学家们曾认为, 学习的基本机制是设法把在一种情况下是成功的 表现行为转移到另一类似的新情况中去。学习是获取知识、积累经验、改进性能、发现规律、 适应环境的过程。图 1.2 给出了学习的简单模型。模型中包含学习系统的四个基本环节。环 境提供外界信息, 类似教师的角色。学习单元处理环境提供的信息, 相当于各种学习算法。 知识库中以某种知识表示形式存储信息。执行单元利用知识库中的知识来完成某种任务, 并 把执行中的情况回送给学习单元。学习使系统的性能得到改善。机器学习的研究可以使机器 自动获取知识, 赋予机器更多的智能。另一方面可以进一步揭示人类思维规律和学习奥秘, 帮助人们提高学习效率。机器学习的研究还会对记忆存储模式、信息输入方式及计算机体系 结构产生重大影响。 www.aibbt.com 让未来触手可及 11 图 1.2 简单学习模型 机器学习的研究大致经历了四个阶段。早期研究是无知识的学习, 主要研究神经元模型 和基于决策论方法的自适应和自组织系统。但是神经元模型和决策论方法当时只取得非常有 限的成功, 局限性很大, 研究热情大大降低。20 世纪 60 年代处于低潮, 主要研究符号概念 获取。1975 年 Winston 发表了从实例学习结构描述的文章, 人们对机器学习的兴趣开始恢 复, 出现了许多有特色的学习算法。更重要的是人们普遍认识到, 一个学习系统在没有知识 的条件下是不可能学到高级概念的, 因而把大量知识引入学习系统做为背景知识, 使机器 学习理论的研究出现了新的局面和希望。由于专家系统和问题求解系统的大量建造, 知识 获取成为严重的瓶颈,而这一问题的突破完全依赖于机器学习研究的进展。机器学习的研究开 始进入新的高潮。 机器学习的风范主要有归纳学习、分析学习、发现学习、遗传学习和连接学习[Shi 1991]。 过去对归纳学习研究最多,主要研究一般性概念的描述和概念聚类。提出了 AQ 算法、变型空 间算法、ID3 算法等。类比学习是通过目标对象与源对象的相似性, 从而运用源对象的求解 方法来解决目标对象的问题。分析学习是在领域知识指导下进行实例学习, 包括基于解释的 学习、知识块学习等。基于解释的学习是从问题求解的一个具体过程中抽取出一般的原理, 并 使其在类似情况下也可利用。因为将学到的知识放进知识库,简化了中间的解释步骤, 可以提 高今后的解题效率。发现学习是根据实验数据或模型重新发现新的定律的方法。近年来, 数 据库知识发现引起人们极大的关注。从事人工智能研究和从事数据库研究的人们都认为这是 一个极有应用意义的研究领域。数据库知识发现主要发现分类规则、特性规则、关联规则、 差异规则、演化规则、异常规则等。数据库知识发现的方法主要有统计方法、机器学习、神 经网路、多维数据库等方法。遗传学习起源于模拟生物繁衍的变异和达尔文的自然选择,把概 念的各种变体当作物种的个体, 根据客观功能测试概念的诱发变化和重组合并, 决定哪种 情况应在基因组合中予以保留。连接学习是神经网络通过典型实例的训练, 识别输入模式的 不同类别。 机器学习的研究尚处于初级阶段, 必须大力开展研究的一个人工智能领域。只有机器学 习的研究取得进展, 人工智能和知识工程才会取得重大突破。今后机器学习的研究重点是研 究学习过程的认知模型、机器学习的计算理论、新的学习算法、综合多种学习方法的机器学 习系统等。 学习单元 环境 知识库 执行单元 反馈 www.aibbt.com 让未来触手可及 12 1.8 分布式人工智能 人们在研究人类智能行为中发现:大部分人类活动都涉及多个人构成的社会团体,大型 复杂问题的求解需要多个专业人员或组织协作完成。“协作”是人类智能行为的主要表现形式 之一,在人类社会中普遍存在。分布式人工智能(Distributed Artificial Intelligence, 简称 DAI)正是为适应这种需要而兴起的。 自 20 世纪 80 年代以来,随着计算机网络、计算机通信和并发程序设计 技术的发展,分 布式人工智能逐渐成为人工智能领域的一个新的研究热点。分布式人工智能是人工智能的一 个分支,它主要研究在逻辑上或物理上分散的智能动作者如何协调其智能行为,即协调它们 的知识、技能和规划, 求解单目标或多目标问题,为设计和建立大型复杂的智能系统或计算 机支持协同工作提供有效途径。 DAI 一词产生于美国。第一届 DAI 会议“The Workshop on Distributed Artificial Intelligence”于 1980 年在美国的 Boston 的 MIT 召开。此后全世界各地的有关 DAI 或者包 含 DAI 主题的各种会议不断举行,为 DAI 技术的发展和推广起了很大的促进作用。作为一门 学科,DAI 的研究和实践不断地深入、扩大。随着新的基于计算机的信息系统、决策系统和知 识系统在规模、范围和复杂程度上的增加,并且在这些系统中嵌入更加复杂的知识的要求的 增加,DAI 技术的应用与开发越来越成为这些系统成功的关键。 一般,DAI 的研究可分为两个大方向:分布式问题求解( DPS: Distributed Problem Solving)和多主体系统 (MAS: Multi-Agent System)。它们处于同一研究范系的两个端点 上。DPS 的目标是要创建大粒度的协作群体,它们之间共同工作以对某一问题进行求解。在一 个纯粹的 DPS 系统中,问题被分解成任务,并且为求解这些任务,需要仅为该问题设计一些 专用的任务执行系统。所有的交互(如果有,如协作等)策略都被集成为系统设计的整体部 分。这是一种从顶向下设计的系统,因为处理系统是为满足在顶部所给定的需求而设计的。 与 DPS 系统相反,在一个纯粹的多主体系统中,主体是自主的,可能是预先存在的,并 且是异构的。多主体系统并不限制为一个单一的任务。多主体系统的研究涉及到在一组自主 的智能主体之间协调其智能行为,协调它们的知识、目标及规划等以便联合起来采取行动或 求解问题。虽然在这里一个主体也可以是某个任务的执行者,但它具有“开放的”接口,任 何“人”都可以对其进行存取。该主体不仅可以处理单一目标,而且可以处理不同的多个目 标。 目前计算机的应用越来越广泛,所需处理的问题越来越复杂,问题求解所涉及的信息、 资料、数据很难集中式地处理,并且求解过程也难以集中控制。这种数据或知识的分布以及 并发处理, 对 AI 发展带来巨大潜力的同时也带来了各种有待于解决的困难问题。DAI 系统中 各主体在空间上的分布性,时间上的并发性以及在逻辑上的依赖关系使得多主体系统的求解 行为较之单主体系统更复杂。 对 DAI 系统的研究主要原因可概括为: www.aibbt.com 让未来触手可及 13 (1) 技术基础──-处理器硬件结构技术及处理器之间的通信技术的进步使得大量复杂 的并且是异步执行的处理器之间的互联成为可能。这种联结可以是基于共享或分布式内存的 紧耦合的系统,也可以是基于局域网络的比较松耦合的系统,甚至可以是基于地理上分布的 通信网络的非常松散的耦合系统。 (2) 分布式问题求解──-很多的人工智能应用在本质上都是分布的。这些应用可能是空 间分布的,如对空间上分布的传感器的数据的解释和集成,或者是对工厂中共同工作的机器 人的控制;这些应用也可能是功能分布的,如为了解决复杂的病例将几个专业的医学诊断系 统联合起来;这些应用还可能是时序上分布的,例如在一个工厂中,生产线是由几个工序组 成,每个工序都由一个专家系统进行调度。 (3) 易于系统集成──-分布式人工智能系统支持模块性的设计及实现。把一个复杂的系 统分解成一些相对来说简单的、处理某个特定问题的模块, 使得系统便于建造、调试及维护。 对多个模块的硬件或软件错误的处理比单一的整体模块具有更大的灵活性。另一方面,大量 的已经存在的集中式的人工智能应用系统, 如果可以稍加修改即用于构成分布式人工智能系 统,则可以产生很大的经济效益和社会效益。例如,原来的肝病诊断专家系统、胃病诊断专 家系统、肠道疾病诊断专家系统等独立的系统,如果可以通过少量修改建成消化道疾病诊断 多专家系统则可以节省大量开发时间,并产生更大的效用。我们提出的插件式构造主体的方 法, 就是一种有效地集成已有人工智能系统的方法。 (4) 智能行为的新途径──-通过智能主体实现自主的智能行为。要使人工智能系统成为 思维社会的组成,它必须具有与环境之间进行交互的作用,以及彼此协作和协调的能力。 (5) 认识论上的意义──-分布式人工智能可用来研究和验证社会学、心理学、管理学等 中的问题和理论。通过信念、知识、希望、意图、承诺、注意、目标、协作等,实现协同工 作的多主体系统,为理解和仿真认识论问题提供有效的手段。 所以,无论从技术上还是社会需求上,DAI 系统的出现与发展都 是必然的。利用 DAI 技 术来解决大型的军事领域的问题是必要的,也是十分自然的。目前, 国内从事这方面的研究 已取得了一定的成果。 多主体系统是分布式人工智能研究的一个分支。在多主体系统中,主体是一个自主的实 体,它不断地与环境发生交互作用。同时在该环境中还有其他的进程发生,也存在其他的主 体。或者说,主体是一个其状态由心智部件,如信念、能力、选择、意图等组成的实体。在 一个系统中,主体可以是同构的,也可以是异构的。多主体的研究涉及到在一组自主的智能 主体之间协调其智能行为,协调它们的知识、目标、意图及规划以联合起来采取行动或求解 问题。主体之间可能是协作关系,也可能存在着竞争。分布式人工智能和多主体系统的一个 共同特点就是分布式的实体行为。多主体系统可看作是采用由底向上的设计方法设计的系统。 因为在原理上,分散自主的主体首先被定义,然后研究怎样完成个人或几个实体的任务求解。 多主体系统不仅可以处理单一目标,也可以处理不同的多个目标。多主体系统主要研究在逻辑 上或物理上分离的多个主体如何并发计算、相互协作地实现问题求解。其主要目的在于分析 www.aibbt.com 让未来触手可及 14 和设计大型复杂的协作智能系统,如大型知识信息系统、智能机器人等。 目前,多主体系统的研究非常活跃。多主体系统试图用主体来模拟人的理性行为,主要 应用在对现实世界和社会的模拟、机器人和智能机械等领域。主体本身需要具有自治性、对 环境的交互性、协作性、可通讯性, 以及长寿性、自适应性、实时性等特性。而在现实世界 中生存、工作的主体,要面对的是一个不断变化的环境。在这样的环境中,主体不仅要保持 对紧急情况的及时反应,还要使用一定的策略对中短期的行为作出规划,进而通过对世界和 其它主体的建模分析来预测未来的状态,以及通过通讯语言实现和其他主体的协作或协商。 为了使主体表现出这样的性质,需要研究主体的结构。因为主体的结构和它的功能是紧密相 关的,不合理的结构将大大限制主体的功能,而合理的结构则将给实现主体的高度智能化提 供支持。我们提出一种复合式的结构,即在一个主体中有机地组合了多种并行执行、相对独 立但又相互作用的智能形态,其中包括反射、规划、建模、通讯和决策生成等。我们提出并 部分实现了一个多主体处理环境 MAPE(Multi-Agent Processing Environment)。在 MAPE 中, 我们提出了一种基于主体内核的插件式地构造主体的方法。使用 MAPE 环境和插件式的构造方 法,可以方便地构造和调试复合式结构的主体。 1.9 人工思维模型 计算机的发展已经经历了两个阶段。在第一个阶段,采用冯·诺伊曼体系结构,主要用 于数值计算、文档处理、数据库管理和检索。这些应用都有明确的算法,仅在编程方面较困 难。第二个阶段是面向符号和逻辑的处理,主要通过推理,进行知识信息处理。如何确定有 效的算法是研究的重点。上述这些应用,都属于理想世界的问题,具有良定义和明确的描述。 现实世界的问题大多具有病态定义的结构,例如模式识别、不完全信息的问题求解和学习等, 而这些问题属于直觉信息处理的范畴。 为了处理直觉信息,必须研究柔性信息处理的理论和技术。真实世界的所谓柔性问题具 有下列特点: (1) 包含意义不明确或不确定信息的各种复杂情况的集成; (2) 主动获取必要的信息和知识,通过归纳学习范化知识; (3) 系统本身能适应用户和环境的变化; (4) 根据处理对象系统进行自组织; (5) 容错处理能力。 实际上,具有大规模并行和分布式信息处理功能的人脑神经网络自然地支持柔性信息处理。 由此,作者提出了人工思维模型(见图 1.3)。 www.aibbt.com 让未来触手可及 15 真实世界 图 1.3 人工思维模型 图 1.3 所示的人工思维模型清楚地表明,人工思维将以开放式自主系统为基础,充分发 挥各种处理范型的特长,实现集体智能,才能达到柔性信息处理,解决真实世界的问题。 1.10 知识系统 人工智能研究的一个最重要的动力是建立知识系统以求解困难问题。20 世纪 80 年代以来, 知识工程成为人工智能应用最显著的特点。知识系统包括专家系统、知识库系统、智能决策 系统等。1965 年, 为阐明有机化学结构而创建的 DENDRAL 发展成为一类专家系统的程序。这 类计算机程序包括两部分: 一是知识库, 它表示和存储由任务所指定领域知识的一组数据结 构集合。知识库不仅包含了有关领域的事实, 而且包含专家水平的启发式知识。另一是推理 机, 它是构造推理路径的一组推理方法集合, 以便导致问题求解、假设的形成、目标的满足 等。由于推理采用的机理、概念不同,推理机形成多种范型的格局。 知识库系统是把知识以一定的结构存入计算机, 进行知识的管理和问题求解, 实现知 识的共享。美国推出了 KBMS 软件产品。日本的 NTT 公司也研制成了 KBMS。中国科学院计 算所于 1990 年完成了国家七五重点科技攻关项目知识库管理系统软件 KBMS。这些软件的明 显特色是将推理和查询结合起来, 改善了知识库的维护功能, 为开发具体领域的知识系统 提供有用的环境。 决策支持系统 (DSS) 是在管理信息系统 (MIS) 的基础上发展起来的,这一概念始于 20 世纪 70 年代初。由于它是提高企业竞争力、生产力以及决定经营成败的重要工具, 所以发展 很快。在国外, 已为各级决策人员所采用。在国内也引起了各方面的关注。决策支持技术是 支持科学决策的关键技术之一。早期的决策支持系统是在管理信息系统的基础上, 增加一些 规范模型(如运筹学模型、经济计量模型等)而成。1980 年, Sprague 提出基于数据库和模型 库的 DSS 结构, 产生了很大的影响。最近几年, 人工智能技术逐步应用于 DSS, 产生了智 能化的 DSS。1986 年, 作者提出由数据库、模型库、知识库等组成的智能决策系统(史忠植 1988),为解决半结构、非结构化的决策问题提供了有效的手段, 提高了科学管理的水平。智 柔性信息处理 集体智能 开放式自主系统 www.aibbt.com 让未来触手可及 16 能决策系统的特点是将人工智能技术应用于 DSS, 并且将数据库技术、情报检索技术与基于 模型和方法的定量分析技术相结合。20 世纪 90 年代,我们采用多主体技术建立群体决策系统, 引起了人们的兴趣。 建造智能系统可以模仿、延伸和扩展人的智能, 实现某些``机器思维", 具有极大的理论 意义和实用价值。根据智能系统具有的知识和处理范型的情况,可以分成四类: 单领域知识单处理范型智能系统、多领域知识单处理范型智能系统、单领域知识多处理范型 智能系统、多领域知识多处理范型智能系统。 1. 单领域知识单处理范型智能系统 系统具有单一领域的知识,并且只有一种处理范型。例如,第一代、第二代专家系统和 智能控制系统属于这种类型。 专家系统是运用特定领域的专门知识,通过推理来模拟通常由人类专家才能解决的各种 复杂的、具体的问题,达到与专家具有同等解决问题能力的计算机智能程序系统。它能对决 策的过程做出解释,并有学习功能,即能自动增长解决所需的知识。第一代专家系统(DENDRAL、 MACSYMA 等)以高度专业化、求解专门问题的能力强为特点,但在体系结构的完整性、可移植 性等方面存在缺陷,求解问题的能力弱。第二代专家系统(MYCIN、CASNET、PROSPECTOR、HEARSAY 等)属单学科专业型、应用型系统,其体系结构较完整,移植性方面也有所改善,而且在系统 的人机接口、解释机制、知识获取技术、不确定推理技术、增强专家系统的知识表示和推理 方法的启发性、通用性等方面都有所改进。 2. 多领域知识单处理范型智能系统 多领域知识单处理范型智能系统具有多种领域的知识,而处理范型只有一种。大多数分 布式问题求解系统、多专家系统属于这种类型。一般采用专家系统开发工具和环境来研制这 种大型综合智能系统。 由于智能系统在工程技术、社会经济、国防建设、生态环境等各个领域的广泛应用, 对 智能系统的功能提出多方面的要求。许多实际问题的求解, 例如, 医学诊治、经济计划、军 事指挥、金融工程、作物栽培、环境保护等, 往往需要应用多学科、多专业的专家知识和经 验。现有的许多专家系统大多数是单学科、专门性的小型专家系统, 不能满足用户的实际需 求。建立多领域知识单处理范型智能系统在一定程度上可以达到用户的要求。这类智能系统 的特点是: (1) 面向用户实际的复杂问题求解; (2) 应用多学科、多专业、多专家的知识和经验, 进行并行协同求解; (3) 基于分布式、开放性软硬件和网络环境; (4) 利用专家系统开发工具和环境; (5) 实现知识共享与知识重用。 3. 单领域知识多处理范型智能系统 单领域知识多处理范型智能系统具有单一领域的知识,而处理范型有多种。例如,混合 www.aibbt.com 让未来触手可及 17 智能系统属于这种类型。一般可以用神经网络通过训练,获得知识。然后,转换成产生式规 则,提供给推理机在求解问题时使用。 在进行问题求解时,也可以采用多种机制处理同一个问题。例如,疾病诊断系统,既可 采符号推理的方法,也可通过人工神经网络。让它们同时处理相同的问题,然后比较它们的 结果,这样容易取得正确的结果,避免片面性。 4. 多领域知识多处理范型智能系统 图 1.4 给出了多领域知识多处理范型智能系统的示意图。该种系统具有多种领域的知识, 而且处理范型也有多种。图中集体智能(collective intelligence)的含义是,在多种处理范 型的环境下,各种处理机制各行其事,各司其职,协调工作,表现为集体的智能行为。 图 1.4 多领域知识多处理范型智能系统 综合决策系统、综合知识系统属于多领域知识多处理范型智能系统。在这种系统中,基 于推理的抽象思维采用符号处理的方法;而基于模式识别、图像处理之类的形象思维采用神 经计算。 智能问题多数具有病态结构,研究的对象也在不断地变化,很难找到一种精确的算法进 行求解。构造人机统一、与环境进行交互、反馈的开放系统是解决这类智能问题的途径。所 谓开放系统是指系统在操作过程中永远有未预料的后果, 并能在任何时候从外部接收新的信 息。 在总结和分析已有知识系统的设计方法和实现技术的基础上,人们研究智能主体技术, 用来实现多种知识表示、综合知识库、自组织协同工作、自动知识获取、不断改善系统的智 能行为等功能的大型综合知识系统。这类知识系统是当前实现多领域知识多处理范型智能系 统的主要途径。 习 题 1. 什么是人工智能?它的研究目标是什么? 2. 简述人工智能研究发展的主要阶段。 知识库 2 连接处理机 直觉处理机 符号推理机 知识库 1 知识库 n 集体智能 www.aibbt.com 让未来触手可及 18 3. 人工智能研究的基本问题是什么? 4. 什么是物理符号系统?什么是物理符号假设? 5. 什么是符号智能?什么是计算智能? 6. 请描绘机器学习的简单模型,并论述各个基本环节的基本内容。 7. 什么是分布式人工智能,它包括哪些研究方向。 8. 参考相关文献,讨论目前的计算机是否可以解决下列任务: a) 在国际象棋比赛中战胜国际特级大师 b) 在围棋比赛中战胜九段高手 c) 发现并证明新的数学定理 d) 自动找到程序中的 bug 9. 知识系统如何分类?怎样建立集体的智能行为? www.aibbt.com 让未来触手可及 19 第二章 人工智能逻辑 2.1 概述 亚里斯多得从数学的研究中分离出逻辑学。莱布尼茨把数学的方法引入逻辑领域,创立 了数理逻辑。在本世纪 30 年代以后,数学方法广泛渗透与运用于数理逻辑,使得数理逻辑成 为数学领域中与代数、几何等并列的学科之一。现代数理逻辑可以分为逻辑运算、证明论、 公理集合论、递归论和模型论。 逻辑方法是计算机科学,尤其是人工智能研究中的主要形式化工具。从语义学、程序设 计语言、程序规范理论到程序验证理论,从数据库理论、知识库理论到智能系统,直到机器 人的研究,所有的领域或多或少都与逻辑学有着若干联系。而逻辑方法之所以成为计算机科 学和人工智能研究的主要工具,其根源可以追溯到计算机科学和逻辑学所追求的目标在深层 次上的一致性。从本质上来说,计算机科学就是要用计算机来模拟人脑的行为和功能,使计 算机成为人脑的延伸。而对于人脑的行为和功能的模拟,实质上就是模拟人的思维过程。正 是计算机科学所追求的这个目标,逻辑学这个以研究人的思维规律和法则的学科,它的研究 方法和研究成果自然而然地成为计算机科学研究所选用的工具。由于人类智能行为在很大程 度上是通过语言和文字表达出来的,因此,从技术上来说,计算机科学模拟人类思维,也是 从模拟人类的自然语言作为出发点的。围绕语言的概念进行的研究是计算机科学(尤其是人 工智能)的一个核心领域。 逻辑学研究人的思维是从研究人的自然语言开始入手的,计算机科学模拟人的思维同样 是从语言开始的。与语言相关的论题是贯穿计算机科学领域的重要问题,许多的领域与语言 相关,例如,软件领域的程序设计语言和形式语义学,人工智能领域中数据和知识的表示和 推理,自然语言处理中的计算语言学等等。总起来说,表示和推理是计算机科学和人工智能 领域的基本问题。大多数智能行为的高级形态需要对于知识进行直接的表示,而形式逻辑是 知识表示的重要方式。 智能行为的基础是知识,尤其是所谓的常识性知识。人类的智能行为对于知识的依赖主 要表现在对于知识的利用,即利用已经具有的知识进行分析、猜测、判断、预测等等。人类 利用知识可以预测未来,由已知的情况推测未知的情况、由发生的事件预测还未发生的事件 等等。但是,当人们希望计算机具有智能行为时,除了告诉计算机如何像人一样地利用知识 以外(对于知识进行推理),一个更为基础和先行的工作是如何使计算机具有知识(对于知识 进行表示),即在计算机上如何表达人类的知识。要使得一个系统成为智能的系统,它必须具 有知识,而且目前能够达到这个目的的唯一方法就是把系统嵌入到某种所谓的知识表示的结 构中去。由此分析以及通过对比我们不难看到,人工智能对于知识的这两个关注点与逻辑对 www.aibbt.com 让未来触手可及 20 于自然语言的两个关注点(自然语言的精确结构和推理问题)是完全重合的。逻辑学对于自 然语言的精确结构以及对于推理的研究正好服务于人工智能对于知识研究的两点要求。当人 们利用逻辑于智能系统时,这两个方面是同时加以考虑的。由于一个逻辑系统的表示能力强 弱和推理性质优劣之间存在某种冲突,因此,在实际的研究中常常在它们两者之间进行平衡 和折衷。从某种意义上来说,人们利用逻辑对于知识进行推理在逻辑应用于人工智能研究中 的作用远远超过了单纯的知识表示。因为,逻辑推理所涉及的不单单是知识的外在形式,它 事实上涉及到的是知识的内容,是形式的知识所包含的意义的内在联系。虽然从表面上看, 推理是形式的,但是逻辑学所追求和保证的就是知识的形式和内容之间的固定联系。逻辑学 的这种追求与保证使得对于知识的推理使得机器对于知识的理解不是形式上的而是含义上 的。研究包含在知识的形式表示之上的知识的含义,对于智能研究是本质的一点,这也正如 研究信息的含义高于信息的形式一样。比通信更复杂的信息活动(如推理、思维和决策等等) 恰恰需要利用信息的内容和价值因素。一般来说,不了解信息的内容和价值,很难作出科学 的推理、思维和决策。 多数的基于逻辑的智能系统使用一阶逻辑或者它的一些扩张形式。一阶逻辑的优点是它 具有相当强的表达能力。有的人工智能专家坚信所有的人工智能中的知识表示问题完全可以 在一阶逻辑的框架中得以实现。一阶逻辑在表达不确定性知识时其表达能力也是很强的。例 如,∃x P(x)表达在所考虑的论域中存在一个具有性质 P 的对象,而具体的是哪一个对象具有 此性质则是待确定的;再如,P ∨ Q 表示 P 和 Q 这两个性质之间有一个是成立的,至于到底是 哪一个成立则是根据具体的情况而定的。此外,一阶逻辑还有一个完备的公理系统。完备的 公理体系为我们设计有关推理的策略和算法提供了一个参考基准。虽然,有人坚信从本质上 看,一阶逻辑对于知识表示 是足够的,但从实际应用的角度看,为方便、清楚和简洁起见, 知识表示不一定非得从一阶逻辑出发。事实上,人们从实际应用出发已经发明和建立了许多 适用于不同目的的逻辑系统。以下是其中的一些例子: (1) 为了表示关于认知的有关概念,如相信、知道、愿望、意图、目标、承诺等等,人 们引进了刻划各种认知概念的模态逻辑; (2) 为了刻划智能系统中的时间因素,人们在逻辑系统中引进时间的概念,提出了各种 时序逻辑; (3) 为了描述各种不确定的和不精确的概念,人们引进了所谓模糊逻辑;模糊逻辑是直 接建立在自然语言上的逻辑系统,与其它逻辑系统相比较,它考虑了更多的自然语言的成分。 按照其创始人 Zadeh 的说法就是词语上的计算,表示为一个公式,即 fuzzy logic=computing with words; (4) 人类的知识与人类的活动是息息相关的,人类正是在各种活动和行为中获得知识的。 因此,行为或者动作的概念在智能系统中是一个关键的概念。动作的概念与一般逻辑中的静 态的概念很不相同,它是一个动态的概念,动作的发生影响着智能系统的性质。对于动作的 考虑,给人工智能界带来了许多难题,如框架问题、量词问题等等。为了刻划动作的概念, www.aibbt.com 让未来触手可及 21 人们引进了一些新的逻辑体系来刻划它。 (5) 计算机对于人类进行决策时进行若干方面的支持已经成为计算机应用的一个重要方 面。人类在决策时,对于各种方案和目标有一定的偏好和选择。这时“偏爱”就成为了一个 基本的概念。为了表述和模拟人类在决策时的选择的规律和行为,对于“偏爱”这个词的研 究就是不可避免的。于是,基于管理科学的所谓的偏爱逻辑被提出并加以研究。 (6) 时间是智能系统中最重要的几个概念之一。人类使用各类副词来对时间概念加以描 述。例如,“一会儿”“相当长”“断断续续地”“偶尔”等等,这一类词在我们的日常生活中 比比皆是。含有这些词的句子显然是很难用经典的时序逻辑来刻划的,于是有人引进了一种 逻辑系统专门刻划这类句子。其基本思想是利用数学中积分的思想,通过对时间的某种像积 分那样的表示和运算来形式化这些句子。 2.2 逻辑程序设计 Prolog 程序就是一种逻辑程序,后面我们的讨论基于的都是 Prolog 语言。Prolog 是一种 交互式语言,是人们多年研究成果的结晶。Prolog 的第一个正式版本是 1970 年代法国 Marseilles 大学的 Alain Colmerauer 作为 PROgramming in LOGic 的工具开发出来的。今天 Prolog 已成为人工智能应用和专家系统开发的重要的工具。 Prolog 是一种描述性语言,只要给定所需的事实和规则,Prolog 使用演绎推理方法就可对 问题进行求解。即只需告诉计算机“做什么”,至于“怎么做”则是由 Prolog 自动完成的。除 此之外,Prolog 还有下面一些特点: 1. Prolog 是数据和程序的统一。Prolog 提供了一种一致的数据结构:项。所有数据和程 序都是由项构造而成的。在智能程序中常需要将一段程序的输出数据作为新产生的 程序来执行,因此人工智能语言应具有数据和程序结构一致的特性。 2. Prolog 能够自动实现模式匹配和回溯。这些是人工智能系统中最常用的、最基本的操 作。 3. Prolog 具有递归的特点,它反映在 Prolog 程序和数据结构的设计中。由于这一特性, 一个大的数据结构常常可以用一个小的程序来处理。一般情况下,对一个应用来说, 用 Prolog 语言写的程序长度是用 C++语言写的程序长度的十分只一[119]。 Prolog 的所有这些特性,使得 Prolog 特别适用于描述智能程序,适用于自然语言处理、 定理证明和专家系统等等。 2.2.1 逻辑程序定义 在定义逻辑程序之前,首先定义 Horn 子句,它是逻辑程序的组成要素。 一个子句由两部分组成:头部和体。IF-THEN 规则的结论称为头部,前提部分称为体。 www.aibbt.com 让未来触手可及 22 则 Horn 子句可以定义为: 定义 2.1 Horn 子句是头部最多包含一个文字(命题或谓词)的子句。 Horn 子句在 Prolog 中有三种表示形式: (1) 无条件子句(事实):A. (2) 条件子句(规则):A:-B1,…,Bn. (3) 目标子句(问题):?- B1,…,Bn. 上述三种 Horn 子句均具有明显的非形式语义: (1) 无条件子句 A:表示对变量的任何赋值,A 均为真。 (2) 条件子句 A:-B1,…,Bn:表示对变量的任何赋值,如果 B1,…,Bn 均为真,则 A 为 真。 (3) 目标子句?- B1,…,Bn:其逻辑形式为 ∀x1…xn(¬B1∨…∨¬Bn), 等价于¬∃x1…xn(B1∧…∧Bn)。它视作推理的目标。 例如,对于下面两个 Horn 子句: i) W(X,Y) :- P(X), Q(Y). ii) ?-R(X,Y),Q(Y). 在 i)中 W(X,Y)为头,P(X),Q(Y)为体。在 ii)中 R(X,Y),Q(Y)为体,头为空子句。事实上, ii)表示一个询问,R(X,Y),Q(Y)是否为真,或者 X 和 Y 取什么值的时候,R(X,Y)∧Q(Y)为真。 定义 2.2 逻辑程序就是由 Horn 子句构成的程序。在逻辑程序中,头部具有相同谓词符的 那些子句称为该谓词的定义。 例如下面两个谓词逻辑句子,每个句子都只有一个头。 Father(X,Y) :- Child(Y,X), Male(X). Son(Y,X) :- Child(Y,X), Male(Y). 上述两个子句都是 Horn 子句,因此它们构成一个逻辑程序。假设还有下面三个事实子句: Child( xiao-li, lao-li). Male(xiao-li). Male(lao-li). 如果把上述规则和事实加入 Prolog 中,编译执行后,给出下面的查询,则有: 1. 目标: ?- Father(X,Y). 则会得到: Father(lao-li, xiao-li). 2. 目标: ?- Son(Y,X). 则会得到: Son(xiao-li, lao-li). 上面我们已经完成了对 Prolog 语言简单的描述。 2.2.2 Prolog 数据结构和递归 在非数值程序设计中,递归是十分重要的工具。在 Prolog 中,递归也是其重要的特性, 这反映在 Prolog 的数据结构和程序中。 Prolog 提供了一个一致的数据结构称为项。所有的数据和 Prolog 程序都是由项构造而成 的。Prolog 的项可以定义为: <项>::=<常量>|<变量>|<结构>|(<项>) 结构称为复合项,它是由一组其他对象(也可以为结构)组成的单个对象。 <结构>::=<函数符>(<项>{,<项>}) www.aibbt.com 让未来触手可及 23 <函数符>::=<原子> Prolog 的结构相当于通常程序设计语言中的结构和记录。为了灵活地描述序列、集合这 样的对象,Prolog 提供了表这一数据结构。表是非数值程序设计中一种最常用的数据结构。在 Prolog 中,一个表的元素可以是原子、结构或任何其他项,包括表,因此表是递归定义的。表 可以表示成一个特殊的二元函数 cons(X,Y),X 是表头,Y 是表尾(即表中除去表头剩下部分 组成的表),它是 Prolog 中最重要的数据结构。Prolog 采用下面的记号表示表: []或 nil 空表 [a] cons(a,nil) [a,b] cons(a,cons(b,nil)) [a,b,c] cons(a,cons(b,cons(c,nil)) [X|Y] cons(X,Y) [a,b | c] cons(a,cons(b,c)) Prolog 的递归性还体现在程序中。例如对于内部谓词 member,用于确定一个元素是否为 一给定表的成员。member 谓词定义如下: member(X, [X |_ ]). member(X,[_|Y]) :- member(X,Y). 上面在定义谓词 member 时又调用了它自己,因此 member 是递归定义的。 上述这种递归模式在 Prolog 中会大量的出现。 2.2.3 SLD 归结 在讨论 SLD(有选择的线性)归结之前,首先给出下面的定义。 定义 2.3 定程序子句是下述形式的子句: A :- B1,B2,…,Bn 其中在头部(结论)只有一个正文字(即 A),而体中有零个、一个或多个文字。 定义 2.4 定程序是定程序子句的有限集合。 定义 2.5 定目标是下述形式的子句: ?:- B1,B2,…,Bn 其中头部(结论)是为空的子句。 定义 2.6 SLD 归结代表用于定子句的具有选择函数的线性归结。 如果用 P 表示程序,G 表示目标,则逻辑程序的求解过程就是寻找 P∪{G}的 SLD 归结的 过程。为了确定一个归结过程,需要给出如何选择子目标的计算规则,以及程序空间的搜索 规则。在理论上,人工智能中对状态空间的任何搜索策略都可以使用。但是对于 Prolog 来说, 实现效率的考虑是放在第一位的。标准的 Prolog 的 SLD 归结过程可归纳如下: (1) 计算规则总是选取最左边的子目标:从左向右 (2) 搜索规则是深度优先+回溯。 (3) 按 P 中子句的书写顺序进行尝试:从上到下 (4) 省去了合一算法中的 occur 检查。 上述四条限制会得到下面的问题。 www.aibbt.com 让未来触手可及 24 1、深度优先策略有简单高效的实现方法。 这是采用这一搜索策略的根本原因,原则上可以采用一个“目标栈”就可以实现它(见 第二章的深度优先搜索)。目标栈在任何时候总代表 SLD 树上正在被搜索的分枝。搜索过程由 一系列进栈、出栈操作组成。当栈顶的子目标与 P 中某子句头部合一成功后,归结式进栈。 如没有可以合一的子句,则执行回溯操作,即栈顶元素出栈,为新的栈顶尝试下一个可合一 子句。如此等等。 例 2.1 设程序为: p(X, Z) :- q(X,Y), p(Y,Z). p(X,X). q(a, b). 目标子句为:?-p(X ,b). 则标准 Prolog 的目标栈为: ?-p(X ,b). G 进栈,开始 ?-p(X ,b). ?- q(X,Y), p(Y,b). 归结式进栈 ?-p(X ,b). ?- q(X,Y), p(Y,b). ?- p(b, b). 归结式进栈 ?-p(X ,b). ?- q(X,Y), p(Y,b). ?- p(b, b). ?-q(b,W), p(W,b) 归结式进栈 ?-p(X ,b). ?- q(X,Y), p(Y,b). ?- p(b, b). 出栈,新归结式进栈 ?-p(X ,b). 出栈(三次) 新归结式进栈 出栈,结束 2、深度优先搜索规则破坏了完备性 深度优先是不完备的,这一问题是不可能通过重新排列子目标序列和重排子句序列来完 全克服的,但是可以解决一定的问题。例如程序 (1) p(f(X)):- p(X). (2) p(a). 和目标子句?-p(Y),在运行时会陷入死循环。而重新排列子句(1)(2)的顺序后,就会 有 Y=a,Y=f(a),…。 考虑另一程序: (1)q(f(X)) :- q(X). (2)q(a). (3)r(a). 目标子句 G: ?-q(Y), r(Y)。在运行时陷入死循环。但改变 G 中子目标的顺序,G: ?- r(Y),q(Y), 就可以得到唯一解:Y=a。 但是上述两种方法都不能从根本上解决问题。要保证完整性,Prolog 的搜索规则中必须包 含某种宽度优先的成分。但这必然降低系统的时空效率,且实现难度增大。另一种可行的方 法是保持 Prolog 的深度优先搜索策略,必要时用 Prolog 语言本身编写实现其他搜索策略的程 序。 3、省略 occur 检查破坏了 SLD 归结法的正确性。 我们知道,合一算法中的 occur 检查是极费时间的。具有 occur 检查时,每次合一需要线 性长度的时间,所以对于谓词 append 需要 O(n2)时间,这里 n 是表的长度。由于实际的 Prolog 程序很少碰见确实需要做 occur 检查的合一运算,大多数 Prolog 系统都在合一算法中省去了 occur 检查。 但是省略了 occur 检查破坏了 SLD 归结法的正确性:在确实发生变量出现在项的内部时, www.aibbt.com 让未来触手可及 25 本应得到不可合一的结论。但省略了 occur 检查,则得出可合一的结论,且给出变量的“循环 约束”,这显然是错误的推理。 例如,设程序 P 为: p(Y, f(Y)), G 为?-p(X,X)。 则合一算法在为{p(X,X), p(Y, f(Y))}寻找最一般的合一置换时,若省去了 occur 检查,将 会得到θ={Y/X,f(Y)/Y}这样错误的置换。若后面的 SLD 归结过程不用到变量 Y,这一错误将 被掩盖起来,若后面又用到 Y,则 Prolog 将陷入死循环。 2.2.4 非逻辑成分:CUT 程序是算法的体现,逻辑程序设计的基本公式是: 算法 = 逻辑 + 控制 其中逻辑部分说明“干什么”,控制部分说明“怎么干”。程序员只需给出逻辑部分,控制部 分应由逻辑程序设计系统自动处理。可惜,现今的 Prolog 系统一般达不到这一点。如前所述, 为了程序的正确运行,程序员还需要考虑子句的次序等。另外,由于 Prolog 运行控制系统使 用深度优先搜索策略,则可能产生某个无穷的分枝。因为 Prolog 深度优先搜索是基于栈实现 的,则无限的 SLD 树将会产生栈溢出。这样就无法得到任何解答。这种问题可以通过在程序 中适当地放置“CUT”语句解决。 从说明性语义来看,CUT 是一种非逻辑成分的控制机制,用“!”表示,可以用在条件子 句的体内,或目标子句中,并把它看做是一个恒真的原子。这样,一个程序和目标中可以任 意插入“!”而不影响程序的说明性语义。 但是从过程语义来看,CUT 传递了一定的控制信息。设目标子句 G 为: ?- A1,…,Am-1, Am, Am+1,…,Ak 程序子句 C 为: A:- B1,…, Bi, ! , Bi+1, …, Bq 标准的 Prolog 在求出 A1,…,Am-1 的一个解后得到目标 G’,它先解 Am,若 Am 可与 A 合一, 则 C 的体经过变量置换后成为新的目标子句的一部分,称 G’是包含!的子句 C 的父目标,Am 称为截断点。当轮到解!时,它总是立即成功。但当!后面的子目标无解而引起回溯(或为 了求 G 的所有解而回溯)时,从截断点 Am 到!的所有其他解都不被考虑,Prolog 接着求解 Am 前的那个子目标 Am-1 的其他解。这就是!传递的控制信息,在 SLD 树上,“!”剪去了以 它的父目标为根的那个子树中尚未被搜索的部分。 例如,设程序 P 为: (1) p(a). (2) p(b). (3) q(b). (4) r(X):- p(X), q(X). (5) r(c ). 子目标 G 为:?-r(X)。标准 Prolog 系统建立 SLD 树如图 2.1。若 P 的(4)中插入!变成: (4)’ r(X):- p(X), !, q(X). 则相应的 SLD 树如图 2.2 所示,它被剪去了一部分,从而无解。 www.aibbt.com 让未来触手可及 26 ?- r(X ) ?- r(X ) (4 ) (5 ) (4 ) (5 ) ?-p(X ),q(X) 成功{c/X} ? -p (X ),!, q(X) (1 ) (2 ) (1 ) (2 ) ?- q(a)失败 ?- q(b) ?- !, q(a) 被剪除 (3 ) 成功{b/X} ?- q(a)失败 图 2.1 无!的 SLD 归结树 图 2.2 有!的 SLD 归结树 从上面可以看到,使用 CUT 具有一定的风险,使用不当的话有可能删除成功的分枝,破 坏了 SLD 归结法的完备性。但是更为严重的是 CUT 破坏了逻辑程序的两种语义的一致性。考 虑求两个数最大值的程序 P: max(X, Y, Y) :- X =< Y. max(X, Y, X) :- X > Y. P 的说明性语义和过程性语义是一致的。若增加 CUT 谓词,得到如下的程序 P1: max(X, Y, Y) :- X =< Y, !. max(X, Y, X) :- X > Y. P1 的说明性语义和过程性语义都没有改变,只是运行效率有所提高。为了进一步提高效率而 使用 P2: max(X, Y, Y) :- X =< Y, !. max(X, Y, X). 虽然过程性语义没有变,但是说明性语义却变成了:“X,Y 的最大值总是 X;如果 X≤Y,还 可以是 Y”。显然这样的说明性语义已经不是求最大值的原意了。 在 Prolog 中有一个内部谓词 fail,它作为一个目标总是失败并引起回溯。当 fail 前面是 cut 时,则由于 cut 的作用是改变正常的回溯方式,使匹配含该 cut 规则的父目标立即失败,这样 提高了搜索效率。 例如,对于下面的程序 P: (1)strong(X):- heart_disease(X), fail. (2)strong(X):- tuberculosis(X), fail. (3)strong(X):- nearsight(X), fail. (4)strong(X). (5)heart_disease(Zhang). 如询问:?- strong(Zhang),第一句中 heart_disease 谓词匹配成功。但是后面的 fail 总是失败, 引起回溯。这样就造成 Prolog 去匹配后面的子句,最后因为第四条匹配成功而结束。无疑这 是 Prolog 的回溯功能引起的结果,为了停止 Prolog 这样不必要的回溯,可以用 CUT 放在 fail 之前: (1)’ strong(X):- heart_disease(X), !, fail. (2)’ strong(X):- tuberculosis(X),!, fail. (3)’ strong(X):- nearsight(X), !, fail. 则上述目标匹配第一条规则后,因为 fail 马上失败,又因为 cut 使得从父目标 strong(Zhang)到 cut 之间所有目标都是不可重新满足的,因此系统回答为 NO。这就是 cut-fail 的组合。 www.aibbt.com 让未来触手可及 27 一阶逻辑的不可判定性告诉我们,对于程序 P 和目标 G,不存在算法,在有限步内报告 G 是不是 P 的逻辑推论。当然如果 G 是 P 的逻辑结论,SLD 归结法会在有限步内告诉我们,但 若 G 不是 P 的逻辑推论,SLD 法(或其他方法)可能会陷入死循环。为此,在逻辑程序设计 中引入了一条规则:非即失败。该规则即是说:对于子句 G,如果无法证明 G,则推出¬G 是 合理的。 在 Prolog 中定义了谓词 not,not(A)即¬A,它可定义为: not(A) :- call(A), !, fail. not(A). call 是一个内部谓词,call(A)要求系统把 A 作为一个子目标求解。上面的定义是说:如果 A 有 解,则 not(A)无解,若 A 无解,则 not(A)成功。显然该定义是非即失败的正确描述。 2.3 非单调逻辑 20 世纪 80 年代以来,智能科学的需求促使各种非经典逻辑系统的出现和发展,非单调逻 辑就是其中的典型例子[McDermott 1980]。 人类认识世界的过程是个否定之否定的辩证发展过程。由于人类对客观世界的认识不仅 是不确定的,而且往往是不完全的,尽管人的知识就总的认识过程来看是在不断增长着的, 但新知识的出现往往在一定程度上否定、完善、补充旧的知识。正如波普尔所指出的那样, 科学的发现过程是个证伪过程,在一定的条件和环境下,一个理论的形成总存在着它的历史 局限性。随着人类认识世界的逐渐深入,随着科学研究的不断发展,旧的理论不能满足新的 需要,往往会被新的发现所证伪; 于是旧的理论被否定,新的理论就诞生。从这个意义上来 说,人类知识的增长过程实际上是非单调的发展过程。 然而,经典逻辑,如形式逻辑、演绎逻辑等,对人类认识世界的处理却是单调的。也就 是说,在现有知识的基础上,通过严密的逻辑论证和推理获得的新知识必须与已有的知识相 一致。具体地说,设有知识系统 A,如果已知 A 蕴涵着知识 B,即 A→B ,则可推理得出知 识 B。在此过程中,严格要求 B 必须遵从知识系统 A。然而正如上面所述,人类的知识并不 严格遵循上述约定,因为它是非单调的。 所谓非单调推理就是具备这样一种特性的推理:推理系统的定理集合并不随推理过程的 进行而单调地增大,新推出的定理很可能会否定、改变原来的一些定理,使得原来能够解释 的某些现象变得不能解释了。假如把人们在不同认识阶段的知识用集合 F 来表示,则这样的 集合是时间 t 的函数 F(t) 。每个集合 F(t) 表示人们在时刻 t 的知识总和,则这些集合不 是单调增大的。形式地说,如果 t1为闭缺省理论。 对于缺省理论 T=,假设 D= B MA: ,W=Φ,那么 B 在 T 中可以推出。向 W 增加 ¬A,则 W 变为 W’={¬A},T’=。这是尽管 T’是 T 的扩充(已知事实集合 W’⊇W), 但是 B 却不能从 T’中推出。所以缺省理论 T 是非单调的。 例 2.4 假设 W 为: bird(tweety) ∀x(ostrich(x)Æ ¬flies(x)) D为: )( )( :)( xflies xfliesMxbird 则可以得到 flies(tweety)。 如果在 W 中增加 ostrich(tweety),则无法得到 flies(tweety)。 例 2.5 假设 W 为: feathers(tweety) D为: )( )( :)( xflies xfliesMxbird , )( )( :)( xbird xbirdMxfeathers 则同样可以得到 flies(tweety)。 如果在 W 中增加 ostrich(tweety), ∀x(ostrich(x)Æ ¬ flies(x)) ∀x(ostrich(x)Æ feathers(x)) 则也无法得到 flies(tweety)。 在缺省理论中,“推出”概念和传统逻辑中的“推出”概念是有区别的,前者是非单调推 理而后者是单调推理。为了定义缺省理论中的“推出”概念,需要下面的定义。 定义 2.8 设∆=为一闭缺省理论,Γ为关于 D 的一个算子,Γ作用于任意的命题集合 S,其值为满足下面三个性质的最小命题集合Γ(S): (1) W⊆ Γ(S); (2) Γ(S)为在普通命题演算的推理下封闭的,即 Th(Γ(S))= Γ(S); (3) 如果 D 中有规则: wMM m →ββα ,...,: 1 ,且α∈Γ(S),¬β1,…, ¬βm ∉S,那么 w∈Γ(S)。 定义 2.9 命题集合 E 称为关于 D 的算子Γ的固定点,如果Γ(E)=E。此时又称 E 为∆= 的一个扩张。 有了扩张的概念,便可以定义非单调推理中的“推出”概念。 定义 2.10 如果命题 A 包含在缺省理论∆=的一个扩张中,那么称 A 在∆中可以推出, 记为|~,表示非单调“推出”。(可见例 5.1 中的关系 R) www.aibbt.com 让未来触手可及 33 例 2.6 设 D={ A MA ¬ : },W=Φ。则∆=无扩张。 因为可以证明关于∆的算子Γ无固定点。否则,假设 E 为Γ的固定点。 如果¬A∉E,则由定义 5.2 的(3)可以得到¬A∈E。 如果¬A∈E,因为 W=Φ,则¬A 一定是由缺省规则 D 导入到 E 的。所以,¬A∉E,否则, MA 为假,该规则不可使用。 显然这是一个悖论。 例 2.7 设 D= }F MC:,:,:{ ¬¬¬ C MB B MA ,W=Φ。则∆=有唯一的扩张 E=Th({¬B,¬F})。 容易验证 E 为关于∆的Γ固定点,而当命题集 S∈{¬B,¬C,¬F}而 S≠{¬B,¬F}时,Th(S) 都不是Γ的关于∆的固定点。其直观解释为:第一个缺省规则的结果阻止了第二个缺省规则的 应用,而这有使得第三个缺省规则的应用成为可能。 例 2.8 设 D= } A)M(F ,A M:EC,ME:AF,:,:{ GEC MCB A MA ∨¬∧∧ , W={B,C→F∨A,A∧C→¬E}。 则∆=有三个扩张: E1=Th(W ∪{A,C}) E2=Th(W ∪{A,E}), E3=Th(W ∪{C,E,G}) 仅对 E1 进行说明。由于 Th(W ∪{A,C})中有¬E,从而Γ(Th(W ∪{A,C}))中没有 E 和 G (因为 ME 和 C∧E 不能成立)。这就是说 D 中的缺省规则在算子Γ的计算过程中无一可用,所 以Γ(Th(W ∪{A,C}))=Th(W ∪{A,C})。 从上面可以看到,并非所有的缺省理论都有扩张。有扩张的缺省理论也不一定是只有唯 一的扩张,因为该理论中可能有多个缺省规则,而这些缺省规则的合理条件是不相容的。一 个理论是否具有扩张,决定着在该理论上能否进行有效的缺省推理。因此研究和探讨扩张的 存在条件是十分重要的。 定理 2.3 设 E 为一阶命题集合,∆=为一闭缺省理论。递归定义 Ei(i=0,1,2,…)如下: E0 =W Ei+1=Th(Ei)∪{w | (α:Mβ1,…,Mβm→w)∈D, α∈ Ei,¬β1,…, ¬βm ∉ E } 那么 E 是∆的一个扩张当且仅当 ii EE ∞ = ∪= 0 可以利用该定理来验证例 5.8 中的三个扩张。 现在如果缺省规则为: A AM ¬ ¬: ,缺省理论是否和 CWA 一样呢?答案是否定的。 假设 W={P∨Q},D 为: P PM ¬ ¬: 以及 Q QM ¬ ¬: 。显然 CWT(∆)是不一致的。而∆的扩张可 以是{ P∨Q,¬P}或者为{ P∨Q,¬Q },但如果把它们合在一起就不一致了。 例 2.9 设 D={ A MA ¬ : },W={A, ¬A}。则∆=的扩张 E=Th(W),即维持不变。 www.aibbt.com 让未来触手可及 34 该例子与前面的例子不同,它得到的扩张是不一致的(既有 A,又有¬A)。根据数理逻辑 的基本知识知道,这个扩张包括了该系统中所有可能的一切合式公式。 关于不一致的扩张有下面一些结论: 1、 当且仅当 W 本身是不一致的时候,闭缺省理论有一个不一致的扩张; 因为 W⊆E,所以如果 W 不一致,则 E 也不一致,即充分性成立。反之,如果 E 不一 致,则 E 必包含一切命题,因此所有的缺省规则都可以使用,因此由定理 5.3 得 E=Th(W),所以 W 是不一致的。 2、 若一个闭缺省理论有一个不一致的扩张,则这是它唯一的扩张; 缺省理论的扩张一般是不唯一的,那么它们之间有什么关系呢? 3、设 E 和 F 是同一闭缺省理论的两个不同的扩张,则如果 E⊆F,则 E=F。并且 4、如果∆1=,∆2=为两个缺省理论,并且 W1⊆W2 ,如果∆2 的扩张都是 一致的,那么∆1 的扩张也是一致的。 这是显然的。若∆1 有不一致的扩张,这∆1 是不一致的(见性质 1),从 而 ∆2 是不一致的(因 为 W1⊆W2),它的扩张也是不一致的。 定义 2.11 一个缺省理论∆=称为规范,如果 D 中的缺省规则均为如下形式: B MBA : (2.3) 这样的缺省规则称为规范缺省规则。 如果 W 是一致的,由于每个规范缺省规则的结论和缺省条件相同,所以不会导致不一致 性,并且 Reiter 给出下面的结果: (1) 任何规范缺省理论必定至少有一个扩张。 (2) 设 E 和 F 是同一规范缺省理论的两个不同的扩张,则 E∪F 是不一致的。 这说明,如果推理者对他所在的世界有两种不同的想象,那么它们一定是不一致的。 (3) 设∆=为闭规范缺省理论,D’⊆D,且 E’1、E’2 分别为的两个不同的 扩张,那么∆必有不同的扩张 E1、E2,使得 E’1⊆ E1、E’2⊆ E2。 这说明闭缺省规范理论的扩张的大小,随闭缺省规则数目的增加而单调不减。 如果缺省规则形式为: B MCMBA ∧: (2.4) 则称为半规范缺省规则。如果一个理论所有的缺省规则要么是规范的,要么是半规范的, 且至少有一个是半规范的,则该理论称为半规范缺省理论。 对于有序缺省理论(ordered default theory),需要考虑偏序关系:优先关系“<<”和“<<=”, 其中前者称为强优先关系,后者称为弱优先关系:如果在推导 B 的过程中,用到了 C,那么 有:C<) ()) (2.19) 这里 IN-结点表中的 IN-结点表示知识库中的已知知识,而 OUT-结点表中的 OUT-结点则 表示这些结点的否定,不在知识库中,为默认知识。显然,如果 OUT-结点表为空,则该系统 蜕化为单调推理。如果支持表 SL 中的 IN-结点表中每个结点当前都为 IN-结点,且在 OUT-结 点表中每个结点当前都为 OUT-结点,那么支持表 SL 理由是有效的。 支持表 SL 最通用。例如: (1) 现在是夏天 (SL ( ) ( )) (2) 天气很潮湿 (SL (1) ( )) 结点(1)的 SL 表中的 IN-结点表和 OUT-结点表为空,表明它不依赖于任何别的结点中当 前的信念或默认信念。这类结点称为前提。而结点(2)的 SL 表中 IN-结点表含结点(1),这说 明导致结点(2)可信任结论的推理链依赖于当前在结点(1)的信念。由此可见,真值维护系统 www.aibbt.com 让未来触手可及 47 的推理与谓词逻辑系统相类似,不同的是真值维护系统可以撤消前提,并可以对知识库作适 当修改。 如果支持表 SL 中的 OUT-结点表不为空,如: (1) 现在是夏天 (SL ( ) ( )) (2) 天气很潮湿 (SL (1) (3)) (3) 天气很干燥 若结点(1)是 IN,结点(3)是 OUT,结点(2)才为 IN。这个证实表明:如果现在是夏天,又 没有天气很干燥的证据,那么天气很潮湿。如果将来某一时刻出现了天气很干燥的证据,即 为结点(3)提供了一个证据,则结点(2)就变为 OUT,因为它不再有一个有效的证实。像结点(2) 这样的结点称为假设,它与非空的 OUT 结点表的 SL 证实有关。OUT 结点(3)是结点(2)之证实 的一部分。但如果结点(3)不存在,就不能这样表示了。 在真值维护系统中,它仅利用证实来维持一个相容的信念数据库,真值维护系统本身并 不产生证实。上面的证实必须由使用真值维护系统的问题求解程序提供。 条件证明 CP 的形式为: (CP <结论> ) (2.20) 如果结论结点为 IN-结点,以及下列条件成立: (1) IN-假设中的每个结点都是 IN-结点; (2) OUT-假设中的每个结点都是 OUT-结点。 那么条件证明 CP 是有效的。一般说来,OUT-假设总是空集。真值维护系统要求假设集划 分成两个不相交的子集,分别为不导致矛盾的假设和导致矛盾的假设。 条件证明 CP 的证实表示有前提的论点。一般只要在 IN-假设中的结点为 IN,OUT-假设中 的结点为 OUT,则结论结点为 IN。于是,条件证明的证实有效。处理 CP 比 SL 更难。事实上, 真值维护系统把它们转换为 SL 证实来处理。 2. 默认假设 令{F1,…,Fn}表示所有可能的候选的默认假设结点集,G 表示选择默认假设的原因的结 点,即由 G 引起在{F1,…,Fn}中进行缺省选择。这样我们给结点 Node(Fi)以如下理由: (SL(G)(F1,…,Fi-1,F i+1,…,Fn)) (2.21) 而选取 Fi 为默认假设。如果不存在任何其它关于如何进行选择的信息,则可认为除 Fi 之外其 它任何候选都不是可信的。这样 Fi 为 IN,其它 Fj(j≠i)均为 OUT。但如果接收到一个有效的 理由支持某个其它候选 Fj,则 Fj 就为 IN,而导致 Fi 的假设失败而变为 OUT。如果从假设 Fi 导 出矛盾,则相关性回溯就根据对其它为 OUT 的候选的依赖性识别出 Fi 为一缺言假设,从而使 Fi 变为 OUT,而选取另外一个候选 Fj。这样 Fj 的理由为: (SL ) (2.22) 其中 reminder 表示除 Fi 和Fj 之外的 Fk 集(1≤k≠i,j≤n)。 如果在进行默认假设选择时,候选集不完整,而那些当前尚未出现的候选肯定会在以后 www.aibbt.com 让未来触手可及 48 被发现,则上述方法就显得无能为力。对此,可采用下面的方法,它能逐渐扩大候选集。 保留上述的表示方法,令 Fi 为表示 Fi 的否定的新结点。如果在当前的知识库中不能证明 Fi,则认为 Fi 是可信的,并建立适当的理由使得如果 Fj 不同于 Fi,则 Fj 蕴含 Fi,即 Fj 是Fi 的 理由。这样就必保证 F_i 的理由为: (SL (G) (Fi)) (2.23) 而Fi 的一组理由则为: (SL (Fj)) (j≠i) (2.24) 这样,如果没有充分理由必须使用其它候选,则就假设 Fi 为一信念。但若从这种默认假 设中导出矛盾,则说明 Fj 的假设是错误的,从而证实 Fi,使 Fi 结点为 IN-结点。Fj 结点变为 OUT-结点,这时就必须使用相关性回溯来检查导致矛盾的原因,重新构造新的默认假设。 3. 相关回溯 TMS 的相关回溯是在知识库中出现不一致性时,寻找并删除已做的一个不正确的默认假 设,恢复一致性。它包括下列三个步骤: (1) 从产生的矛盾结点开始,回溯跟踪该矛盾结点的理由充足的支持以寻找矛盾的假设 集,并从中去掉至少一个假设信念以消除矛盾。这个过程首先收集导致矛盾的“极大”假设 集。所谓“极大”假设集是指理由充足的支持关系在结点上产生一个自然偏序。如果结点 N 出现在结点 M 的理由充足的支持中,那么结点 N 比结点 M“小”。而“极大”假设集则是在 这种偏序关系上为极大结点的结点集。 (2) 构造一个结点记录矛盾产生的原因。这一步根据第一步收集到的“极大”假设集分 析导致矛盾的原因。设 S={A1,… , a n}表示不一致假设集,则回溯过程生成一个称为 nogood 的 结点,它表示为: A1∧ … ∧An →false 或等价地 ┐(A1∧ … ∧An)(1) 其理由为:(CP <矛盾结点> S <>)(2) 这样即使在去掉了某个假设从而消除了矛盾之后,这个假设集的不一致性仍被记录了下 来。 (3) 从 S 中选取假设 Ai(即不合理假设),并证实列在其理由充足的支持条件中的一个 OUT- 结点。令 NG 为 nogood 结点,s 同前,D1,…,DK 是出现在支持 Ai 的信念的理由条件中,则使 用下面的理由条件 (SL (NG A1 … Ai-1 Ai+1 … An)(D2 … DK))(3) 表证实 D1,从而使 Ai 的理由条件失败。只要 nogood 和其它假设是可信的,而其它不合理假设 的否定不是可信的,那么理由条件(3)是有效的。如果 Ai 选择有误,则在以后就会产生另一个 包含 D1 的矛盾。如果在加入了(3)之后现行矛盾仍然没有消除,则重新回溯直到发现矛盾消除 为止。 这里,以找一个时间安排一次会议为例,说明相关回溯的的工作过程。首先假设日期为 www.aibbt.com 让未来触手可及 49 星期三: (1) 会议日期为星期三 (SL ( ) (2) ) (2) 会议日期不应是星期三 目前没有相信“会议日期不应是星期三” 的证实,所以结点(1)是 IN,以表示会议日期为星 期三这一假设。根据与会者的时间,安排会议系统通过推理得到会议必须在 2:00 举行的结 论,这是根据若干结点得到的。这样,真值维护系统具有如下知识库: (1) 会议日期为星期三 (SL ( ) (2) ) (2) 会议日期不应是星期三 (3) 会议时间为 14:00 (SL (32,40,61) ( )) 接着,安排会议的程序要找一间会议室,结果发现星期三下午两点钟无空会议室,于是产生 下一个结点通知 TMS: (4) 矛盾 (SL (1,3) ( )) 这时,调用相关回溯,查看矛盾结点 SL 的证实表中的结点,比如说 A1…Ak,然后向后跟 踪,通过 Ai 的 SL 证实中的结点,比如说 B1 … Bs,再回到 B 的 SL 证实中的结点,寻找假设。 试图找到这样一个假设集,只要删除该集中的某个假设,则矛盾就可消除。在此例中,这个 集只包含一个元素,即结点(1)。回溯机制通过产生一个不相容结点来记录它。 (5) 不相容 (CP 4 (1,3) ( )) 现在真值维护系统选择不相容假设中的一个,即结点(1),使它的 OUT 表中的一个结点变 为 IN 来使结点(1)变为 OUT。于是有: (2) 会议日期不应是星期三 (SL (5) ( )) 结点(2)与结点(5)为 IN,就引起结点(1)为OUT,因为结点(1)的证实依赖于结点(2)是 OUT。 结点(4)现在也变成 OUT。这样一来,矛盾就消除了,可选择一个新的日期。由于矛盾中不包 含时间,所以会议时间仍为 2:00 不变。 Doyle 在他的文章里探讨了这种非单调推理的形式化和理论问题。de Kleer 分析了这种 系统的不足之处,并设计了基于假设的真值维护系统称为 ATMS(assumption-based TMS) [de Kleer 1986]。该系统允许各种互相对立的假设和信念同时存在,克服了真值维护系统的一些 重要缺点。 ATMS 由两部分组成,一个问题求解器,一个 TMS。前者包含了领域的所有知识和推理过 程,每个推理结果都传送给 TMS。TMS 的工作则是在目前给定的理由条件下判断哪些知识是可 信的,哪些是不可信的。问题求解器向 ATMS 每次提供一个理由条件和假设,aTMS 构造一个直 接的数据结构进行快速的相容性检查。TMS 在每一时刻只能处理一组假设,而 ATMS 考虑假设 集合。ATMS 论证规则的形式为: A1,a2,…,an ⇒ D 表示:若 A1,a2,…,an 皆成立,则 D 亦成立。其中,a1,a2,…,an 称为前提,它们构成的集合称 为论据,D 称为结论。前提和结论都是结点,但都不能是恒假结点,不许带“非”符号。当前 www.aibbt.com 让未来触手可及 50 提为空时规则成为: ⇒ D 表示 D 不依赖于任何前提而成立,即为恒真结点。 限于篇幅,这里略去 ATMS 的详细讨论,读者可参阅有关文献。 2.10 情景演算的逻辑基础 在计算机科学的许多领域,“动作”(或称为行为、操作等等)是一个基本的概念。例如 在数据库理论中,对数据记录的“删除”、“插入”以及“修改”等等就是人们对数据库经常 采取的一些操作(动作)。这些操作对数据库来说无疑是最基本的而且也是最重要的。再如在 分布式人工智能中,具有多个自主的主体的系统中,主体之间是通过它们的各式行为(动作) 来相互沟通和相互影响的;在多主体系统中,一个重要的研究方向就是研究主体的知识和信 念。在这方面的研究中“行为”的概念是最基本的,它对于研究主体知识和信念的获得以及 修改等问题都是很关键的。与“动作”的概念相伴随的是所谓“进化”的概念。对于诸如数 据库中对数据的某种操作以及多主体系统中某个主体的一个行为这样的动作,对于数据库和 主体的信念都产生一定的效用,其结果就是数据库的更新和主体知识和信念的修改,也就是 所谓数据库的进化和主体知识和信念的进化。 深入研究涉及动作和进化等概念的问题,对于计算机科学具有普遍的重要意义。情景演 算是分析处理和研究涉及动作和进化问题的最常用的形式工具。在一般的利用情景演算分析 处理涉及动作和进化概念的文献中,大量的分析处理是建立在对情景演算的直观理解的意义 上的。Reiter 和林方真以数据库理论为背景,建立了一个多类逻辑(我们称之为 LR),并且 把情景演算的概念和方法在这种特殊的多类一阶逻辑的框架之内进行描述,以便为有关的研 究提供一个坚实的系统的理论基础[Lin 1994]。把情景演算集成在一个多类逻辑框架里,这 一做法的核心是:为了刻划一个动作,只需要描述动作发生的条件和动作发生以后对其环境 所产生的效果这两件事。为此,在逻辑框架 LR 中引入了“动作”,“状态”和“一般对象”这 三种个体类型,然后通过一系列的逻辑句子来表述这三种对象的最一般关系以及动作发生的 前提和后果。每个这样的句子集被称为一个基本的动作理论。从纯粹逻辑学的观点看,所谓 的“动作的基本理论”就是在特定的多类逻辑中的普通逻辑学意义下的一个理论。 我们在对 LR 进行分析的基础上建立了一个多类逻辑,作为描述动作的框架[田启家 1997]。 为了使动作的概念得到恰当的描述,我们不把动作当作为一种个体类型对待,而是把它作为 一类函数加以处理。这样做既符合对于动作的直观理解同时又使得它在逻辑框架里具有清晰 的语义。这里着重分析了所谓的极小动作理论,给出了其模型的直观表示,定义和分析了进 化的概念,并结合数理逻辑的有关方法得到了一些关于极小动作理论的进化的可定义性方面 的结论。 研究情景演算的逻辑基础,不仅仅是计算机科学的需要,对它的研究对于逻辑学的也具 www.aibbt.com 让未来触手可及 51 有重要的价值。由于一般多类逻辑的类型之间缺乏明确的直观意义,一般地,逻辑学家们认 为,可以通过引入若干一元谓词的方法把多类逻辑的研究归结为经典一阶逻辑的研究。 2.10.1 刻划情景演算的多类逻辑 LR 被定义成一种多类逻辑,在其形式语言 ℒ 中引入了三种关于个体的类型,即状态类型 s、对象类型 o 和动作类型 a,一个类型为 s 的常量符号 S0(表示起始状态),一个类型为的二元函数符号 do(描述一个动作的发生使得状态从一个变成另外一个),一个类型为 的二元关系符号 Poss(表示一个动作在一个状态之下是可能发生的),和一个类型为的 二元关系符号<(表示状态之间的先后关系)。 ℒ 中的关系符号如果其参数的类型均为 o,则称该关系符号是独立于状态的关系符号;ℒ 中的函数符号如果其自变量和因变量的类型均为 o,则称该函数符号是独立于状态的函数符 号;ℒ 中的关系符号如果其参数的类型有且仅有一个是 s,而其余的类型均为 o,则称该关系 符号是一个动态关系。LR 假定 ℒ 由有限多个常量符号、状态独立的关系符号和函数符号、有 限多个动态关系符号以及上段特别列出来的形式符号构成。 LR 中的语法概念如项、原子公式及公式等模仿一般多类逻辑的类似定义。依照习惯,ℒ 也表示此时所有一阶多类逻辑公式的集合。 给定一个状态类型的项 st,定义 ℒst 和 ℒst 2 如下: ℒst 中的公式是 ℒ 中公式的一个子集,其每个成员中除 st 外不包含其它类型为 s 的项, 不对状态变元使用量词,不包含关系符号 Poss 和<。形式地它是满足以下条件的最小的公式 集: (1) 如果 ψ ∈ ℒ 不含有任何状态类型的项,那么 ψ ∈ ℒst; (2) 对于每个有 n 个操作对象的动态关系 F 以及类型 o 的项 x1,…,xn,F(x1,…,xn,st)∈ ℒst; (3) 如果 ψ,ϕ∈ℒst,那么就有¬ψ,ψ∧ϕ,ψ∨ϕ,ϕ→ψ,ψ ↔ ϕ,∀ x ψ,∃ x ψ,∀ a ψ 以及 ∃ a ψ 都属于 ℒst,这里 x,a 分别具有类型 o 和 a。 ℒst 2 定义为满足以下条件的最小公式集: (1) ℒst ⊆ ℒst 2; www.aibbt.com 让未来触手可及 52 (2) 对于每个类型 o 的论域上的 n 元的谓词变元 p,以及类型为 o 的项 x ,p( x )∈ℒst 2; (3) 如果 ψ,ϕ∈ℒst 2,那么就有¬ψ,ψ∧ϕ,ψ∨ϕ,ϕ→ψ,ψ ↔ ϕ,∀ p ψ,∃ p ψ,∀ x ψ, ∃ x ψ,∀ a ψ 以及 ∃ a ψ 都属于 ℒst,这里 x,a 分别具有类型 o 和 a,p 是类型 o 的论域上的的 谓词变元。 2.10.2 LR 中的基本动作理论 在 LR 中,一个基本的动作理论 D 就是一个如下的一组句子: D = ∑ ∪ Dss ∪ Dap ∪ Duna ∪ Ds0 (2.25) 其中 (1) ∑是一组逻辑公式。它的直观含义是说所有类型为 s 的个体在二元关系<之下构成一 个分叉的时序结构,在其中 S0 是起点,而 do 是后继函数。而且所谓的树型归纳法也包含在其 中。具体地它包含如下的公理: S0 ≠ do(a,s); do(a1,s1) = do(a2,s2)→(a1=a2 ∧ s1=s2); ∀ P[(P(S0∧∀ a,s(P(s)→P(do(a,s))))→∀ s P(s)); ¬ (s< S0); s < do(a,s') ↔ (Poss(a,s) ∧ s≤ s')。 (2) Dss 是一组逻辑公式。它们描述了一个类型为 a 的个体按一定的规则被执行以后所产 生的效果。一般地,其中的公式具有以下的形状: Poss(a,s)→(F( x ,do(a,s)) → ψF( x ,a,s)) (2.26) 这里 F 是一个动态关系符号而 ψF 是 ℒs 中的一个逻辑公式。 (3) Dap 是一组逻辑公式。它们描述了一个类型为 a 的个体能够按一定的规则被执行的前 提条件。它们一般具有以下的形状: Poss(A( x ,s) →ψA( x ,s)) (2.27) 这里 A 是的一个动作常量,而 ψA 是 ℒ S 中的一个逻辑公式。 (4) Duna 是表达以下意义的逻辑公式:两个动作常量在两组类型为 o 的个体上执行的结果 是不同的,除非它们分别是同一个动作以及同一个个体对象的序列。它们具有如下的形状: A( x ) ≠ A'( y ); A( x ) = A( y ) → ( x = y )。 (5) D S0 是一组有限的 ℒS0 中的逻辑公式。称为基本动作理论的初始条件。 www.aibbt.com 让未来触手可及 53 2.11 框架问题 当我们试图用形式逻辑的方法表示动作或事件的影响的时候,困难之一就是框架问题。 如前面所述,框架问题就是如何表示和推演出那些在动作执行后不会发生改变的性质或事实。 该问题最早由 McCarthy 和 Hayes 提出。当某个动作执行或者某个事件发生时,如果我们使用 古典逻辑来描述什么发生了变化,我们也必须描述什么没有发生变化。否则,我们使用这些 描述得不到任何有用的结论。 当使用一阶逻辑来描述动作的影响时,则没有发生变化情况的描述要远远大于发生了变 化情况的描述。当我们描述动作的影响时,我们应该能够关注于什么发生了变化,也能够想 到什么没有发生变化。因此所谓框架问题就是建立一个形式系统来处理上述情况的问题。 2.11.1 框架公理 虽然从∆∧Σ中可以得到很多的结论,但是仍然有一些我们希望的结果无法得到。例如,在 S0 中,B 在 C 的上面,移动 A 到 D 并没有改变这个事实,但是我们并没有: ∆∧Σ |= Holds(On(B, C), Result(Move( A, D), S0)) 也就是说,我们可以得到一个动作作用后,什么发生了改变,但是并不能得到什么没有 发生改变。一般来说,动作只是具有“局部的”影响,很多的流并没有发生改变。为了对那 些没有受到动作的影响,持续不变的流进行推理,需要为每个流和动作增加一些框架公理。 例如,对流 On,有框架公理: Holds(On(v, w), Result(Move(x, y), s)) Å Holds(On(v, w), s) ∧ x≠v 该框架公理是说,在移动 x 到 y 上之前,v 是在 w 上,则移动以后 v 仍然在 w 之上(只要 v 不 是被移动的积木)。这样,加上∆就可以得到 Holds(On(B, C), Result(Move( A, D), S0))。对于流 Clear,具有类似的框架公理: Holds(Clear(x), Result(Move(y, z), s)) Å Holds(Clear(x), s) ∧ x≠z 下面向积木世界中增加一个新的动作和新的流。 y Color(x, c):表示积木 x 具有颜色 c 这一事实。 y Paint(x, c):表示在积木 x 上涂上颜色 c 这一动作。因为涂色总能够成功,因此 没有前提条件。 这样在∆中又会增加下面的公式: Holds(Color(x, c), Result(Paint(x, c), s)) 假设情景 S0 的描述和Σ中是一样的,只是所有的积木都是红色的: Holds(Color(x, Red), S0) 令∆’和Σ’分别表示新的域描述和新的 S0 描述。移动一个积木并不会改变该积木的颜色, 并且如果没有其他的公理就无法得到下面的结论: ∆’∧Σ’ |= Holds(Color(A, Red), Result(Move( A, D), S0)) 因此需要增加下面两个公理:积木的颜色在移动动作下保持不变;积木的颜色不受其他 积木是否涂色的影响。 Holds(Color(x, c), Result(Move(y, z), s)) Å Holds(Color(x ,c), s) Holds(Color(x, c1), Result(Paint(y, c2), s)) Å Holds(Color(x ,c1), s) ∧ x ≠y 除了上面的公理外,动作 Paint 也不会对 On 和 Clear 流产生影响: Holds(On(x, y), Result(Paint(z, c), s )) Å Holds(On(x ,y), s) www.aibbt.com 让未来触手可及 54 Holds(Clear(x), Result(Paint(y, c), s)) Å Holds(Clear(x), s) 至此,我们得到了一个由九个公式和六个框架公理组成的域描述。框架公理被用来证明 如果状态由一个不影响属性的动作改变,那么这个属性保持不变。一般来说,大多数动作不 会对大多数流产生影响,每次增加一个新的流都需要增加和域中动作数大致一样多的新的框 架公理,并且每次增加一个新的动作,都需要增加和域中流的数量大致一样多的框架公理。 或者说,在一个域中,如果有 n 个流和 m 个动作,则总的框架公理数为:n×m[Shanahan 1997], 这样用情景演算的方式来表达动作如何改变世界就会变得很难管理。 有人就如何减少大量的框架公理数进行了研究。问题是即使能够减少大量的框架公理, 用它们对关于在几个动作序列上什么流不会改变的推理的计算仍然是笨重的。 在古典、一阶逻辑中,在不对情景演算做大的改变的情况下,也可以找到一种简洁的方 法来表示框架公理中的信息。例如,前面所给出的框架公理都有如下的形式: Holds(f, Result(a, s)) Å Holds(f, s) ∧ Π 其中 f 是一个流,a 是一个动作,Π是一个合取式。这样,就可以采用所谓的通用框架公理表 示上述的框架公理形式: Holds(f, Result(a, s)) Å Holds(f, s) ∧ ¬ Affects(a, f, s) 这样,对每个原有的框架公理,需要增加一个负原子 Affects。例如对于积木世界,有: ¬ Affects(Move(x, y), On(v, w), s) Å x ≠ v ¬ Affects(Paint(z, c), On(x, y), s) ¬ Af fects(Move(y, z), Clear(x), s) Å x ≠ z ¬ Affects(Paint(y, c), Clear(x), s) ¬ Affects(Move(y, z), Color(x, c), s) ¬ Affects(Paint(y, c2), Color(x, c1), s) Å x ≠ v 根据这些公理,可以推出和前面一样的结论。虽然每个公理比前面给出的公理形式上简 洁了一些,但是现在的主要问题是公理的数量问题。如果再对上述公理进行整理,则还可以 减少公理的数量。 Affects(a, On(x, z), s) Æ a = Move(x, y) Affects(a , Clear(x), s) Æ a = Move(x, y) Affects(a , Color(x, c2), s) Æ a = Paint(x, c1) 上述这些公理就是所谓的解释闭包公理(explanation closure axioms)。解释闭包公理是框 架公理的代换,但是更加地简洁。它们构成了框架问题的单调解决方案的基础。 2.11.2 框架问题解决方案的准则 怎样以一种形式化的、逻辑的方法表示动作的影响,而不用写出所有的框架公理?这就 是框架问题所要研究的问题。这里我们需要考虑:对框架问题的一个解决方案,什么是该方 案可接受的准则?在[Shanahan 1997]中,作者给出了三个准则: z 表示的简洁性(representational parsimony) z 表达的灵活性(expressive flexibility) z 精细的容错性(elaboration tolerance) 对于表示的简洁性,这是框架问题的本质,它是说对动作影响的表示应该是简洁的。由 于无法对该简洁性给出准确的量化,一个可行的方案是表示的大小大致是和论域复杂程 度成正比,论域复杂度一个比较好的指标是动作的总数量加上流的总数量。 一个有效的框架问题解决方法需要能够应用于广泛的涉及表示的问题,对于一个复杂的 www.aibbt.com 让未来触手可及 55 领域,简洁的表示方法还有很多问题需要解决,因此框架解决方案还需要满足第二个准则: 表达的灵活性。这里复杂的领域并不仅仅是说有更多数量的动作和流,更主要的是指这些领 域有其特殊的性质,在表示它们之前可能需要进行深入地思考和研究。例如,它们可能具有 下面的特性: z 分枝(ramification) z 并发动作 z 非确定动作 z 连续动作 如果我们考虑领域的限制的话,一个动作除了它的直接影响外,还有一些分枝。领域的 限制(有时称为状态限制)是指在同一情景下流的什么样的组合可以保持不变。例如,我们 只有三个积木,一个放置在另一个上面。令流 Stack(x, y, z)表示积木 x、y、z 为一个堆。可以 像对流 On、Clear、Color 一样给出流的效应公理,不过这里用下面的公式通过领域限制来表 示堆的效应公理: Holds(Stack(x, y, z), s)Å x ≠Table ∧ Holds(On(y, x), s) ∧Holds(On(z, y), s) 在我们至今所考虑的积木世界的例子中,没有出现过两个动作同时执行的情况。实际上 并发的动作或事件每天都在发生。例如当有多个人来移动积木的时候,就会有同时发生的动 作。使框架问题难于处理的另一个复杂领域特性是非确定性动作或动作的影响并不完全知道。 复杂领域的再一个特性是连续动作的发生。显然,连续动作也是到处存在的,如行进中的汽 车、填充容器等等。积木世界的情景演算表示目前为止都是离散的。这样表示并不是说所表 示出的改变都是离散的,而是便于抽象。然而,用离散的方法进行抽象并不总是合适的,有 的领域中有些量的连续变化是其很重要的特性,需要用连续的方法进行表示。连续变化在情 景演算中非常难于表示,这是研究事件演算的动机之一。在事件演算中,无需太多的困难就 可以表示连续的动作。 最后一个评价准则是精细的可接受程度。一个表示是精细可接受的,是指当向表示中增 加新的信息的时候,所付出的努力是和信息的复杂程度成正比的。如果扩充一个情景演算理 论,增加一个动作时会影响到 n 个流,可能会需要增加 n 个句子,但是这并不需要完全地重 新构造原有的理论。受新的动作所影响的事实需要逐渐地加入到原有的理论中。 但是对于一个动作具有分枝等性质的领域来说,仅仅简单地扩充解释闭包公理是不够的, 需要重新地构造,对原有系统做大的改进。在单调性机制下重新构造解释闭包公理以融合新 的动作和流是很困难的,需要有大量的计算。因此,如果我们在单调性领域中处理框架问题, 看来是无法满足精细程度的要求,因此可以说无法用单调的方法来处理框架的问题。其根本 原因就是单调性机制下必须以框架公理或解释闭包公理的形式对动作执行后没有发生变化的 性质给出“显式”的描述。为解决这一问题,人工智能研究者提出了非单调推理机制,其中 最常用的推理机制包括 McCarthy 的限制理论和 Reiter 缺省逻辑。可以说,框架问题的研究是 促使进行非单调推理研究的动力之一。用非单调机制解决框架问题的核心思想在于形式化地 刻画如下一条常识性原则:惯性原则(law of inertia),即在典型的情况下,一个性质在动作执 行后不发生变化的。 在大多数情况下,人们一般只是写出效应公理,而对于其他情况会缺省地认为“没有发 生改变”,然后借助某些非单调机制来推出结论。从二十世纪八十年代早期以来,已经有了一 些非单调机制用来处理这种问题,最常用的有限制理论和缺省逻辑。另外,如果语义定义的 合适的话,逻辑程序设计的否定看作失败也可以用来处理这种问题。 www.aibbt.com 让未来触手可及 56 2.11.3 框架问题的非单调解决方案 最先用非单调机制解决框架问题的是 McCarthy,他提出了著名的限制理论,并尝试用限 制理论来解决框架问题。限制理论能够说明一些谓词的扩展是最小的。例如从公式集Γ 可以 推出 P(A),但是除了 A 外,对其他所有的 x,我们并不能证明 P(x)或者¬P(x)。这是由于Γ最 小化 P 的限制,记作 CIRC[Γ; P],即对所有的 x,除非Γ 说明 P(x)为真,否则都为假。例如, 从 CIRC[Γ; P]可以得到¬P(B)。 显然使用限制理论解决框架问题的方法是最小化谓词 Affects。这就是 McCarthy 所建议的 方法,不过他定义的是谓词 Ab 而不是 Affects。但是最小化 Affects 会产生违背直觉的结果。 最著名的例子就是所谓的耶鲁射击(Yale Shooting)问题。 根据 McCarthy 和 Hayes 以及 Sandewall 的观点:解决框架问题的关键是对惯性原则的形 式化,惯性原则是指: 惯性是正常的,变化是异常的 对惯性原则的形式化包含对下面缺省规则的形式化。 正常情况下,对于任何动作(或事件)和任何流,动作并不会对该流有所影响。 考虑前面提到的通用框架公理,由于有了负信息,因此框架公理需要考虑到负和正的信 息的不变性。即通用框架公理应该表示一个流应该具有和动作执行前一样的值(正或负),除 非动作影响到了流,即该公理是说如果一个动作没有影响到流,则在该动作执行前后,该流 不变。 F1: [Holds(f, Result(a, s)) ↔ Holds(f, s)]Å ¬ Affects(a, f, s) (2.28) 这样就留给了我们复杂的工作:准确地说明哪个流没有受到哪个动作的影响。这也是框 架问题的本质。 用 McCarthy 建议的 Ab 谓词代替 Affects 得到: F2: [Holds(f, Result(a, s)) ↔ Holds(f, s)]Å ¬ Ab(a, f, s) (2.29) 假设,用Σ表示效应公理、领域限制和观察到的句子的总和。扩充Σ以包含惯性原理的简 单方式是结合(F2)然后限制它,极小化 Ab 并允许 Holds 变化。换句话说,研究 CIRC[Σ∧(F2); Ab ; Holds]。 极小化 Ab 并允许 Holds 变化的限制策略看来似乎能够解决框架问题。然而,McDermott 和 Hanks 在 1968 年的工作表明,极小化 Ab 并允许 Holds 变化这种方法即使对于非常简单的 例子可能也得不到我们所需要的结论。他们把这种困难用一个简单的例子来说明,这就是著 名的耶鲁射击问题。 在耶鲁射击问题中,某人被一枪打死了。McDermott 和 Hanks 的形式化包含 „ 三个动作:Load、Wait 和 Shoot。 „ 两个流:Alive、Loaded。 „ 两个效应公理:Load 动作往枪里填装了子弹;只要枪里有子弹,在 Shoot 动作 后,受害人死了。 Y1: Holds(Loaded, Result(Load, s)) (2.30) Y2: ¬Holds(Alive, Result(Shoot, s)) Å Holds( Loaded, s) (2.31) „ 另外还有两个观察到的句子:在开始受害人是活着的;枪是没有子弹的。 Y3: Hold(Alive, S0) (2.32) Y4: ¬Holds(Loaded, S0) (2.33) 下面首先定义一个谓词:UNA,表示名字的唯一性(uniqueness-of-name)。 UNA(f1, f2, …, fk )表示: www.aibbt.com 让未来触手可及 57 对所有的 i对。其中∆是缺省规则集合,Σ 是一阶谓词演算的子句。 www.aibbt.com 让未来触手可及 58 Σ包含了领域知识,从中可以进行有效的演绎推理。∆表示缺省知识,从中可以得到缺省 结论。这里所考虑的缺省理论<∆,Σ>为: ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ ¬ ¬=∆ ),,( ),,(: sfaAb sfaAb 而Σ是由上一小节的(Y1)到(Y4)和(F2)组成。 定义 2.25 如果合式公式是缺省理论<∆,Σ>关于操作符Γ的固定点(定义如下),则该合式 公式是缺省理论<∆,Σ>的扩张。如果 S 是没有自由变量合式公式集合,则Γ(S)是最小的这样 的集合: z Σ⊆Γ(S) z 如果φ是Γ(S)的逻辑结论,则φ∈Γ(S),并且 z 如果∆包括缺省规则, )( )(:)( 3 21 x xx φ φφ 并且φ1(τ1…τn)∈ Γ(S),¬φ2(τ1…τn)∉ Γ(S),则φ3(τ1…τn)∈ Γ(S),其中每个τi 都是 没有变量的项。 每个缺省理论扩张该理论可接受的信念的集合。扩张的方法是很自然的:初始情况下, 扩张集合仅仅包括Σ及其结论,然后重复选择可用的缺省规则,增加其结论,并形成相应的演 绎闭包,直到再没有可以增加的结论。 详细地说,给定缺省理论<∆,Σ>,可以基于下面的算法来构造扩张。由于在这里我们只 有规范缺省规则,所以可以具有下述的算法: S’= { } S= Σ∪ Σ的逻辑结论 While S<> S’ S’ :=S 选择任意的φ1、φ2、φ3 以及τ1,…,τn,有 )( )(:)( 3 21 x xx φ φφ 属于∆ 并且φ1(τ1…τn)∈ S,¬φ2(τ1…τn)∉ S S= S∪φ3(τ1…τn) S= S∪ S 的逻辑结论 End While 由于缺省规则可以应用无限次,因此对于很多情况,上述算法并不终止。但是,在这种 情况下,每个中间 S 也是某种扩张的子集,所以仍然可以使用上述算法通过执行有限次的循 环获得一些有用的信息。 下面我们把上述算法应用于缺省理论,以表示耶鲁射击问题。 开始时,集合 S= Σ∪ Σ的逻辑结论,选择下面的缺省规则: ¬Ab(Wait, Loaded, Result(Load, S0)) 由于它可 S 不矛盾,所以它是可行的。则由(F2),增加: Holds(Loaded, Result(Wait, Result(Load, S0))) www.aibbt.com 让未来触手可及 59 因此由(Y2): ¬Holds(Alive, Result(Shoot, Result(Wait, Result(Load, S0)))). 上述算法本可以继续进行下去,但是我们已经得到了扩张,该扩张包含了我们所需要的 结论。上述扩张是一种有目的、计划好的扩张。下面讨论不规则的(anomalous)扩张,即当 应用缺省规则的时候,和上面的选择不一样。开始时,集合 S= Σ∪ Σ的逻辑结论。但是现在应 用缺省规则时,选择: ¬Ab(Shoot, Alive, Result(Wait, Result(Load, S0))) 该缺省规则和 S 是一致的,因此可以增加到 S 中。现在增加逻辑结论: ¬Holds(Loaded, Result(Wait, Result(Load, S0))) 我们已经知道: Holds(Loaded, Result(Load, S0)) 因此有: Ab(Wait, Loaded, Result(Load, S0)) 这样我们就得到了不希望的结果: Holds(Alive, Result(Shoot, Result(Wait, Result(Load, S0)))). 可见,缺省逻辑和限制理论一样对耶鲁射击问题都会产生不规则的扩展。也就是说 Hanks 与 McDermott 问题并不仅仅是限制理论的问题。另外,上面的扩展也说明为什么会出现这样 的问题。当有次序地应用缺省规则的时候,就是有目的的扩展,也就是说最早的异常最先考 虑。当缺省规则以相反的次序应用的时候,就是不规则的扩展,也就是后面的异常优先考虑。 或者说,有目的的扩展是把变化尽可能推迟发生。这就是所谓的次序极小化方法。 次序极小化可以解决耶鲁射击问题的不规则扩展,并可以得到所需要的结论[朱朝晖 2001]。这是一个进步,但是耶鲁射击问题仅仅是一个例子,对于其他问题是否会有 Hanks 与 McDermott 问题或类似的问题出现呢?这是很重要的问题,确实有很多例子可以看到次序 极小化也会得到和直觉相佐的结论。著名的例子就是所谓的丢车问题(stolen car)。 耶鲁射击问题可以看作是一种时序投影问题(projection problem),或者是预测问题 (prediction problem)。在这类问题中,我们知道在初始状态下,什么流成立,并且我们想知 道在一系列动作之后,什么流成立。投影问题是一种在时间上向前的推理,是从因到果的推 理。 丢车问题一般被看作解释问题(explanation problem)。在解释问题中,我们已知某些流在 某些状态下成立,但是在初始状态并不成立,我们想知道是什么使得这些流成立,因此解释 问题是在时间上向后的推理,是结果到可能的原因的推理。 丢车问题是指:一个人早上把车停在停车场并去工作,根据常识,根据惯性原则,中午 时该车应该还在停车场,但是当晚上该人去停车场时,发现车不见了。现在需要找出车不见 了的原因。唯一合理的解释就是该车在早上到晚上之间被偷走了。因此以前的缺省假设:中 午时车还在停车场就值得怀疑了。 丢车问题可以表示成以下三个句子。这里采用两个连续的 Wait 动作,而不是显式地表示 从早到晚这一时间区间。唯一的流是 Stolen,表示汽车不在停车场。 SC1: ¬Holds(Stolen , S0) (2.38) SC2: S2=Result(Wait, Result(Wait, S0)) (2.39) SC3: Holds(Stolen, S2) (2.40) 这可能并不是表示丢车问题最好的方法,但是它可用来说明次序极小化的难点,它给出 了一个很强的结论,即汽车是在第二个 Wait 期间丢失的。这里首先给出两个公理(考虑情景 空间为树形结构): Arb1:Result(a1, s1)=Result(a2, s2) Æ a1= a2 ∧ s1=s2 (2.41) www.aibbt.com 让未来触手可及 60 Arb2: S0 ≠ Result(a , s) (2.42) 那么由(SC1)到(SC3)和(Arb1)、(Arb2)、(F2)可以得到: Ab(Wait, Stolen, Result(Wait, S0)) ∧ ¬Ab(Wait, Stolen, S0)。 实际上汽车也可以是在第一个 Wait 之后丢失的,即我们希望有: Ab(Wait, Stolen, Result(Wait, S0)) ∨ Ab(Wait, Stolen, S0)。 成立,并且存在模型 M1、M2 有 M1 |= Ab(Wait, Stolen, Result(Wait, S0)) M2 |= Ab(Wait, Stolen, S0) 解决 Hanks 和 McDermott 问题的另一种方法是因果极小化(Causal minimization)方法 [Shanahan 1997][ 朱朝晖 2001]。在因果极小化中,所有的改变都是由动作引起的。这种方法 用显式表达的理由刻画如下的思想:任意流的值发生变化当且仅当有成功执行的动作引起它 发生改变,即任何改变都要有依据。 在该方法中,Lifschitz 在系统中引入了新的三元谓词 Cause(a, f, v)表示如行动 a 成 功执行,则流 f 取值为 v。例如,对于耶鲁射击问题,有 Cause(Shoot, Alive, false),Shoot 的前提为 Loaded。Lifschitz 对 Cause 进行限定(允许 Holds 变化),由于 Cause 不含情景变 元,对其进行限定时不会引起 McCarthy 方法中在不同情景下的冲突。另外,对 Cause 进行限 定意味着模型中动作产生的效果越少模型越优先,在耶鲁射击问题中,对行动 Wait 没有显示 地效果说明,利用对 Cause 的限定就保证了 Wait 在优先模型中不会引起任何流的变化,所以 Lifschitz 方法可以解决耶鲁射击问题。 2.12 动态描述逻辑 DDL 2.12.1 描述逻辑 描述逻辑是一种基于对象的知识表示的形式化,也叫概念表示语言或术语逻辑。它是一 阶逻辑的一个可判定的子集,具有合适定义的语义,并且具有很强的表达能力。一个描述逻 辑系统包含四个基本组成部分:表示概念和关系的构造集;TBox 包含断言;ABox 实例断言; TBox 和 ABox 上的推理机制。一个描述逻辑系统的表示能力和推理能力取决于对以上几个要素 的选择以及不同的假设[Baader 2003]。 描述逻辑中有两个基本元素,即概念和关系。概念解释为一个领域的子集;关系则表示 在领域中个体之间所具有的相互关系,是在领域集合上的一种二元关系。 在一定领域中,一个知识库 K = 由两个部分组成:TBox T 和 ABox A。其中 TBox 是一个关于包含断言的有限集合,也称为术语公理的集合。包含断言的一般形式为 C ⊑ D, 其中 C 和 D 都是概念。ABox 是实例断言的有限集合,形为 C(a),其中 C 是一个概念,a 是一 个个体的名字;或者形为 P(a, b),其中 P 为一个原始关系,a, b 为两个个体的名字。 www.aibbt.com 让未来触手可及 61 一般地,TBox 是描述领域结构的公理的集合,它具有两方面的作用,一是用来引入概念 的名称,二是声明概念间的包含关系。引入概念名称的过程即可以表示为 A ≐ C 或者 A ⊑ C, 其中 A 即为引入的概念。概念间的包含关系的断言可以表示为 C ⊑ D。对于概念定义和包含 关系,有:C ≐ D ⇔ C ⊑ D 且 C ⊑ D。 ABox 是实例断言的集合,用于指明个体的属性或者个体之间的关系。它有两种形式的断言, 一是指明个体与概念间的属于关系,二是指明两个个体之间所具有的关系。在 ABox 中,对于 论域中任意个体对象 a 和概念 C,关于对象 a 是否为概念 C 中的元素的断言称之为概念实例断 言,简称概念断言。若 a∈C,则记为 C(a);若 a∉C,则记为¬C(a)。 对于两个对象 a,b 和关系 R,如果 a 和 b 满足关系 R,则称 a R b 为关系实例断言,表 示为 R(a, b)。关系断言是用来指明两个对象之间所满足的基本关系或者对象的属性,构成二 元关系。 一般地,描述逻辑依据提供的构造算子,在简单的概念和关系上构造出复杂的概念和关 系。通常描述逻辑至少包含以下算子:交(⊓),并(⊔),非(¬),存在量词(∃)和全称量词(∀)。 这种最基本的描述逻辑称之为 ALC。在 ALC 的基础上再添加不同的构造算子,则构成不同表达 能力的描述逻辑。例如若在 ALC 上添加数量约束算子“≤”和“≥”,则构成描述逻辑 ALCN, 这里不做详细介绍。ALC 的语法和语义如表 2.1 所示。 ALC 语义将概念解释为一定领域的子集,关系是该领域上的二元关系。形式上,一个解 释 I = (ΔI,·I)由解释的领域ΔI 和解释函数·I 所构成,其中解释函数把每个原子概念 A 映 射到ΔI 的子集,而把每个原子关系 P 映射到ΔI×ΔI 的子集。 z 一个解释 I 是包含断言 C⊑D 的模型,当且仅当 CI ⊆DI; z 解释 I 是 C(a)的模型,当且仅当 a∈CI;I 是 P(a, b)的模型,当且仅当(a, b) ∈PI; z 解释 I 是知识库 K 的模型,当且仅当 I 是 K 中每个包含断言和实例断言的模型; z 若 K 有模型,则称 K 是可满足的; z 若断言δ对于 K 的每个模型是满足的,则称 K 逻辑蕴含δ,记为 K⊨δ。 z 对概念 C,若 K 有一个模型 I 使得 CI≠∅,则 称 C 是可满足的。知识库 K 中的概念 C 的可满足性可以逻辑表示为 K ⊭ C⊑⊥。 表2.1 ALC 的语法和语义 构造算子 语法 语义 例子 原子概念 A AI ⊆ΔI Human 原子关系 P PI⊆ΔI×ΔI has-child www.aibbt.com 让未来触手可及 62 顶部 ⊤ ΔI True 底部 ⊥ Φ False 交 C⊓D CI⋂DI Human ⊓ Male 并 C⊔D CI⋃DI Doctor ⊔ Lawyer 非 ¬C ΔI–CI ¬Male 存在量词 ∃R.C {x|∃ y, (x, y) ∈RI ∧ y∈CI } ∃has-child.Male 全称量词 ∀R.C {x|∀ y,(x, y) ∈RI ⇒ y∈CI } ∀has-child.Male 关于描述逻辑中的基本推理问题,主要包括概念的可满足性、概念的包含关系、实例检 测、一致性检测等,其中概念的可满足性问题是最基本的问题,其它的推理基本上都可以转 化为概念的可满足性问题。 在描述逻辑中,可以利用下述性质对推理问题进行约简,转化为概念的可满足性问题, 进而将推理问题进行简化。对于概念 C, D,有如下命题成立: (i) C⊑D ⇔ C⊓¬D 是不可满足的; (ii) C≐D 是等价的 ⇔ (C⊓¬D)与(D⊓¬C)都是不可满足的; (iii) C 与 D 是不相交的 ⇔ C⊓D 是不可满足的。 2.12.2 动态描述逻辑的语法 由于动态描述逻辑是在传统描述逻辑的基础上扩充得到的[Shi 2005],而传统描述逻辑 有很多种类,本节以最小的描述逻辑 ALC 为基础来研究动态描述逻辑 DDL。 定义 2.26 在 DDL 的语言中包括以下基本符号: ♦ 概念名:C1, C2, …; ♦ 关系名:R1, R2, …; ♦ 个体常元:a, b, c, …; ♦ 个体变元:x, y, z, …; ♦ 概念运算:¬, ⊓, ⊔以及量词:∃, ∀; ♦ 公式运算:¬, ∧, →以及量词∀; ♦ 动作名:A1, A2, …; ♦ 动作构造:如 ;(合成),⋃ (交替),* (反复),?(测试); ♦ 动作变元:α,β, …; ♦ 公式变元:ϕ, ψ, π, …; ♦ 状态变元:u, v, w, …。 定义 2.27 在 DDL 中,概念定义如下: www.aibbt.com 让未来触手可及 63 (1) 原子概念 P、全概念⊤、和空概念⊥都是概念; (2) 如果 C 和 D 是概念,则¬C,C⊓D,C⊔D 都是概念; (3) 如果 R 为关系,C 为概念,则∃R.C,∀R.C 都是概念; (4) 如果 C 是概念,α是动作,则[α]C 也是概念。 定义 2.28 DDL 的公式定义如下,其中 C 为任意概念,R 为关系,a, b 为个体常元,x, y 为个体变元,α是动作: (1) 形如 C(a),R(a, b)和[α]C(a)的表达式称为断言公式,它们是不带变元的; (2) 形如 C(x),R(x, y) 和[α]C(x)的表达式称为一般公式,它们是带变元的; (3) 断言公式和一般公式都是公式; (4) 如果 ϕ 和 ψ 是公式,则¬ϕ,ϕ∧ψ,ϕ→ψ,∀xϕ 都是公式; (5) 如果 ϕ 是公式,则[α]ϕ 也是公式。 定义 2.29 形如{a1/x1, …, an/xn}的有穷集合称为一个实例代换,其中 a1, …, an 为个体 常元,称为代换项,x1, …, xn 为个体变元,称为代换基,它们满足 xi≠xj,i, j∈{1, …, n}, i!= j。 定义 2.30 设 ϕ 为一公式,x1, …, xn 为出现在 ϕ 中的个体变元,a1, …, an 为个体常元,令 ϕ′为 ϕ 通过实例代换{a1/x1, …, an/xn}而得到的公式,则称 ϕ′为公式 ϕ 的实例公式。  定义 2.31 DDL 中条件(condition)定义如下,其中 NC 表示个体常元的集合,NX 表示个 体变元的集合,NI 是 NC 和 NX 的并,即 NI = NC∪NX : ∀C,C(p),R(p,q),p=q,p≠q。其中 p,q∈NI ,C 是 DDL 的概念,R 是 DDL 的关系。 定义 2.32 一个动作描述是一个形如 ),(),...,( 1 AAn EPxxA ≡ 的表达形式,其中: (1) A 为动作名:指示动作表示符; (2) x1, …, xn 为个体变元,指定动作的操作对象,因此也称之为操作变元; (3) PA 为前提公式集(pre-conditions),指定动作执行前必须满足的前提条件,即 PA ={con | con∈ condition}; (4) EA 为结果公式集(post-conditions),指定动作执行后得到的结果集,EA 是序对 head ⁄ body 的集合,其中 head ={con | con∈condition},body 是一个条件。 说明:(1)动作定义了状态间的转换关系,即一个动作 A 将一个状态 u 转换成状态 v,如 果在状态 u 下应用动作 A 则产生状态 v。这种转换关系依赖于状态 u, v 是否分别满足动作 A 的前提公式集(pre-conditions)和结果公式集(post-conditions),记作 u TA v。 (2)因为动作 A 发生以前的状态也可以影响动作 A 的结果,因而前提公式与结果公式在 描述上有些不同。对于结果公式 head ⁄ body,如果 head 中的每个条件在状态 u 中满足,则 body 中的每个条件在状态 v 中满足。 (3)当动作 A 为空时,这意味着动作在任何状态都是可执行的,则 A 表示了静态的规则 www.aibbt.com 让未来触手可及 64 head ⁄ body,从此可以看出 DDL 中动作还可以用于描述领域的约束规则。或者说,给定一条 head←body 形式的规则,我们可以用一个动作来表示: })/{,(),...,( 1 bodyheadxxA n φ≡ 。 定义 2.33 设 ),(),...,( 1 AAn EPxxA ≡ 为一个动作描述,A(a1, …, an)是在 A(x1, …, xn) 上经过实例代换{a1/x1, …, an/xn}而得到的,则称 A(a1, …, an)为 A(x1, …, xn)的动作实例, 并称 A(a1, …, an)为原子动作,PA ( a1, …, an) 称为动作 A(a1, …, an)的前提集,EA ( a1, …, an) 称为动作 A(a1, …, an)的结果集。 定义 2.34 DDL 的动作定义如下: (1) 原子动作 A(a1, …, an)是动作; (2) 如果α和β为动作,则α;β,α⋃β,α*都是动作; (3) 如果 ϕ 为断言公式,则 ϕ?也是动作。 2.12.3 动态描述逻辑的语义 动态描述逻辑 DDL 的语义是由以下各部分组成的一个结构: 1. 非空集合Δ,是 DDL 形式系统中所讨论的所有个体对象的集合,称为论域; 2. 非空集合 W,是 DDL 形式系统中所有状态的集合,称为状态集; 3. 一类被称之为解释的映射 I,它对 DDL 中的个体常元、概念和关系加以解释: (i) 个体常元是论域Δ中一个元素; (ii) 概念是论域Δ的子集; (iii) 关系是该论域上的二元关系; 4. 在状态集 W12 之上的二元关系 A 称之为动作,它对状态集 W 之上的转换关系进行解释。 下面分别进行语义解释。首先,对于 DDL 中的一个状态 u,该状态下的解释 I(u) = (Δ,•I(u)) 由论域Δ和解释函数•I(u)所构成,其中解释函数把每个原子概念映射到Δ的子集,把每个原子 关系映射到Δ×Δ的子集。概念和关系的语义表示如下: z 全概念⊤的语义为论域Δ,即⊤I (u) =Δ; z 空概念⊥的语义为空集∅,即⊥I (u) = ∅; z 若 C 为概念,则 C I(u) ⊆Δ; z 若 R 为关系,则 R I(u) ⊆Δ×Δ; z (¬C) I(u) =Δ−C I(u); z (¬R) I(u) =Δ×Δ−R I(u); www.aibbt.com 让未来触手可及 65 z (C⊓D) I(u) = C I(u)⋂D I(u); z (C⊔D) I(u) = C I(u)⋃D I(u); z (∃R.C) I(u) = {x|∃y, (x, y) ∈R I(u) ∧ y∈C I(u) }; z (∀R.C) I(u) = {x|∀y, (x, y) ∈R I(u) ⇒ y∈C I(u) }; z ([α]C) I(u) = {x|uTαv,x∈(C) I(v)}。 由于个体常元并不依赖于一定的状态,因此本文采用个体常元的刚性原理,规定个体常 元的命名都是唯一的,且不随状态的变化而变化。因此在下面的语义解释中,把个体常元在 不同状态的解释 a I(u)都简记为 a。 下面对 DDL 中的条件进行语义解释。给定动作 ),(),...,( 1 AAn EPxxA ≡ , A XN 是发生在 A 中所有变量的集合,I = (ΔI,·I)是一个解释,映射γ: A XN →ΔI 是对动作 A 中变量的赋值。对 于 DDL 的 ABox 中的个体常元 a∈NC,·I 将 a 解释为ΔI 中的一个元素,即 aI∈ΔI。为了简便, 对于个体变量或个体常元 p∈NI,定义它们的解释如下: ⎩ ⎨ ⎧ ∈ ∈= C I XI Npp Nppp ,如果 如果),(, γγ ,则 DDL 的条件的语义解释为: z 如果 CI =ΔI,则 I 和γ满足条件∀C; z 如果 aI,γ ∈ CI,则 I 和γ满足条件 C(a); z 如果 aI,γ = bI,γ,则 I 和γ满足条件 a = b; z 如果 aI,γ ≠ bI,γ,则 I 和γ满足条件 a ≠ b; z 如果< aI,γ ,bI,γ> ∈RI,则 I 和γ满足条件 R(a,b)。 在一定状态 u 下,DDL 的断言公式将个体常元同概念和关系进行关联,它们可以分为两 类,形如 C(a)的断言公式称为概念断言,形如 R(a1, a2)的断言公式称为关系断言。对于概念断 言,它们用来说明一定状态下某个体常元与某概念之间的关系,即元素与集合之间的关系, 其语义解释为: z u⊨C(a) iff a∈C I(u); z u⊨¬C(a) iff a∉C I(u)。 例如,在一定状态下,a 是一块积木,表明 a 是属于积木这个概念,可以表示为 Block(a); b 是一个按钮可以表示为 Button(b)。 关系断言是用来指明在一定状态下两个个体对象之间所满足的基本关系或者某个体对象 的属性,是一种二元关系。其语义解释为: www.aibbt.com 让未来触手可及 66 z u⊨R(a1, a2) iff (a1, a2)∈R I(u); z u⊨¬R(a1, a2) iff (a1, a2)∉R I(u)。 例如,在某状态下,主体 a1 和主体 a2 是熟人,可以表示为 hasAquaintance(a1, a2);物体 a 压在物体 b 上,可以表示为 On(a, b)。关系断言同时也可以表示对象的一些基本属性,例如, 按钮 b1 处于开启状态,可以表示为 hasState(b1, ON);物 体 a 的长度为 10,表 示 为 hasLength(a, 10)。 类似地,在一定状态 u 下,由断言公式组合而成的公式的语义可以解释如下,其中 ϕ,ψ 为断言公式: z u⊨¬ϕ    iff u⊭ϕ    (即在状态 u 下推导不出 ϕ)  z u⊨ϕ∧ψ  iff u⊨ϕ 且 u⊨ψ;  z u⊨ ϕ→ψ  iff u⊨ϕ ⇒ u⊨ψ;  下面对动作的语义进行解释。动作的执行导致世界状态的变化,因此动作也可以定义为 一种状态转换关系。而状态变化的过程实际上就是论域中个体的属性以及个体之间的关系的 动态变化过程,因而每个状态下所有个体的属性、关系等事实的描述构成世界的状态描述, 它们都可以按动作描述(定义 7)来表示。因此 DDL 中讨论的状态实际上就对应于该状态下 的动作描述中对所有条件的解释,这样就可以利用上述对条件的语义解释和传统描述逻辑的 语义解释方法来理解动作的语义。在定义动作的语义之前,首先定义动作如何将一个状态转 换成另一个状态。 定义 2.35 给定状态 u 和状态 v 下的两个解释 I(u) = (Δ,•I(u))和 I(v) = (Δ,•I(v)),在状态 u 下 应用动作α= (Pα,Eα)能产生状态 v(记为 u α→ v),如果存在一个赋值映射γ: α XN →Δ,使 得γ、I(u)和 I(v)满足下列条件: (1) I(u)和γ满足前提公式集 Pα中的每个条件; (2) 对于结果公式集 Eα中的每个序对 head ⁄ body,如果 I(u)和γ满足 head,则 I(v) 和γ满 足 body。 这时也称在赋值映射γ和状态 u 下动作α能产生状态 v,记为 u γ α→ v。 下面是原子动作和复杂动作的语义: z α= { | u, v∈W,u γ α→ v }; z α;β= { | u, v, w∈W,u γ α→ w ∧ w γ β→ v}; z α⋃β= { | u, v∈W,u γ α→ v ∨ u γ β→ v}; www.aibbt.com 让未来触手可及 67 z α*= { | u, v∈W,u γ α→ v ∨ u γ αα;→ v ∨ u γ ααα ;;→ v ∨ …}; z ϕ? = { | u∈W,u⊨ϕ }。 由于上述对动作的语义解释是按传统描述逻辑的思想给出的,因而可以给出有关动作的 几个新的概念定义,这些概念作为传统描述逻辑的有益补充。 定义 2.36 对于动作α(原子动作或复杂动作),如果存在解释 I(u) = (Δ,•I(u))和 I(v) = (Δ,•I(v))满足 u α→ v,则称动作α是可以实现的(realizable)。 定义 2.37 对于动作α(原子动作或复杂动作),如果存在动态描述逻辑 DDL 的有关 ABox A 的解释 I(u) = (Δ,•I(u))和 DDL 的一般的解释(有关 ABox A 和 TBox T)I(v) = (Δ,•I(v)),并且 满足 u α→ v,则相对于 DDL 的 ABox A,称动作α是可以实现的。 定义 2.38 对于动作α和β(原子动作或复杂动作),对任意的解释 I(u) = (Δ,•I(u))和 I(v) = (Δ,•I(v)),满足条件:如果有 u α→ v,则有 u β→ v,则称动作β包含动作α,或者动作α被 动作β包含,记作:α⊑β。 定义 2.39 对于动作α和β(原子动作或复杂动作),动态描述逻辑 DDL 中对任意的有关 ABox A 的解释 I(u) = (Δ,•I(u))和一般的解释(有关 ABox A 和 TBox T)I(v) = (Δ,•I(v)),满足 条件:如果有 u α→ v,则有 u β→ v,则相对于 DDL 的 ABox A,称动作β包含动作α,或 者动作α被动作β包含,记作:α⊑Aβ。 说明:类似定义 2.37 和定义 2.38,可以定义相对于 DDL 的 TBox T 的动作α可实现性和 包含关系。为了理解动作的包含关系,下面举一个简单的例子。 给定下列四个动作描述:α1 = ({A(a), ¬A(b)},{Ф⁄¬A(a), Ф⁄A(b)})、α2 = ({A(c), ¬A(d)},{Ф⁄¬A(c), Ф⁄A(d)})、α3 = ( { A(x), ¬A(y)},{Ф⁄¬A(x), Ф⁄A(y)})和α4 = ( { A(y), ¬A(x)},{Ф⁄¬A(y), Ф⁄A(x)}),其中 a、b、c、d 属于个体常元,x、y 属于个体变元,则有 α1⊑α3,α2⊑α3,α1⊑α4,α2⊑α4,α3⊑α4 和α4⊑α3,但动作α1 和动作α2 之间不存在包 含或被包含关系。 习 题 9. 什么是单调推理?什么是非单调推理? 10. 在缺省理论中,缺省规则是如何表示的,有哪几种表示形式? 11. 一个默认理论 T=, 其中 D 是默认规则集合, W 是已知的或约定的事实集合。请用 www.aibbt.com 让未来触手可及 68 默认理论表示下面的句子,并给出 D 和 W 的集合。 (1)有些软体动物是有壳动物。 (2)头足类动物是软体动物。 (3)头足类动物不是有壳动物。 5. 阐述封闭世界假设和限制理论这两个非单调推理的形式化方法,并比较两者的区别? 6. 用真值维护系统描述下列情况: (1) 现在是夏天 (2) 天气很潮湿 (3) 天气很干燥 7. 如何用真值维护系统保持知识库的一致性,并用实例说明。 8.用情景演算描述猴子摘香蕉问题。 一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移 箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到 香蕉,问猴子在某一状态下(设猴子位置为 a,箱子位置为 b,香蕉位置为 c),如何行动可 摘取到香蕉。 9.描述逻辑的基本要素是什么? 10.动态描述逻辑如何表示动作? www.aibbt.com 让未来触手可及 69 第三章 约束推理 3.1 概 述 一个约束通常是指一个包含若干变量的关系表达式,用以表示这些变量所必须满足的条 件。约束表示广泛地应用于人工智能的各个领域,包括定性推理、基于模型的诊断、自然语 言理解、景物分析、任务调度、系统配置、科学实验规划、机械与电子设备的设计与分析等。 而约束满足系统的设计是一项困难而复杂的任务,因为约束满足问题在一般情形下是一个 NP 问题,所以必须使用各种策略与启发式信息。从知识表示的角度看,也有许多重要的问题需 要研究,例如表示抽象问题、默认推理问题等。非单调谓词逻辑虽然具有足够的表达能力, 但它存在推理效率低、甚至不可计算的缺点,而且也不便表示启发式信息与元信息。语义网 络也能表示抽象与默认信息,但本身不具备足够的问题求解能力。而带有抽象类型的约束表 示可以弥补这两种表示的不足。因此,研究类型层次上的约束表示及其默认推理,是一个非 常有意义的问题。 在约束推理方面,针对约束满足搜索中缩小搜索空间与控制推理代价这一对矛盾,提出 了集成式的约束满足搜索算法,设计了智能回溯、约束传播及可变例示次序等策略的适当形 式,并将其有机结合起来,以合理的计算代价有效地缩小了搜索空间。已有的实验结果显示 该算法优于我们所知的同类算法。此外,还实现了一些特殊关系,如等式与不等式的推理, 如恒等关系的单元共享策略,及不等式的图方法与区间推理的结合。这些实现将约束表达式 的求值与本身的符号关系结合起来,增强了约束推理的符号演绎能力,在约束语言方面,我 们设计了面向对象的约束语言 SCL,在其中实现了默认约束表示与集成式的约束推理方法;并 采用常规语言中的确定型控制成分(如条件结构),而将不确定性成分局限于数据部分。从而 可以使用约束传播与智能回溯来减少不确定性,缩小搜索空间。同时这种常规结构也改善了 代码的可读性和语言的易学性。我们还实现了约束在 C++ 中的嵌入表示。从而使得约束程序 设计充分利用 C++ 的丰富的计算资源。 一个约束满足问题(Constraint Satisfaction Problem, 简称 CSP) 包含一组变量与一组 变量间的约束。一般而言,变量表示领域参数,每个变量都有一个固定的值域。一个变量的 值域可能是有限的,例如一个布尔变量的值域包含两个值;也可能是离散无限的,如整数域; 也可能是连续的,如实数域。约束可用于描述领域对象的性质、相互关系、任务要求、目标 等。约束满足问题的目标就是找到所有变量的一个(或多个)赋值,使所有约束都得到满足。 约束表示易于理解、编码及有效实现,它具有以下优点: (1)约束表示允许以说明性的方式来表达领域知识,表达能力较强,应用程序只需指定问 题的目标条件及数据间的相互关系。因而具有逻辑表示的类似性质。 www.aibbt.com 让未来触手可及 70 (2)约束表示允许变量的域包含任意多个值,而不像命题只取真假二值。所以它保存了问 题的一些结构信息,如变量域的大小、变量间的相关性等,从而为问题求解提供启发式信息。 (3)易于并行实现。因为约束网络上的信息传播可以认为是同时的。 (4)适合于递增型系统。约束可以递增式地加入到约束网络。 (5)易于与领域相关的问题求解模型相衔接。各种数学规划技术,方程求解技术等, 都可 以自然地嵌入约束系统。 经过多年研究, 人们提出了不少约束推理的方法。根据联系于约束网络节点上的数据类 型,可以将约束推理分为以下几种。 (1) 关系推理:推理过程中推出的新的约束关系, 并将其加到约束网络中。Kuiper 的 ENV 系统、Simmon 的 Quantity Lattice 系统,及 Brooks 的 CMS 系统,都属于关系推理。 (2) 标记推理:每个节点标注以可能值的集合,在传播过程中约束用于限制这些集合。 (3) 值推理:节点标记以常量值。约束用已标记节点的值求出标记节点的值。SKETCHPAD 及 THINGLAB 都使用值推理。 (4) 表达式推理:是值推理的推广,其中节点可能标以关于其它节点的表达式。当一个 节点标记以不同的表达式时, 应使其等同起来, 并求解结果方程。CONSTRAINTS 就使用这种推 理。 约束变量的取值可能是数值,也可能是非数值, 即符号值。一般而言,非数值变量的取 值范围是一个有限集合。因而当约束传播停止后,总可以进行穷举搜索来确定其一致性。而 数值变量则不然。数值变量通常有无限值域,不可能进行穷尽搜索。 上述几种约束推理都有某些不足。例如,值推理只能用于方程约束, 而不能用于不等式 约束。关系推理与标记推理难以控制,且很难防止其进入无限循环。在关系推理中,难以确 定新推出的约束是否对给定的问题有用。但标记推理要好一些,可用于任意形式的约束。 现有的约束表示可分为几类, 按复杂性的次序列举如下: • 一元谓词。 • 序关系语言,只包含偏序关系或实变量上的大小关系。 • 形如“x - y > c”或“x - y ≥ c”的方程。 • 单位系数的线性方程与不等式,即所有的系数为 -1, 0, 1。 • 任意系数的线性方程与不等式。 • 约束的布尔组合。 • 代数与三角方程。 最简单形式的约束是一元谓词, 即对变量的标记,几种最重要的标记是符号、区间、与 实际值。 序关系出现在只关心数量的大小关系的系统中。例如有些系统只关心事件的次序而不考 虑其时间区间, 如 NOAH 系统。在 NOAH 系统中,规划的每一级指定了该级中动作的偏序关系。 形如 x - y ≥ c 的不等式在只知道变量之间的差的系统中非常有用。这种约束在 TMM 及 www.aibbt.com 让未来触手可及 71 许多任务规划程序得到广泛应用。 在具有标量乘法的度量空间中,对两个数量的商的界定有时也是非常有用的。不过这种 表示与差的界定是同构的。同构映射为对数函数。Allen 与 Kantz 使用商界定与序关系的布尔 组合来实现时态推理。 单位系数的线性方程在常识推理是很有用的。因为这种关系对定性地表示守恒法则是足 够的。守恒法则断言一个值的变化等于其增加的总和减去其减少的总和。如果我们只对状态 变化感兴趣,则变量可仅取 +, -, 0 三个定性值,其系数总可为单位系数。 线性不等式是应用十分广泛的一种约束。约束的布尔组合在物理推理、电路设计及规划 中也得到广泛应用。在物理推理中还经常涉及非线性方程与不等式。在几何推理中,还经常 涉及代数与三角方程。 目前, 约束推理的研究主要集中于两个方面:约束搜索与约束语言。约束搜索主要研究 有限域上的约束满足。对有限域而言,约束满足问题一般情况下是 一个 NP 问题。目前大体 包括下列方法: • 回溯法。 • 约束传播。 • 智能回溯与真值维护。 • 可变次序例示。 • 局部修正法。 约束推理研究的另一个主要方面是约束语言。以下是几个比较典型的约束语言: (1) CONSTRAINTS CONSTRAINTS 是一个面向电路描述的约束表示语言。作为一个约束表示语言, 它使用了 符号处理技术来求解数学方程。在 CONSTRAITS 中,物理部件的功能及器件的结构都用约束表 示。这些约束一般是线性方程与不等式, 也包括条件表达式。约束变量一般是表示物理量的 实变量。也有一些取离散值的变量。如开关的状态、三极管的工作状态等。系统采用表达式 推理与值推理。并实现相关制导的回溯。 CONSTRAINTS 的一个优点是在类型层次中表示约束,用约束来表示物理对象的功能与结 构。其缺点是该语言缺乏类似于面向对象语言中的方法那样的成分,不能定义特定于某个类 的概念。同时,约束传播方法比较单一,既缺乏实域上的区间传播机制,也缺乏有限域上的 域传播机制。 (2) Bertrand Bertrand 是由 Leler 开发的一个高级约束语言。 它的计算模型是基于增强型项重写技 术的系统 。基本上是在项重写系统的基础上加上赋值功能与类型机制。这种技术使得 Bertrand 能够解决实数与有理数上的线性方程。Bertrand 还包括抽象数据类型的功能。它已 被用来解决图形学及电路上的一些例子。 Bertrand 还不能算是真正的约束语言,而只能算作是约束满足系统的生成工具。它基本 www.aibbt.com 让未来触手可及 72 上没有提供什么求解离散约束的机制,也没有提供实数域上的区间传播或序关系传播的机制, 而只能进行值传播。 (3) 约束逻辑程序设计语言 CHIP 约束语言很大一部分研究集中于约束逻辑程序设计语言。其宗旨在于将约束满足技术与 逻辑程序设计结合起来,基本上是在 Prolog 的基础上引入约束传播机制(主要是弧一致性 技术),以提高搜索效率,增强表达能力。CHIP(Constrant handling in Prolog) 就是这样 较有影响一个约束逻辑程序设计语言,其目的是简便、灵活而有效地解决一大类组合问题。 它通过提供几种新的计算域而增强逻辑程序设计的能力;有限域、布尔项及有理项,对于每 个计算域,都提供有效的约束求解技术,即有限域上的一致性技术,布尔域的布尔合一技术 及有理数域上的单纯型法。除此以外,CHIP 还包含一个一般的延迟计算机制。 CHIP 主要应用于两个领域: 运筹学与硬件设计。CHIP 缺乏类型机制,而这种机制对于 表达领域概念是极其重要的。 (4) 约束层次与 HCLP 约束满足研究中一个非常有趣而且有着重要实用价值的问题是所谓“软约束”的求解问 题。其中比较有影响的是 Borning 等人的工作[Freeman-Benson 1992]。Borning 为了解决图 形界面设计问题中“限制过度”(overly constrained)的问题,提出了约束层次的概念。其 基本思想是除了必须满足的“硬约束”之外,还允许用户表达需要尽可能满足的“软约束”。 这些软约束被分成若干优先等级。这种表示就称为约束层次。 约束层次是带标记的约束的有限集合。给定一个约束层次 H,H0 是 H 中必须成立的约束的 集合。H1 是在非必要约束中最强的约束,如此等等。最弱的约束为 Hn。n 是约束层次中非必须 约束的级数。 对一个约束集合的求值是一个函数。它将自由变量映射到域$D$中的元素。约束层次的一 个解是自由变量的一个求值的集合。解集合中的求值必须至少满足必要约束。除此以外,这 个解集还至少满足其它求值所满足的约束。即在满足必要约束的求值中,不存在比解集求值 满足更多非必要约束的求值。有许多种比较求值对约束的满足程度的方法。具体采用哪一种 更好则取决于应用。 最初的约束层次的求解是用一些过程(方法)来使约束层次得以最大程度地满足。 但这 种过程表示丧失了约束表示系统所应有的说明性优点。因而 Wilson,Borning 等人在约束逻 辑程序设计的基础上,设计了层次型约束逻辑程序设计语言 HCLP。该语言将约束层次嵌入 Prolog 之中,使整个约束层次系统完全建立在说明性表示基础之上。他们用非单调理论中的 最小模型理论给出了 HCLP 的模型论语义。在实现上,首先用普通的逻辑程序的回溯方法求得 一个必要解。这个解可能包含对某些变量的域(如区间)的限定, 而不是变量的具体值。同 时还生成当前例示下的所有约束(即约束层次), 然后由较强的约束到较弱的约束,逐次用 所生成的约束去限定所生成的必要解。直到出现不一致为止。对于相同层次中的约束的不同 的使用次序,将导致不同的解。 www.aibbt.com 让未来触手可及 73 约束层次的这种解法是简单而快捷的,但却是不完全的,因为由此而产生的解在一般情 况下并不一定对应整个逻辑程序的最小模型, 而只对应一个推理路径中的最小模型。 (5) 面向对象约束语言 COPS 中国科学院计算技术研究所智能计算机科学开放实验室研制的 COPS 系统利用面向对象技 术,将说明性约束表达与类型层次结合起来。在形式上吸收了常规语言,主要是面向对象的 程序设计语言的基本形式。内部求解时采用约束推理机制,使说明性约束表达式与类型层次 相结合,实现知识的结构化封装,充分发挥两者的优点,力图实现一个具有较强表达能力和 较高求解效率的约束满足系统。COPS 的设计考虑了软件工程的应用要求,尽量将一个不确定 问题确定化:它允许条件语句与循环语句,而不是单纯以递归的形式来实现迭代计算; 通过 类方法的重栽实现同一约束的不同实现,提高了程序的执行效率。COPS 系统同时是一个渐增 式的开放系统,用户能通过类型层次定义,实现新的数据类型和新的约束关系。约束语言 COPS 具有许多人工智能程序设计语言的特点,如约束传播、面向目标和数据驱动的问题求解、有 限步的回溯、对象分层中的继承等。 (6)ILOG ILOG 公司创建于 1987 年,总部位于法国巴黎和美国加州,是全球领先的优化、互动图像 界面以及商业规则应用领域的软件组件供应商,也是全球将优化算法运用到商业应用软件中 的公司。产品应用遍布于电信,交通,国防,电力,物流等领域。ILOG 公司的 ILOG Solver 使用建模语言来表示约束问题。 3.2 回溯法 求解有限约束满足问题的最简单直接的方法是生成测试法, 即依次生成所有变量的值的 各种组合,对其进行测试,直到一个测试成功的组合。这种方法显然是低效的。一种直接的 改进是顺序回溯法。顺序回溯法以固定次序对变量进行例示, 当新的变量与先前赋值的变量 不一致时,它尝试其变量域中的其它值,直到域中所有的值都被穷尽。当所有的值都失败, 则回到上一个赋值的变量, 并对该变量重新赋值。 假设一个 CSP 问题的解由一个不确定长度的向量组成, 即(x1,x2, …) 它满足问题中所 有约束条件。设变量 xi 的值域为 Xi, 则 xi 的取值只能是 Xi 中的某个元素,而问题的整个可行 解空间为 X1 × X2 × … × Xn 其中 n 是变量总数。 回溯算法求解开始时,部分解为空向量。然后从变量集合中选择一个变量 x1 并加到部分 解中去。通常可选一个最小的元素作为 x1 的取值。各种约束会告诉我们 X1 中哪些成员可作为 x1 的候选者,这些成员可用一个子集 S1 来表示。由约束条件可以找出从部分解(x1,x2,…,xk-1) 到部分解( x 1,x2,…,xk-1,xk)的候选者。如果(x1,x2,…,xk-1)不允许 xk 取任何值,那么Sk = ∅, 必 须进行回溯,并为 xk-1 选取一个新的允许值。如果 xk-1 没有新的允许值,就进一步回溯 至 xk-2, 以此类推。设 T(x1,x2,…,xk-1)表示 xk 的所有可能取值。当部分解(x1,x2,…,xk)不允许 有新的扩展结点,则限界函数 BTk(x1,x2,…,xk )取假,否则取真值。只求一个解的回溯算法如 www.aibbt.com 让未来触手可及 74 下: 算法 3.1 回溯算法 BACKTRACK。 输入: 一个 CSP 问题 输出: 一个完全解或无解返回 procedure BACKTRACK begin k=1; while k>0 do if xk 存在未检验过的值使 xk ∈ T(x1,x2,…,xk-1) and BTk(x1,x2,…,xk ) = true then if(x1,x2,…,xk )满足所有约束条件 then return(0); /* 返回一个解 */ else k=k+1; endif; else k=k-1; endwhile return(1); /* 无解返回 */ end BACKTRACK 尽管回溯法好于生成测试法,但对于非平凡问题仍然是低效的。其原因在于搜索空间中 不同路径的搜索重复相同的失败子路径。一些研究者认为,造成这种反复的原因是所谓的局 部不一致性。最简单的情形是所谓的结点不一致性。对一个变量 vi 的一个一元约束。存在 域 中一个值 vi 不满足该约束。这样,每当 vi 取到 a 时就会出现不一致性。另一种重复的情形 是 所谓的弧不一致性。 可以用下例来说明。设变量的例示次序为 v1,v2, … ,vi, …,vj, …, vn。 设 vi 与 vj 之间存在约束,使得对 vi=a, vj 不存在任何值满足该约束。这样每当 vi 赋以 a 值 后,当 vj 赋值时将出现失败。 这个失败将对所有 vr(i 2,存在算法使得约束网络是强一致的 (Cooper 1989)。虽然,如果一个有 n 个节点的约束网络是 n 强一致的,则不用搜索就能找到 一个解。然而对 n 节点约束网络,其 n 一致算法也是指数的。 不过,对于具有特殊结构的约束网络,存在多项式算法。最简单的情形是,对于树结构 的约束网络存在弧一致算法, 使其可以在线性时间内求解。 3.4 约束传播在树搜索中的作用 上面讨论了两种不同的 CSP 求解方法:回溯法与约束传播。在第一种方法中通过测试变 量的不同组合来得到一个完整的解。这种方法的缺陷是搜索路径的重复。在第二种方法中, 通过传播变量间的约束,从而降低问题的复杂性。尽管任意 CSP 问题总可以通过n一致性算 法来求解。但n一致性算法比回溯法效率更低。而对k<n,k一致性算法又不能保证能得 到一个全局一致的解。一种综合的办法是将给传播嵌入到回溯法中,具体做法如下。 首先生成一个根搜索节点,求解最初的 CSP。当一个搜索节点被访问,使用约束传播算法 以达到预期程度的一致性。如果存在一个搜索节点,每个变量恰包含一个值,而且对应的 CSP 是弧一致的,则该搜索节点表示一个解。如果在约束传播过程中,某些变量的域变为空,则 该搜索节点被剪枝。否则,选择一个变量(其域的大小 >1),对该变量的每一个可能的值生 成新的 CSP 搜索节点。每个新的 CSP 搜索节点表示当前 CSP 搜索节点的后继节点。 所有这些 搜索节点通过使用深度优先的回溯法来访问。 现在问题是对每个搜索节点约束传播应做到何种程度。如果完全不做约束传播,则退化 成标准的回溯法。如果对具有m个未赋值的变量的 CSP 搜索节点施行m-一致性算法则等于 完全排除了回溯法的使用而造成严重的低效。经验表明,受限形式的约束传播(一般其一致性 程度不超过弧一致性)具有最佳的效益。 3.5 智能回溯与真值维护 克服标准回溯法缺陷的另一种方法是智能回溯。在智能回溯中,回溯到哪一步决于是哪 一个变量造成了失败。智能回溯是如何克服标准回溯的缺陷,可以从如下例子来考虑。 假定变量 v1, v2 与 v3 已分别赋值 a1,b3,c2。假定 v3 中尚未发现有任何值与 v2 的b1 和b2 相 容。现在假定 v4 的所有可能值都与 v1=a 相矛盾。因为矛盾是由 v1 的不适当选择所引起的,所 以智能回溯应回溯到 v1。但这种方法也同时撤消 v2 与 v3 的值。 这种方法虽然能够根据失败的源找到正确的回溯点, 但并没有完全避免相同路径的重 复。相关制导的回溯是解决这个问题的一种方法。这种方法在 Doyle 的真值维护系统(TMS)中 www.aibbt.com 让未来触手可及 77 得到推广与应用。 一个基于真值维护系统的问题求解系统包含两个部分: 一个推理机与一个真值维护系统 TMS。推理机用于由旧的事实推出新的事实,而真值维护系统 TMS 记录这种推理的论据。新事 实的加入可能使得某些已有的假设不再为真。因而这种论据的维护使得可以废除不再成立的 假设。这种方法对 CSP 的应用可描述如下。 当一个变量被赋以某个值,生成该赋值的一个论据。类似地,对一个默认赋值也可生成 其论据。对这种情况,系统检查当前赋值是否违反任何约束。如果违反,则生成一个新的节 点表示两个变量的一对值相互矛盾。这种节点还被用来作为其它赋值的论据,这个过程一直 持续到对所有变量找到一个一致的赋值。这种系统不会出现冗余与重复的计算。 尽管这种系统的搜索量是最小的,但确定违反约束的失败源的开销却是极大的,由于推 理步数是指数增长的,因而用于存储及检索的时间与空间开销也都是指数复杂的。所以对很 多问题,这种方法可能比普通回溯法占用更多的时间。 另一个相关的工作是 de Kleer的基于假设的真值维护系统 ATMS。基于假设的真值维护系 统由真值维护系统 TMS 演变而来。真值维护系统可视为某种形式的约束传播。ATMS 是 TMS 的 扩充,TMS 只维持单个上下文, 而 ATMS 则试图同时搜索多个上下文。因而,每个推出的事实 都与所有使其成立的假设相联系。一个结论可能在多个上下文都成立。假设与论据的区别在 于, 除非有证据其为假,否则总认为是真。ATMS 的优点在于不同的上下文可以共享一些中间 假设, 而不用去分别地生成它们。但中间假设的个数通常是指数增长的,因而这种生成过程 是呈指数复杂性的。但 ATMS 具有如下一些缺点: •它们是面向求全解的, 对求单解经常出现不必要的搜索; •用于维护所有上下文的时间与空间开销很大; •排错比较困难。 而且这种方法很难估计其存储要求, 所有的推导及其假设都必须记录。这使得这种方法很难 应用到大规模系统上,de Kleer 与 Williams 后来又建议回到回溯的方法以控制 ATMS。这也 就类似于一种智能回溯方法了。 3.6 变量例示次序与赋值次序 对标准回溯法的另一个可以改进的方面是变量的例示次序。实验表明这种次序对回溯搜 索的效率有着巨大的影响。已提出多种启发式策略。一种是选择当前域最小的变量最先例示。 这样,变量的例示次序一般是动态确定的,而且对于搜索树中的不同分支可能是不同的。 Purdon 与 Brown 广泛地研究了这种启发式及其变型[Purdon 1983],他们的结果表明对标准 回溯法有着极大的改进。 另一个启发式是优先例示参与约束最多的变量。这种方法的出发点是不成功的分支尽可 能早地剪除。 前面提到过树结构约束网络可以不回溯, 而对于求解任何一个约束网络可以通过删除某 些节点而使其成为树, 这些节点的集合称圈割集。如果能找到一个小的圈割集,则一个好的 启发式是先例示割集中的变量,然后求解剩下的树结构 CSP。 3.7 局部修正搜索法 目前绝大部分算法是基于树搜索的构造性求解方法。但近来另一种求解组合问题的方法 www.aibbt.com 让未来触手可及 78 以其惊人的实验结果引起了人们的注意,这就是所谓的“局部修正法”[Gu 1992]。这种方 法首先生成一个全部的,但可能是不一致的变量赋值,然后针对所出现的矛盾改变某个变量 的值,以减少所违反约束的个数,如此反复,直到达到一个一致的赋值。该方法遵循一个简 单的法则:找到一个引起矛盾的变量,然后选一个新值赋给它,使得结果赋值将矛盾减到最 少。该方法的基本思想如下。 给定:一个变量的集合,一个二元约束的集合,及对每个变量的一个赋值。两个变量相 矛盾如果它们的值违反了一个约束。 过程:选一个矛盾变量,并为它赋一个值使得将矛盾的个数减到最小。 局部修正搜索法十分有效的主要原因在于,对每个变量的赋值提出了较多的信息,因而 下一个所转换的状态较大幅度地减少了矛盾的个数。 局部修正搜索法也有其局限性。首先这种策略是不完备的。当问题没有解时,该过程可 能不终止。当问题的解密度比较小时,搜索的效率也很低。我们曾对图着色问题进行过修正 法与树搜索之间的比较。 在图的边较少时,修正法较优。反之树搜索效率高。如果问题无解, 修正法不终止。 目前,约束搜索的一个新的动向是研究 CSP 的难度分布。尽管 CSP 一般说来是一个 NP 问题,但大量的 CSP 可以在可容忍的时间内解决。真正难解的问题只是一小部分。 3.8 基于图的回跳法 基于图的回跳法(Graph-based Backjumping) 属于相关制导的回溯中的一种。其中的相 关信息来自约束网络的图结构。一个约束图是指由约束关系所隐含的图。其中的顶点为变量, 边为约束(这里假定所有的约束都是二元的)。即两个顶点有一条边仅当它们所代表的变量存 在约束。在基于图的回跳法中,每当在某个变量 X 出现失败,算法总是回到在图中与 X 联结 的最近赋值变量。下面是基于图的回跳法的算法。 算法 3.5 前向传播算法 Forward。 Forward(x1, ┄ , xi, P) begin if i=n then 退出并返回当前赋值; Ci+1 ← computeCandidates(x1, ┄ , xi, xi+1); if Ci+1 非空,then xi+1 ← Ci+1 中的第一个元素; Ci+1 中删除 xi+1; Forward (x1, ┄ , xi, xi+1, P); else Jumpback(x1, ┄ , xi, P ); endif end 其中 P 用以保留将回溯的变量的集合。 算法 3.6 回跳算法 Jumpback。 Jumpback(x1, ┄ , xi, xi+1, P) begin www.aibbt.com 让未来触手可及 79 if i=0,then 退出无解; PARENTS ← Parents(xi+1); P ← P ∪ PARENTS; 设 j 是 P 中编号最大的变量, P ← P - xj; if Cj ≠ ∅, then xj=first in Cj ; 从 Cj 中删除 xj; Forward (x1, ┄ , xj, P); else Jumpback (x1, ┄ , xi-1, xj, P); endif; end 3.9 基于影响的回跳法 对基于图的回跳法的改进, 形成新的基于影响的回跳法。首先,我们的目标是利用动态 相关信息,而不仅仅是静态联结关系。这里问题的关键在于如何将引入动态信息所造成的计 算资源的开销限定在合理的范围内。通过对算法及其数据结构的精巧设计,我们成功地解决 了这一问题。 基于影响的回跳法 IBMD (Influence-based-Backjumping,Most-constrained-first, Domain-filtering)将三种策略综合在一起:最约束者优先 (Most-Constrained-First)、域 筛减法 (Domain Filtering)、回跳法。最约束者优先是指每次选“自由度”最小的变量加以 赋值。这里的“自由度”主要用变量当前取值域的大小加以衡量,因为它是最重要而又最容 易计算的一个量。也可辅之以该变量在约束网络中的关联度。最约束者优先策略是对固定次 序赋值策略的一项十分有效的改进。 域筛减法就是从变量域中删除与已赋值的变量不一致的值。这是一种代价较小的约束传 播技术。每当一个新的变量赋值时,未赋值变量中与该赋值不一致的所有值都被从域中删除。 但因为这种赋值是试探性的,所以被删除的值必须保存起来。当某个赋值被撤回时,由该赋 值所引起的所有筛除都必须恢复。 我们所设计的回跳法与传统的依赖制导的回溯,包括基于图的回跳法,有较大区别。传 统的依赖制导的回溯显式地记载一个推论所依据的假设集合。每当回溯一步时,都要把被撤 回的变量所依赖的假设集合合并到该集合中最近赋值的变量的假设集中。这种归并造成了很 大的时间与空间的开销。为了避免这种开销,我们的回跳法并不是根据所记录的依赖假设集 来回跳(事实上我们根本不需要这种记录)。我们是根据筛减过程中赋值变量对赋值变量的实 际影响来回跳。一个赋值对一个变量 vi 产生影响, 当且仅当 vi 当前域中至少有一个值被该赋 值所引起的筛减过程删除。显然这种影响关系比网络的联结关系更精确。因为联结关系这是 一种可能的数据相关性,而影响关系则是实际的数据依赖性。因而,可能某两个变量在约束 图中是相连的,但在当前上下文下并未发生影响关系。基于影响的回跳法的空间规模要比基 于图的回跳法来得小。由此,还产生时间开销的减少。 在 IBMD 中,每个例示变量都保存一个受影响的变量的集合。给定 IBMD 的一个上下文(所 有例示变量的赋值),一个变量 vi 受一个例示变量 vi 的影响当且仅当 vi 的例示使 vi 的当前域 有所减小。 www.aibbt.com 让未来触手可及 80 IBMD 包括前向例示过程和反向回溯过程。前向例示过程首先选择具有最小当前域的变量 赋值。对所选变量 vi 赋值后,执行域筛减过程。对所有未赋值的变量 vj,删去其值域 Dj 中与 vi 的赋值相矛盾的值。如果 Dj 变为空,则意味着 vi 的赋值与以前的变量赋值相矛盾,因而开 始回溯。回溯过程首先将所有因 vi 的例示而删去的变量的值恢复到该变量的域中。如果 vi 又 穷尽了所有的值,则继续回溯上一个例示变量 vh。如果 vh 对 vj 或任一已穷尽的变量没有任何 影响,或 vh 已穷尽了所有的选择,则令 vh 为再上一个例示变量,重复该回溯过程,设该过程 停止在 vg,且影响 vg 的最新变量为 vf,则将 vg 的例示值从 Dg 中删除,将 vg 及其例示值记入 vf 的影响集中。然后重新对 vg 赋值,从而回到前向例示过程。下面是算法的 C 语言程序。 算法 3.7 基于影响的回跳算法 IBMD[廖乐健 1994b]。 IBMD() { int var, failvar; while (uninstantiated != nil ) { var=mostConstrained(); /* Choose a variable to instantiate */ a[var]=domain[var][0]; /* Assign a value. */ while ((failvar=propagate(var))!=SUCCESS) { /* While inconsistent */ if ((var=backjump(failvar)==nil) return(0); /* If back up to top, exit */ a[var]=domain[var][0]; /* Else reinstantiate var */ } } return(1); } 算法 3.8 回跳算法 backjup(廖乐健 1994b)。 backjump (failvar) int failvar; { int assignedVar, sourceVar; failedVarSet=makeVariableSet(); addVariableSet(failvar, failedVarSet); /* Initialize the set of failed variables */ while ( (assignedVar=lastAssigned[ASSIGNEDHEAD]) !=TOP) { /* Until go back to top */ retract(assignedVar);{/* Retract the influences of the variable */ if (relevant) /* The instantiation influence failedVarSet */ if (! exhausted(assignedVar)) break; else addVariableSet(assignedVar, failedVarSet); } } if (assignedVar==TOP) return(nil); for(sourceVar=lastAssigned[assignedVar]; www.aibbt.com 让未来触手可及 81 sourceVar !=TOP && ! isCulpit(sourceVar); sourceVar=lastAssigned[sourceVar]); /* Find last variable that is relevant to the failure */ domainfilter(sourceVar, assignedVar, a[assignedVar]); /* Filter the current value and record the influence */ return(assignedVar); } 在程序中,函数 mostConstrained ()选择一个当前域最小的变量,并将其从未赋值的变 量表 uninstantiated 移到已赋值的变量表 instantiated 中。 propagate()完成域筛减过 程。如果某变量筛减后的域为空,则返回该变量,否则返回 0。 函数 retract()执行回跳过 程,并返回回跳所落到的变量。如果回跳到顶,则返回 nil 值。数组 a[ ]用来存放各个变量 所赋值的值。二维数组 domain[ ][ ]用来对每个变量的每个值记载该值的状态:属于当前域, 或者被某个前面所例示的变量所删除。属于当前域的值用下标链在一起。属于由同一个变量 所删除的值的集合也用下标链在一起。 该算法由于实施穷尽搜索,因而具有指数时间复杂性。该算法的空间复杂性为O(n(n+d)), 其中 n 为变量个数, d 为变量域的大小(假设所有域具有相同大小)。 用 IBMD 测试了一系列的例子, 并与其它一些算法作了比较。这些算法包括顺序回溯法 (BT)、基于冲突的回跳法 CBJ、仅采用最约束者优先的算法 MCF、仅采用最约束者优先与域 筛减法的算法 MD。试验结果显示 IBMD 在不同程度上优于这些算法。例如,在 工作站 sparc-1 上,用 IBMD 运行 N 皇后的例子。 IBMD 对 N=100 用了不到 2 秒钟。而在相同的机器上,用 BT 算法运行 20 皇后问题用了 10 多秒钟。当 N≥30 时,BT 算法至少需要若干小时。对 MCF 算法,当 N=50 时需用 10 多秒钟。当 N≥60 时需要若干小时。对 N 皇后问题,MD 算法与 IBMD 算法的性能大体相当。 IBMD 略优于 MD。这里有几种解释。首先,在 N 皇后问题中,超过一 步的回跳很少。域筛减策略消去了许多“表层”不一致性, 而“深层”不一致性涉及许多其 它变量。其次 IBMD 的额外开销较小。表 3.1 给出了运行 N 皇后问题各种算法的执行时间。 我们还试验了图作着色的例子。当结点的联结度较小(≤7)时,几乎不需要回溯。此时 IBMD 和 MD 性能相当。当增加联结度时, IBMD 明显优于 MD。 下面将算法 IBMD 与同类工作的其它算法进行比较。 (1) 与最初的回跳法 BJ 相比。 BJ 只能由出现不一致的变量回跳到造成其不一致性的最新变量。但如果该变量已穷尽了 所有的选择,再往下的回溯与普通的顺序回溯法相同。因而这种方法对性能的改进很有限。 而 IBMD 则可以连续往下回溯,直到找到一个与不一致性相关且尚未穷尽所有值的变量。 (2) 与基于图的回跳法相比。 约束网络的拓扑联结性是数据实相关性的近似。在特定上下文下,很可能两个图相关的 变量并不发生影响。而 IBMD 利用的是实际的影响关系。 (3) 与 Prosser 等人最近的工作相比。 Prosser 等人在 93 年 IJCAI 上发表了对回跳法的一些改进。提出了基于冲突的回跳法 CBJ(Conflict-based BackJumping)。IBMD 与 CBJ 的出发点是类似的, 但在实现上有很大不 同。CBJ 存在一个缺点。每一个变量都有一个依赖变量集。每当回跳一次时,都要执行依赖 集的合并操作,因而造成了很大的时间开销。而 IBMD 不存在这个问题。 (4) IBMD 优于所有上述算法的一个方面是将最约束者优先及域筛减策略结合进来。 表 3.1 运行 N 皇后问题的执行时间(单位秒) www.aibbt.com 让未来触手可及 82 n BT CBJ IBMD n BT CBJ IBMD 8 0.0 0.0 0.0 26 324.0 323.6 0.0 9 0.0 0.0 0.0 27 389.4 389.5 0.0 10 0.0 0.0 0.0 28 2810.2 2799.0 0.0 11 0.0 0.0 0.0 29 1511.1 1517.2 0.0 12 0.1 0.0 0.0 30 * * 0.1 13 0.0 0.1 0.0 40 * * 0.3 14 0.5 0.5 0.0 50 * * 1.8 15 0.4 0.5 0.0 60 * * 0.7 16 3.3 3.7 0.0 70 * * 1.4 17 1.9 2.2 0.0 80 * * 1.0 18 16.9 17.9 0.0 90 * * 1155.7 19 1.1 1.3 0.0 100 * * 1.8 20 101.6 105.5 0.0 110 * * 158.9 21 4.6 4.7 0.0 120 * * * 22 1068.1 1048.4 0.0 130 * * 11.5 23 16.2 16.2 0.0 140 * * * 24 290.5 289.6 0.0 160 * * 7.1 25 35.8 35.9 0.0 200 * * 14.0 注: *表示大于 2 小时 3.10 约束关系运算的处理 3.10.1 恒等关系的单元共享策略 在约束推理中,如果两个变量总是取相同的值,这两个变量是恒等关系。恒等关系是一 类重要的约束关系。例如,电路中两个部件的串联关系,意味着流过两个部件的电流相等。 一个正方形可以定义为其长和宽相等的矩形。尽管恒等关系可以通过普通的约束关系处理, 但是它应用的广泛性和特殊的语义性质,有必要进行特殊处理。这样不仅可以避免通用约束 问题求解器带来的低效性,更重要地是它可以直接用来降低问题的计算规模。因为两个相等 的变量必须取相同的值,所以可以在计算上将其视为同一个变量。这就是单元共享策略的基 本思想。 实现单元共享策略的一种简单方法是将两个相等的变量用一个新的变量代替, 但这导致 约束网络的全局变量代换。同时,考虑到有些相等关系是在进行了某些赋值假设后作出的, 因而必须保存原有的未等同前的变量信息。因此我们采用了二叉树表示。对等式 x=y,如果 x,y 都已赋值,则判断其是否相等,并返回其真值。如果 x 已赋值而 y 没有赋值,则看 x 的 值是否落在 y 的域中。如果不是,则返回不一致(失败)信息。否则,将 x 的值赋于 y。 如果 x,y 都未赋值,则生成一个新的变量节点 com(x,y) 称为 x 与 y 的公共节点,它的两个分 支节点分别为 x 和 y。com(x,y)的域为 x 和 y 的交集。如果该交集为空,则返回不一致(失败) 信息。x 和 y 与别的节点的约束联结,都被合并到 com(x,y) 中。以后对 x 或 y 的所有操作, www.aibbt.com 让未来触手可及 83 都落实到 com(x,y) 上。 一般情况下,当一个变量涉及更多的等式约束时, 例如等式集 {x=y, y=z, x=u} 将形成较大的二叉树。 所以一个二叉树的根节点汇集了其所有分支节点的所有信息。它成为所有该二叉树 叶节点的代理单元。而当前所访问的变量节点集合为所有这样二叉树的根节点的集合(包括 孤立节点)。 对于树搜索而言,必须考虑等式是在某个假设赋值之后作出的情形。当该假设赋值被撤 消以后,其后所断言的等价关系也不再成立,应当撤消。其办法是撤消其对应的公共节点。 该等式推理器提供对任意两个同类型变量之间相等关系的询问,即使它们未赋值。这种策略 具有如下优点,当然这些优点可能是相互关联的。 (1) 由于约束搜索的复杂性主要取决于约束变量的个数,而单元共享策略将两个或更多 具有恒等关系的变量合并成一个变量。因而降低了搜索空间。 (2) 使得约束推理器在变量未赋值的情形下也能发现与恒等关系有关的不一致性。例如 对约束 {x=y, y=z, x≠z} 即使不对 x,y,z 赋值系统也能检查出该约束集的不一致性。 (3) 使得约束传播可以提前进行。恒等关系的单元共享策略减少了未知变量的个数,也 减少了一个约束关系中未知变量的个数 。一般而言,只有当一个约束关系中未知变量的个数 足够少时,约束传播才能够得以进行 。约束传播的提前进行相当于在搜索树更靠近根节点的 部分进行剪枝,因而大大减小了搜索空间。 例如对一个包含三个枚举变量 x,y,z 的约束关系 r(x,y,z),当 x 例示以后,如果 y 与 z 为 不同的变量,一般而言可能对 y 或 z 的域进行一致性求精。假如存在约束关系 y=z,则相当于 实际未赋值的变量只有一个。因而约束传播得以进行。 (4) 使得约束语言具有模式匹配等符号处理的能力。 为了说明这种策略的优点,考虑由 COPE 语言实现定性物理中的定性加运算的例子。 一 个在实数域上变化的物理量可以用定性变量来刻画其正负性。一个定性变量取正(pos)、负 (neg)、零(zero) 三个值: enum qualitative {pos, neg, zero}; 定性值的加运算可如下定义: qualsum (x,y,z) enum qualitative x,y,z; { if (x=y) z=x; if (x=zero) z=y; if (y=zero) z=x; } 如果我们有约束程序 main { enum qualitative u, v, w; qualsum(u, v, w); qualsum(u, w, v); www.aibbt.com 让未来触手可及 84 w=zero; } 则不进行任何试探性搜索,就能求得唯一解, 该解为 {u=zero, v=zero,w=zero}。因为由 qualsum(u, w, v) 及 w= zero,得 u=v,该等式使得 qualsum(u, v, w)推出 u=w=zero;从而 v=u=zero。 3.10.2 区间传播 除了等式关系,数域上最通常的关系是不等式,特别是机械电子设备的分析与设计中, 不等式的应用尤为重要。不等式表示最基本的推理形式是用于对变量值的测试。即已知变量 的值,计算并检查变量的值是否满足该不等式。单纯这种计算方式只能用于约束满足的生成 测试策略。而这种策略效率是最低的。这里我们实现了较强形式的不等式推理。 比较常用的不等式的一种推理形式是区间推理,即约束网络上的区间 传播。给定一些变 量的区间限制 ,由变量间的序关系,推出对另一些变量的区间限制。例如,设有约束 x > y, 且变量 x 与 y 的区间分别为 [ lx , gx] 与[ly, gy],则对该约束进行约束传播后 x 与 y 的 新的区间为 [max(lx , ly), gx] [ly, min(gx, gy)] 如果 gx < ly,则意味着矛盾。 这种推理同样可以推广到更复杂的方程式或不等式。考虑方程 x+y =z,且 x, y, z 的当 前区间分别为[lx, gx],[ly,gy],[lz, gz]如果 lx + ly > gz,或 gx + gy < lz,则意味着矛盾。 否则 z 的新区间值 [l'z, g'z] 为 l'z = max(lx + ly, lz) g'z = min(gx + gy, gz) x 的新区间值 [l'x, g'x] 为 l'x = max(lz - gy, lx) g'x = min(gz - ly, gx) y 的新区间值 [l'y, g'y] 为 l'y = max(lz - gx, ly) g'y = min(gz - lx, gy) 3.10.3 不等式图 在很多人工智能应用,如定性推理、时态推理、活动规划中,所关心的是变量间大小的 相对关系。因而这种序关系 的推理是非常重要的。这实际上是对不等式的公理性质,如恒等 关系的公理、偏序关系的公理等进行推理。 将所有形如 x ≤ y 与 x ≠ y 的不等式组成一个不等式图。关系 x ≥ y 表示为 y ≤ x, x < y 表示为 x ≤ y 与 x ≠ y, x > y 表示为 y ≤ x 与 x ≠ y(恒等关系已用单元共享 策略实现)。 www.aibbt.com 让未来触手可及 85 定义 3.1 递增圈。一个不等式图是一个标记图,其中,V 是变量节点的集合。边集 E 是关系表达式 x r y 的集合,x, y ∊ V,r 为关系≠ 或 ≤。 网络中的一条递增路径是变 量节点的序列 v1, v2, ..., vl,使得对任意 i(i=2,..., l),(vi-1 ≤ vi) 是网络中的一条边。 如果 v1=vl, 则称该路径为一递增圈。 显然,不等式图具有下列性质: 性质 3.1 一个递增圈如果其中任意两个变量节点(可能相同)之间都不含 ≠ 边,则递 增圈中所有的节点都表示相同的变量。 性质 3.2 如果不等式图中存在一个递增圈,其中某两个变量节点(可能相同)之间含 ≠ 边,则不等式图蕴涵不一致性。 由性质 3.1,可将一个 不等式图 进行等价转换,使其不含递增圈。其办法是对任意不等 式中的递增圈,都将递增圈中所有的节点按单元共享策略合并为同一个变量节点。将所得到 的结果图称为该不等式图的精简图。 由性质 3.2,我们定义一个不等式图的图不一致性。 定义 3.2 一个不等式图是图不一致的,当且仅当图中存在一个递增圈,其中某两个变量 节点(可能相同)之间含 ≠ 边。 定理 3.1 一个不等式图是图不一致的,当且仅当其精简图中,存在一个变量节点,有一 个引向自身的≠边。 基于这两个事实,不等式推理器实施图遍历过程,如果发现 一个递增圈,则按单元共享 策略将其合并为同一个变量节点。 如果一个变量其域为空,或有一个引向自身的 ≠ 边,则 报告不一致性。不难证明上述操作关于偏序关系及恒等关系的完备性,即给定一个变量间恒 等关系、不等关系及偏序关系的集合 W,以及有关恒等关系和偏序关系的公理集合 G,那么, W ∪ G 是不一致的, 当且仅当 W 所对应的不等式图是图不一致的。 与演绎方法相比较,这种图操作方法有效得多。因为图遍历过程仅具有线性复杂性。 3.10.4 不等式推理 不等式图体现了不等式的结构性质。 当不等式图中的变量节点被赋予区间限制时,则除 了不等式图本身的操作之外,还在不等式图上进行约束传播。所有这些操作,都是在这种不 等式网络接收到一个外部输入 后引发的。这些外部输入 包括:向网络加入一个关系表达式 x r y。 其中 x 与 y 为变量或常量,但至少有一个为变量。r 为 =, ≠, <, ≤, >, ≥ 之一。 如果 r 为 =, 若 x 与 y 都为未赋值的变量, 则按单元共享策略将其合并为同一个变量 节点,并检查是否生成递增圈,进行可能的不等式图精简与一致性检查。若新的节点的区间比 x 或 y 的区间有所减小,则沿着不等式网络进行区间传播。如果二者都为已赋值的变量或常量, 则判定其值是否相等;如果二者有且仅有一个未赋值的变量,若另一个自变量的值落在该变 www.aibbt.com 让未来触手可及 86 量的域中, 则将值赋予该变量,并进行约束传播;否则,报告不一致性。 如果 r 为 ≤, 若 x 与 y 都为已赋值的变量,则判定 ≤ 关系是否成立;否则,对 x 与 y 的区间进行一致性限定。若限定的结果 x 或 y 的区间有所减小,则沿着不等式网络进行区间 传播。如果二者都为未赋值的变量,则向不等式网络加入一条 ≤ 边,并检查是否生成递增圈, 进行可能的不等式图精简与一致性检查。 如果 r 为≠, 则当 x 与 y 都为已赋值的变量时,判定 ≠ 关系是否成立。 对 x < y, x > y 与 x ≥ y 则将其分别等价转化为(x ≤ y) ∧ (x ≠ y),(y ≤ x) ∧ (x ≠ y), y ≤ x。 不等式推理器提供对任意两个同类型变量之间不等关系与大小关系的询问,即使它们未 赋值。这种将符号推理与区间传播结合的方法,不仅仅是将不等关系作为内部谓词而减小推 理代价,更重要的是它消除了冗余性,降低了问题求解的规模,而且作为一个一般的不等式 推理器,能够在变量未赋值甚至未加区间限制的情况下对不等式进行符号推理。例如, 系统 能够检查出不等式集合 {x ≤ y, y ≤ z, x > z} 蕴涵的不一致性。这使得系统具有传播序关系的功能。这种功能在定性推理中得到广泛 应用。通过实现 等式与不等式推理的符号操作,从而增加了推理的深度,避免了更多的生成 测试,降低了搜索空间。 3.11 约束推理系统 COPS 约束推理系统的一个主要功能是为用户提供通用而有效的约束推理机制。该种推理机制 要克服由于不确定性所引起的搜索问题。约束传播也正是降低不确定性的一种技术。从语言 表示上,我们认为应当将不确定的成分显式地标识出来,而将其局限于数据部分。这样数据 的相关性成为可识别的,数据域是可操作的,从而可以使用约束传播与智能回溯来减少不确 定性,缩小搜索空间。同时这种常规结构也改善了代码的可读性和语言的易学性,以便用约束 传播、智能回溯等专门的搜索技术去处理。逻辑程序设计语言 Prolog 用 Horn 子句上的归结 证明法这种试探性求解技术来作为统一的计算机制,虽然形式简单优美,但实用很困难。 在约束推理系统 COPS 中,约束程序设计语言 COPS 将面向对象的技术、逻辑程序设计、 产生式系统与约束表示结合起来,在形式上吸收了面向对象的程序设计语言的基本形式,内 部求解时采用约束传播和启发式机制,使说明性约束表达式与类型层次相结合,实现结构化 的知识封装[史忠植 1996]。COPS 语言具有以下特点: (1) 将类型层次与约束表示结合起来; (2) 实现默认约束推理; (3) 实现条件约束及常规程序设计的其它成分; (4) 实现有效的约束推理。 1. 约束与规则 约束是谓词表达式: www.aibbt.com 让未来触手可及 87 P(t1, …, tn) 其中 t1, …, tn 是项,典型情况它包含变量; P 是谓词符号,谓词可以是内部函数, 如 sum, times, eq(equal), neq(not equal),ge(great than or equal to), gt(great than),也可 以由用户定义。 条件约束具有下面的形式: if { condition1: constraint1; … conditionn: constraintn } 其中, condition1, … , conditionn 是布尔表达式。constraint1, …, constraintn 是一个 约束,或者是一个具有大括号{ }的约束表。 规则用来定义新的函数、方法、谓词,或者可以将约束加到对象上。规则的形式是 RULE [class::] 谓词(变量或常量表) (布尔表达式) { 约束1; … 约束 n; CASE 布尔表达式 1: 约束 1; … 布尔表达式 m: 约束 m; } 例如: RULE multiple(INTEGER: *x, INTEGER: y, INTEGER: z) (neq(y, 0)) { equal(x, divide(z, y)); } 定义了三个变量 x,y,z 之间的约束关系:x=z÷y 。 2. 类定义 在 COPS 系统中,问题领域中的实体被定义为类, 实体的内部属性及它们之间的关系都被 封装在类中, 多个具有一定关系的实体又可封装在一个更高层次的类中。COPS 的类的定义与 C++的类定义很相似: CLASS [类名][:超类名] { //属性定义 数据类型: 属性名; ... www.aibbt.com 让未来触手可及 88 //规则定义 规则名; ... //函数定义 函数名; ... //方法定义 方法名; ... } 整个 COPS 程序就是由类的定义和规则组成。 COPS 语言保持了关系式说明型语言的风格, 同时提供类、方法等面向对象成分。这样,既增强了程序设计的规范性与灵活性,又提高了程 序的易用性和可读性。COPS 语言可以使用户集中于问题本身的描述,不必关心问题求解的细 节。由于 COPS 语言成分与常规的面向对象语言(C++)非常类似,整个描述 直观、清晰,很容易 使用,而且可以充分利用类的封装性和继承机制进行扩充和复用。COPS 系统已经成功地进行 了电路的模拟。 3. COPS 的约束推理 在 COPS 系统中,约束推理主要依靠产生式的组合和约束传播,也具有排序条件重写系统 (ranked conditional term-rewritting system), 利用问题求解状态信息、默认规则和假 设推理、分区传播等启发式特点。下面给出 COPS 系统的核心算法。 算法 3.9 COPS 系统的核心算法 main-COPS。 procedure main_COPS { 1. 调用 yacc 分析程序,生成内部结构; 2. 初始化; 建立 COPS 常数 trueNode; 全局变量分配存储空间; 3. 解释具有内部结构的程序; 4. 对尚未求解的约束和变量建立约束网络; 5. while 触发约束网络中的约束 解释触发约束. } 上述算法中的 yacc(Yet Another Compiler Compiler)是又一个编译程序的编译程序, 它 把一上下文无关文法转换为一种简单自动机的一组表格, 该自动机执行一个 LR 语法分析程 序。输出文件为 y.tab.c, 必须由 C 编译程序编译, 产生程序 yyparse。该程序必须与词法分 析程序 yylex, 以及 main 和出错处理程序 yyerror 一起安装。 算法中的解释器如下: Interpreter: { switch (constraint type) case Constant: return Constant: case global variable: www.aibbt.com 让未来触手可及 89 interprete global variable: case local variable or argument: interprete local variable or argument: case object-attribute pair: interprete object-attribute pair: case function call: interprete function call: case method call: interprete method call: case CASE expression: interprete CASE expression: ... default: report error } COPS 系统充分利用类的封装性和继承机制进行扩充和复用,通过类的成员函数的重载, 高效灵活实现约束求解。我们还可以通过设计新的求解类,在 COPS 系统中加入多种约束求解 方法,改进原有系统求解策略单一的弱点。目前, 要解决的主要问题是在不同类之间的进行 消息传递、对共享变量进行值传播和一致性维护的过程中如何避免组合爆炸。 今后的工作打 算在现有系统的基础上将约束技术运用于多主体系统中,解决多主体系统中的协作和协商问 题;将约束推理应用于智能决策支持系统中的多目标问题求解。 3.12 ILOG Solver 约束程序是关于约束的计算系统,它的输入是一组约束条件和需要求解的若干问题,输 出问题的解决方案。至于具体解决问题的算法等都是约束程序设计语言的基本功能。程序员所 要面对的,就是如何把问题描述为一组约束构成的模型,而描述的语言可以很接近自然语言。 如果把问题的解决方案也看作是一种约束,那么问题的求解就是求得一个或若干个约束,他 们每一个都是这一组给定约束的充分条件,也就是说,求得的这些约束,满足这组给定的约 束。于是,约束程序设计便可以称为面向约束的程序设计方法。 ILOG 公司是法国优化、互动图像界面以及商业规则应用领域的软件组件供应商,成立于 1987 年。在过去的时间里,ILOG 公司不断进行企业软件组件和服务的开发与创新,使得客户 优化了业务处理的灵活性,并且提高了这些公司的运营效率。超过 1000 家的全球公司和 300 多家软件供应商使用 ILOG 的产品。随着中国经济的飞速发展,ILOG 公司看到了中国市场的 广阔发展前景,于 2002 年 8 月设立了北京代表处,统领包括香港、澳门、台湾地区在内的大 中华区市场。 约束规划是基于约束规则的计算机系统的程序,约束规划的概念是描述问题的约束来解决问 题。结果是找到让所有的约束满意的方案。 规划调度的实施的关键是基于约束规则,基于约束自 动的调配资源,优化计划,来达到你所需要的计划目标。对离散的制造行业解决复杂的加工过程如 多工序,多资源等;对重复式或流程式的制造行业解决顺序问题如优化排序等(Flowshop 调度)。 ILOG Solver 是嵌入过程性语言的约束程序设计语言,他将面向对象程序设计和约束逻辑程序设计 结合起来,包含逻辑变量,通过增量式约束满足和回溯实现问题求解。ILOG Solver 中主要语言成 分如下: variables : C++ object /* 变量 */ www.aibbt.com 让未来触手可及 90 integer variable CtIntVar floating variable CtFloatVar boolean variable CtBoolVar Memory Management /* 存储管理 */ new: delete: Constraints /* 约束 */ CtTell(x == (y + z)); Basic constraints: =,≤,≥ , <, >, +, -, *, /, subset, superset, union, intersection, member, boolean or, boolean and, boolean not, boolean xor, CtTell((x==0) || (y==0)); CtIfThen (x < 100, x = x+1); Search /* 搜索 */ CTGOALn: how to execute CTGOAL1(CtInstantiate, CtIntVar* x){ CtInt a = x->chooseValue(); CtOr(Constraint(x == a), CtAnd(Constraint(x != a), CtInstantiate(x))); } Schedule /* 调度 */ CtSchedule class Global object: time original ---tineMin time horizon ---timeMax Resources /* 资源 */CtResource CtDiscreteResource CtUnaryResource CtDiscreteEnergy CtStateResource Activities /* 工序 */ CtActivity class CtIntervalActivity 一个动作被定义为开始时间、结束时间、时间跨度、工序要求、提供、消费和生产资源。 约束规划的开发已经吸引各个领域的专家的高度注意,因为它有潜力解决现实中非常难的问 题。无论我们是用先进的遗传算法,还是用人机交互式的仿真方法,都需要对制造业的复杂约束, 多目标优化,大规模的搜索和车间生产的不确定性的问题进一步研究,以适用实际需要。这里采 用基于事件的调度方法,即至少一个资源是空闲的,二个或多个工序能用于这个资源,工序选择 规则 OSR(Operation Selection Rule)决定那一个工序被加载。这就是决定计划结果质量好坏 的关键因素。独立的工序选择规则详细介绍如下: (1)最早完成日期:选择最早完成的工序(也许是订单完成日期) (2)最高优先级第一:选择最高优先级(最低值)的工序 (3)最低优先级第一: 选择最低优先级(最高值)的工序 (4)最高订单属性字段:选择最高(最大)订单属性字段的工序 (5)最低订单属性字段: 选择最低(最小)订单属性字段的工序 www.aibbt.com 让未来触手可及 91 (6)动态最高订单属性字段:选择动态最高(最大)订单属性字段的工序 (7)动态最低订单属性字段: 选择动态最低(最小)订单属性字段的工序 (8)计划档案订单:选择订单里出现先到先服务的工序 (9)关键率:选择最小关键率的工序。 关键率=剩余计划工作时间/(完成日期-当前时间) (10)实际关键率:选择最小实际关键率的工序 实际关键率=剩余实际工作时间/(完成日期-当前时间) (11)最少剩余工序(静态):选择最少剩余工序时间的工序 (12)最长等待时间:选择最长等待时间的工序 (13)最短等待时间: 选择最短等待时间的工序 (14)最大过程时间:选择最大过程时间的工序 (15)最小过程时间: 选择最小过程时间的工序 (16)最小工序闲散时间:选择最小工序闲散时间的工序。 订单任务的闲散时间=任务剩余完成时间-剩余工作时间 工序闲散时间=任务闲散时间/完成任务的剩余工序数 (17)最小订单闲散时间:选择最小订单任务的闲散时间的工序 (18)最小工作剩余:选择所有需要完成订单的最小剩余过程时间的工序。 资源选择规则(Resource Selection Rule)选择工序加载到资源组内的哪一资源。 (1)最早结束时间:选择将要最先完成工序的资源 (2)最早开始时间: 选择将要最先开始工序的资源 (3)最迟结束时间: 选择将要最迟完成工序的资源 (4)与前工序一样: 选择被用于前一工序的资源 (5)非瓶颈最早开始时间:选择将要最早开始工序的非瓶颈资源 相关选择规则是如果选择一工序选择规则,就自动的选择相应的资源选择规则。 (1)系列顺序循环:选择同样或下一个最高(最低)系列值的工序。当没有最高值的工 序,顺序将相反,选择最低的工序。 (2)系列降顺序:选择同样或下一个最低系列值的工序 (3)系列升顺序: 选择同样或下一个最高系列值的工序 (4)最小准备系列: 选择最小准备时间及最近的系列值的工序。 (5)最小准备时间: 选择最小准备或换装时间的工序 (6)定时区的系列顺序循环:选择同样或下一个最高(最低)系列值工序。且只考虑在 特定的时区里的订单完成日期里的工序。 当没有最高值的 工序,顺序将相反,选择最低的 工序。 (7)定时区的系列降顺序:选择同样或下一个最低系列值工序。且只考虑在特定的时区 里的订单完成日期里的工序。 (8)定时区的系列升顺序: 选择同样或下一个最高系列值工序。且只考虑在特定的时 区里的订单完成日期里的工序。 (9)定时区的最小准备系列: 选择最小准备时间及最近的系列值的工序。且只考虑在 特定的时区里的订单完成日期里的工序。 (10)定时区的最小准备时间: 选择最小准备或换装时间的工序,且只考虑在特定的时 区里的订单完成日期里的工序。 下面以房屋装修为例(图 3.1),采用 ILOG Scheduler 给出规划方案, 说明约束问题求解的 原理。假定任务开始每天的开销是 1000 元, 资金总额为 20000。到工程进行到第 15 天,可以 增加 9000 元。 www.aibbt.com 让未来触手可及 92 图 3.1 房屋装修工序 采用 ILOG Scheduler 进行规划, 约束程序如下: CtSchedule * schedule = new CtSchedule(0, horizon); // 创建具有给定期限的工序. CtIntervalActivity* act = new CtIntervalActivity(schedule, duration); //规定工序 act1 和 act2 之间的顺序约束. act2->startsAfterEnd(act1,0); //创建有限资金 capacity 29000 的总预算. CtDiscreteResource* res = new CtDiscreteResource(schedule, CtRequiredResource, capacity); // 说明开始 15 天里,能用的资金 cap 为 20000. res->setCapacityMax(0,date,cap); // 说明一个工序 act 消耗的资源 res 为 c 单位. act->consumes(res, c); CtBoolean IsUnScheduled(CtActivity* act){ // 如果工序 act 没有固定开始时间则返回 True. if (act->getStartVariable()->isBound()) return CtFalse; else www.aibbt.com 让未来触手可及 93 return CtTrue; } CtBoolean IsMoreUrgent(CtActivity* act1, CtActivity* act2){ // 如果工序 act1 比 act2 紧迫, 则返回 true . // 如果工序没有限制, 则返回 true . if (act2 == 0) return CtTrue; else if (act1->getStartMax() < act2->getStartMax()) return CtTrue; else return CtFalse; } CtActivity* SelectActivity(CtSchedule* schedule){ // Returns the unscheduled activity with the smallest latest // statrt time. Returns 0 if all activities are scheduled. CtActivity* bestActivity = 0; //Creates an iterator to iterate on all activities. CtActivityIterator* iterator(schedule); CtActivity* newActivity; while(iterator.next(newactivity)) if((IsUnScheduled(newActivity)) && (IsMoreUgent(newActivity, bestActivity))) bestactivity = newActivity; return bestActivity; void SolveProblem(CtSchedule* schedule){ // Solve the problem assuming constraints have been posted. CtActivity* act = SelectActivity(schedule); while (act !=0) { act->setStartTime(act->getStartMin()); act = SelectActivity(schedule); } } ILOG Scheduler 求解, 得到图 3.2 所示的装修工序规划图。 www.aibbt.com 让未来触手可及 94 图 3.2 房屋装修工序规划图 习 题 12. 什么是约束满足问题?约束推理可以分为哪几种? 13. 什么是弧一致性?并举例说明它的非对称性。 14. 请给出约束传播 AC-1 和 AC-3 算法,并比较它们的异同之处。 15. 试用程序设计语言编写基于影响的回跳算法 IBMD,并用 N 皇后问题测试,与其他约束算 法进行比较。 16. 如何使约束推理系统 COPS 既能求解符号推理问题,又能求解数值问题? 17. 用 ILOG Solver 语言写一个车间调度系统。 www.aibbt.com 让未来触手可及 95 第四章 定性推理 定性推理(qualitative reasoning)是从物理系统、生命系统的结构描述出发,导出行 为描述, 以便预测系统的行为并给出原因解释。定性推理采用系统部件间的局部结构规则来 解释系统行为, 即部件状态的变化行为只与直接相邻的部件有关。 4.1 概 述 人工智能的定性推理理论起源于对物理现象的研究, 早期的工作常常是针对一物理过程 如动力学、流体力学、热流等问题来讨论的。1952 年,Simmons 提出定性分析的因果关系。 1977 年, Rieger 发表了因果仿真的论文[Rieger 1977]。1984 年,“Artificial Intelligence” 杂志第 24 卷出版了定性推理专辑,刊载了 de Kleer, Forbus 和 Kuipers 对定性推理奠基性 的文章,这标志着定性推理开始走向成熟。1986 年,Iwasaki 和 Simmons 发表了“Causality in Device Behavior” 的文章[Iwasaki & Simmons 1986]。十年来,这些基本方法对定性推理 的研究和应用起着重要的作用,使定性推理的研究成为人工智能中富有成果的领域之一。1993 年, “Artificial Intelligence”杂志第 59 卷又发表了一组文章,回顾十年前这几位定性 推理奠基人所做的工作。 对物理系统不同的结构描述, 便提出了不同的定性推理方法。常用的有 de Kleer 的定性 模型方法[de Kleer 1984]、Forbus 的定性进程方法[Forbus 1984]、Kuipers 定性仿真法 [Kuipers 1984]。de Kleer 的定性模型方法所涉及的物理系统是由管子、阀门、容器等装置 组成, 约束条件(定性方程)反映在这些装置的连接处, 依定性方程给出定性解释。在 Forbus 的定性进程方法中,一个物理系统的变化是由进程引起的, 一个物理过程由一些进程来描述。 Kuipers 直接用部件的参量作为状态变量来描述物理结构, 定性约束直接由物理规律得到, 把一个参量随时间的变化视作定性的状态序列, 求解算法是从初始状态出发, 生成各种可能 的后续状态, 进而通过一致性过滤, 重复这过程直到没有新状态出现。 除了上面这三种基本方法外,还有其它的研究工作。如 Davis 提出从结构描述出发进行 故障论断的方法。Reiler 提出从基本原理出发进行故障诊断的方法。Williams 把定量运算和 定性推理相结合建立了一个混合代数系统 Q1, 并讨论了它的代数性质, 他还用定性方程实现 了设计方面的定性推理。Iwasaki 和 Simmons 把经济学、热力学中所用的因果关系形式化特 征和相对静止的方法用于定性因果分析, 对因果关系给出了形式化定义。Weld 在分子生物学 中设计了定性模拟程序, 用聚类方法找出了重复出现的循环, 通过对循环的分析确定系统的 最后状态, Weld 还讨论了非连续量的情况。 4.2 定性推理的基本方法 人类对物理世界的描述、解释, 常是以某种直观的定性方法进行的,很少使用微分方程及 具体的数值描述, 如人们在骑自行车时, 为了避免摔倒和撞车, 并不需要使用书本上的运动 方程, 而是针对几个主要参量的变化趋势给予粗略的、直观的, 但大体上准确的描述, 这就 够了。 www.aibbt.com 让未来触手可及 96 一般分析运动系统行为的标准过程可分为三个步骤: (1) 决定描述对象系统特征的量。 (2) 用方程式表示量之间的相互关系。 (3) 分析方程式,得到数值解。 这类运动系统行为的问题用计算机进行求解时,将面临如下三个问题: (1) 步骤(1)(2)需要相当多的知识,并且要有相应的算法。 (2) 有的场合对象系统的性质很难用数学式子表示。 (3) 步骤(3)得到了数值解,但是对象系统的行为并不直观明了。 为了解决第二、第三个问题,定性推理一般采用下列分析步骤: (1) 结构认识:将对象系统分解成部件的组合。 (2) 因果分析:当输入值变化时,分析对象系统中怎样传播。 (3) 行为推理:输入值随着时间变化,分析对象系统的内部状态怎样变化。 (4) 功能说明:行为推理的结果表明对象系统的行为,由此可以说明对象系统的功能。 定性推理的观点大体上可这样来理解: • 忽略被描述对象的次要因素, 掌握主要因素简化问题的描述。 • 将随时间 t 连续变化的参量 x(t) 的值域离散化为定性值集合, 通常变量 x 的定性值 [x]定义为 [] ⎪⎩ ⎪⎨ ⎧ >+ = <− = 0 00 0 x x x x 当 当 当 • 依物理规律将微分方程转换成定性(代数)方程, 或直接依物理规 律建立定性模拟或给出定性进程描述。 • 最后给出定性解释 4.3 定性模型推理 de Kleer 注意到符号计算和推理是理解人们周围的物理世界最理想的工具。1974 年, de Kleer 参加了为期半年的“混淆研讨会(confusion seminar)”。会上讨论了一系列人们熟 悉而又令人困惑的问题,如反弹球、滑轮、钟摆、弹簧等问题。研讨会的目的是研究人类思 考推理的过程,而 de Kleer 却带着完全不同的课题离开研讨会。他发现对于大多数例子,传 统的数学、物理公式都没有用或不必要,许多令人迷惑的问题只需要简单的定性推理,至多 只用一两个极简单的方程就可得到令人满意的解。 de Kleer研究解决经典物理问题需要哪些知识及如何建立问题求解系统。他提出的定性 模型方法所涉及的物理系统是由管子、阀门、容器等装置组成, 约束条件(定性方程)反映在 这些装置的连接处, 依定性方程给出定性解释。 为将代数方程、微分方程定性化, 首先需定义变量的定性值集合以及相应的定性运算。 定性值集合是一个离散集合, 其元素是由对数轴的划分而得到的, 通常把数轴 (-∞, ∞)划分成 (-∞,0) , 0,(0, ∞) 三段, 规定定性值集合为 {-,0,+}, 变量 x 的定性值 [x]如下定义: www.aibbt.com 让未来触手可及 97 [] ⎪⎩ ⎪⎨ ⎧ >+ = <− = 0 00 0 x x x x 当 当 当 另外用 ∂x 表示 dx/dt 的定性值, 也即 ⎥⎦ ⎤ ⎢⎣ ⎡=∂ dt dxx 定性值的加、乘运算分别以⊕、⊗表示, 可按下述定义: x y - 0 + - - - ? 0 - 0 + + ? + + [x] ⊕ [y] x y - 0 + - + 0 - 0 0 0 0 + - 0 + [x] ⊗ [y] 其中: 符号?表示不确定或无定义。下面给出⊕和 ⊗ 的运算规则。设 e1, e2 是公式, 则有: [0] ⊕ [e1]⇒[e1] [0] ⊗ [e1]⇒[0] [+] ⊗ [e1]⇒[e1] [-] ⊗ [e1]⇒-[e1] 使用下列规则,可将运算符+、×转换成⊕、⊗: [e1+e2] ⇒ [e1] ⊕ [e2] [e1×e2] ⇒ [e1] ⊗ [e2] 由这些运算规则不难将通常的代数方程、微分方程化成定性方程。由定性方程给出解释便是 进行定性推理的过程。这里以压力调节器定性分析为例,说明定性模型推理的方法。 www.aibbt.com 让未来触手可及 98 压力调节器是通过弹簧来控制阀门流量, 以使流量为某一设定值而不受流入的流量和负 载变化的影响。根据物理学有 02 >= PPCAQ ρ dt dP P CA dt dAPCdt dQ 22 ρ ρρ + 其中 Q 是通过阀门的流量,P 是压力, A 是阀门开启的面积, 而 C 是常系数,ρ是流体的质量密 度。按照运算和转换规则而得到定性方程: [Q] = [P] ∂Q = ∂A + ∂P (如果 A > 0) 根据一致性、连续性等物理规律还可建立有关的定性方程。由这些定性方程便可得出定 性解释,描述调节器有三个特殊的状态,即开、关、工作状态: OPEN 状态 A = Amax 定性方程 [P] = 0 ∂P = 0 WORKING 状态 0 A[temperature(dst)] src 温度高于 dst 温度 Relations: 一组参量关系 Let flow-rate be a quantity flow-rate (热流量)是一个数量 A[flow-rate] > ZERO. flow-rate 值>0 flow-rate ∝Q+ (temperature(src) -temperature(dst)) flow-rate 与 src,dst 的温差定性成比例 Influences: 一组影响 1-(heat(src), A[flow-rate]) flow-rate 的值直接影响 heat(src),而且是负影响 1+(heat (dst), A[flow-rate]) flow-rate 的值直接影响 heat(dst),而且是正影响 3. 演绎过程 www.aibbt.com 让未来触手可及 100 在进程定性推理中,其演绎过程如下: (1) 选进程。 对一组已知的个体来说, 在进程表中依各进程对个体的说明找出可能出现 的那些进程例 PI。 (2) 确定激活的 PI。依前提条件、数量条件确定每个 PI 的状态。满足这些条件的为激 活的 PI , 激活的 PI 叫进程结构。 (3) 确定量的变化。 个体的变化由相应量的 Ds 值来表示。量的变化可由进程直接影响, 也可由∝Q 间接影响。 (4) 确定进程结构变化。量的变化将会引起进程结构的变化,确定这种变化也叫限制分析, 这样对一个物理过程的描述便由 (1)建立的 PI 进入了下一个 PI 。 重复(1)-(4) 的步骤便可给出一个物理过程的一串进程描述。 限制分析是依 Ds 值来确定量在量空间中的变化。首先在量空间中找出当前值的相邻。如 果相邻是限制点, 则某些进程便停止, 某些进程开始。与限制点有关的半序关系的所有可能 变化确定了当前激活进程的变化路径。 这里以锅炉加热过程的进程描述为例,说明进程方法的演绎过程。锅炉有一个装水的容 器, 加热时盖子密封, 热源是火, 假设热源的温度不变。当容器内压力超过 p-burst(CAN) 时就会爆炸。 图 4.1 锅炉加热过程的进程描述 图 4.1 给出了一个锅炉加热过程的进程描述, 其中 PS 是进程结构,LH 是限制假设(附加 的量假设), IS 是出现的个体。锅炉加热过程的进程解释如下: 从 ①开始, 进程结构只有 heat-flow(热流)。由 PS: (heat-flow)可导出 ②和 ③。② www.aibbt.com 让未来触手可及 101 是水温与热源温度相等, 这时 heat-flow 进程结束。③ 是水开始沸腾,由 heat-flow 和 boiling 进程描述, 这时可发生④, ⑦, ⑧, ⑨。④ 是水烧干了, 可导至 ⑤出现爆炸进程, 或 ⑥蒸汽温度达到热源温度而结束。⑦ 是水沸腾使压力上升, 使水沸点提高, 由于水温 低于沸点。返回③。⑧ 是水温达到热源温度而结束。⑨ 容器压力过高,用进程 p-burst(CAN) 描述,出现爆炸。 4.5 定性仿真推理 1984 年 Kuipers 发表了“因果性的常识推理:从结构导出行为”论文。这篇论文建立了 一种定性仿真推理的框架, 简单地给出了从常微分方程的抽象而得的定性结构和定性行为表 示方法。随后,1986 年 AI 杂志又刊登了 Kuipers“定性仿真”一文,文中明确了抽象关系, 提出用于定性仿真的 QSIM 算法,并用抽象关系证明了其有效性和不完备性。这两篇文章奠定 了定性仿真的基础。 定性仿真是从结构的定性描述出发来导出行为描述。直接用部件的参量作为状态变量来 描述物理结构, 定性约束直接由物理规律得到, 把一个参量随时间的变化视作定性的状态序 列, 求解算法是从初始状态出发, 生成各种可能的后续状态, 进而通过一致性过滤, 重复该 过程直到没有新状态出现。 定性仿真结构描述由系统的状态参数和约束关系组成。认为参数是时间的可微函数, 约 束是参数间的二元或多元关系。如速度的导数是加速度。表为 DERIV(Vel, acc)。f = ma 表 为 MULT(m,a,f), f 随 g 单调增加表为 M+(f,g),f 随 g 单调减少, 表为 M-(f,g)。 行为描述关心参量的变化。假设参量 f(t)是[a,b]到[-∞, ∞]的可微函数。f 的界标 值是一个有限集合, 至少含有 f(a),f(b)。集合 {t|t ∈ [a,b] ∧ f(t) 是界标值} 的 元素称作区别点。 定义 4.1 设 l1,定义如下: ⎩ ⎨ ⎧ ∈ == ++ ),(),( 11 jjtjj jtj llfll lflqval 如果 如果 ⎪⎩ ⎪⎨ ⎧ < = > = 0)( 0)( 0)( ' ' ' tfdec tfstd tfinc qdir 如果 如果 如果 定义 4.2 设 ti, ti+1 是相邻的区分点,规定 f 在 (ti,ti+1)内的定性状态 QS(f, ti, ti+1) 仍为 QS(f,t) 其中 t∈(ti,ti+1) (4.1) 定义 4.3 f 在 [a,b]上的定性行为是f的定性状态序列 QS(f,t0), QS(f,t0,t1), QS(f, t1), ┄ ,QS(f, tn)。其中 ti(i=0,1,┄,n)为所有的区分点, 且 ti < ti+1,若 F = {f1, ┄, fn}, 则 F 的定性行为是 QS(F,ti) = { QS(f1,ti),┄, QS(fn,ti)} (4.2) QS(F,ti,ti+1)= { QS(f1,ti,ti+1),┄, QS(fn,ti,ti+1)} (4.3) 其中 ti 是 f1, ┄, fk 区分点并集的元素。 www.aibbt.com 让未来触手可及 102 4.5.1 定性状态转换 在定性仿真中,定性状态转移是经常遇到的。假设 f 是可微函数,f 从一个定性状态转换 到另一个定性状态必须遵守介值定理和中值定理。定性状态转换有两类:一类是 P 转换,该 类转换是从时间点到时间区间;另一类是 I 转换,它是从时间区间到时间点的转换。下面给 出转换表: P 转换 QS(f,ti) ⇒ QS(f,ti,ti+1) P1 P2 ⇒ <(lj,lj+1),inc> P3 ⇒ <(lj-1,lj),dec> P4 ⇒ <(lj,lj+1),inc> P5 <(lj,lj+1),inc> ⇒ <(lj,lj+1),inc> P6 ⇒ <(lj-1,lj),dec> P7 <(lj,lj+1),dec> ⇒ <(lj,lj-1),dec> I 转换 QS(f,ti,ti+1) ⇒ QS(f,ti+1) I1 I2 <(lj,lj+1),inc> ⇒ I3 <(lj,lj+1),inc> ⇒ I4 <(lj,lj+1),inc> ⇒ <(lj,lj+1),inc> I5 <(lj,lj+1),dec> ⇒ I6 <(lj,lj+1),dec> ⇒ I7 <(lj,lj+1),dec> ⇒ <(lj,lj+1),dec> I8 <(lj,lj+1),inc> ⇒ I9 <(lj,lj+1),dec> ⇒ \begin{tabular}{lll} & QS$(f,t_i,t_{i+1}) \Rightarrow$ & QS$(f,t_{i+1})$\\ I1 & $$ & $$ \\ I2 & $<(l_j,l_{j+1}),inc>$ & $$ \\ I3 & $<(l_j,l_{j+1}),inc>$ & $$ \\ I4 & $<(l_j,l_{j+1}),inc>$ & $<(l_j, l_{j+1}),inc>$\\ I5 & $<(l_j,l_{j+1}),dec>$ & $$ \\ I6 & $<(l_j,l_{j+1}),dec>$ & $$ \\ I7 & $<(l_j,l_{j+1}),dec>$ & $<(l_j,l_{j+1}),dec>$ \\ I8 & $<(l_j,l_{j+1}),inc>$ & $$ \\ I9 & $<(l_j,l_{j+1}),dec>$ & $$ \\ 其中 l*是新界标值, lj QS(V,t0,t1)=<(0,∞),dec> QS(Y,t0,t1)=<(0,∞),inc> 对每个参数做各种可能的转换, 当前处于时间区间上, 所以需使用 I 转换: A I1 V I5 <(0,∞),dec> ⇒ <0,std> I6 <(0,∞),dec> ⇒ <0,dec> I7 <(0,∞),dec> ⇒ <(0,∞),dec> I9 <(0,∞),dec> ⇒ Y I4 <(0,∞),inc> ⇒ <(0,∞),inc> I8 <(0,∞),inc> ⇒ 下面对约束形成元组集合, 先对单个约束做一致性滤波, 滤掉的以 C 表示, 然后对元组 做组对再做一致性滤波, 滤掉的以 W 表示。 根据 DERIV(Y,V) 组对: (I4,I5) C (I8,I5) W (I4,I6) C (I8,I6) (I4,I7) (I8,I7) C (I4,I9) W (I8,I9) C 根据 DERIV(V,A) 组对: (I5,I1) C (I7,I1) (I6,I1) (I9,I1) C 其中如元组(I4,I5)中, I4 使 Y 的定性状态变为 <(0,∞),inc>, 而 I5 使 V 的定性状态 变为 <0,std>, 这与约束 DERIV(Y,V) 不一致, 于是 (I4,I5)被过滤掉了。又元组 (I4,I9) 中的 I9 和元组 (I9,I1)中的 I9 都是对 V 的转换,由于 (I9,I1)已被过滤掉了,所以导致 (I4,I9)被滤掉。 www.aibbt.com 让未来触手可及 104 对剩下的元组形成两个全局解释如下: Y V A I4 I7 I1 I8 I6 I1 第一个解释为无变化, 被滤掉。第二个解释是唯一的后继状态。这时 QS(A,t1)= QS(V,t1)=<0,dec> QS(Y,t1)= 其中 Ymax 是新的界标值。 4.6 代数方法 Williams 建立了一个定性定量相结合的混合代数,实现了相应的符号代数程序 MINIMA, 它是 MACSYMA 的一种定性模拟,为化简、分解、组合定性方程提供了工具。这个代数系数可 用来解决一类物理问题的设计。 这个代数系统是定义在实数 R 和符号 S' = {+,-,0,?}之上的。允许在 R 上做定量运算, 也允许在 S'上做定性运算。如可在 R 上运行+, -, ×, /,可在 S'上进行 ⊕, ⊖, ⊗, ⊘,并 有定性算子[]。交换律、结合律、分配律都成立,只是[S',⊕,⊗]上对⊕ 来说没有逆元。 从而: 由 s ⊕ u = t ⊕ u 导不出 s = t 由 s ⊕ t= u 导不出 s = u ⊖ t 这个系统可用来进行设计。例如,已知一个自行打取的饮料瓶和一个饮料储存箱。要求 设计一个装置以便能自动改变瓶箱液面高度,使得当瓶液面高 H 下降时可从箱中得到饮料的 补充。这个设计过程可这样来直观地设想: 瓶中液面高 Hb 的升降由流入流出的饮料流量 Qb 所决定,容器底部压力 P 和饮料密度成 比例,也即压力由高度决定。要求瓶中压力相对箱中压力下降时,就有饮料由箱中流入瓶中。 显然所需设计的装置,只需由瓶箱间加一条管子来实现。这个设计的推理过程不只涉及具体 数值,也不只涉及定性的符号值,有些地方需要精确的关系而不仅是简单的符号关系。 可用所述的混合代数来描述推演这个问题,MINIMA 系统可自动处理这个设计问题: 目标 ][ bbv Hdt dHH =− Hb × Ab = Vb 容器模型,瓶中饮料体积为截面乘以高 Hb = Vb / Ab )]([ b b bv A V dt dHH =− ]/)[( bbbv AVdt dHH =− )][( bbv Vdt dHH =− ⊘[Ab] www.aibbt.com 让未来触手可及 105 [Ab] = [+] 容器模型 [Hv - Hb] = [ bVdt d ] Qb = bVdt d 容器模型 [Hv - Hb] = [Qb] Pv = d × g × Hv 容器模型,箱中饮料一点的压力是密度与重力加速度、高度的乘积 Hv = Pv /( d × g ) [Pv /( d × g ) - Hb] = [Qb] Pb = d × g × Hb 容器模型 Hb = Pb /(d × g ) [Pv /(d × g )- Pb /(d × g )] = [Qb] [Pv - Pb] ⊖ ([d] × [g]) = [Qb] [d] = [+] 饮料性质 [g] = [+] 重力性质 [Pv - Pb] ⊘ ([+] ⊗ [+]) = [Qb] [Pv - Pb] = [Qb] 最后这个表达式,正是一根管子两端压力与流量间的关系。从而只需用一根管子把饮料 瓶与饮料箱连结起来。 4.7 几何空间定性推理 空间定性推理是对几何形状或者运动性质进行定性推理,首先需对空间位置及运动方式 进行定性表示,进而对几何形状及运动性质进行推理研究及预测分析,并作出逻辑解释。空 间定性推理是通过定义一组空间并寻找这些关系间的联系来进行的。目前主要的研究是针对 空间定性建模方式、 空间形状及关系的定性表示和定性技术的形式化等, 产生解释理论, 但 总体来看与解决工程问题距离尚远。目前,将 Allen 的时态逻辑[Allen 1984]与 Randall 的 空间逻辑[Randall 1992]结合起来,形成空间、时间、连续运动的表达逻辑。 另外从空间定性推理派生出空间规划理论, 可用于为一组几何对象寻找满足一组约束的 分布设计, 有关方法主要用于设计自动化、定性建模等领域。 在这一领域已取得了一些较有 实际意义的成果, 如约束满足问题(CSP)求解理论, 而实际上很多空间定性规划都是一个几 何约束满足问题(GCSP)。 4.7.1 空间逻辑 对空间几何形体及其运动进行几何仿真的主要任务是对其可能状态进行展望 (Envisionment)。所谓“展望"是指对系统建模并产生其可能状态的生成树。展望可分为两类, 完整的(total)与可达的(attainable)。可达性展望是对建模系统从某一些特殊状态开始建立 其可能状态生成树; 而完整性的展望 可以产生系统的全部可能状态[Cui 1992]。 1992 年由 Randell 等人建立起来的 RCC 空间时间逻辑是用于对空间问题进行可达性的展 www.aibbt.com 让未来触手可及 106 望, 并已程序实现。与 Kuipers 的 QSIM 方法类似, 基于 RCC 逻辑的仿真算法也是从对系统进 行结构性的描述开始的, 系统将初始状态作为生成树的根结点, 可能的行为则是树中从根结 点到叶结点的路径。 空间逻辑的基础在于假设一个原语性的二元关系 C(x,y)。其中 x,y 表示两个区域 (regiong), 谓词 C 表示共享一个以上公共点。也就是指相接触,它具有自反性、对称性。 1. 八个基本关系的定义 使用关系 C(x,y), 一组基本的二元关系可以被定义为: (1) DC(x,y): 表示两区域不相接触。 (2) EC(x,y): 表示两区域外部接触。 (3) PO(x,y): 表示两区域部分覆盖。 (4) =(x,y): 表示两区域完全相同。 (5) TPP(x,y): 表示$x$是$y$的一个严格部分并且$x,y$相切(内切)。 (6) NTPP(x,y): 表示$x$是$y$的一个严格部分但$x,y$不相接触(包含而不相切)。 (7) TPP(x,y): 表示$y$是$x$的一个严格部分并且$x,y$相切。 (8) TPP(x,y): 表示$y$是$x$的一个严格部分但$x,y$不相切接触。 这八个关系的定义可以通过 C(x,y)以及一些辅助性的描述函数来构造, 其中使用了一些 过渡性的状态谓词如 P(x,y) (表示部分属于), PP(x,y)(表示严格部分属于),O(x,y)(表示覆 盖)等。 2.基本关系间的联系 这种空间逻辑与 Allen 的逻辑相类似, 也使用预计算的传递性表来表示二元关系之间可 能的变化联系, 在表中从任一关系 R3(a,c)可查找出所有可能的二元关系 R1(a,b)与 R2(b,c)。 这一表对定性仿真是很有用的。然而,近年的研究中尚未给出这类传递性表的建立算法。但 Randell 提到在其仿真程序中使用了该表来检验展望过程中状态描述的一致性。 另外还需提到, 几何体与几何区域间的联系用函数 space(x,t)表示,它表示几何体 x 在 t 时刻占据的几何区域为 space(x,t),不考虑时间时,参数 t 被略去, 通常在考虑问题中,为了简 化运算, 可在不产生歧义时直接用变量 x 表示几何体 x 所占据的几何区域。 3.基本状态间的相互转换 根据两个区域的形状不同,上述八个基本关系可被分为 6 个子集: (1) DC EC PO = (2) DC EC PO TPP (3) DC EC PO TPP-1 (4) DC EC PO TPP NTPP (5) DC EC PO TPP-1 NTPP-1 (6) DC EC PO 这六个子集的划分可以这样理解: 如果两个几何区域形状完全相同, 那么它们在空间存 在, 只能是第(1)子集所列举的四种情况。 而如果有半径相同的一个球体与一个半球体, 那 么它们之间的关系只能是第(2)子集所列举的情况。一个半径为 R 的圆盘和一个半径为 R/2 的 圆柱空间就只能是第(6)子集的三种情况。 值得注意的是第(3)子集、第(5)子集分别是第(2)、(4)子集的反集,即如果 x,y 是两个 空间区域,它们的形状决定它们之间可能的关系 R(x,y)所构成的集合就是第(2)子集,那么当 我们考虑关系 R(x,y)时,所得到的集合就是第(3)子集。 所以我们可以这样认为:从(1)到 (2),(3)再到(4),(5)最后到(6) 是两个几何区域的形状之间的关系从特殊向一般变化的一种 体现。 这样就可以得到两个形状不变的区域在空间运动而使它们之间的关系产生变化,其变化 www.aibbt.com 让未来触手可及 107 只限于以下四种序列: (1) DC ↔ EC ↔ PO ↔ = (2) DC ↔ EC ↔ PO ↔ TPP(TPP-1) (3) DC ↔ EC ↔ PO ↔ TPP(TPP) ↔ NTPP(NTPP-1) (4) DC ↔ EC ↔ PO 4.7.2 空间时间关系描述 1.方位性状态和运动性状态 Galton 将八个 RCC 关系分为方位性状态(position state)和运动性状态(motion state),并且使用 Allen 关于时间关系的一些逻辑化的形式, 给出了这种分类的定义。首先 介绍一下 Galton 使用的概念、谓词和函数。 (1) 对时间的描述分为区间和时刻; (2) 状态存在的描述谓词: Holds-on(s,i) 表示在区间 i 上存在状态 s; Holds-at(s,t) 表示在时刻 t 存在状态 s; (3) 谓词 Div(t,i) 表示时刻 t 在区间 i 上; (4) 函数 inf(i)表示在区间 i 的开始时刻; (5) 函数 sup(i)表示在区间 i 的结束时刻; 定义 4.4 方位性状态。 如果状态 s 满足 ∀i (Holds-on(s,i)) →Holds-at(s,inf(i))∧ Holds-at(s,sup(i)) 即如果一个状态 s 在时间区间 i 上存在, 则在该区间的起止时刻这个状态都存在。具有这一 性质的状态称为方位性状态。 定义 4.5 运动性状态。如果状态 s 满足 ∀t (Holds-on(s,t) →∃i (Div(t,i) ∧ Holds-on(s,i))) 即如果在某时刻 t 有状态 s, 那么一定存在包含这一时刻的某一区间使$s$在整个区间都 存在, 具有这一性质的状态称为运动性状态。 这样, 前面八个基本关系可分为两类: 方位性状态: EC, =, TPP, TPP-1 运动性状态: DC, PO, NTPP, NTPP-1 这两类状态可以通过它们的表现形式加以区分: 方位性状态是有“临界” 的 性质,而运动性状态具有“稳定”的性质。 2. 扰动原理 Galton 根据这种分类给出了扰动原理, 这是对空间状态在时域变化进行描述的一组公理 体系: 定义 4.5 扰动(perturbation)。如果 RCC 关系 R 与 R'满足条件: ∃t(Holds-at(R(a,b),t)∧(∃i(Holds-on(R'(a,b),i)) ∧(inf(i)=t)∨ (sup(i)=t))))) www.aibbt.com 让未来触手可及 108 即如果时刻 t 有状态 R,且有一个区间 i 开始或结束于 t 区间 i 上的状态为 R'。此时称 R 与 R' 互为扰动。 扰动原理: 每个 RCC 关系是它自身的扰动, 另外一个静止性的状态只能与一个运动性的 状态互扰动, 反之亦然(只讨论刚体)。 设 R 为一个 RCC 状态, R1,R2,…,Rn 为 R 的所有扰动, 然后根据扰动原理有以下 6 条公理: (A1) Holds-on(R(a,b),i) → n i 1=∨ Holds-at(Ri(a,b),sup(i)); (A2) Holds-on(R(a,b),i) → n i 1=∨ Holds-at(Ri(a,b),inf(i)); (A3) Holds-at(R(a,b),t) →∃t' n i 1=∨ Holds-on(Ri(a,b),(t,t')); (A4) Holds-at(R(a,b),t) →∃t' n i 1=∨ Holds-on(Ri(a,b),(t',t)); (A5) Holds-on(s,(t1,t2)) ∧¬Holds-at(s,t3) ∧ t2 t2) 或(t3,t1)(t3,t1) 上必有一时刻 t 使 s 状态发生突变。 4.7.3 空间和时间逻辑的应用 上述公理系统可用于对空间形体之间关系的推理。例如, 当知道在 t1 时刻有 DC(a,b), 而在 t2 时刻观察到 PO(a,b), 且 t1 < t2,则必可推得在(t1,t2)上有 t, EC(a,b), 即 Holds-at(DC(a,b),t1)∧Holds-at(PO(a,b),t2)∧t1 在 P1 × P2 中存在相似关系。 定义5.2 部分匹配。 s ∊ S, t ∊ T, s 和 t 是包括公共常数的元文字的有限集。对于 Q, 设 Qθ ⊆ s ⊆ s × t, Qθ 和 ν(Q)θ存在一对一的对应关系,则(Q, θ) 称作对 s 和 t 一般部分匹 配。 定义5.3 大小程度。设 (Q,θ),(Q',θ') 是对于 s × t 部分匹配。如果存在替换 ξ, 使 Q'ξ⊆ Q, 对于任何 W ∊ν(Q') Wθ' = Wξθ, (Q,θ) 是大于(Q',θ'), 可以写成 (Q,θ) ≥ ( Q',θ')。 定义5.4 最大部分匹配。 在s × t中, 对于 (Q,θ), (Q',θ') 部分匹配, 如果(Q,θ) ≥ (Q',θ)$, 那么 (Q,θ) 称作在 s × t中的最大部分匹配。 定义 5.5 类比学习。对于 s1, s2 ∊ S, t1 ∊ T,和 β在 S × S中, s1 × s 2 ∊ β, m 在 s1 × t1是最大部分匹配。根据t1 × t2 ∊ β 和 m 在 s2 × t2中是最大部分匹配,将得到 t2 ∊ T, 这就是 类比学习。 A A’ B B’ α β α’ β’ www.aibbt.com 让未来触手可及 113 5.3 过程模型 基于范例推理是类比推理的一种。在基于范例推理中, 最初是由于目标范例的某些 (或 者某个) 特殊性质使我们能够联想到记忆中的源范例。但它是粗糙的,不一定正确。在最初 的检索结束后,我们须证实它们之间的可类比性,这使得我们进一步地检索两个类似体的更 多的细节,探索它们之间的更进一步的可类比性和差异。在这一阶段,事实上,已经初步进 行了一些类比映射的工作,只是映射是局部的、不完整的。这个过程结束后,获得的源范例 集已经按与目标范例的可类比程度进行了优先级排序。接下来,我们便进入了类比映射阶段。 我们从源范例集中选择最优的一个源范例,建立它与目标范例之间的一致的一一对应。下一 步,我们利用一一对应关系转换源范例的完整的 (或部分的) 求解方案,从而获得目标范例 的完整的 (或部分的) 求解方案。若目标范例得到部分解答,则把解答的结果加到目标范例 的初始描述中,从头开始整个类比过程。若所获得的目标范例的求解方案未能给目标范例以 正确的解答,则需解释方案失败的原因,且调用修补过程来修改所获得的方案。系统应该记 录失败的原因,以避免以后再出现同样的错误。最后,类比求解的有效性应该得到评价。整 个类比过程是递增地进行的。图5.2 给出了基于范例推理的一般结构。 新问题 新范例 检索 历史范例 范例库 复 用 保存 修正范例 修正 解答范例 确认解 建议解 图 5.2 基于范例推理结构示意图 基于范例推理有两种形式:问题求解型(problem-solving CBR)和解释型(interpretive CBR)。前者利用范例以给出问题的解答;后者把范例用作辩护的证据。范例推理的过程见图 5.3。在范例推理中,关心的主要问题如下: (1) 范例表示: 基于范例推理方法的效率和范例表示紧密相关。范例表示涉及这样几个 问题: 选择什么信息存放在一个范例中;如何选择合适的范例内容描述结构;范例库如何组 织和索引。对于那些数量达到成千上万、而且十分复杂的范例, 组织和索引问题尤其重要。 (2) 分析模型: 分析模型用于分析目标范例,从中识别和抽取检索源范例库的信息。 (3) 范例检索: 利用检索信息从源范例库中检索并选择潜在可用的源范例。基于范例推 理方法和人类解决问题的方式很相近。碰到一个新问题时,首先是从记忆或范例库中回忆出 与当前问题相关的最佳范例。后面所有工作能否发挥出应有的作用,很大程度上依赖于这一 阶段得到的范例质量的高低,因此这步非常关键。一般讲,范例匹配不是精确的,只能是部 分匹配或近似匹配。因此,它要求有一个相似度的评价标准。该标准定义得好,会使得检索 www.aibbt.com 让未来触手可及 114 出的范例十分有用,否则将会严重影响后面的过程。 (4) 类比映射: 寻找目标范例同源范例之间的对应关系。 (5) 类比转换: 转换源范例中同目标范例相关的信息,以便应用于目标范例的求解过程 中。其中,涉及到对源范例的求解方案的修改。把检索到的源范例的解答复用于新问题或新 范例之中。它们分别是,源范例与目标范例间有何不同之处;源范例中的哪些部分可以用于 目标范例。对于简单的分类问题,仅需要把源范例的分类结果直接用于目标范例。它无需考 虑它们之间的差别,因为实际上范例检索已经完成了这项工作。而对于问题求解之类的问题, 则需要根据它们之间的不同对复用的解进行调整。 从复用的信息内容来看,主要有两种类型:结果的复用和方法的复用。对于前者来讲, 当源范例的解答结果需要调整时,它依据一些转换操作知识,把源范例中的种种可能解转换 为目标范例中相应的解。方法的复用则关心源范例中的问题是如何求解的,而不是其解答结 果。源范例带有求解方法的信息,如操作算子的使用,子目标的考虑,成功或失败的搜索路 径等。复用时需把这些方法重新例化。 (6) 解释过程: 对把转换过的源范例的求解方案应用到目标范例时所出现的失败做出解 释,给出失败的因果分析报告。有时对成功也同样做出解释。基于解释的索引也是一种重要 的方法。 (7) 范例修补: 有些类似于类比转换,区别在于修补过程的输入是解方案和一个失败报 告,而且也许还包含一个解释,然后修改这个解以排除失败的因素。 当复用阶段产生的求解结果不好时,需要对其进行修补。修补的第一步是对复用结果进 行评估,如果成功,则不必修补,否则需对错误采取修补。 进行结果评估,可以依据它在实际环境中运行后的反馈,也可以通过咨询完成。等待反 馈可能要花一段时间,比如病人治疗的结果好坏。为此,可以考虑通过模拟时间环境来实现。 修正错误一般涉及错误探测和寻找原因。寻找原因是为了对错误进行解释分析,以找出 原因对症下药,即修改造成错误的原因使其不再发生。当然,修改既可以使用领域知识模型 进行自修补,也可以由用户输入完成。 (8) 类比验证: 验证目标范例和源范例进行类比的有效性。 (9) 范例保存: 新问题得到了解决,则形成了一个可能用于将来情形与之相似的问题。 这时有必要把它加入到范例库中。这是学习也是这是知识获取。此过程涉及选取哪些信息保 留,以及如何把新范例有机集成到范例库中。修改和精化源范例库, 其中包括泛化和抽象等 过程。 在决定选取范例的哪些信息进行保留时,一般要考虑以下几点:和问题有关的特征描述; 问题的求解结果;以及解答为什么成功或失败的原因及解释。 把新范例加入到范例库中, 需要对它建立有效的索引,这样以后才能对之作出有效的回 忆。索引应使得与该范例有关时能回忆得出,与它无关时不应回忆出。为此,可能要对范例 库的索引内容甚至结构进行调整,如改变索引的强度或特征权值。 www.aibbt.com 让未来触手可及 115 检索 建议粗略解 修正 辩护 评批 实际评估 存储 图 5.3 基于范例推理过程示意图 5.4 范例的表示 知识在大脑中的记忆机理现在仍是个悬而未决的问题。虽然在目前的知识系统中使用了 产生式、语义网、框架、面向对象等诸多的知识表示方法,但它们在学习系统中,尤其在类 比学习系统中却显得有些难于胜任了。原因在于,知识的记忆不仅要使知识成为有结构和有 组织的体系,还应保证记忆的知识是易于检索和存取的,而且,还应该是易于学习的。 在生理学、心理学等领域,已经广泛开展了关于记忆的研究。心理学的研究者们注重研 究记忆的一般理论,已经提出了许多记忆模型,典型的包括情景记忆 (episodic memory), 语义记忆 (semantic memory),联想记忆 (associative memory)、Schank 的动态记忆理论 (dynamic memory) 等。 知识是有结构的体系。在某些任务的执行过程中,专家采用语义记忆来存储信息。这种 信息记忆方法具有下列优点: · 有利于检索。 · 易于组织。可以把它们连接成树形层次或者网络。 · 易于管理。知识的改变只对局部产生影响。 · 有利于知识的共享。 Schank 的动态记忆理论把知识记忆在一些结构中。有四种类型的结构,它们是记忆组织包 (Memory Organization Packet, MOP),场景 (Scene),剧本(Script),主题记忆包 (Thematic Organization Packet, TOP)。一个记忆组织包中可以包含许多场景,每一场景又可以包含多 个剧本。同时,在记忆组织包的上层还可能包含元记忆组织包 (Meta-MOP) 等。这些结构按 照一定的组织原则形成一个网络结构,而通过索引来检索它们。 5.4.1 语义记忆单元 语义记忆单元,是指在学习、分析、理解、记忆知识的过程中所着重关注的其中那些概 www.aibbt.com 让未来触手可及 116 念、模式、主题等,以及据此形成的关于知识的概念性认识。换言之,这些语义记忆单元是 系统对知识经“计算”之后,抽取其中最能反映知识本身特征且可以很好地使知识内在地联 系在一起的那些因素而获得的。 我们记忆的知识只有建立在一定程度的加工基础上,才能获得真正的记忆,并很好地服 务于以后的使用。语义记忆单元的作用在于,它是对具体知识、具体问题某个方面的概括, 以及对具体知识和具体问题的较为抽象的本质的认识。具体知识和具体问题可以依语义记忆 单元为中心,以语义记忆单元之间的联系为纽带很好地组织起来。 那么,选择知识中哪些因素作为语义记忆单元呢?由于每种知识都有其自身内在的特点, 因此,选择的策略便因知识的特点不同而有所不同。一般地,对于很新的知识,我们往往把 其中的概念作为首要的记忆对象。随着关于此类知识的积累愈加丰富,在具备了关于具体问 题的分析能力之后,便可用来分析具体问题的主旨,从中概括出一些抽象的概念性的认识。 例如,天文学中,天体之间围绕旋转是我们对天体间关系的一般认识,则“围绕旋转”这个 二元关系便可以抽象为一个语义记忆单元。通过这个词汇,不仅可以联想到具体的知识,还 可以联想到具体的形象。关于选择策略的另外一点考虑是,可以把知识中涉及到的那些重要 的模式抽象出来作为语义记忆单元。这些模式并不是用文字表达的,而是用某些特殊符号组 合而成的一种特殊的表达方式。 5.4.2 记忆网 我们所记忆的知识彼此之间并不是孤立的,而是通过某种内在的因素相互之间紧密地或 松散地有机联系成的一个统一的体系。我们使用记忆网来概括知识的这一特点。一个记忆网 便是以语义记忆单元为结点,以语义记忆单元间的各种关系为连接建立起来的网络。在下面 的叙述中,我们把语义记忆单元简记为 SMU[Li 1992]。网络上的每一结点表示一语义记忆单 元,形式地描述为下列结构: SMU = { SMU_NAME slot Constraint slots Taxonomy slots Causality slots Similarity slots Partonomy slots Case slots Theory slots } (1) SMU_NAME slot: 简记为 SMU 槽。它是语义记忆单元的概念性描述,通常是一个词 汇或者一个短语。 (2) Constraint slots: 简记为 CON 槽。它是对语义记忆单元施加的某些约束。通常, 这些约束并不是结构性的,而只是对 SMU 描述本身所加的约束。另外,每一约束都有 CAS 侧面(facet)和THY 侧面与之相连。 (3) Taxonomy slots: 简记为 TAX 槽。它定义了与该 SMU相关的分类体系中的该 SMU 的一些父类和子类。因此,它描述了网络中结点间的类别关系。 (4) Causality slots: 简记为 CAU 槽。它定义了与该 SMU有因果联系的其它 SMU,它 或者是另一些 SMU 的原因,或者是另外一些SMU 的结果。因此,它描述了网络中结点间的 因果联系。 www.aibbt.com 让未来触手可及 117 (5) Similarity slots: 简记为 SIM 槽。它定义了与该 SMU 相似的其它 SMU,描述网 络中结点间的相似关系。 (6) Partonomy slots: 简记为 PAR 槽。它定义了与该 SMU 具有部分整体关系的其它 SMU。 (7) Case slots: 简记为 CAS 槽。它定义了与该 SMU 相关的范例集。 (8) Theory slots: 简记为 THY 槽。它定义了关于该 SMU 的理论知识。 上述 8 类槽可以总地分成三大类。一类反映各 SMU 之间的关系,包括TAX 槽、CAU 槽、 SIM 槽和 PAR 槽; 第二类反映 SMU 自身的内容和特性,包括 SMU 槽和 THY 槽; 第三类反 映与 SMU相关的范例信息,包括CAS 槽和 CON 槽。关于相似的 SMU,我们引进一个特殊的结 点,即内涵结点MMU,用此来表示与此结点连接的各结点是关于此内涵相似的一些SMU。通过 为 SMU 增加约束,可以把比 SMU 更为特殊的知识记忆在该 SMU周围。因此,通过 SMU 就可 以检索到受到一些约束的知识。这使得知识的记忆具有层次性。PAR槽虽然在我们的模型中并 不影响知识的检索,但却对知识的回忆具有很大的作用。通过部分整体联系,我们便可以回 忆起属于某一主题或者某个领域的知识。THY槽记忆的是关于SMU 的理论知识,如上面给出的 “资源冲突”的知识。这些知识可以采用任何成熟的知识表示方法,例如,产生式、框架、 基于对象的表示方法等。在某些情况下,这使得知识处理可以局部化。在记忆网中,结点之 间的语义关系保证了同某个 SMU有关的知识是非常容易检索到的。 我们看到,记忆网是相当复杂的,但它确实反映了知识之间错综复杂的内在联系。网络 的复杂性决定了网络建立和学习的复杂性。对于人来讲,记忆网是经过知识的长期积累和学 习思考的结果而逐步完善和形成的。在这一过程中,不断地增加新的结点和知识,同时,把 长久不用的关于某个结点的知识遗忘掉。这说明,网络建立的过程事实上便是知识的学习过 程。 使用记忆网可以一定程度地解释知识的遗忘。一般对于一段时间内不用的知识,我们往 往无意识地把它的一些具体内容遗忘殆尽,而却能在记忆中留下一些关于这种知识的大致的 印象。这说明,记忆网本身是一种长时性的记忆,而关于各槽的记忆则是短期的,会逐渐淡 化甚至遗忘。我们可以用记忆强度来描述知识的遗忘和记忆得到强化的现象。一般地,记忆 强度是时间和回忆的一个函数。随着时间的增加,记忆强度会减弱,而每一次回忆之后,获 得回忆的知识的记忆强度便有所增加。 记忆网与语义网既有联系, 又有差别, 是在语义网基础上发展起来的一种模型。它们都 使用结点来表示信息,使用结点之间的连接来表示语义关系。它们之间具有很大的不同。对 信息的表示是有本质的区别的。语义网的信息表达能力只局限于网络自身,亦即知识只能通 过结点和结点间的连接来表示。但记忆网的表达能力却远不止于此,表现在: · 可以记忆使用其它表达方式表示的理论知识和具体范例。 · 通过为结点施加约束来记忆较为特殊的知识。 · 可以通过内涵结点来组织相似的知识。 · 记忆单元可以是一个主体, 可以独立地完成一定的任务。 在记忆网基础上可以进行多种推理, 例如: (1) 通过语义关系可以在各结点之间继承知识。这一点类似于语义网的继承推理。 (2) 约束满足是指在结点内部,通过对其内涵施加约束而获得特殊知识的过程。 (3) 对 THY槽中所记忆的知识,可以针对表示方法的不同而采用相应的推理方式,比如 正反向推理和信息传递等。 (4) CAS 槽中记忆了具体的范例,故可采用基于范例的推理方法。由此,基于范例的抽 象和泛化也是在记忆网上可实施的操作。 www.aibbt.com 让未来触手可及 118 5.5 范例的索引 范例组织时由两部分组成,一是范例的内容,范例应该包含哪些有关的东西才能对问题 的解决有用;二是范例的索引,它和范例的组织结构以及检索有关,反应了不同范例间的区 别。 范例内容一般有如下三个主要组成部分:①问题或情景描述:范例发生时要解决的问题 及周围世界的状态;②解决方案:对问题的解决方案;③结果:执行解决方案后导致的结果 (周围世界的新的状态)。问题或情景描述和解决方案是必不可少的部分,任何基于范例推理 系统必须要有,而结果部分在有的系统中没有。 (1)问题或情景描述 是对要求解的问题或要理解的情景的描述,一般要包括这些内容: 当范例发生时推理器的目标,完成该目标所要涉及的任务,周围世界或环境与可能解决方案 相关的所有特征。 (2)解决方案 的内容是问题如何在一特定情形下得到解决。它可能是对问题的简单解 答,也可能是得出解答的推导过程。 (3)结果 记录了实施解决方案后的结果情况,是失败还是成功。有了结果内容,CBR 在给出建议解时有能给出曾经成功地工作的范例,同时也能利用失败的范例来避免可能会发 生的问题。当对问题还缺乏足够的了解时,通过在范例的表示上加上结果部分能取得较好的 效果。 范例索引对于检索或回忆出相关的有用范例非常重要。索引的目标是:在对已有范例进 行索引后,当给定一个新的范例时,如果范例库中有与该范例相关的范例,则可以根据索引 找到那些相关的范例。 建立范例索引有三个原则:①索引与具体领域有关。数据库中的索引是通用的,目的仅仅 是追求索引能对数据集合进行平衡的划分从而使得检索速度最快;而范例索引则要考虑是否 有利于将来的范例检索,它决定了针对某个具体的问题哪些范例被复用;②索引应该有一定 的抽象或泛化程度,这样才能灵活处理以后可能遇到的各种情景,太具体则不能满足更多的 情况;③索引应该有一定的具体性,这样才能在以后被容易地识别出来,太抽象则各个范例 之间的差别将被消除。 5.6 范例的检索 范例检索——从范例库(Case Base)中找到一个或多个与当前问题最相似的范例;CBR 系 统中的知识库不是以前专家系统中的规则库,它是由领域专家以前解决过的一些问题组成。 范例库中的每一个范例包括以前问题的一般描述即情景和解法。一个新范例并入范例库时, 同时也建立了关于这个范例的主要特征的索引。当接受了一个求解新问题的要求后,CBR 利 用相似度知识和特征索引从范例库中找出与当前问题相关的最佳范例,由于它所回忆的内容, 即所得到的范例质量和数量直接影响着问题的解决效果,所以此项工作比较重要。它通过三 个子过程,即特征辩识、初步匹配,最佳选定来实现。 特征辩识是指对问题进行分析,提取有关特征,特征提取方式有:(a)从问题的描述中直 接获得问题的特征,如自然语言对问题进行描述并输入系统,系统可以对句子进行关键词提 取,这些关键词就是问题的某些特征。(b)对问题经过分析理解后导出的特征,如图象分析理解 中涉及的特征提取。(c)根据上下文或知识模型的需要从用户那里通过交互方式获取的特征, 系统向用户提问,以缩小检索范围,使检索的范例更加准确。 www.aibbt.com 让未来触手可及 119 初步匹配是指从范例库中找到一组与当前问题相关的候选范例。这是通过使用上述特征 作为范例库的索引来完成检索的。由于一般不存在完全的精确匹配,所以要对范例之间的特 征关系进行相似度估计,它可以是基于上述特征的与领域知识关系不大的表面估计,也可以 通过对问题进行深入理解和分析后的深层估计,在具体做法上,则可以通过对特征赋于不同 的权值体现不同的重要性。相似度评价方法有最近邻法、归纳法等。 最佳选定是指从初步匹配过程中获得的一组候选范例中选取一个或几个与当前问题最相 关的范例。这一步和领域知识关系密切。可以由领域知识模型或领域知识工程师对范例进行 解释,然后对这些解释进行有效测试和评估,最后依据某种度量标准对候选范例进行排序, 得分最高的就成为最佳范例,比如最相关的或解释最合理的范例可选定为最佳范例。 标准的检索过程如图 5.4 的左图所示。此过程的输入为源范例(source case,即当前范例), 它由当前情景和推理目标构成。通过情景分析,情景描述得到细化;如果在范例库中有与源 范例相似的范例,那么源范例与范例库中相似范例相关的索引应该能够通过细化过程计算出 来。检索算法使用源范例和细化出来的索引在范例库中搜索。搜索需要借助匹配过程来决定 源范例和范例库中遇到的范例之间的匹配度。检索算法返回一组(部分)匹配的相似范例, 这些范例都有可能对求解新问题有用。接着还要对这组相似范例进行进一步的分析排位 (ranking),确定最有用的范例。 检索 更新 分析情景; 分析情景; 细化源范例的描述; 细化源范例的描述; 计算新情景的可能有的索引; 计算新情景的可能有的索引; 检索组织好的范例库, 检索组织好的范例库, 找出(部分)匹配的目标范例 找出(部分)匹配的目标范例 检索范例 插入新范例 选择一个或一组最佳范例 图 5.4 检索和更新过程 检索过程有三个核心部分组成:检索算法、匹配函数,和情景分析(situation assessment)。 下面着重讨论检索算法。数据结构和算法之间有着紧密相连的关系,因此探讨检索算法必须 和范例库的组织结构联系在一起,不同的范例库组织自然要有相应的不同算法来检索。表结 构或平面结构相对较简单,而树和图结构则较复杂。不同的组织形式各有利弊,依照具体情 况而定。 CBR 中已形成了一系列的范例组织和检索策略和算法。有串行的、有并行的;有平面型 的、有层次型的;有在细粒度级上建立索引以区别不同范例的、有在粗粒度级上建立索引的。 用得最多的则是倒排索引之类的方法,它既可以采用串行也可用并行策略来检索。kitano 采 用此方法建立的应用系统,已能处理 25,000 多个范例。最常用的检索方法有如下三种:近邻 www.aibbt.com 让未来触手可及 120 法、归纳法,以及模板检索。 (1)近邻法: 近邻法采用特征间的加权匹配来估计范例之间的相似度。因此此法的关键问 题是,如何确定特征的权重。近邻法的缺点是,检索的时间复杂度会随着范例库中范例的个 数增多而线性增长。因此,当范例库较小时近邻法是教适合的。 (2)归纳法: 采用归纳方法[1]可以确定哪个特征在区分范例时最好,此方法能生成一棵决 策树,它可以有效地组织范例。 (3)模板检索:与 SQL 查询类似,模板检索能返回在一定参数值范围内的所有范例。模板 法一般用于使用其他技术之前,如在使用近邻法之前,可先用模板法来减小近邻法的搜索空 间。 5.7 相似性关系 基于范例的推理很关键的一个环节是范例检索过程得到的相似范例, 这是应用成功与否 的前提。由于范例检索是在相似比较的基础上进行的,要检索到相似的范例来,完全就要靠 “什么程度才算相似”的定义了。如果定义的不好,检索的结果就不理想,也就谈不上应用 的成功。因此相似度的定义十分重要。 范例的表示表明,范例的情境是由许多属性组成,范例间的相似度就是根据属性(或变 量)之间的相似度定义的。目标范例与源范例之间的相似性有语义相似、结构相似、目标相 似和个体相似。 5.7.1 语义相似性 两范例之间是可以类比的,首先必须满足语义上具有相似性关系。相似性关系是类比问 题求解的基础。两实体的类比可以区分为正类比、反类比、不确定类比。 正类比是由相似性 关系所确定的两实体之间的可类比部分, 反类比则是已被确定为两实体间不相似的部分, 不 确定类比是两实体之间尚未确定是否可类比的部分。两个实体可类比的条件之一是:模型的本 质性质和因果关系不构成反类比的一部分。 不确定类比使得类比具有一定的预见性,这种预 见可能是正确的,也可能是错误的。在类比求解中,目标范例的本质特征和源范例的本质特 征必须具有相似性关系,才能使类比有了基础。 还有些学者把相似性关系区分为表面的相似性和结构的相似性。表面的相似性定义为对 确定问题的解不扮演因果角色的那些共性。相反,影响目标的那些共性被称为结构的相似性。 较少限制的定义可以把结构相似性定义为关系之间语义的交叠。两者对类比过程具有重要作 用。表面相似性有助于发现最初的类比和辨识个体;结构相似性不仅有助于类比检索,而且 对类比映射具有非常大的作用。 5.7.2 结构相似性 如果在两个结构之间存在某种对应关系,且这种对应关系能够保持结构一致性,则认为 两结构是同构的。结构一致性要求: 一一对应的关系必须保证它们涉及的个体或低阶关系也 是一一对应的,且这种对应不应打破原来个体间的对应关系。同构对于类比推理有效性的有 重要意义。 结构对于类比检索的意义是重大的。首先,我们发现,表面上并不相似的范例由于在结 www.aibbt.com 让未来触手可及 121 构上具有相似性,从而使类比成为可能。原子和太阳系涉及不同的领域,表面上看,并不具 有什么本质的联系。然而,深入的研究表明,两者具有十分相似的空间结构。第二,子结构 间的同构或相似性可以使我们只需见树木,而不必顾及森林。这是因为,目标范例和源范例 的类比有时只是局部的。如果从整体上看,两者可能并不具备任何的相似性。例如,在故事 理解方面 ,两个故事之间总的来说可能会大相径庭,然而,其中某个情节,或者某个人物的性格等, 可能具有惊人的相似之处。在规划方面,我们不仅要考虑整个源方案的可用性,而且,如果 尝试使用整个源方案不能得到成功,我们还应该把注意力放在检索子方案上面。有时,放弃 整个方案是不明智的。 在我们的类比检索模型中,同构和结构相似性占有非常重要的地位。结构相似性有助于 初步检索到可类比的源范例,而同构则提醒我们优先考虑那些与目标问题具有同构和局部同 构关系的源范例或者部分源范例。 5.7.3 目标特征 问题求解的最终目的是要实现问题本身所提出的目标。人们求解问题时,都是向着这个 目标而竭尽其力。在相似的一组源范例中,那些对实现目标范例的目标具有潜在的重要作用 的源范例,较之那些不具有目标相关性的源范例,更应该得到优先考虑。 如果为一种结构表示增加了目标信息,那么,这个增大了的结构,同其它包含有相似的 目标信息的结构之间,更加具有语义相似性和结构一致性。换言之,目标特征会增加我们对 源范例选择的可靠性。同时,它还可以帮助我们限制对源范例进行搜索的范围。在 Keane 的 类比检索模型中,通过目标特征和客体特征来检索可类比的源问题 (Keane 1988)。Keane 把 目标特征称为类比检索的“结构线索”。 然而,我们是否对那些不具备目标相关性的源范例弃而不顾了呢?事实上,目标特征只 是一个重要的附加约束。如果过分强调目标特征,我们就可能把不具有目标相关性但具有相 似的子结构的源范例置于不予考虑的地位。这样做是不明智的。 5.7.4 个体相似性 在我们的模型中强调的另一重要约束是个体的类别信息。从不严格的意义上讲,如果两 个个体之间具有一些 (或一个) 相似的属性,则它们是属于同一类别的。在概念聚类中,我 们使用概念 (或客体) 间的相关性或紧致性来对概念 (客体) 集进行分类。相关性是指概念 的属性之间相似度的平均值。但在这里,我们将把电线和绳索看作是同一类别的,因为它们 均可以用来绑缚物体。 有时,一个范例中的某些 (或某个) 个体可能对于问题的解决具有主导作用。在这种情 况下,这些 (或某个) 个体应该作为问题的显著的检索信息来初步地检索源范例。在最初的 检索结束之后,对于那些同目标范例的个体具有同类关系或部分和整体的关系的源范例,我 们应该给以优先考虑。个体之间的类比有助于我们认识如何使用一个个体。范例的部分解决 能帮助发现整个范例的解。 www.aibbt.com 让未来触手可及 122 5.7.5 相似性计算 1. 数值性属性的相似度 ijjiji d1)V,V(d1)V,V(Sim −=−= 或 ijji ji dVVdVVSim +=+= 1 1 ),(1 1),( =ijd ji VV − 或 }V,Vmin{}V,Vmax{ VV d jiji ji ij − − = (5.1) 其中 iV , jV 是某个属性V 的两个属性值。 2. 枚举型属性的相似度 枚举型属性相似度一般有两种,一种是只要两个属性值不同,就认为两者之间的相似度 为 0,否则为 1。另一种则依据具体情况而定,不是简单的非此即彼划分,而是针对不同的属 性值间不同的关系给以具体的定义。前者其实是质上的,即非此即彼的二值分割;而后者则 是量上的,进一步细化值间的区别。一般来讲,前者定义通用,适于种种情况;而后者则要 由人来预定义,与领域知识相关的,从而专用性强。两方法各有自己的适用范围。 3. 有序属性的相似度 有序属性介于数值和枚举型属性之间,也介于定性和定量之间。属性值有序,可以赋于 不同等级值间有不同的相似度。和枚举型属性相比,有序属性规整性强。假设属性值分为 n 个等级,则等级 i 和等级 j(1≤i,j≤n)之间的相似度可定义为 n ji ||1 −− 。 数值属性、有序属性和枚举型属性之间可以相互转化,有时一个属性可以由数值属性来 刻划,也可以由有序属性来刻划,比如学生成绩可以由 0 到 100 的分数来反映也可以用 A、B、 C 来反映,只不过刻划的方式不同。 我们要计算范例之间的相似度,必须考虑组成一个范例的各个属性相似度综合在一起形 成的效应。范例的相似度也常常是通过距离来定义的。常用的典型距离定义有: 1. 绝对值距离(Manhattan): ∑ = −= N 1k jkikij VVd (5.2) 其中 ikV 和 jkV 分别表示范例 i 和范例 j 的第 k 个属性值 。 2. 欧氏距离(Euclidean) ∑ = −= N k jkikij VVd 1 2)( www.aibbt.com 让未来触手可及 123 (5.3) 3.麦考斯基距离 q/1N 1k q jkikij VVd ⎥⎦ ⎤ ⎢⎣ ⎡ −= ∑ = ,q>0 (5.4) 上面的距离定义还只是属于平凡的定义,把各属性所起的作用相同。事实上各属性对一 个范例整体上的相似度有不同的贡献,因而还需加上权值。即上式可以写成: ∑ = = N k jkikkij VVdwd 1 ),( (5.5) 其中, kw 为第 k 个属性权值大小,一般要求 ∑ = = N k kw 1 1。 ),( jkik VVd 表示第 i 个范例和第 j 个 范例在第 k 个属性上的距离,它可以为前面定义的典型距离,也可以是其它的距离定义。 有了距离的定义,就可以类似地得到两个范例间相似度定义: ikij dSIM −= 1 (当 []1,0∈ijd ) 或为: ij ij dSIM += 1 1 (当 ),0[ ∞∈ijd 时) (5.6) 此外,Cognitive System 公司开发的 ReMind 软件所使用的下式计算相似度: ∑ n i=1 wi×sim(fl i,fR i) ⁄ ∑ n i=1 wi (5.7) 其中,w 是反应特征重要性的权值,sim 是相似度函数,fl i,fRi 分别是源范例和范例库中 范例的第 i 个特征的值。 5.8 范例的复用 把检索到的旧范例的解答复用到新问题或新范例之中。通过所给问题和范例库中范例比 较得到新旧范例之间的不同之处,然后回答哪些解答部分可以复用到新问题之中。对于简单 的分类问题,仅需要把旧范例的分类结果直接用于新范例,它无需考虑新旧范例之间的差别。 而对于问题求解类的问题,则需要对领域知识的深入理解,根据范例之间的不同对问题进行 调整,可以是对整个解的某项作一些调整,也可以对整个解的进行微调。 从复用的信息内容来看,主要有两种类型:结果的复用和方法的复用。对与结果的复用, 当旧范例的解答结果需要调整时,它依据一些转换操作知识,把旧范例中的种种可能解转换 为新范例中相应的解。方法的复用则关心旧范例中问题的求解方法,而不是其解答的结果。 用那一种方法依具体问题而定。 当复用阶段产生的求解结果不好时,需要对其进行修正。修正的第一步是对复用结果进 www.aibbt.com 让未来触手可及 124 行评估,如果成功,则不必修正,否则需要对错误和不足进行修正。进行结果评估,可以依 据它在实际环境中运行后的反馈,也可以通过向专家询问完成。等待反馈有时可能需要花一 段时间,如等待病人治疗的效果如何。但如是工程中的在线应用,则可以马上返回结果。 过去的情景不可能与新情景完全一样,因此对于问题求解型的 CBR 系统必须修正过去的 问题解答以适应新的情景。修正过程的输入是当前的问题描述和不太正确的建议解,输出是 更适合当前情景的较好的解答。 简单的修正只需对过去解中的某些组成部分进行简单的替换,复杂地修正甚至需要修改 过去解的整体结构。修正可以在新解的形成过程中完成,也可能是当新解在执行过程中出现 了问题再来做。修正一般有这样几种形式:在旧解中增加新的内容,或从旧解中删去某些内 容,或对旧解中的某些内容进行替换,或对旧解中的某些部分进行重新变换。 修正有四类方法:替换法(substitution)、转换法(transformation)、特定目标驱动法 (special-purpose adaptation and repair),以及派生重演法(derivational replay)。 1. 替换法 替换方法把旧解中的相关值作相应替换而形成新解。此类方法包括如下 6 种: (1)重新例化(reinstantiation):这是一种很简单的替换操作,仅仅是用新的个体替换旧解 中的个体。例如,川菜设计系统 CHEF,在根据牛排炒甘蓝菜来设计一道鸡肉炒雪豆菜,它就 是把该菜谱中的所有牛排替换成鸡肉,把甘蓝替换成雪豆。 (2)参数调整(parameter adjustment):这是一种处理数值参数的启发式方法。它和具体的 输出与输入参数间的关系模型(输入发生什么变化,会导致输出产生怎样的相应变化)有关。 (3)局部搜索(local search):使用辅助的知识结构来获得替换值。例如,设计点心时缺少 桔子,则可使用此法在一个水果语义网知识结构中搜索一个与桔子相近的水果如苹果来代替。 (4)查询(query):用带条件的查询在范例库或辅助知识结构中获取要替换的内容。 (5)特定搜索(specialized search):同时在范例库和辅助知识结构中进行查询,但在范例库 中查询时使用辅助知识来启发式指导如何搜索。 (6)基于范例的替换(case-based substitution):使用其它的范例来建议一个替换。 2. 转换法 转换法包括:常识转换法(common-sense transformation):使用明白易懂的常识性启发式 从旧解中替换、删除或增加某些组成部分。典型的常理转换法是,“删去次要组成部分”。模 型制导修补法(model-guided repair):通过因果模型来指导如何转换。故障诊断中就经常使用 这种方法。 3. 特定目标驱动法 这种方法主要用于完成领域相关以及要做结构修改的修正。该法使用的各种启发式需要 根据它们可用的情景进行索引。特定目标驱动的修正启发式知识一般通过评价近似解作用, 并通过使用基于规则的产生式系统来控制。 4. 派生重演 上述方法所做的修正是在旧解的解答上完成的。重演方法则是使用过去的推导出旧解的 方法来推导出新解。这种方法关心的是解是如何求出来的。同前面的基于范例替换相比,派 生重演使用的则是一种基于范例的修正手段。 5.9 范例的保存 范例插入范例库的过程类似于检索过程。“remember”有两种含义:“记住”和“回忆”。 回忆即检索,记住即存储或插入。插入要调用索引选择过程,以决定范例被索引的方式。插 www.aibbt.com 让未来触手可及 125 入算法使用这些索引来把范例插入范例库中适当的地方。一般来说,插入工作所做的搜索和 检索相同。插入算法搜索的目的是找到一个可插入范例的地方,而检索的目的是为了找到相 似的范例。当检索算法找到了相似的范例后就进行范例排位,而插入算法则是插入源范例并 根据需要重新组织范例库结构。 新问题得到了解决,则形成了一个可能用于将来情形与之相似的问题。这时有必要把它 加入到范例库中。这是学习也是知识获取。此过程涉及选取那些信息需要保留,以及如何把 新范例有机的集成到范例库中,并且会涉及范例库的组织和管理方面的知识。 在决定选取范例的哪些信息进行保留时,一般要考虑以下几点:和问题有关的特征描述; 问题的求解结果;以及解答为什么成功的原因及解释。 把新范例加入到范例库中时,需要对它建立有效的索引,这样以后才能对它作出有效的 回忆。索引应做到:与该范例有关时能快速回忆到,与它无关时不应回忆出。为此,可能要 对范例库的索引内容甚至结构进行调整,如改变索引的强度或特征权值。 随着时间的推移,范例库会越来越大,这将浪费存储空间,增加检索的时间。因此必须对范 例库进行有效的组织和管理。 在上述检索(Retrieval)、重用(Reuse)、修正(Revise)和保存(Retain)四个过程是基 于范例推理的关键步骤。由于它们的英文都是以 R 开始的,因此,CBR 的推理过程也称为 4-R 过程。 5.10 基于例示的学习 基于例示的学习(instance-based learning: IBL),是一种与基于范例的学习紧密相关的归 纳学习方法[Aha 1991]。基于例示的学习算法的思想是,存储有过去的已分类的例示,当对新 来的输入进行分类时,算法在已分类例示中寻找与输入情况最相似的例示,然后把该事例的 类别作为对新例示的分类结果。IBL 没有用到复杂的索引,仅仅使用特征-值表示方法,也不 做范例修正操作,但它却是一种非常有用的方法。 在实例学习(learning from examples)或有监督学习(supervised learning)研究中,人们 提出了各种学习概念的表示方法,如规则、决策树、神经网络等等。这些方法的共同特点是 利用对训练实例的抽象泛化来预测未来的新事例。最近邻(nearest neighbor)方法,也称作基 于例示学习,它不对训练事例抽象泛化,而是直接以典型事例来表示概念。它预测新事例的 方法是,根据相似性原理(即假设相似的事例有相似的分类结果),在已存储的例示集中寻找 一个或若干个最相似的例示,然后综合这些例示的已有分类结果以形成预测分类。最近邻方 法的学习方式是渐增式的;在连续值属性的预测分类中,和其它学习方法相比较,一般情况 下它具有最好的预测准确度[Biberman 1994]。 最近邻方法的一般形式是 k-近邻(简称 k-NN),k 表示若干个近邻。K-NN 的应用中存 在几个问题:怎样从例示集或例示库中选择若干个与要预测的新事例相似的例示,如何综合 评价这些相似例示的结果以形成当前事例的预测值。前者又包括如何定义两个例示间的相似 度,如何确定 K 值大小。Weiss 等对符号或离散值属性给出了较好的解决方法[Weiss 1991]。 Aha 给出了一种交叉验证(cross validation)的 k 值确定方法[Aha 1997]。 5.10.1 基于例示学习的任务 基于例示学习中,例示表示成属性值对,每一个例示具有几个属性,属性缺值是允许的。 www.aibbt.com 让未来触手可及 126 属性集对应一个多维空间。这些属性中有一个是类别属性,其余属性是条件属性。基于例示 学习算法学习多个、重叠的概念描述。但一般情况下只涉及一个类别属性,并且类别是不相 交的,输出是最基本的。 基于例示学习中概念[描述]是从例示到类别的函数:给定例示空间中的一个例示,它反映 一个预测这个例示类别标记的分类。基于例示的概念描述,包括存储的例示集合,可能还包 括它们在过去分类过程中的性能,例示集,可以在每个实例处理后发生变化。 分类函数:输入相似性函数和概念描述中例示的分类性能记录。输出类别标记 I。概念描 述更新器:它维护分类性能记录,决定哪些例示应加入概念描述中。基于例示学习认为相似 的例示有相似的类别,因此,存在将新实例按其大多数相似的邻居的类别进行分类。同时, 基于例示学习假定在缺少先验知识的条件下,所有的属性对分类决策的贡献是相同的,即相 似函数中权重相同。这一偏置要求对每个属性在其值域内归一化。 基于例示学习与大多数有导师学习算法不同,它不构造决策树和决策归纳之类的明确的 精炼的模式。后者通过泛化表示实例。分类时采用简单的匹配,而基于例示学习在实例表示 所做的工作很少,几乎不进行泛化,而对后继例示的分类需要的计算较多。 基于例示学习的性能可以从以下几个方面考虑: ·泛化能力:指表示的可描述与算法的可学习性,IBL 算法是 PAC 学习的,其概念边界 由若干有限个有限大的闭超曲线组成。 ·分类精度。 ·学习速度 ·协作代价:指用一个训练实例更新概念描述的开销,包括分类的开销。 ·存储要求:概念描述的大小,IBL 中指用于分类决策所需的实例数。 5.10.2 IB1 算法 IB1 算法的思想相当简单,它使用最近邻例示的类别标记作为预测值。必须指出,如果 给定的属性在逻辑上不足以描述目标概念,IB1 将不会成功。 算法 5.1 IB1 算法 1. CD←φ //CD=概念描述 2. For each x∈Training Set do 3. for each y∈CD do 4. sim[y] ← similarity(x,y). 5. ymax ← some y∈CD with maximal sim[y] 6. if class(x)=class (ymax) 7. then classification ← correct 8. else classification ← incorrect 9. CD ← CD U{x} 在一般统计假定条件下,近邻决策策略在最坏的情况下错分率至多是最佳贝叶斯 (optimal Bayes)的两倍。这个结果是建立在样本数不受限制的条件下作出的,因而较弱。 下面我们来对错误估计进行分析。 定义 5.6 Rn 中点 x 的ε-球是到 x 的距离小于ε的点集。 {y∈Rn|distance(x,y)< ε} 在二维空间中ε-球近似为ε2。 定义 5.7 设X是Rn 中固定概率分布的点集。X 的子集 S 是 X 的<ε,r>网,如果对 X 中的 www.aibbt.com 让未来触手可及 127 所有 x,除了概率不超过 r 的部分外,S 中存在 s 使|s-x|<ε。 引理 5.1 设ε,δ,γ是确定的,小于1 的正数,在任何确定的概率分布下,[0-1,0-1] 上包含 N 个实例的随机样本,N>⎡ 2 /ε ⎤2/γ)×ln⎡ 2 /ε⎤2/δ),将形成一个可信度大于 1-δ的<ε,γ>-网。 证明 将单位面积分成大小相等的 k2 小方块,每一个对角线长度不大于ε,则有 k=⎡ 2 / ε⎤,并且小方块中所有实例距离在ε之内。设 S1 是概率不小于γ/ k2 的小平面的集合。设 S2 是剩下的小平面。任意实例 i 不在 S1 中的概率至多 1-γ/ k2。样本中 N 个实例均不在 S1 中的 概率至多⎡1-γ/ k2⎤N。S1 中任意平面不包含 N 个实例的样本的概率至多为 k2 ⎡1-γ/ k2⎤N。 由⎡1-γ/ k2⎤N< 2/ kNre− ,则 k2×⎡1-γ/ k2)N < k2× 2/ kNre− 。我们确保这样的概率少于δ。 此时有 N>(⎡ 2 /ε⎤2/γ)×In⎡ 2 /ε⎤2/δ)。因此, S1 中的平面包含 S 的样本实例.在 S2 中的 所有小方块的概率小于(γ/ k2)× k2=γ。 这一证明可以推广到 RN 维上,此时 RN 上需要的样本数为 ⎡ ⎤ ⎡⎤)//nln(//n( nn δε×γε , 它随维数的指数次方增长。 定义 5.8 对任何ε>0,集合 C 的ε-内核(core)是包含在 C 中的、并且属于 C 中所有点 的ε-球的点集。 定义 5.9 C的ε-近邻是到 C 中某些点的距离在ε之内的点集。 定义 5.10 集合 C’是 C 的<ε,γ>近似,如果忽略一些概率小于γ的集合,C’包含 C 的ε- 内核,并且被 C的ε-近邻包含。 IBL 算法中,每一个实例都被保存,几乎总是覆盖所有的目标概念的近似正确定义. “几乎 总是”意味着概率大于 1-δ, δ是任意小的正数。 “近似正确”确保生成的概念是目标概念的< ε,γ>近似, ε, γ同样是任意小的正数。 引理 5.1 证明 IBL 生成的概念与目标概念的近似程度.特别的除了概率小于γ的情形 外,IBL 几乎总是覆盖概念的ε-内核与ε-近邻之间的集合。 定理 5.1 设 C 是[0-1,0-1]上封闭曲线所围绕的区域,对给定的 1>ε, γ, δ>0,IBL 算 法覆盖 C’: (ε-core(C)-G)⊆(C’-G)⊆ε-近邻(C)-G)。 其中 G 是概率小于γ的集合。并且这一覆盖的可信度是 1-δ。 证明 由上一引理,N>(⎡ 2 /ε⎤2/γ)×In⎡ 2 /ε⎤2/δ)时,任意 N 个随机选择的样本将 形成 C 的<ε-γ>网(可信度 1-δ)。 设C’是 IBL 生成的预测属于 C 的点集。设 G 是[0-1,0-1]上 N 个样本中任何一个距离不在 ε之内的点集。 除 G 外,C 的ε-内核包含在 C’中,(也在 C’-G 中),设 p 是 C 的ε-内核中、但不在 G 的 任意点。s 是 p 的近邻,由 s,p 的距离小于ε,p 在ε-内核中,s 在 C 中,s 被正确地预测是 C 的成员。同时,p 也是 C’的成员,所以(ε-内核(C)-G)⊆(C’-G)。 同时,如果 p 在 C 的ε-近邻外,故 p 在 C’-G 之外。设 s 是 p 的近邻,如果 p 不在 G 中, 则 s 不在 C 中。由 s 可正确预测 p 不是 C 的成员。由于没有点在 C 的ε-近邻之外,被 C’预测 成 C 的成员,(除G 中的点之外),故(C’-G)⊆(ε-近邻(C)-G)。 www.aibbt.com 让未来触手可及 128 图 5.5 近邻的边界 该定理表明,对给定的可信度,如果训练例子足够,将形成 C 的ε-内核与ε-近邻之间 的 C 的近似(忽略概率小于γ的情形)。C’不能正确分类 p 的情形是:p∈C 的ε-近邻,但 p∉C 的ε-内核;p∈G。 定义 5.11 对概率分布 P 的类,概念类 C 是多项式可学习的,当且仅当存在算法 A,多 项式γ使任意 0<ε, δ<1,和任意 C∈C,如果按某确定概率分布 p∈P,超过γ(1/ε,1/δ) 个 样本被选定,那么,在可信度至少 1-δ的前提下,A 将输出 C 的假设,这一假设同样是 C 的 成员,并且与 C 的差别概率小于ε。 定理 5.2 设 C 是[0-1,0-1]上所有长度小于 L 的曲线所封闭的区域对应的概念类,P 是 可以用由上述 B 所封闭的概率密度函数表示的概率分布类ε。则 C 是在 P 下用 IB1 多项式可 学习的。 证明 由上引理,如果 C 的边界长度小于 L,则 C 的ε-内核和ε-近邻之间的面积小于 2 εL. α=2εLB 是该区域[在概率下]上边界。C’导致的错误小于α+γ。如设γ=α=ε/2,ε= ε/4LB。替换不等式中的γ,ε,即可得证。 由该定理,IBL 需要的例示数是关于 L 和 B 的多项式的。通过以上分析,我们可以得出: ·如ε-内核为空,C’可以是 C 的ε-近邻的任意子集,C 的形状很小,ε足够大,此时, IBL 对 C 的近似程度不好。 ·目标概念的边界程度增加时,学习需要的实例的期望数增加。 ·除了大小不到γ的情形,错误的正例包括在 C 和 C 的ε-近邻之间的外圈,错误的反例 包含在内圈。 ·IBL 不能区分任何包含在ε-内核,ε-近邻之间的概念,因此,这一方法不能反映概念 边界小的变动。 ·所有的结论可以扩展出任意维空间。 5.10.3 降低存储要求 IB1 算法中,只有 C 的ε-近邻与ε-内核之间的例示是产生概念边界的精确性近似。其余 的例示并不能区分边界的位置。因此,只保存那些有用的例示将节省大量的存储空间。不过, 在缺乏关于概念边界的全部知识下,这样的实例集合是没法知道的,但可以通过 IB1 算法中 被错误分类的实例近似表示,这就是 IB2 的算法的思路。 算法 5.2 IB2 算法。 C 的ε近邻的边界 C 的边界 C 的ε内核的边界 C 的ε近似的边界 ε ε www.aibbt.com 让未来触手可及 129 1. CD←φ //CD 是概念描述 2. For each x Training Set do 3. for each y∈CD do 4. sim[y]←similarity (x,y) 5. ymax←some y∈CD with maximal sim[y]. 6. if class(x)=class (y) 7. then classification ←correct 8. else 8. classification←incorrect 9. CD←CD∪{x}. 与 IB1 不同的是,IB2 中只保存那些被错分的实例,而大多数被错分的实例出现在ε-近 邻与ε-内核之间(ε合理地小),与概念边界非常接近。实例到概念边界的距离变化较大时, IB2 中存储空间的减少非常明显。 噪声增大时,IB2的精度与 IB1 的下降更快,这是因为这些带噪声的实例总是被错分,IB2 中保存的实例只有小部分是设有噪声的,那些带噪声的例子用于分类决策自然效果不好。 IB3 是对 IB2 的改进,使其对噪声不敏感,思路是用“选择过滤器”确定哪些实例应该保 存起来用于将来的分类决策。 算法 5.3 IB3 算法。 1. CD←φ 2. For each x Training Set do 3. for each y∈CD do 4. sim[y]←similarity(x,y) 5. if ∃{y∈CD|acceptable (y)} then 6. ymax ←some acceptable y∈CD with maximal sim[y] 7. else 8. i←a randomly-selected value in [1,|CD|] 9. ymax –some y CD that is the i-th most similar instance to x 10. if class(x)≠class(ymax ) 11. then 12. classification←correct 13. else 14. classification←incorrect 15. CD←CD∪{x} 16. for each y in CD do 16. if sim [y]≥sim[ymax] 17. then 18. update y’s classification record 19. if y’s record is significantly poor 20. then CD←C-{y}. 在 IB3 中,对每一个保存的例示维护一个分类记录(如分类测试中正确分类数和错误分 类数)。分类记录概括了每一个例示对当前训练实例的分类性能,同时表征将来的性能。同时, IB3 进行测试确定哪些例示是好的分类器,哪些相当于噪声,后者将从概念描述中删除。对每 www.aibbt.com 让未来触手可及 130 一个训练实例 i,分类记录将更新所有至少与 i 最相似的“可接受”的近邻。 如果保存的例示没有一个是可接受的,我们采用假定至少一个例示是可接受的策略,产 生一个[1,n](n 是保存的例示数)之间的随机数γ,γ个最相似的例示的分类记录将被更新。 如果至少一个例示是可接受的,将更新 i 为中心,I 与它的最近的可接受邻居之间的距离为半 径的超球内的被保存例示的分类记录。 IB3 使用信任区间来描述,来确定一个实例是可接受的,中等的,或者噪声。信任区间由 实例当前分类精度,其类别固有频率确定。如果精度的下限高于自身被正确分类的概率下限, 则是可接受的;如果精度的上限小于自身被正确分类的概率的下限,则是应去掉的噪声。如 果两个区间重叠,有待于进一步训练确定。 IB3 学习性能对例示的不相干特征数相当敏感。同时,需要的存储空间和学习速度随维数 的指数次增加。IB3 不能表示重叠的概念。假定所有的类只属于一个类,当然,每次我们可以 只学习每个概念的单独描述。 基于例示学习具有如下优点:简单;鲁棒性相对较好;概念偏置相对宽松,能渐增地学 习概念的曲状线性近似,在偏置不能满足目标概念时,基于例示的方法比其它学习算法速度 更快。尤其是目标概念的边界不与属性维平行时;基于例示学习算法的更新代价较低。基于 例示学习更新的代价包括分类。它要求有(|A|*|N|)个属性被检查,其中|N|是被保存的实例数, |A|是特征数,而 C4.5 中对一个新的实例计算复杂度为 O(|I|*|A|2 )。同时,并行处理和索引技 术可进一步降低基于例示学习的计算复杂性。 5.11 范例工程 近十年在这方面的理论和应用表明,范例的途径总是和特定领域相关的。必须注意这两 个问题: ·修正范例在范例库中的组织,使其能够有效地和高效地在将来的推理中重用。 ·范例工程(case engineering)自动化:根据已有的信息自动抽取范例。 范例工程是指设计合理的范例库,生成与应用领域相关的知识的部件,包括范例的结构, 范例的组织,范例的检索(如索引机制,相似性度量),范例使用的规则,范例的修正与保存。 怎样选择和抽取基本的范例初始化范例库也是非常重要的。通常,抽象范例必须手工的 或自动的从具体范例生成。手工的生成无疑将陷入专家系统知识的瓶颈。自动的生成这些抽 象范例是一个从具体范例映射的过程,实质是数据约简。 在惰性学习(Lazy Learning)中,一般数据是推迟处理的,没有明显的学习阶段,不会得到 关于数据的模型。而 KDD 处理的是海量数据,存储和检索它们的代价是很大的。一般认为, 惰性学习的方式是不适合处理大数据量的。我们的思路是将惰性学习与积极学习结合起来: 从原始的海量数据中得出粒度适中的若干小模型(这些模型的个数比原始数据要小的多),每 个小模型是关于部分原始数据的,所有的小模型反映了整个数据。在测试的阶段,CBR、近 邻算法等惰性学习的算法不使用原始的数据,而直接访问这些小模型,如果测试数据与其中 的某个模型相匹配,则返回这个模型的某些特征作为结果。这种惰性学习与积极学习相结合 的方法,必须具备如下的特点: ·学习算法应该是渐增的:增加新数据时,原来的模型能够通过修正重用,添加数据同 时可以构造模型,这样将减少训练时间; www.aibbt.com 让未来触手可及 131 ·模型是层次性的:粒度越小的模型概括的数据越少,精度越高;粒度越大的模型概括 的数据越多,精度越低;粒度越小的模型与粒度越大的模型之间是层次关系的;上一层 的模型可以作为下一层的索引; ·不同层次的模型的格式未必是相同的,这一方面是领域知识所要求的,另一方面用户 和算法对不同层次知识的要求也不尽相同; ·模型的表示要便于计算机使用,也要便于用户理解。 ·用户可以根据具体的问题选用不同粒度的模型。 一般认为经典的近邻算法的复杂度比较高,因为要对新实例预测类别,必须访问所有的 实例。将所有的实例存放在内存中的开销是很大的。关键是怎样减少需要存储的范例数。通 常的做法是将所有的实例都作为范例,实际上从实例集中选择恰当的部分作为范例还可以提 高预测精度。 在模式识别和基于例示的学习中,减少近邻算法中的例示数问题有时候称为引用选择问 题(reference selection problem)[Dasarathy 1991],其目标是为了提高预测的精度选择恰当地 训练实例的数量和质量。已有的工作包括存储错误的例示,如 Condensed Nearest Neighbor algorithm,Reduced Nearest Neighbor algorithm,IB2[Aha 1990];存储典型的例示[Zhang 1992]; 仅存储那些被其它训练例示得出的分类器正确分类的例示[Wilson 1972];由领域知识确定的方 法;存储平均例示或抽象例示[Aha 1990];利用遗传算法选择例示[Kurtzberg 1987],综合的方 法[Voisin 1987]。在 Aha 的研究表明,利用有限个特征加权的例示可以提高分类的精度,IB3、 IB4 算法的效果比常规的近邻算法 IB1 要好。 选择部分例示获得更好的分类性能是可能的,因为如果忽略那些带有噪音的例示,就可 避免训练过度的问题。此外,较少的例示意味简单的偏置假设,优先简单的模型符合机器学 习理论的原则。 研究基于范例的推理的动机之一是它能减轻开发智能系统的复杂度和难度。进一步,为 了减轻基于范例推理系统的开发工作,设计基于范例推理的开发工具,将使专家能直接参预 范例的获取等知识工程问题。这类似于专家系统开发工具的作用。基于范例的推理工具可分 为两种:通用型和特定任务型。通用型基于范例的推理工具可支持范例的管理、检索、评估, 以及系统结构上的修正等。FABEL 就是这样一个系统。特定任务型 CBR 工具 目 前有这样几 类:①基于范例的辅助决策系统设计工具,如 Design-MUSE[Domeshek 1994];②基于范例的 咨询系统设计工具,如 REPRO[Mark 1996];③基于范例的教学系统设计工具,如 GuSS[Burke 1996]。 另外除了上述项目,市场上销售的 CBR 工具或外壳也有不少。这些 CBR 外壳各有特点, 如提供了近邻检索方法或自动生成决策树的范例检索机制;允许用户在检索时交互式地向系 统提供所需信息;提供了能方便用户创建和编辑范例库的友好界面,同时也具有从数据库中 提取所需信息的功能。这类 CBR 外壳有 CBR Express,Esteem,Kate,ReMind,CBR Works, ReCall,Eclipse,ART* Enterprise 等。通过使用 CBR 外壳,系统构造者就只需负责收集范例 的工作了。 www.aibbt.com 让未来触手可及 132 5.12 范例约简算法 叶施仁、史忠植提出了一种基于格(lattice)的高效约简算法 INREDUCTCLS,旨在将数据 形成粒度较大的超范例。INREDUCTCLS 生成最小 E-集和最大 E-集之间的超元组,从超元组中能 够得到与原始数据相同的、甚至更好的决策[叶施仁 2001]。超元组 h 表示成三元组(|h|, {xdsp}, {childi}),其中|h|表示 h 中包括的简单元组数目,{xdsp}是每个属性的表示,{childi}是指向 h 包含的元组的指针的集合。超元组是特征空间中的超立方体,通过分析它们边界的密度朝样 本密集区域移动,因而具有很好的代表性和概括能力。算法是渐增的,次优的。在该方法中, 利用各个维上的边界处密度控制超元组对应的超立方体在特征空间中调整,达到次优的覆盖 能力和代表性,前者是约简率的保证,后者是正确性的保证,并且通过引入格的方法可以从 理论上分析该方法的有效性和合理性。 定义 5.12(超)元组 h 通过属性区间表示,具体地说,对于归一化后的有序属性 x 表示 成: |))(cov(|/)())(( )cov( xhxhxhmid hx ∑ ∈ = 平均值,记为 xavg; 上边界 max(h(x))简记为 xmax; 下边界 min(h(x))简记为 xmin; 上边界的元组数是指在属性 x 的取值在[xmax-∆, xmax]的简单元组数 |)))(max(,))(cov(max(| xhxh ∆− ,记为|xmax|,于是超元组 h 的上边界在属性 x 方向上投影 的密度为 ∆∆−= /|)))(max(,))(cov(max(|))(( xhxhxhdenup ,即|xmax|/∆;类似地 下边界的元组数是指在属性 x 的取值在[xmin, xmin+∆]的简单元组数 |)))(min()),(cov(min(| ∆+xhxh ,记 为 |xmin|,于是超元组 h 的下边界在属性 x 方向上投影的 密度为 ∆∆+= /|)))(min()),(cov(min(|))(( xhxhxhdendown ,即|xmin|/∆;于是,超元组 h 中 属性 x 可以表示成 xdsp=(xavg, xmax, xmin, |xmax|, |xmin|) 对于离散属性,我们给出超元组 h 中属性 x 所有可能取值的二元组的列表: {(xi,|xi|)|x∈Vx, i=1,…, |Vx|}, 其中|xi|是属性取值 xi 的出现次数。定义 x 中 xmin 为赋值次数最少的属性值,即|xmin|= def min(|xi|);如果这样的赋值多于一个,则任取一个。类似地,xmax 为赋值次数次少的属性值。 xavg 为赋值次数最多的属性值,|xavg|= def max(|xi|)。于是,离散属性 x 可以表示成 xdsp=({(xi,|xi|)}, xavg, xmax, xmin, |xmax|, |xmin|)。 于是,超元组 h 表示成三元组(|h|, {xdsp}, {childi}),其中|h|表示 h 中包括的简单元组数目, {xdsp}是每个属性的上述表示,{childi}是指向 h 包含的元组的指针的集合。特别地,如果某个 属性的分布是近似于随机的,即几乎任意地充满该属性的可能的赋值空间,则可以忽略该属 性。为了表达方便,称|h|,{xdsp}和{childi}为 h 的描述因子。 定义 5.13 超元组 h 关于属性 x 的上边界的相对密度为|xmax|/|h|。超元组 h 关于属性 x 的 www.aibbt.com 让未来触手可及 133 上下界的相对密度为|xmin|/|h|。 设超元组 h'=(|h'|, {x'dsp}, {child'i}),h''=(|h''|, {x''dsp}, {child''i}),则 h'与 h''合并生成的超元 组 h。设 h'和 h''中相应的描述指标都分别地加上“'”和“''”符号(如 h''中属性 x 的平均值表 示成 x''avg)。对有序属性, x'avg+x''avg= def ( x'avg*|h'|+x''avg*|h''|)/(|h'|+|h''|) x'max+x''max= def max{ x'avg, x''avg} x'min+x''min= def min{ x'avg, x''avg} |x'max+x''max|= def 否则 当 当 maxmax maxmax maxmax max max ''''' '''' |''||'| |''| |'| xx xx xx x x >∆+ >∆+ ⎪⎩ ⎪⎨ ⎧ ε−+ ,其中 ''' )'''()'''(*)2 |''||'|(|'''| maxmaxmaxmax maxmax ∆+∆ −−∆+∆+≅∩=ε xxabsxxxx (此时上边界重叠,上式中上边界大小为 abs(x'max-x''max),也可以定义新的∆,根据 h 中 包含的元组重新统计) |x'min+x''min|= def 否则 当 当 minmin minmin minmin min min ''''' '''' |''||'| |''| |'| xx xx xx x x <∆+ <∆+ ⎪⎩ ⎪⎨ ⎧ ε−+ ,其中 ''' )'''()'''(*)2 |''||'|(|'''| minminminmin minmin ∆+∆ −−∆+∆+≅∩=ε xxabsxxxx (此时下边界重叠,上式中下边界大小为 abs(x'min-x''min),也可以定义新的∆,根据 h 中 包含的元组重新统计) 对枚举型属性, |x'i+x''i|= def |x'i|+|x''i| |x'min+x''min|= def min(|x'i|+|x''i|) |x'max+x''max|= def max(|x'i|+|x''i|) 于是,我们得到 引理 5.2 设超元组 h'=(|h'|, {x'dsp}, {child'i}),h''=(|h''|, {x''dsp}, {child''i}),则 h'与 h''合并 生成的超元组 h h'+h''=(|h'|+|h''|, {x'dsp}+{x''dsp}, {child'i}+{child''i})。 当一个简单元组 s 与超元组 h 合并时,可以把这个简单元组看成一个超元组,按照上述方 法进行合并。事实上,这里可以分为两种情形: (1)h 在 x 方向上覆盖了 s,即 xmin≤s(x)≤xmax,此时 h 的边界不要修改,只需要更新 ·对有序属性,xavg=(xavg*|h|+s(x))/(|h|+1),对枚举属性,如果 xi=s(x),|xi|←|xi|+1; ·如果 s 在属性 x 方向上落在上边界或者下边界,则更新边界区包括的元组数; (2)h 在 x 方向上没有覆盖 s。此时,如果先调整 h 的边界,然后再更新 h 的其它描述因子, 将会带来很大的计算量,这会很大程度上影响算法的性能。事实上,如果 s 与 h 的距离足够近, www.aibbt.com 让未来触手可及 134 在 x 方向上,s 将位于 x 的上边界(或下边界)附近,由于定义的边界是一个弹性的区域概念, 我们可以近似地认为 s 落在边界内,推迟调整 h 的边界。这样只需在相应边界内进行简单的累 加:|xmax|←|xmax|+1,或者|xmin|←|xmin|+1。 算法 5.4 基于格的超范例(元组)生成算法渐增式约简算法 INREDUCTCLS。 1. 根据可用内存空间大小,随机在样本 S 中选择 N 个不互为近邻的点作为初始的超元组的中 心(它们之间的距离不小于预先规定的阀值ξ),超元组的标记为相应点的类别标记。每个 维上 x±∆为上边界和下边界,H={h1, h2,…hN}; 2. 对样本依次进行扫描,对每个点 p 找到与其最近的类别相同超元组 hi,设 p 与 hi 之间的距 离为 dis(p, hi)。 2.1 如果 dis(p, hi)≤ξ,或者 p 被 hi 覆盖,则 i. 将 p 标记为 i ii. hi 中加入指向 p 的指针(或 p 的 ID) iii. 更新 hi 的描述因子 2.2 否则如果内存空间允许,则 i. 将 p 作为一个新的初始的超元组加入 H ii. N←N+1 iii. 将 p 标记为 N iv. hi 中加入指向 p 的指针 2.3 否则,将 p 视为独异点,将其标记为 0 3. 在步骤 2 的扫描过程中的某些阶段,或者扫描结束后,进行如下操作 3.1 根据 hi 中包含的元组、边界密度,调整其边界,重新统计其描述因子; 3.2 合并边界重叠的或者中心距离小于ξ的类别相同超元组; 3.3 根据超元组的密度(或包括的元组数目)排序,去掉一些密度很低的超元组,并将其 中被包括对点标记为 0; 3.4 如果类别不同的超元组 hi 与 hj 覆盖的区域重叠,则将密度比较低的超元组去掉重叠的 部分,减小其覆盖范围; 4. 转步骤 2 对样本重新进行扫描和标记,直到样本中的标记不发生变化,或者所有超元组的 边界不改变,或者满足用户的某些标准; 5. 对标记为 0 的样本重复步骤 1 到步骤 4,它得到的密度比较高的超元组加入以前获得的、 标记相同的超元组中。 5.13 中心渔场预报专家系统 心理学研究表明,人类决策喜欢而且善于利用范例作决定,但人的记忆上的限制又使得 人常常难以正确回忆出适当的范例,特别是在范例数目很多时。和人相比,计算机则正好在 记忆方面具有优势,能存储大量的范例以及较好地回忆出相关的范例。把人和机器的各自特 长结合一起,正是基于范例的决策支持(case-based decision aiding)的研究目的。 应用现代科学技术开发海洋资源,养护和管理好海洋渔业资源,实现海洋渔业可持续发 展已经为世界各国广泛重视。计算机技术、遥感技术、自动化技术、地理信息系统技术,不 仅可以为海洋渔业开发和管理提供宏观决策信息,还能在微观上为海洋渔业资源的利用作出 具体指导。 为了更好地对我国海域内渔业资源利用与开发,强化高新技术对未来海洋专属经济区渔 www.aibbt.com 让未来触手可及 135 业资源养护、利用和管理技术的支撑作用,我们在 863 计划支持下开展了海洋渔业遥感信息 与资源评估服务系统技术及系统集成、示范试验的研究工作。并以东海(北纬 25 度到 34 度, 东经 130 度以西海区)作渔情预报示范区,为外海渔业资源以及远洋渔业资源的利用与开发 打下良好的基础。渔情预报利用数据采掘、基于实例的学习、专家系统等技术,在遥感渔业 分析技术、海洋渔业服务地理信息系统技术的支撑下,综合领域专家的知识和经验,建立渔 情分析与预报的学习和决策支持系统。 5.13.1 问题分析与范例表示 在该系统中,我们的任务除了对渔业资源作出评估(中长期的预报)外,重要的工作是 对渔况作出短期的预报(中心渔场)。渔场是指在一定季节海洋鱼类或海产经济动物密集,可 用捕捞工具进行生产并具有开发利用价值的海区。中心渔场是指具有较高的平均网产和总渔 获量的区域。准确预报中心渔场的位置和大小能够直接地提高渔业生产的产量和效率,具有 很大的经济效益。 尽管我们已经初步知道,鱼类的洄游以及中心渔场的形成受到这几个因素的制约:海水 温度(包括海洋表面温度,海洋底层温度);台站数据,如海水盐度,盐度梯度,长江径流量, 风向,风速等;海洋叶绿素浓度。但是,鱼类的洄游规律受很多因素制约,变化非常复杂, 难以用传统的数学方法和模型描述。同时专家关于中心渔场规律的知识是不精确的,不完全 的。值得庆幸的是,我们已经收集了 20 来年东海的渔况海况数据,这是非常宝贵的资料,因此 可以从中挖掘出许多有用的信息和知识,根据历年的情况来分析、预测中心渔场的趋势。整 个系统采用了基于范例推理(CBR)的方案。因为 CBR 非常适合应用于系统已存在大量历史 数据,专家通过实例来描述他们的领域,问题未被完全理解,可用的领域知识很少,系统中有很多 例外的规则的情形。 由于大多数海况信息是以周为单位收集的,同时为了便于处理和计算,我们根据实际情 况对需求进行了简化,预测的周期规定为一周。这样,问题变成了如果知道本周中心渔产(位 置,产量和大小),预报下周(下下周)中心渔场(位置,产量和大小)。即使如此,问题也 是相当困难的,因为渔场位置、大小是一种空间数据。同时,海况信息涉及 600 来个空间和 非空间属性,回归的方法,决策树等方法并非很适合,我们采用了 CBR 这种 Lazy Learning 的 方法[Aha 1997]。 在建造范例库的过程中。一个合理的、一致的范例表示方法是必不可少的,把情景 (Situation)、解答(Solution)、结果(Outcome)用一种合适的方式表示出来是构造一个基于范例推 理系统首要解决的问题。在本系统中,我们采用面向对象的技术表示海况和渔况,对象的每 一个实例与后台数据库中的纪录对应,系统在运行中将动态地构造它们。 对积累的原始数据经过合适的预处理,才能将问题转化为适合机器学习的形式。原始的 捕捞记录数据格式为捕捞时间、捕捞地点、产量、捕捞方式等(其中来源于个体渔业公司的 部分数据,甚至连产量都没有)。我们必须在数据不完整的情况下,将它们聚集成中心渔场。 同时,为了简便起见,聚集的中心渔场忽略其形状,只考虑其大小(相当于认为它是等面积 的圆)。我们将原始捕捞纪录按时间(周)、捕捞方式分组,可以用类似于聚类的方法对原始 的捕捞数据进行约简,形成代表性很强的中心渔场,然后用下述人机交互的方法修正: 1. 如果某个渔场的周围存在相邻的渔场,则将它们合并; 2. 重复步骤 2,直到没有新的合并可以进行; 3. 忽略产量低于一定阈值的区域(拒绝将其加入任何中心渔场); www.aibbt.com 让未来触手可及 136 4. 如果合并后的渔场仍然很多,忽略一些面积和产量比较小的渔场; 5. 将合并以后的渔场作为中心渔场,并且中心渔场的位置为它们的几何中心,大小用 包括的渔区数表示,产量为它们的累加。 6. 将步骤 6 的结果用可视化的方式提交给用户,让用户根据具体情况进一步调整; 7. 在数据库中保存修改后的结果。 利用我们开发的工具(如图 5.6),领域专家在很短的时间内就将历史数据整理完毕。 图 5.6 人机交互聚类得到中心渔场 5.13.2 相似性度量 基于范例推理中一个关键的环节是检索得到的相似范例应该尽可能的“好”。范例检索是 在相似比较的基础上进行的,要检索到相似的范例来,完全要靠“什么程度才算相似”的定义了。 如果定义有问题,检索的结果就不理想,也就谈不上应用的成功。因此相似度的定义十分重 要。然而,相似性描述总是粗糙的、部分的、易变的。CASE 对于范例的优选通常遵循以下规 则:尽可能的针对语义相似,结构相似,目标相似和个体相似四种约束,使用相应的计算方 法,全面评估范例之间的相似性,然后针对各种相似性在问题域内的重要性,计算出总的动 态加权相似性。 在我们的系统中,对空间条件属性,采用三个相似性度量方法(函数): ·基于渔场位置的相似 sim1 = -∑(Wi * distance(pos(goal) - pos(source))) / ∑wi (5.8) ·基于温度场的相似 sim2 = -∑(wi * difference(temp(goal) - temp(source))) / ∑wi (5.9) ·基于温度梯度的相似 www.aibbt.com 让未来触手可及 137 sim3 = -∑(wi * difference(delta(goal) - delta(source))) / ∑wi (5.10) 其中,wi 是权重。如果该温度测试点与样本的中心渔场距离 di 越近,权越大。计算方法为, 如果距离 di 为 0,权重为 1;如果距离 di 为海洋区域的直径——最大距离 dmax,权值为一个小 于 1 的数 w0(用户可以根据推理结果修正它);其余插值。即有 (5.11) 5.13.3 索引与检索 检索到的范例中含有与该范例相对应问题的解答,把该解答复用于当前的目标范例或新 问题的求解,就是范例复用。复用的过程可以分为类比映射和类比转换。要使源范例的求解 方案可能应用于目标范例,一个前提条件是,必须在源范例和目标范例的各个特征之间建立 起一致的对应关系,并决定哪些关系和结构可映射到目标范例中。因此,在类比映射中,主 要要解决的两个问题是:特征的辨识和对应,可映射关系和结构的选择。 范例的索引主要有近邻法、归纳法、知识导引法或这三种方法的结合。在本系统中,困 难之处在于海况和渔况信息既是与空间相关的,又是与时间相关的。为表达清晰,我们作如 下的形式化。设 Ct1 为时刻 t1 的海况,它是渔场发生的条件(条件属性);Gt1 为时刻 t1 的渔场 (的位置,产量和大小,决策属性);时刻 t1 实例 It1=(Ct1,Gt1)组成一个高维向量。It1-tn={It1, It2,…,Itn}={(Ct1,Gt1),(Ct2,Gt2),…, (Ctn,Gtn)}构成一个时间上连续的实例序列,其中 t2 是 t1 的 下一时刻(周),tn 是 t1 的下 n 时刻(周)。△Gt=Gti+1-Gi 反映了渔场的变化。 设Γs`1-s`k,Γt`1-t`k 是 Is1-sm,It1-tn 的两个长度为 k 的全序子集,Γs`1-s`k ⊆ Is1-sm,Γt`1-t`k ⊆ It1-tn, sim(.)是相似性度量的函数。如果 kttkss '1''1' −− ≅ ΓΓ,即 δ≥∈∀∈∀ −− ),(,, '''1'''1'' itiskttitkssis sim IIΓIΓI (1≤i≤k),其中δ是 0 到 1 之间的阈值, 则称 Is1-sm,It1-tn 是 k-δ完全相似的。显然,k、δ越大,Is1-sm,It1-tn 的相似程度越高。 设 C`s`1-s`k,C`t`1-t`k 是条件序列 Cs1-sm={Cs1,…,Csm}, Ct1-tn={Ct1,…,Ctm}的两个长度为 k 的全序子集,C`s`1-s`k ⊆ Cs1-sm , C`t`1-t`k ⊆ Ct1-tn 。如果 kt't'1ks's'1 C'C' −− ≅ ,即 δsim ≥∈∀∈∀ −− ),(,, it'is'kt't'1it'ks's'1is' CCC'CC'C (1≤i≤k),其中δ是 0 到 1 之间的阈值, 则称 Is1-sm,It1-tn 是 k-δ条件相似的。 设 Iu-cur={Iu,Iu+1,…,Icur}表示当前渔场从时刻 u 到当前时刻 cur 长度为 cur-u+1 的序列,则 Iu-cur+1={Iu,Iu+1,…,Icur,Icur+1}={Iu-cur, Icur+1}表示当前渔场从时刻u 到下一时刻cur+1长度为cur-u+2 的发展过程,其中,Icur+1=(Ccur+1,Gcur+1),Ccur+1 可以通过气象分析等方式比较准确地得到,Gcur+1 表示下周渔场,即为我们需要预测的内容。设Γu’1-u’k 为 Iu-cur+1 的包含 Icur,Icur+1 全序子集,我们 需要发现,Γu’-u’k 与某个历史渔场序列 Iv-w 的子序列Γv’1-v’k 存在 k-δ完全相似。由 kv'v'1ku'u'1 ΓΓ −− ≅ ,有海况相似 kv'v'1ku'u'1 C'C' −− ≅ ,渔况相似 kv'v'1ku'u'1 G'G' −− ≅ 。则有 max 0 )1(1 d Wdw i i −−= www.aibbt.com 让未来触手可及 138 kv'ku'1cur GGG ≅=+ ,由 Gv’k 可以得到 Gcur+1 的位置。 试验表明,完全相似的条件是非常强的。我们可以使用条件相似,设 C'u’1-u’k 为 Cu-cur+1 的 包含 Ccur,Ccur+1 全序条件子集,我们需要发现,C`u’-u’k 与某个条件序列 Cv-w 的子序列 C`v’1-v’k 存在 k-δ条件相似。由 kv'v'1ku'u'1 C'C' −− ≅ ,有 kvkucur ''1 GGG ≅=+ ,则 Gcur+1=Gcur+△G,△ G=Gv’k-Gv’k-1 为相似渔场中本周渔场到下周渔场的变化。这是我们在上一节中引入几个相似性 函数的原因。 在实际系统中,由于δ是难以确定的。在相似性检索中,我们采用 k-近邻的方法,通过 发现 k 个最相似的历史序列来计算下周渔场的位置,这样就不需要一个确定的δ值了,同时 具有较强的鲁棒性。 5.13.4 基于框架的修正 框架是一种知识表示模式,1975 年由 Minsky 最早作为视觉感知、自然语言对话和其他 复杂行为的基础提出[Minsky 1989]。对一类典型的实体,如状况、概念、事件等,以通用的数 据结构的形式予以存储。当新的情况发生时,只要把新的数据加入这些数据结构,就形成了 一个具体的实体。 这样的关于典型实体的通用数据结构就称为框架(frame)。框架结构也提供 了在一个具体上下文中对特定实体进行预见驱动的处理方式,在这个上下文环境下根据这种 结构可以寻找那些预见的信息。框架结构中存放这些可预见信息的位置称为槽(slots)。一个框 架由若干个槽组成,每个槽有它自己的名字,槽内的值描述框架所表示的实体的各个组成部 分的种属性,每个槽的值又可由一个或多个侧面(facets)组成,各侧面从各个方面来描述槽的 特性,每个侧面又有一个或多个侧面值,每个侧面值可以是一个或者一个概念的描述。框架 理论,以其组织知识区块及处理预设知识上的简洁特性而被广泛应用,已成为重要的知识表 示方法。然而既有的框架应用系统中,仍缺乏处理未确定式知识及预设知识冲突时的解决技 术。 针对对海洋渔业资源预测研究,我们定义了一框架系统 KBIF,具备了表示不同重要性的 未确定知识的能力。KBIF 的主要特性包括:权重—描述框架内各槽对框架的影响程度,信赖 因素—描述槽本身的可信程度,及偏向因素—在次框架关系中描述继承的倾向程度。 鱼类的洄游规律受很多因素制约,变化非常复杂,难以用传统的数学方法和模型描述。 基于范例推理的预测算法只能采用基于大量历史数据积累的部分因素进行预测,同时专家关 于中心渔场规律的知识是不精确的,不完全的。对中心渔场的预测结果进行有效修正,就成 为预测准确性的关键,因此系统采用三种知识处理模型:框架模型、黑板结构、模糊推理统 一成为框架的知识表示,对中心渔场的预测结果加以修正,并将领域专家修正系统划分为三 大部分:原子集、规则集、结论集,分别与三种模型相对应。三种模型的的应用使专家预测 系统适应了可扩展性、规则定义的灵活性的基本原则。 模型一:框架模型 KBIF。框架模型的知识表示对多种制约因素进行规则表示,使领域专 家可以依据框架结构,灵活设定制约因素,各因素间通过不断沟通,形成一个具有一致性、 整体性的系统,并以它引导各元素互相合作达成目标。 修正系统原子集的构造方法如下:首先,对中心渔场形成而受到的多种因素的制约加以 细分,分解形成修正规则的最基本元素,每个因素成为预测规则的一个原子,而此类基本元 素的全体则称为原子集,即框架。原子集利用 KBIF 的知识表示原理,定义了预测算法的所有 可表示的制约因素,其中每一因素可以作为框架的槽。框架整体命名为“修正系统规则集”, www.aibbt.com 让未来触手可及 139 并将框架分解为三层,分别包括:台站数据、长江径流量、流系等。台站数据包括了:风速、 风向、降水,气温、气压、时间、水温、盐度、站名等因素。长江径流量包括:时间、月平 均。流系包括:表层水温、表层水温梯度、表层盐度、表层盐度梯度、垂直水温梯度、垂直 盐度梯度、底层水温、底层水温梯度、底层盐度、底层盐度梯度、时间、叶绿素。原子集序 列可以根据领域专家对制约因素的深入了解不断扩展,适应了中心渔场的预测扩展性的要求。 模型二:黑板结构。我们在 KBIF 基础上建立了广义式黑板结构子系统。藉由此子系统, 使用者可任意地经同质性及异质性切割将解题空间规划成阶层式子结构区即规则集,此子系 统则能在广义式黑板系统中支持决策概念。 我们定义了虚黑板架构,并依特定领域即渔业资源预测的特性,将之转化为黑板系统。 它整合了知识源即原子集、规则集生成器和模糊推理的具体应用。系统结构设计成一微型黑 板架构,其中包含了一组知识原子集、一个微黑板及一个规则生成控制器。这种结构将知识 认识层与经验推理层有效的结合为一体。其中知识原子集隐含在系统中,与框架模型相对应, 定义了模型中的所有原子集,并可根据需求加以扩展;规则生成控制器可以把知识原子集按 照专家提供条件进行组合,逐一列入黑板,并在生成器中提供了区间与枚举两种功能来增进 推论的效率,最终产生出特定规则。这种方式提供了渐进地建立知识规则能力;也减轻了专 家经验推理的负荷,避免因着重于知识的内部结构,而忽略了所表达的领域知识。系统使用 的图形界面来表达这样的结构,同时也增强了知识表示法和有效的推论能力以解决问题。 模型三:模糊推理。用模糊推理的方法将规则运用在范例推理得到的结果集上,对中心 渔场的预测进行合理的修正,从而使预测结果更准确有效。 在专家预测修正系统的规则结论集合中,对中心渔场的位置(X 轴,Y 轴)向、渔场大小、 渔产量大小应用模糊定义,将 CBR 预测出的渔场数据通过向量修正,得到新的预测数据。并 加入了权序列模式,即定义出每一结论的可信度,对相似条件下的结论按可信度进行排列。 在预测结束后可以对专家结论集进行修正,达到知识学习的目的,使问题不断逼近可信解。 5.13.5 实验结果 系统的结构如图 5.6 所示,历史数据经过适当的聚类、变换等预处理,保存在海况、渔况 范例库(数据库)中。为了提高预测精度,我们采用了多策略的相似检索,利用不同的相似 性计算方法找出邻近的相似的渔场序列。然后,利用领域专家编辑的、已经保存在系统中的 专家规则对预报结果进行修正。机器学习的知识与人类专家的知识结合起来使用,将进一步 提高预报的精度和系统的可靠性。预测冬天的渔场时,我们就可以不考虑夏天的历史序列; 离渔场位置较远的海况对中心渔场的发展影响不大,我们可以只选择那些离中心渔场较近的 海况,从 600 来个海况属性动态地选取 150 个左右。这样,在保障预测精度的前提下,通过 时间、位置过滤,大大地减少计算量,系统响应控制在 7 秒钟左右。可视化的人机交互界面, 为中心渔场的输入、预报结果的输出、海况信息的检查、领域专家的修正提供了很好的接口 (图 5.7)。 我们采用报全率和报准率衡量预测的结果,报准率是指预报渔场与实际渔场中心位置的 差别,预报的中心与实际的中心相差不到一个渔区,渔业专家则认为预测精度达到 80%。报 全率是指预测渔场与实际渔场重叠的比例。我们的回顾性预报(回报)表明,系统的平均预 报精度达到 78%,基本具备了应用推广的价值。目前我们已经完成了示范试验,正在与上海 渔政局合作,着手应用到实际生产预报中。 www.aibbt.com 让未来触手可及 140 图 5.8 海况、渔场布图 习 题 1. 用自己的语言描述什么是基于范例推理,简述几个 CBR 系统。 2. 描述范例的表示形式以及基于范例推理的基本思想。 3. 阐述基于范例推理的适用场合,并通过流程图描述基于范例学习的一般过程。 4. 与基于规则的推理(RBR)相比较,CBR 有哪些优点?CBR(CBL)系统的学习能力体 现在哪里。 5. 简述目标范例和源范例的几种相似性,并比较几种常用相似性计算距离度量方法的特点。 6. 查阅相关资料介绍一个基于范例推理的应用系统,并讨论 CBR 系统中包含哪些关键问题, 在应用系统中是如何实现的。 7. 用具体的系统说明基于范例推理与专家系统有什么区别。 预处理(聚类) 结果汇总 范例保存 修 正 可视化接口 浏览范例 历史数据 范例库 数据过滤 多策略相似检索 新范例 最终结果 相似范例 输入数据 图5.7 系统的结构 www.aibbt.com 让未来触手可及 141 第六章 概率推理 6.1 概述 贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息 的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间 的依赖关系。贝叶斯理论给出了信任函数在数学上的计算方法,具有稳固的数学基础,同时 它刻画了信任度与证据的一致性及其信任度随证据而变化的增量学习特性;在数据挖掘中, 贝叶斯网络可以处理不完整和带有噪声的数据集,它用概率测度的权重来描述数据间的相关 性,从而解决了数据间的不一致性,甚至是相互独立的问题;用图形的方法描述数据间的相 互关系,语义清晰、可理解性强,这有助于利用数据间的因果关系进行预测分析。贝叶斯方 法正在以其独特的不确定性知识表达形式、丰富的概率表达能力、综合先验知识的增量学习 特性等成为当前数据挖掘众多方法中最为引人注目的焦点之一。 6.1.1 贝叶斯网络的发展历史 贝叶斯(Reverend Thomas Bayes 1702-1761)学派奠基性的工作是贝叶斯的论文“关 于几率性问题求解的评论”。或许是他自己感觉到它的学说还有不完善的地方,这一论文在他 生前并没有发表,而是在他死后,由他的朋友发表的。著名的数学家拉普拉斯(Laplace P. S.) 用贝叶斯的方法导出了重要的“相继律”,贝叶斯的方法和理论逐渐被人理解和重视起来。但 由于当时贝叶斯方法在理论和实际应用中还存在很多不完善的地方,因而在十九世纪并未被 普遍接受。二十世纪初,意大利的菲纳特(B. de Finetti)以及英国的杰弗莱(Jeffreys H.) 都对贝叶斯学派的理论作出重要的贡献。第二次世界大战后,瓦尔德(Wald A.)提出了统计 的决策理论,在这一理论中,贝叶斯解占有重要的地位;信息论的发展也对贝叶斯学派做出 了新的贡献。1958 年英国最悠久的统计杂志 Biometrika 全文重新刊登了贝叶斯的论文,20 世纪 50 年代,以罗宾斯(Robbins H.)为代表,提出了经验贝叶斯方法和经典方法相结合, 引起统计界的广泛注意,这一方法很快就显示出它的优点,成为很活跃的一个方向。 随着人工智能的发展,尤其是机器学习、数据挖掘等兴起,为贝叶斯理论的发展和应用提 供了更为广阔的空间。贝叶斯理论的内涵也比以前有了很大的变化。80 年代贝叶斯网络用于 专家系统的知识表示,90 年代进一步研究可学习的贝叶斯网络,用于数据采掘和机器学习。 近年来,贝叶斯学习理论方面的文章更是层出不穷,内容涵盖了人工智能的大部分领域,包 括因果推理、不确定性知识表达、模式识别和聚类分析等。并且出现了专门研究贝叶斯理论 的组织和学术刊物 ISBA。 6.1.2 贝叶斯方法的基本观点 贝叶斯分析方法的特点是使用概率去表示所有形式的不确定性,学习或其它形式的推理都 用概率规则来实现。贝叶斯学习的结果表示为随机变量的概率分布,它可以解释为我们对不 同可能性的信任程度。贝叶斯学派的起点是贝叶斯的两项工作:贝叶斯定理和贝叶斯假设。 www.aibbt.com 让未来触手可及 142 贝叶斯定理将事件的先验概率与后验概率联系起来。假定随机向量 θ,x 的联合分布密度是 ),( θxp ,它们的边际密度分别为 )(),( θpxp 。一般情况下设 x 是观测向量,θ 是未知参数向 量,通过观测向量获得未知参数向量的估计,贝叶斯定理记作: ∫ == θθθπ θθπθθπθ dxp xp xp xpxp )|(*)( )|(*)( )( )|(*)()|( ( )(θπ 是θ 的先验分布) (6.1) 从上式我们可以看出,对未知参数向量的估计综合了它的先验信息和样本信息,而传统的 参数估计方法只从样本数据获取信息如最大似然估计。贝叶斯方法对未知参数向量估计的一 般过程为: 1. 将未知参数看成是随机向量。这是贝叶斯方法与传统的参数估计方法的最大区别。 2. 根据以往对参数θ 的知识,确定先验分布 )(θπ ,它是贝叶斯方法容易引起争议的一 步,因此而受到经典统计界的攻击。 3. 计算后验分布密度,做出对未知参数的推断。 在第二步,如果没有任何以往的知识来帮助确定 )(θπ ,贝叶斯提出可以采用均匀分布作 为其分布,即参数在它的变化范围内,取到各个值的机会是相同的,称这个假定为贝叶斯假 设。贝叶斯假设在直觉上易于被人们所接受,然而它在处理无信息先验分布,尤其是未知参 数无界的情况却遇到了困难。经验贝叶斯估计 EB(Empirical Bayes Estimator)把经典的方法 和贝叶斯方法结合在一起,用经典的方法获得样本的边际密度 )(xp ,然后通过下式来确定先 验分布 )(θπ : ∫+∞ ∞− = θθθπ dxpxp )|()()( 6.1.3 贝叶斯网络在数据挖掘中的应用 1. 贝叶斯方法用于分类及回归分析 分类规则发现是根据客体的特征向量值及其它约束条件将其分到某个类别中。在数据挖 掘中,主要研究如何从数据或经验中学习这些分类规则。对于分类问题,有些情况下,输入 特征向量唯一对应着一个类别,称它为确定性的分类问题;而有些情况下,则会出现类别的 重叠现象,也就是说,来自于不同类别的样本从外观特征上具有极大的相似性,这时我们只 能说某一样本属于某一类别的概率是多大,然而我们却必须为它选择一个类别。贝叶斯学派 采用两种方法处理这种情况:一是选择后验概率最大的类别;二是选择效用函数最大(或损 失最小)的类别。设特征向量 ),( 21 mxxxX = ,类别向量 ),( 21 lcccC = 。分类的目的 是把特征向量 X 归入到某个类别 ))1(( lici ∈ 中,第一种方法选择后验概率最大的类别,即: )1()|()|( ljxcPxcP ji …∈≥ ,此时取判别函数: )|()( xcPxr ii = 。可以证明,这种方 www.aibbt.com 让未来触手可及 143 法能够保证分类误差最小。 第二种方法,在决策理论中经常用到,它采用平均效益的大小来衡量决策风险的大小, 这实际上与不确定性的程度密切相关。设把属于类别 ic 的特征向量 X 错误地划分到类别 jc 中 的损失为 )(XLij ,它选择损失最小的类别,即: })|()({ 1 ∑ = ⋅ l j jiji xcPxLMinimize ,此时取判 别函数: ∑ = ⋅= l j jiji xcPxLxr 1 )|()()( 。当 )(XLij 的对角线元素取为 0,非对角线元素取为 1, 即正确分类的损失为 0,错误分类的损失都相同时,风险损失最小与后验概率最大是等价的。 在数据挖掘中,对贝叶斯分类的研究主要集中在如何从数据中学习特征向量的分布、特 征向量间的相关性等来确定最好的 )|( xcP i 和 )(XLij 。现已具有求解它们的成功模型,如简 单贝叶斯(Naïve Bayesian)、贝叶斯网络(Bayesian Network)及贝叶斯神经网络(Bayesian Neural Network )等。目前,贝叶斯分类方法已在文本分类、字母识别、经济预测等领域获得了成功 的应用。 2. 用于因果推理和不确定知识表达 贝叶斯网络是随机变量间的概率关系的图表示。近年来,贝叶斯网络已经成为专家系统 中不确定性知识的主要表示方法,并且涌现出大批的从数据学习贝叶斯网络的算法[Cooper 92]。这些技术在数据建模、不确定性推理等方面已取得了相当的成功。 与数据挖掘中的其它知识表示的方法如:规则表示、决策树、人工神经网络等相比,贝叶 斯网络在知识表示方面具有下列优点[Cooper 1992]: · 贝叶斯网络能够方便的处理不完全数据。例如考虑具有相关关系的多个输入变量的分 类或回归问题,对标准的监督学习算法而言,变量间的相关性并不是它们处理的关键因 素,当这些变量中有某个缺值时,它们的预测结果就会出现很大的偏差。而贝叶斯网络 则提供了较为直观的概率关联关系。 · 贝叶斯网络能够学习变量间的因果关系。因果关系是数据挖掘中的极为重要的模式。 原因有二:在数据分析中,因果关系有利于对领域知识的理解;在干扰较多时,便于作 出精确的预测。例如市场销售分析人员想知道增加广告投入是否能提高产品的销量。为 回答这个问题,分析人员必须知道,在某种程度上,广告投入是否是提高销量的原因。 即使没有这方面的实验数据,贝叶斯网络对这类问题的回答也是相当简单的,因为这种 因果关系已经包含在贝叶斯网络中了。 · 贝叶斯网络与贝叶斯统计相结合能够充分利用领域知识和样本数据的信息。任何从事 过实际建模任务的人都会知道,先验信息或领域知识在建模方面的重要性,尤其是在样 本数据稀疏或数据较难获得的时候,一些商业方面的专家系统完全根据领域专家知识来 构建就是一个很好的例证。贝叶斯网络用弧表示变量间的依赖关系,用概率分布表来表 示依赖关系的强弱,将先验信息与样本知识有机结合起来。 · 贝叶斯方法与其它模型相结合,有效的避免了数据的过分拟合问题。 3.用于聚类模式发现 广义上讲,聚类问题是一种特殊的模型选择问题,每个聚类模式都可以看作是一种模型。 聚类的任务就是从这些众多的模型中,通过一定的分析、综合策略,选择出体现数据本质的 模式。贝叶斯方法通过综合先验的模型知识和当前的数据特点,来实现选择最优模型的目的。 Vaithyanathan 等提出了利用贝叶斯分析的基于模型的层次聚类方法[Vaithyanathan 98]。它 www.aibbt.com 让未来触手可及 144 通过特征集的划分,将数据组织成层次结构。这些特征或者在每个类别中都有唯一的分布, 或者在某些类别中具有共同的分布。它同时给出了利用边界似然来确定模型结构的方法,包 括自动决定类别的个数、模型树的深度和每个类别的特征子集。 AutoClass 是利用贝叶斯方法实现聚类的一个典型系统。该系统通过搜索模型空间所有的 分类可能性,来自动决定分类类别的个数和模型描述的复杂性。它允许在一定的类别内属性 之间具有一定的相关性,各个类之间具有一定的继承性(在类层次结构中,某些类共享一定 的模型参数)。读者可从网页 http://ic-www.arc.nasa.gov/ic/projects/bayes-group/autoclass 看到有 关 AutoClass 的信息。 以上仅仅给出贝叶斯方法的几个典型应用,然而贝叶斯方法在数据挖掘中的应用远不止 这些,比如贝叶斯方法与神经网络相结合的贝叶斯神经网络,贝叶斯方法与统计学习相结合 的贝叶斯点机等。有兴趣的读者可参考相关书籍[Amari 85]。 6.2 贝叶斯概率基础 6.2.1 概率论基础 概率论是研究随机现象规律性的数学。随机现象是指在相同的条件下,其出现的结果是 不确定的现象。随机现象又可分为个别随机现象和大量的随机现象。对大量随机现象进行观 察所得到的规律性,被人们称为统计规律性。 在统计上,我们习惯把一次对现象的观察、登记或实验叫做一次试验。 随机性试验是指 对随机现象的观察。随机试验在完全相同的条件下,可能出现不同的结果,但所有可能结果的 范围是可以估计的,即随机试验的结果具有不确定性和可预计性。在统计上,一般把随机试 验的结果,即随机现象的具体表现叫做随机事件,简称为事件。 随机事件是指试验中可能出现,也可能不出现的结果。在随机现象中,某标志表现的频 数是指全部观察值(即样本)中拥有该标志表现的单位总数。 例 6.1 我们为研究某工厂的产品质量情况,采用随机抽样检查,各次检查(试验)的数量 (即样本容量)不同,其结果记录如表 6.1 所示。 表 6.1 各次质量抽查结果 抽查 件数 5 10 50 100 300 600 1000 5000 10000 合格 频数 5 8 44 91 272 542 899 4510 8999 合格 频率 1 0.8 0.88 0.91 0.907 0.892 0.899 0.902 0.8997 表中抽查件数是指每次试验(每个样本)的单位总数,这只是为说明问题设计的, 而现实统 计中多数情况下只有一个样本。表中合格频数是指合格品这种标志表现在各样本中的单位总 数。表中的合格频率是指各样本的合格频数占样本单位总数(样本容量)的比重,即相对频数。 从表中各数值的观察中可以看出频数与频率之间的关系,同时也会发现其中蕴含着一种统计 规律性。就是随着样本单位数的扩大,其合格率稳定地趋向 0.9 左右。即合格频率总是围绕着 一个固定常数 p=0.9 摆动。可见 p 是这一系列试验的统计稳定中心,它可以表明一次检查中合 格品出现的可能性,即概率。 定义 6.1 统计概率:若在大量重复试验中,事件 A 发生的频率稳定地接近于一个固定的 www.aibbt.com 让未来触手可及 145 常数 p,它表明事件 A 出现的可能性大小,则称此常数 p 为事件 A 发生的概率,记为 P(A), 即 p=P(A) (6.1) 可见概率就是频率的稳定中心。任何事件 A 的概率为不大于 1 的非负实数,即 0<P(A)<1 概率的统计定义与频率联系紧密易于理解,但是用试验的方法来求解概率是很麻烦的, 有时甚至是不可能的。因此我们常用古典概率和几何概率来解决概率的计算等问题。 定义 6.2 古典概率:设一种试验,有且仅有有限的 N 个等可能结果,即 N 个基本事件,而 A 事件包含着其中的 K 个可能结果,则称 K/N 为事件 A 的概率,记为 P(A)。 N KAp =)( (6.2) 古典概率的计算需要知道全部的基本事件数目,它局限于离散的有限总体。而对无限总 体或全部基本事件未知的情况之下,求解概率需采用几何概型, 同时几何概型也提供了概率 的一般性定义。 几何型随机试验:假设 Ω 是 M 维空间中的一个有界区域,现以 L(Ω)表示 Ω 的体积,考虑 随机试验是向 Ω 内均匀地投掷一随机点,并假设:(1) 随机点可能落到区域 Ω 内的任何一 处,但不可能落在 Ω 之外。(2) 随机点在 Ω 中分布均匀,即落入 Ω 中任何区域的可能性与 该区域之 M 维体积成正比,而与区域的形状及在 Ω 中的位置无关。在上述条件下我们称试验为 几何型随机试验;Ω 是基本事件空间。 几何型随机试验中的事件:假设 Ω 是几何型随机试验的基本事件空间,A是 Ω 中可以用体 积来度量的子集,L(A)是 A 的 M 维体积。那么“随机点落入区域 A 内“的事件以 A 表示。在 Ω 中能用体积度量的子集叫可测集,每一个可测集都可视为一个事件,一切可测子集的集合以 F 来表示。 定义 6.3 几何概率:假设 Ω 是几何型随机试验的基本事件空间,F 是 Ω 中一切可测集的 集合,则对于 F 中的任意事件 A 的概率 P(A)为 A 与 Ω 的体积之比,即 )( )()( Ω= V AVAp (6.3) 定义 6.4 条件概率:我们把事件 B 已经出现的条件下,事件 A 发生的概率记做为 P(A|B)。 并称之为在 B 出现的条件下 A 出现的条件概率,而称 P(A)为无条件概率。 例 6.2 袋子中有两个白色球和一个黑球,现依次从袋子中取出两个球,试问:(1)第一次 取出白球的概率? (2)已知第一次取得白球的条件下,第二次仍取得白球的概率? 解:设 A 为第一次取得白球的事件,B 为第二次取得白球的事件,则{B|A}为第一次取得白 球的条件下,第二次仍取得白球的事件。根据定义有: (1)不论是重复抽取还是不重服抽取,P(A)=2/3 (2)在不重复抽取时:P(B|A)=1/2 (3)在可重复抽取时:P(B|A)=P(B)=2/3,即相当于无条件概率。 若事件 A 与 B 中的任一个出现,并不影响另一事件出现的概率,即当 P(A)=P(A·B)或 P(B) =P(B·A)时,则称 A 与 B 是相互独立的事件。 定理 6.1 加法定理 两个不相容(互斥)事件之和的概率,等于两个事件概率之和,即 P(A+B)= P(A)+P(B) 两个互逆事件 A 和 A-1 的概率之和为 1。即当 A+A-1=Ω,且 A 与 A-1 互斥,则 P(A)+P(A-1) =1,或常有 P(A)=1-P(A-1)。 若 A、B 为两任意事件,则: www.aibbt.com 让未来触手可及 146 P(A+B)=P(A)+P(B)-P(AB) 成立。此定理可推广到三个以上事件的情形: P(A+B+C)=P(A)+P(B)+P(C)-P(AB)-P(BC)-P(CA)+P(ABC)。 定理 6.2 乘法定理 设 A、B 为两个不相容(互斥)的非零事件,则其乘积的概率等于 A 和 B 概率的乘积。即: P(A·B)=P(A)·P(B) 或 P(A·B)=P(B)·P(A) 设 A、B 为两个任意的非零事件,则其乘积的概率等于 A(或 B)的概率与在 A(或 B)出现的 条件下 B(或 A)出现的条件概率的乘积。 P(A·B)=P(A)·P(B|A) 或 P(A·B)=P(B)·P(A|B) 此定理可以推广到三个以上事件的乘积情形,即当n个事件的乘积P(A1A2…An-1)>0 时,则 乘积的概率为: P(A1A2…An)=P(A1)·P(A2|A1)·P(A3|A1A2)…P(An|A1A2An-1) 当事件两两独立时, 则有: P(A1A2…An)=P(A1)·P(A2)·P(A3)…·P(An) 6.2.2 贝叶斯概率 1.先验概率。先验概率是指根据历史的资料或主观判断所确定的各事件发生的概率,该 类概率没能经过实验证实,属于检验前的概率,所以称之为先验概率。先验概率一般分为两 类,一是客观先验概率,是指利用过去的历史资料计算得到的概率;二是主观先验概率,是 指在无历史资料或历史资料不全的时候,只能凭借人们的主观经验来判断取得的概率。 2.后验概率。后验概率一般是指利用贝叶斯公式,结合调查等方式获取了新的附加信息, 对先验概率进行修正后得到的更符合实际的概率。 3.联合概率。联合概率也叫乘法公式,是指两个任意事件的乘积的概率,或称之为交事 件的概率。 4.全概率公式。如果影响事件 A 的所有因素 B1,B2,…满足:Bi·Bj=Φ,(i≠j) 且: 1)( =iBP ∪ , 0)( >iBP, …,2,1=i 则必有: ∑= )|()()( ii BAPBPAP (6.4) 5 贝叶斯公式 贝叶斯公式,也叫后验概率公式,还叫逆概率公式,其用途很广。 设: 先验概率为 P(Bi) 调查所获的新附加信息为 P(Aj|Bi) i=1、2、…、n j=1、2、…、m 则贝叶斯公式计算的后验概率为: ∑ = = m k iki iji ji BAPBP BAPBPABP 1 )|()( )|()()|( (6.5) 例 6.3 某厂生产的某种产品,由三个生产小组都生产两种规格的该产品,其有关产量资料 如表 6.2 所示: 表 6.2 三个小组的日产量 单位:件 www.aibbt.com 让未来触手可及 147 第一组 A1 2 000 1 000 3 000 第二组 A2 1 500 500 2 000 第三组 A3 500 500 1 000 合 计 4 000 2 000 6 000 现从这 6000 件产品中随机抽取一件, 完成如下各问。 1.用古典概率计算下列概率: 1) 分别计算该产品是第一、二、三组生产的概率 解:P(A1)=3000/6000=1/2 P(A2)=2000/6000=1/3 P(A3)=1000/6000=1/6 2)分别计算该产品为哪一型号的概率? 解:P(B1)=4000/6000=2/3 P(B2)=2000/6000=1/3 3)计算该产品既是第一组生产的又是 B1 型的概率 解:P(A1·B1)=2000/6000=1/3 4)若已知该产品为第一组生产的,问其为 B1 型产品的概率? 解:P(B1|A1)=2000/3000=2/3 5) 若发现该产品是 B2 型产品,求其由第一、二、三组生产的概率分别为多少? 解:P(A1|B2)=1000/2000=1/2 P(A2|B2)=500/2000=1/4 P(A3|B2)=500/2000=1/4 2.用条件概率计算 1) 若已知该产品为第一组生产的,问其为 B1 型产品的概率? P(B1|A1)=(1/3)/(1/2)=2/3 2) 若发现该产品是 B2 型产品,求其由第一、二、三组生产的概率分别为多少? P(A1|B2)=(1/6)/(1/3)=1/2 P(A2|B2)=(1/12)/(1/3)=1/4 P(A3|B2)=(1/12)/(1/3)=1/4 3.用贝叶斯后验概率公式分别计算如下两问。 1) 已知:P(B1)=4000/6000=2/3 P(B2)=2000/6000=1/3 P(A1|B1)=1/2 P(A1|B2)=1/2 求:当发现抽出的该产品是第一组 A1 生产的,问该产品是 B2 型概率为多少? 解:计算各联合概率有: P(B1)P(A1|B1)=(2/3)(1/2)=1/3 P(B2)P(A1|B2)=(1/3)(1/2)=1/6 计算全概率有:P(A1)=(1/3)+(1/6)=1/2 则用贝叶斯公式有: P(B2|A1)=(1/6)÷(1/2)=1/3 2) 已知:P(A1)=3 000/6 000=1/2 P(A2)=2 000/6 000=1/3 P(A3)=1 000/6 000=1/6 www.aibbt.com 让未来触手可及 148 P(B2|A1)=1 000/3 000=1/3 P(B2|A2)=500/2 000=1/4 P(B2|A3)=500/1 000=1/2 求:当发现该产品为 B2 型的,问其由第一、二、三组生产的概率各为多少? 解:计算联合概率有: P(A1)P(B2|A1)=(1/2)(1/3)=1/6 P(A2)P(B2|A2)=(1/3)(1/4)=1/12 P(A3)P(B2|A3)=(1/6)(1/2)=1/12 计算全概率 P(B2)为: P(B2)=∑P(Ai)P(B2|Ai) =(1/2)(1/3)+(1/3)(1/4)+(1/6)(1/2)=1/3 利用贝叶斯公式计算后验概率分别为: P(A1|B2)=(1/6)÷(1/3)=1/2 P(A2|B2)=(1/12)÷(1/3)=1/4 P(A3|B2)=(1/12)÷(1/3)=1/4 6.3 贝叶斯问题求解 贝叶斯学习理论利用先验信息和样本数据来获得对未知样本的估计,而概率(联合概率 和条件概率)是先验信息和样本数据信息在贝叶斯学习理论中的表现形式。如何获得这些概 率(也称之为密度估计)是贝叶斯学习理论争议较多的地方。贝叶斯密度估计研究如何根据 样本的数据信息和人类专家的先验知识获得对未知变量(向量)的分布及其参数的估计。它 有两个过程:一是确定未知变量的先验分布;一是获得相应分布的参数估计。如果以前对所 有信息一无所知,称这种分布为无信息先验分布;如果知道其分布求它的分布参数,称之为 有信息先验分布。由于在数据挖掘中,从数据中学习是它的最基本特性,所以无信息先验分 布是贝叶斯学习理论的主要研究对象。 选取贝叶斯先验概率是用贝叶斯模型求解的第一步,也是比较关键的一步。常用的选取 先验分布的方法有主观和客观两种。主观的方法是借助人的经验、专家的知识等来指定其先 验概率。而客观的方法是通过直接分析数据的特点,来观察数据变化的统计特征,它要求有 足够多的数据才能真正体现数据的真实分布。在实际应用中,这两种方法经常是结合在一起 使用的。下面给出几种常用的先验概率的选取方法,为此我们首先给出几个定义。 令θ 表示模型的参数, ),,( 21 nxxxX = 表示观测数据, )(θπ 是参数的先验分布,它 表示在没有任何证据出现的情况下,对参数的信任程度。 )|,,()|,,( 2121 θθ nn xxxpxxxl ∝ 是似然函数,它表示在已知参数的情况下,对未知样 本的信任程度。 ),,|(),,|( 2121 nn xxxpxxxh θθ ∝ 表示观测到新证据后,对参数信任程 度的改变。贝叶斯定理清晰地表示出了它们之间的关系: )|,,()( )|,,()( )|,,()(),,|( 21 21 21 21 θθπ θθθπ θθπθ n n n n xxxl dxxxp xxxpxxxh ∝= ∫ (6.6) www.aibbt.com 让未来触手可及 149 定义 6.5 分布密度的核:如果随机变量 z 的分布密度 )(xf 可以分解为 )()( xcgxf = ,其 中 c 是与 x 无关的常量,称 )(xg 是 )(xf 的核,记为 )()( xgxf ∝ 。只要知道了分布密度的核, 利用分布密度在全空间上的积分为 1,就可以确定相应的常数。因此,要求随机变量的分布密 度,关键是求出分布密度的核。 定义 6.6 充分统计量:对参数θ 而言,统计量 ),( 21 nxxxt 称为充分的,如果不论θ 的 先验分布是什么,相应的后验分布 ),|( 21 nxxxh θ 总是θ 和 ),( 21 nxxxt 的函数。 这一定义明确地表示了样本中关于θ 的信息均可由它的充分统计量来反映,因此后验分布 通过统计量与样本发生联系。下面我们给出判断一个统计量是否为充分统计量的定理,即著 名的奈曼因子分解定理: 定理 6.3 若样本 nxxx 21, 对参数θ 的条件密度能表示成 ),( 21 nxxxg 与 )),(,( 21 nxxxtf θ 的乘积,则 ),( 21 nxxxt 对参数是充分的,反之亦真。 6.3.1 几种常用的先验分布选取方法 1. 共轭分布族 Raiffa 和 Schaifeer 提出先验分布应选取共轭分布,即要求后验分布与先验分布属于同一 分布类型。它的一般描述为: 定义 6.7 设样本 X1,X2, … ,Xn 对参数θ的条件分布为 p(x1,x2, … , xn|θ),如果先验分布 密度函数 )(θπ 决定的后验密度 )|( xθπ 与 )(θπ 同属于一种类型,则称 )(θπ 为 p(x|θ)的共 轭分布。 定义 6.8 设 P={ Θ∈θθ :)|(xp }是以θ为参数的密度函数族, )}({ θπ=H 是θ的先 验分布族,假设对任何 Pp ∈ 和 H∈π ,得到的后验分布 )|( xθπ 仍然在 H 族中,则称 H 为 P 的共轭分布族。 因为当样本分布与先验分布的密度函数都是θ的指数函数时,它们相乘后指数相加,结 果仍是同一类型的指数函数,只相差一个常数比例因子。所以有如下定理: 定理 6.4 如果随机变量 Z 的分布密度函数 f(x)的核为指数函数,则该分布属于共轭分 布族。 核为指数函数的分布构成指数函数族。指数函数族包括二项分布、多项分布、正态分布、 Gamma 分布、Poisson 分布和多变量正态分布等。它们都是共轭分布。常用的共轭分布还有 Dirichlet 分布。 用共轭分布作先验可以将历史上做过的各次试验进行合理综合,也可以为今后的试 验结果分析提供一个合理的前提。由于非共轭分布的计算实际上是相当困难的,相比之 下,共轭分布计算后验只需要利用先验做乘法,其计算特别简单。可以说共轭分布族为 贝叶斯学习的实际使用铺平了道路。 2. 最大熵原则 熵是信息论中描述事物不确定性的程度的一个概念。如果一个随机变量 x 只取 a 与b 两个 www.aibbt.com 让未来触手可及 150 不同的值,比较下面两种情况: (1) 98.0)( == axp , 02.0)( == axp (2) 45.0)( == axp , 55.0)( == axp 很明显,(1)的不确定性要比(2)的不确定性小得多,而且从直觉上也可以看得出当取的两 个值得概率相等时,不确定性达到最大。 定义 6.9 设随机变量 x 是离散的,它取 kaaa 21, 至多可列个值,且 ii paxp == )(, ,2,1=i ,则 ∑−= i ii ppxH ln)( 称为 x 的熵。对连续型随机变量 x ,它的概率密度函数为 )(xp ,若积分 ∫−= )(ln)()( xpxpxH ,有意义,称它为连续型随机变量的熵。 从定义可以看出,两个随机变量具有相同分布时,它们的熵就相等,可见熵只与分布有 关。 最大熵原则:无信息先验分布应取参数θ的变化范围内熵最大的分布。 可以证明,随机变量(或随机向量)的熵为最大的充分必要条件是随机变量(或随 机向量)为均匀分布。因此,贝叶斯假设取无信息先验分布是“均匀分布”是符合信息 论的最大熵原则的,它使随机变量(或随机向量)的熵为最大。现就随机变量取有限个 值的情况加以证明。 定理 6.5 设随机变量 x 只取有限个值 a1, a2 , …, an ,相应的概率记为 p1,p2, …pn,则 x 的 熵 H(x)最大的充分必要条件是:p1 = p2 = … = pn = n 1 。 证明 考虑 G(p1,p2, …pn)= - ∑ = n i ii pp 1 ln + ∑ = − n i ip 1 )1(λ ,为求其最大值,将 G 对 pi 求偏微 商,并令偏微商为 0,得方程组: 0= ip G ∂ ∂ = -ln pi-1+λ (i=1,2,…,n) 求得 p1 = p2 = … = pn 。又因为 ∑ = = n i ip 1 1 ,所以 p1 = p2 = … = pn = n 1 。此时相应的熵是 nnn n i ln1ln1 1 =− ∑ = 。反之,当 p1 = p2 = … = pn 时,G(p1, p2, …,pn) 取得最大值。 对于连续的随机变量也有同样的结果。 由此可见,在没有任何信息确定先验分布时,采用无信息先验分布是合理的。这时当然 需要有较多的样本数据,进行较多次的计算才能得较好的结果。不过,无法指派先验概率分 布的问题还是相当多,所以关于无信息先验分布的贝叶斯假设仍然有重要的意义。 3. 杰弗莱原则 杰弗莱对于先验分布的选取做出了重大的贡献,它提出一个不变原理,较好地解决了贝 叶斯假设中的一个矛盾,并且给出了一个寻求先验密度的方法。杰弗莱原则由两个部分组成: 一是对先验分布有一合理要求;一是给出具体的方法求得适合于要求的先验分布。 www.aibbt.com 让未来触手可及 151 在贝叶斯假设中存在这样一个矛盾:如果对参数θ 选用均匀分布,则对它的函数 )(θg 作 为参数时,也应选用均匀分布。反之当对 )(θg 选用均匀分布时,参数θ 也应选用均匀分布。 然而上述的前提中,往往推导不出相应的结论。杰弗莱为了克服这一矛盾,提出了不变性要 求,他认为一个合理的决定先验分布的准则应具有不变性。 若决定θ 的先验分布为 )(θπ ,根据不变性准则,决定它的函数 )(θg 的分布 ))(( θπ gg 应 满足下面的关系: |)(|))(()( ' θθπθπ ggg= (6.7) 问题的关键在于如何找到满足上面要求的先验分布 )(θπ 。杰弗莱巧妙地利用费歇信息阵 的一个不变性质找到了要求的 )(θπ 。 参数θ 的先验分布应以信息阵 )(θI 行列式的平方根为核,即 21 |)(|)( θθπ I∝ ,其中 '2121 ));,,(ln)();,,(ln()( θ θ θ θθ ∂ ∂ ∂ ∂= nn xxxpxxxpEI 具体推导过程,这里不再给出,可参考相关文献。值得指出的是,杰弗莱原则是一个原则性 的意见,用信息阵 )(θI 行列式的平方根选取先验分布是一个具体的方法,这两者是不等同的, 还可以寻求更适合体现这一准则的具体方法。 6.3.2 计算学习机制 任何系统经过运行能改善其行为,都是学习。到底贝叶斯公式求得的后验是否比原来信 息有所改善呢?其学习的机制是什么?现以正态分布为例进行分析,从参数的变化看先验信 息和样本数据在学习中所起的作用。 设 X1,X2, … ,Xn 是来自正态分布 N(θ, 2 1σ )的一个样本,其中 2 1σ 已知,θ未知。为了 求θ的估计量θ~ ,取另一个正态分布 ),( 2 00 σµN 作为该正态均值θ的先验分布,即取先验为: π(θ)= ),( 2 00 σµN 。用贝叶斯公式可以计算出后验仍为正态分布:h(θ| 1x )=N( 1α , 2 1d ), 其中: ∑ = = n i i n xx 1 1 , )1/()1( 2 1 2 0 12 1 02 0 1 σσσ µ σ α nxn ++= , 1 2 1 2 0 2 1 )1( −+= σσ nd 。 用后验 h(θ| x )的数学期望 1α 作为θ的估计值,有: θ~ =E(θ| 1x )= )1( 12 1 02 0 xn σ µ σ + 2 1d⋅ (6.8) www.aibbt.com 让未来触手可及 152 由此可见,这样得到的θ的估计值θ~ 是先验分布中的期望μ0 与样本均值 1x 的加权平均。 因为 2 0σ 是 ),( 2 00 σµN 的方差,它的倒数 1/ 2 0σ 就是μ0 的精度。样本均值 1x 的方差是 2 1σ /n, 它的倒数 n/ 2 1σ 就是样本均值 x 的精度。可知θ~ 是将μ0 与 1x 按各自的精度加权平均。方差越 小者精度越高,在后验均值中所占的比重越大。此外,样本的容量 n 越大则 2 0σ /n 越小,则样 本均值 1x 在后验均值中所占的比重越大。当 n 相当大时,先验均值在后验中的影响将变得很 小。这说明贝叶斯公式求出的后验确实对先验信息和样本数据进行了合理的综合,其得到的 结果比单独使用先验信息或样本数据都更完善,其学习机制确实是有效的。在采用其它共轭 先验分布的情况下,也有类似的结果。 从前面的讨论可知,在共轭先验的前提下,可以将得到的后验信息作为新一轮计算的先 验,与进一步获得的样本信息综合,求得下一个后验信息。如果多次重复这个过程,得到的 后验信息是否越来越接近于实际结果?对这个问题可作如下分析: 用计算得到的后验分布 h(θ| 1x )=N( 1α , 2 1d )作为新一轮计算的先验时,设新的样本 X1,X2, … ,Xn 来自正态分布 N(θ, 2 2σ ),其中 2 2σ 已知,θ待估计。 则新的后验分布为:h1(θ | 2x )=N( 2α , 2 2d ), 其中: ∑ = = n i i n xx 1 2 , )1/()1( 2 2 2 1 22 2 12 1 2 σσ αα n d xn d ++= , 1 2 2 2 1 2 2 )1( −+= σ n d d 。 用后验 h1(θ| 2x )的数学期望 =2α )1/()1( 2 1 2 0 2 1 02 0 σσσµσ nxn ++ 作为θ的估计值,由于 =1α )1( 12 1 02 0 xn σµσ + 2 1d⋅ ,计算可得: =2α )1( 22 2 12 1 xn d σα + 2 2d⋅ = 12 1 02 0 1( xn σµσ + + 22 2 xn σ ) 2 2d⋅ = )1( 12 1 02 0 xn σµσ + 2 2d⋅ + 22 2 xn σ 2 2d⋅ (6.9) 又由于 2 2σ n >0,故 1 2 2 2 1 2 2 )1( −+= σ n dd 1 2 2 2 1 2 0 )1( −++= σσσ nn < 1 2 1 2 0 2 1 )1( −+= σσ nd 可知在 2α 中, )1( 12 1 02 0 xn σµσ + 2 2d⋅ < 1α ,也就是说,由于新样本的加入,先验和旧样本所 占的比重降低。由式(6.9)容易看出,当新的样本(不失一般性,假定容量相同)继续增加, 将有: =mα 12 1 02 0 1( xn σµσ + + 22 2 xn σ +...+ m m xn 2σ ) 2 md⋅ www.aibbt.com 让未来触手可及 153 = 02 0 1( µ σ + ∑ = m k k k xn 1 2 ) σ 2 md⋅ (k = 1,2, ... , m) (6.10) 由(6.10)式可知,如果所有新的样本的方差相同,则等同于一个容量为 m×n 的样本。 以上过程将先验和各样本均值按各自的精度加权平均,精度越高者其权值越大。由此可见, 如果能正确估计先验分布密度,就可以使用少量样本数据,进行少量计算而得到较满意的结 果。这在样本难得的情形特别有用,这也是贝叶斯学习优于其它方法之处。因此先验分布的 指派在贝叶斯学习中有重要的意义。如果没有任何先验信息而采用无信息先验分布时,随着 使用的样本增多,样本信息的影响越来越显著。在样本的噪音很小的前提下,得到的后验信 息也将越来越接近于实际,只不过需要大量的计算而已。 6.3.3 贝叶斯问题求解步骤 贝叶斯问题求解的基本步骤可以概括为: (1) 定义随机变量。将未知参数看成随机变量(或随机向量),记为θ。将样本 x1,x2,...,xn 的联合分布密度 p(x1,x2,...,xn;θ)看成是 x1,x2,...,xn 对θ 的条件分布密度,记为 p(x1,x2,...,xn |θ)或 p(D|θ)。 (2) 确定先验分布密度 p(θ)。采用共轭先验分布。如果对先验分布没有任何信息,就采 用无信息先验分布的贝叶斯假设。 (3) 利用贝叶斯定理计算后验分布密度。 (4) 利用计算得到的后验分布密度对所求问题作出推断。 以单变量单个参数情形为例,考虑“抛掷图钉问题”:将图钉抛到空中,图钉落下静止后 将取以下两种状态之一:头(head)着地或尾(tail)着地。假设我们抛图钉 N+1 次,问从前 N 次的结果如何决定第 N+1 次出现头的概率。 第一步,定义随机变量Θ,其值θ对应于抛图钉头着地的物理概率可能的真值。密度函 数 p(θ) 表示我们对Θ的不确定性。第 l 次抛掷结果的变量为 Xl ( l=1,2,..., N+1),观测值 的集合为 D={X1=x1,..., Xn=xn}。于是将问题表示为由 p(θ)计算 p(xN+1|D)。 第二步,用贝叶斯定理获得给定 D 时Θ的概率分布:p(θ|D)= )( )|()( Dp Dpp θθ ,其中 ∫= θθθ dpDpDp )()|()( ,p(D|θ)是二项分布样本的似然函数。如果已知Θ的值(即参数 θ),则 D 中的观测值是相互独立的,并且任何一次观测出现头的概率是θ,出现尾的概率为 (1-θ)。于是: p(θ|D)= )( )1()( Dp p th θθθ − (6.11) 其中 h 和 t 分别是在 D 中观测到的头和尾的次数,称为二项分布样本的充分统计量。 第三步,求所有Θ的所有可能的值的平均值,作为第 N+1 次抛掷图钉出现头的概率: ∫ === ++ θθθ dDpheadsXpDheadsXp NN )|()|()|( 11 =∫ ⋅ θθθ dDp )|( ≡Ep(θ|D)(θ) (6.12) www.aibbt.com 让未来触手可及 154 其中 Ep(θ|D)(θ)表示θ对于分布 p(θ|D)的数学期望。 第四步,为Θ指派先验分布和超参数。 指派先验通常采用的方法是先假定先验的分布,再确定分布的参数。假定先验是 Beta 分 布: p(θ)=Beta ()th ααθ ,| ≡ 11 )1()()( )( −− −ΓΓ Γ th th αα θθαα α (6.13) 其中αh>0 和αt>0 是 Beta 分布的参数,α=αh+αt ,Γ(·)是 Gamma 函数。为了和参数 θ相区别,将αh 和αt 称为“超参数”。因为 Beta 分布属于共轭分布族,得到的后验也是 Beta 分布: p(θ|D)= 11 )1()()( )( −+−+ −+Γ+Γ +Γ th th th th N αα θθαα α =Beta( )th th ++ ααθ ,| (6.14) 对于这个分布,θ的数学期望有一个简单的形式: ∫ ⋅ θααθθ dBeta th ),|( = α α h (6.15) 于是,给定一个 Beta 先验,我们得到第 N+1 次抛掷出现头的概率的一个简单的表达式: N hDheadsXp h N + +==+ α α)|( 1 (6.16) 确定先验 p(θ)的 Beta 分布的超参数有多种方法 。例如“想象将来数据法”和“等价 样本法”。其他方法见 Winkler、Chaloner和 Duncan 的论文。使用想象将来数据法,由(6.16) 式可得到两个方程,便可求出 Beta 分布的两个参数(超参数)αh 和αt 。 在单变量多参数(一种变量有多种状态)的情形,一般设 X 是带有高斯分布的连续变量, 假设有物理概率分布 p(x|θ),则有: p(x|θ)= )2( πν 2/1− νµ 2/)( 2−− xe (其中θ={μ,ν}) 依照二项分布的做法,赋予参数变量以先验,应用贝叶斯定理由给定观测样本的数据集 D={X1=x1, X2=x2,…., XN=xN}求出后验,也就是学习这些参数: p(θ|D)=p(D|θ)p(θ)/ p(D) 然后取Θ的可能的值的平均值作预测: )|( ! Dxp N + =∫p(xN+1|θ)p(θ| D)dθ (6.17) 对指数家族而言,计算是特别有效的而且是封闭的。在多项样本情形,如果 X 的观察值是离 散的,使用 Dirichlet 分布作为共轭先验可以使计算简化。 贝叶斯定理的计算学习机制是将先验分布中的期望值与样本均值按各自的精度进行加权 平均,精度越高者其权值越大。在先验分布为共轭分布的前提下,可以将后验信息作为新的 一轮计算的先验,用贝叶斯定理与进一步得到的样本信息进行综合。多次重复这个过程后, 样本信息的影响越来越显著。由于贝叶斯方法可以综合先验信息和后验信息,既可避免只使 用先验信息可能带来的主观偏见,和缺乏样本信息时的大量盲目搜索与计算,也可避免只使 用后验信息带来的噪音的影响。因此,适用于具有概率统计特征的数据采掘和知识发现问题, 尤其是样本难以取得或代价昂贵的问题。合理准确地确定先验,是贝叶斯方法进行有效学习 的关键问题。目前先验分布的确定依据只是一些准则,没有可操作的完整的理论,在许多情 况下先验分布的合理性和准确性难以评价。对于这些问题还需要进一步深入研究。 www.aibbt.com 让未来触手可及 155 6.4 简单贝叶斯学习模型 简单贝叶斯学习模型(Simple Bayes 或 Naïve Bayes )将训练实例 I 分解成特征向量 X 和 决策类别变量 C。简单贝叶斯模型假定特征向量的各分量间相对于决策变量是相对独立的,也 就是说各分量独立地作用于决策变量。尽管这一假定一定程度上限制了简单贝叶斯模型的适 用范围,然而在实际应用中,不仅以指数级降低了贝叶斯网络构建的复杂性,而且在许多领 域,在违背这种假定的条件下,简单贝叶斯也表现出相当的健壮性和高效性[Nigam 98],它已 经成功地应用到分类、聚类及模型选择等数据挖掘的任务中。目前,许多研究人员正致力于 改善特征变量间独立性的限制[Heckerman 97],以使它适用于更大的范围。 6.4.1 简单贝叶斯学习模型 贝叶斯定理告诉我们如何通过给定的训练样本集预测未知样本的类别,它的预测依据就 是取后验概率 )( )|(*)()|( AP CAPCPACP iii = (6.18) 最大的类别。这里 E 是测试样本, )|( XYP 是在给定 X 的情况下 Y 的条件概率。等式右侧的 概率都是从样本数据中估计得到的。设样本表示成属性向量,如果属性对于给定的类别独立, 那么 )|( iCAP 可以分解成几个分量的积: )|(*)|(*)|( 21 imii CaPCaPCaP (这里 iv 是 样本 E 的第 i 个属性)。从而后验概率的计算公式为: )|()( )()|( 1 ∏ = = m j ij i i CaPAP CPACP (6.19) 这个过程称之为简单贝叶斯分类 (SBC: Simple Bayesian Classifier)。一般认为,只有在独 立性假定成立的时候,SBC 才能获得精度最优的分类效率;或者在属性相关性较小的情况下, 能获得近似最优的分类效果。然而这种较强的限制条件,似乎与 SBC 在许多领域惊人的性能 很不一致,其中包括属性具有明显依赖性的情况。在 UCI 的 28 个数据集中,其中 16 个要好 于 C4.5 的性能,与 CN2 和 PEBLS 基本相似,许多研究也得到了类似的结论[Clark & Niblett, 1989;Dougherty Kohavi & Sahami, 1995]。 同时也有一些研究人员提出了一些策略以改善属 性之间独立性的限制[Nigam 98],获得了一定的成功。 在(6.19)中的概率可采用样本的最大似然估计: )( )()|( i ij ij ccount cvcountCvP ∧= (6.20) 为了防止(6.19)出现 0 的情况,当实际计算为零时,可以直接指定(6.19)的结果为 0.5/N, 这里 N 为例子总数。 假定只有两类,将这两类分别称为 0 类和 1 类: 1a 到 ka 表示一个给定测试集的属性; )0|(),0|(,1)1(),0( 10010 ======−===== CaAPpCaAPpbCPbCPb jjjjjj www.aibbt.com 让未来触手可及 156 则: zbpaAaACPp k j jkk /)()|1( 1 1 111 ∏ = ==∧∧=== (6.21) zbpaAaACPq k j jkk /)()|0( 0 1 011 ∏ = ==∧∧=== (6.22) 这里 z 是一个固定常量。将上面两式两边取对数后相减得: 01 1 01 loglog)loglog(loglog bbppqp k j jj −+−=− ∑ = (6.23) 这时,取 0101 loglog,loglog bbbppw jjj −=−= ,则上式转化为: bwpp k j j −−=− ∑ =1 /)1(log (6.24) 两边取指数,并且重新排列: ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ + = −∑− = bw k j j e p 11 1 (6.25) 为计算该式,一般来说,假定属性 jA 有 )( jv 个可能的属性值,那么当: ))(1()0|(log)1|(log ' ''' jvjcaAPcaAPw jjjjjjjj ≤≤==−=== (6.26) 时,上式转化为: ∑∑+ == −=− = )( ' ''1 ))((( 1 1)1)(( jv j jjjjj k j bwaxAI e xCP (6.27) 这里, I 是一个示性函数:如果ϕ 为真,那么 1)( =ϕI ,否则: 0)( =ϕI 。 在实际计算中,上式只需根据公式(6.20)的思想即可计算出结果。 公式(6.27)实际上是一个具有 sigmoid 型激励的感知器函数。该函数分别输入每一个属 性 jA 的 )( jv 个可能的值。因此简单贝叶斯分类器在特定输入场合下的表达能力与感知器模型 是等价的。进一步的研究表明,简单贝叶斯分类器可以推广到针对数值属性的逻辑回归方法。 在此考虑公式(6.20),如果 jA 具有离散值,那么 )( ijj cCaAcount =∧= 能够从训练 例子中直接计算出来。如果 jA 是连续值,那么就需要离散化该属性,使用非监督离散化将该 属性离散化到 M 个等宽度的区间内,一般 10=M 。也可以使用更复杂的离散化方法,如监 督离散化方法。 让每一个 jA 是一个数值属性(离散或连续),逻辑回归假设模型: www.aibbt.com 让未来触手可及 157 0 111 11 ),|0( ),|1(log babaAaACP aAaACP k j jj kk kk +==== === ∑ = (6.28) 对上式采用如(6.24)式同样的变换后,得到: ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ + = −∑− = 0 11 1 bab k j jj e p , (6.29) 显然,这也是具有 sigmoid 型激励的感知器函数,每个属性作为输入的单节点的感知器,并且 每个属性值以它们的大小编码。用一个 ja=ϕ 的函数 )(ϕf 替换 jj ab ,如果 jA 的范围被分割 为 M 个部分,那么第i 部分在 ],[)1( jiij cc − ,则该函数就是: ∑ = − ≤== M i jiijjijjjj ccIbafab 1 )1( )()( (6.30) 这里每一个 jib 是一个常数,综合公式(6.29)(6.30)可以得到: 0)1(1 ))(( 1 1)1)(( bccIbM i jiijji k je xCP −≤− ∑∑+ == −= (6.31) 这就是最终的回归函数。因此简单贝叶斯分类是逻辑回归的一种非参数化、非线性的扩展。 通过设置 )2/()( )1( jijijji bccb += − ,能够近似得到标准逻辑回归公式。 6.4.2 简单贝叶斯模型的提升 提升方法(Boosting)总的思想是学习一系列分类器,在这个序列中每一个分类器对它 前一个分类器导致的错误分类例子给与更大的重视。尤其是,在学习完分类器 kH 之后,增加 了由 kH 导致分类错误的训练例子的权值,并且通过重新对训练例子计算权值,再学习下一个 分类器 1+kH 。这个过程重复T 次。最终的分类器从这一系列的分类器中综合得出。 在这个过程中,每个训练例子被赋予一个相应的权值,如果一个训练例子被分类器错误 分类,那么就相应地增加该粒子的权重,使得在下一次学习中,分类器对该例代表的情况更 加重视。 提升算法对两类分类问题的处理是通过 Freund 和 Scbapire 给出的 AdaBoost 算法实现的 [Freund 95]。 算法 6.1 AdaBoost 算法。 Input: N 个训练实例: >>< ),(,,( 11 NN yxyx N 个训练实例上的分布 wD : , w 为训练实例的权向量。 www.aibbt.com 让未来触手可及 158 T 为训练重复的趟数。 1. Initialize: 2. 初始化训练实例的权向量。 )...1(/1 NiNwi == 3. Ttotfor 1= 4. 给定权值 t iw 得到一个假设 ]1,0[:)( →XH t 5. 估计假设 )(tH 的总体误差, ∑ = −= N i i t ii t i t xhywe 1 )()()( |)(| 6. 计算 )1( )( )()( t tt e e −=β 7. 计算下一轮样本的权值 )|(|1)()()1( )( )( i t ii xhytt i t i ww −−+ = β 8. 正规化 )1( +t iw ,使其总和为 1 9. forEnd 10. :Output 11. ⎪⎩ ⎪⎨ ⎧ ≥ = ∑∑== otherwize ixhiif xh T t T t t t t 0 )(log2 1)()(log1 )( 11)( )( )( ββ 在这里假设每一个分类器都是实际有用的, 5.0>< ),(,,( 11 NN yxyx N 个训练实例上的分布 wD : , w 为训练实例的权向量。 T 为训练重复的趟数。 1.Initialize: 2. 初始化训练实例的权向量。 )...1(/1 NiNwi == 3. Ttotfor 1= 4. 给定权值 t iw 得到一个假设 YXH t →:)( 5. 估计假设 )(tH 的总体误差, ∑ = ≠= N i i t ii t i t xhyIwe 1 )()()())(( 6. 计算 )1( )( )()( t tt e e −=β 7. 计算下一轮样本的权值 ))((1)()()1( )( )( i t ii xhyItt i t i ww =−+ = β 8. 正规化 )1( +t iw ,使其总和为 1 9. End for 10. Output: 11. ∑ = ∈ == T t t t Yy yxhIixh 1 )( )())(()(logarg)( max β www.aibbt.com 让未来触手可及 160 这里 1)( =φI ,如果 T=φ ;否则 0)( =φI 6.4.2 提升简单贝叶斯分类的计算复杂性 假设样本空间中个体样本具有 f 个属性,每个属性有 v 个属性值。那么有公式(6.27)导出 的一个简单贝叶斯分类器有 1+fv 个参数,这些参数被累计学习 22 +fv 次,在每次学习中, 每个训练例子的每个属性值都会使得精度得以提高。因此, n 个训练实例的时间复杂度就是 )(nfO ,与 v 无关。这样的时间复杂度本质上就是最佳的。提升后的简单贝叶斯,每一趟的 时间复杂度也是 )(nfO 。对 T 趟训练,其复杂度为 )(TnfO ,而 T 是一常数,所以它的时间复 杂度仍然为 )(nfO 。 对简单贝叶斯分类器,其主要计算是计数计算。训练例子可以从磁盘或磁带机中顺序地 进行处理,也可以分批地处理。因此该方法非常适合在大数据量的知识发现。数据集可以不 需全部装入内存,仍旧可以保存在磁盘或磁带上。然而这种提升方法应用到简单贝叶斯模型 中存在如下问题: 1. 从提升的思想来看,当训练集中存在噪音时,提升的方法会把这些噪音当作有用的信息通 过权值而放大,这会降低提升的性能。当噪音很多时,这种提升会导致更糟的结果。 2. 虽然理论上提升方法可以保证训练集的差错率为 0,但当其运用到简单贝叶斯模型时,却 不能保证是这样,训练集的差错始终存在。 6.5 贝叶斯网络的建造 6.5.1 贝叶斯网络的结构及建立方法 简而言之,贝叶斯网络是一个带有概率注释的有向无环图。这个图模型能表示大的 变量集合的联合概率分布(物理的或贝叶斯的),可以分析大量变量之间的相互关系, 利用贝叶斯定理揭示的学习和统计推断功能,实现预测、分类、聚类、因果分析等数据 采掘任务。 关于一组变量 X={X1,X2, … ,Xn }的贝叶斯网络由以下两部分组成:(1)一个表示 X 中的变 量的条件独立断言的网络结构 S;(2)与每一个变量相联系的局部概率分布集合 P。两者定义 了 X 的联合概率分布。S 是一个有向无环图,S 中的节点一对一地对应于 X 中的变量。以 Xi 表示变量节点, Pai 表示 S 中的 Xi 的父节点。S 的节点之间缺省弧线则表示条件独立。X 的 联合概率分布表示为: p(x)=∏ = n i ixp 1 |( pai) (6.32) www.aibbt.com 让未来触手可及 161 以 P 表示(6.31)式中的局部概率分布,即乘积中的项 p(xi|Pai)(i=1,2,…,n),则二元组 (S,P)表示了联合概率分布 p(X)。当仅仅从先验信息出发建立贝叶斯网络时,该概率分 布是贝叶斯的(主观的)。当从数据出发进行学习,进而建立贝叶斯网络时,该概率是物理的 (客观的)。 为了建立贝叶斯网络,第一步,必须确定为建立模型有关的变量及其解释。为此,需要: (1)确定模型的目标,即确定问题相关的解释;(2)确定与问题有关的许多可能的观测值,并确 定其中值得建立模型的子集;(3)将这些观测值组织成互不相容的而且穷尽所有状态的变量。 这样做的结果不是唯一的。 第二步,建立一个表示条件独立断言的有向无环图。根据概率乘法公式有: p(x)=∏ = − n i ii xxxxp 1 ),...,,|( 121 = ),...,,|()....,|()|()( 121213121 −nn xxxxpxxxpxxpxp (6.33) 对于每个变量 Xi ,如果有某个子集 ⊆Πi {X1,X2, … ,Xi-1}使得 Xi 与{X1,X2, … ,Xi-1}\Πi 是条件 独立的,即对任何 X,有:    p(x i |x1,x2, … , xi-1)=p(x i |πi) (i=1,2,…,n) (6.34 )   则由(6.33)(6.34)两式可得:p(x)= ∏ = n i iixp 1 )|( π 。变量集合(Π1,…,Πn)对应于父 节点( Pa1,… , Pan ),故又可以写成:p(x)=∏ = n i ixp 1 |( pai) 。于是,为了决定贝叶斯网络的结 构,需要 (1)将变量 X1,X2, … ,Xi 按某种次序排序;(2)决定满足(6.34)式的变量集Πi (i=1,2,…,n)。 从原理上说,如何从 n 个变量中找出适合条件独立的顺序,是一个组合爆炸问题。因为要 比较 n!种变量顺序。不过,通常可以在现实问题中决定因果关系,而且因果关系一般都对应 于条件独立的断言。因此,可以从原因变量到结果变量划一个带箭头的弧来直观表示变量之 间的因果关系。 第三步,指派局部概率分布 p(xi|Pai)。在离散的情形,需要为每一个变量 Xi 的各个父节 点的状态指派一个分布。 显然,以上各步可能交叉进行,而不是简单的顺序进行可以完成的。 6.5.2 学习贝叶斯网络的概率分布 现在考虑这样的问题:给定贝叶斯网络的结构,如何利用给定样本数据去学习网络的概 率分布,即更新网络变量原有的先验分布。这里使用的是贝叶斯方法,既综合先验知识和数 据去改进已有知识的技术,这些技术可用于数据采掘。假设变量组 X=(X1, X2, …, Xn)的物理 联合概率分布可以编码在某个网络结构 S 中: p(x|θs,Sh)= ∏ = n i ixp 1 |( pai,θi,Sh) (6.35) 其中θi 是分布 ixp( |pai,θi,Sh)的参数向量,θs 是参数组(θ1 ,θ2 ,...,θn )的向 www.aibbt.com 让未来触手可及 162 量,而 Sh 表示物理联合分布可以依照 S 被分解的假设。需要说明的是这个分解是不交叉(重 叠)的。例如,给定 X={X1, X2},X 的任何联合分布可以被分解成对应于没有弧的网络结构, 也可以被分解成对应于 X1 →X2 的网络结构。这就是交叉(重叠)。此外,假设从 X 的物理联 合概率分布得到一个随机样本 D={X1,…, Xn}。D 的一个元素 Xi 表示样本的一个观测值,称为 一个案例。定义一个取向量值的变量Θs 对应于参数向量θs,并指派一个先验概率密度函数 p(θs|Sh)表示对ΘS 的不确定性,于是贝叶斯网络的学习概率问题可以简单地表示成:给定 随机样本 D,计算后验分布 p(θs| D,Sh)。 下面用无约束多项分布来讨论学习概率的基本思想。假定每个变量 X∈Xn 是离散的,有 ri 个可能的值 xi 1, xi 2,…, x ir i ,每个局部分布函数是一组多项分布的集合,一个分布对应于 pai 的一个构成(即一个分量)。也就是说,假定 p(xi k| pai j,θi,Sh)=θijk>0 (i=1,2,…,n;j=1,2,…,qi;k=1,2,…,ri) (6.36) 其中 pai 1, pai 2,…, pa iq i 表示 pai 的构成,qi= ∏ ∈ iPaXi ir 。θi =((θijk) ir k 2= ) iq j 1= 是参数,θij1 没有列入, 因为θij1=1- ∑ = ir k ijk 2 θ ,可以通过计算得到。为方便起见,定义参数向量: θij =( 2ijθ , 3ijθ ,…, iijrθ ) (i=1,2,…,n;j=1,2,…,qi) 给定以上的局部分布函数后,需要有以下两个假设,才可以以封闭的形式计算后验分布 p (θs|D,Sh): (1)在随机样本 D 中没有缺损数据,这时又称 D 是完全的; (2)参数向量θij 是相互独立的,即 p(θs|Sh)=∏∏ == n i q j i 11 p(θij|Sh)。这就是参数独立假设。 在以上两个假设下,对于给定的随机样本 D,参数仍然保持独立: p(θs|D,Sh)=∏∏ == n i q j i 11 p(θij|D,Sh) (6.37) 于是可以相互独立地更新每一个参数向量θij 。假设每一个参数向量θij 有先验 Dirichlet 分 布 Dir(θij| 1ijα , 2ijα , … , iijrα ),得到后验分布为: p(θij|D,Sh)= Dir(θij| 1ijα + 1ijN , 2ijα + 2ijN , … , iijrα + iijrN ) (6.38) 其中 Nijk 是当 Xi=xi k 且 Pai =pai j 时 D 中的案例数目。 现在可以求θs 的可能的构成的平均值来得到感兴趣的预测。例如,计算 D 中第 N+1 个案 例 p(XN+1|D,Sh)= E hs SDp ),|(θ )( 1 ∏ = ir i ijkθ 。利用参数对给定 D 保持独立,可以计算数学期望: p(XN+1|D,Sh)= ∫∏ = n i ijk 1 θ p(θs|D,Sh)dθ=∏∫= n i ijk 1 θ p(θij|D,Sh)dθij 通过计算,最后可得:p(XN+1|D,Sh)=∏ = + +n i ijk ijij ijk N N 1 α α (6.39) www.aibbt.com 让未来触手可及 163 其中 ∑ == i ijkij r k 1αα 且 ∑ == i ijkij r k NN 1 。由于无约束多项分布属于指数家族,上面的计算将变 得简单。 关于变量组 X 的贝叶斯网络表示了 X 的联合概率分布,所以,无论是从先验知识、数据 或两者的综合建立的贝叶斯网络,原则上都可以用它来推断任何感兴趣的概率。不过,离散 变量的任意贝叶斯网络的精确或近似推断都是 NP 难题。目前的解决办法是使用条件独立以简 化计算,或面向特定的推断要求建立简单的网络拓扑,或在不牺牲太多精确性的前提下,简 化网络的结构等。虽然如此,一般仍然需要可观的计算时间。对某些问题如简单贝叶斯分类 器使用条件独立则有明显的效果。 当样本数据不完全时,除了少数特例外,一般要借助于近似方法,如 Monte-Carlo 方法, Gaussian 逼近,以及 EM(期望-极大化)算法求 ML(极大似然)或 MAP(极大后验)等。 尽管有成熟的算法,其计算开销也是比较大的。 6.5.3 学习贝叶斯网络的网络结构 当不能确定贝叶斯网络的结构时,用贝叶斯方法从给定数据学习网络的结构和概率分布 也是可能的。由于数据挖掘面对的是大量数据,一时往往难以断定变量之间的关系,因此这 个问题更具有现实意义。 首先假定表示变量集合 X 的物理联合概率分布的网络结构是可以改进的。按照贝叶斯方 法,定义一个离散变量表示我们对于网络结构的不确定性,其状态对应于可能的网络结构假 设 Sh,并赋予先验概率分布 p(Sh)。给定随机样本 D,D 来自 X 的物理概率分布。然后计算 后验概率分布 p(Sh|D)和 p(θs| D,Sh),其中θs 是参数向量,并使用这些分布回过头来计 算感兴趣的期望值。 p(θs| D,Sh)的计算方法与上一节类似。p(Sh|D)的计算至少在原理上是简单的。根 据贝叶斯定理有: p(Sh|D)= p(Sh,D)/ p(D) = p(Sh)p(D|Sh)/ p(D) (6.40) 其中 p(D)是一个与结构无关的正规化常数,p(D|Sh)是边界似然。于是确定网络结构的后 验分布只需要为每一个可能的结构计算数据的边界似然。 在无约束多项分布、参数独立、采用 Dirichlet 先验和数据完整的前提下,参数向量θij 可 以独立地更新。数据的边界似然正好等于每一个 i-j 对的边界似然的乘积: p(D|Sh)=∏∏ == +Γ Γn i q j ijij iji N11 )( )( α α ·∏ = Γ +Γir k ijk ijkijk N 1 )( )( α α (6.41) 该公式首次为 Cooper 和 Herskovits 于 1992 年给出[Cooper 1992]。 在一般情况下,n 个变量的可能的网络结构数目大于以 n 为指数的函数。逐一排除这些假 设是很困难的。可以使用两个方法来处理这个问题:“模型选择”方法和“选择模型平均”方 法。前一个方法是从所有可能的模型(结构假设)中选择一个“好的”模型,并把它当作正 确的模型。后一个方法是从所有可能的模型中选择合理数目的“好”模型,并认为这些模型 代表了所有情况。问题是如何决定一个模型是否“好”?如何搜索好的模型?这些方法应用 于贝叶斯网络结构能否得到准确的结果?关于“好模型”已有一些不同的定义和相应的计算 方法。后两个问题要从理论上回答是困难的。然而若干研究者工作表明,使用贪婪搜索法选 择单个好的假设通常会得到准确的预测[Chickering,Heckerman 1996]。使用 Monte-Carlo 方 www.aibbt.com 让未来触手可及 164 法进行模型平均有时也很有效,甚至可以得到更好的预测。这些结果多少可以算是对目前用 贝叶斯网络进行学习的巨大兴趣的回答。 Heckerman 于 1995 年提出,在参数独立、参数模块性、似然等价、以及机制独立、部件 独立等假设成立的前提下,可以将学习贝叶斯非因果网络的方法用于因果网络的学习。1997 年又提出在因果马尔科夫条件下,可以由网络的条件独立和条件相关关系推断因果关系 [Heckerman 1997]。这使得在干涉(扰动)出现时可以预测其影响。 Heckerman 等使用贝叶斯网络进行数据采掘和知识发现。数据来自华盛顿高级中学的 10318 名高年级学生[Sewell 和 Shah 1968]。每个学生用下列变量及其相应的状态来描述: ·性别(SEX):男、女 ·社会经济状态(SES):低、中下、中上、高 ·智商 (IQ):低、中下、中上、高 ·家长的鼓励(PE):低、高 ·升学计划(CP):是、否 目标是从数据中发现影响高中生上大学意向的因素,即存在于这些变量之间的可能的因 果关系。数据已经整理成如表 6.3 的充分统计。表 6.3 中每个数据表示:对于五个变量取值的 某种组合(构成)统计所得到的人数。例如,第一个数据表示对(SEX=男,SES=低,IQ=低, PE=低,CP=是)这种组合统计得到的人数为 4 人。第二个数据则表示对(SEX=男,SES=低, IQ=低,PE=低,CP=否)这种组合统计得到的人数为 349 人。其后的数据依次表示轮换每个 变量可能的状态统计得到的人数。变量依照从右到左的顺序轮换,状态则按照上面列出各变 量的状态的顺序轮换。如此等等,依次类推。表 6.3 中前 4 行是对男生的统计数据,后 4 行是 对女生的统计数据。 表 6.3 充分统计表 (人) (男) 4 349 13 64 9 207 33 72 12 126 38 54 10 67 49 43 2 232 27 84 7 201 64 95 12 115 93 92 17 79 119 59 8 166 47 91 6 120 74 110 17 92 148 100 6 42 198 73 4 48 39 57 5 47 132 90 9 41 224 65 8 17 414 54 (女) 5 454 9 44 5 312 14 47 8 216 20 35 13 96 28 24 11 285 29 61 19 236 47 88 12 164 62 85 15 113 72 50 7 163 36 72 13 193 75 90 12 174 91 100 20 81 142 77 6 50 36 58 5 70 110 76 12 48 230 81 13 49 360 98 分析数据时先假定没有隐藏变量。为了生成网络参数的先验,使用容量为 5 的等价样本 和一个带有一致的 p(X| h cS )的先验网络。除了已排除的 SEX 和 SES 有父节点、CP 有子节点的 结构之外,假定所有网络结构都同等相似。因为数据集是完整的,可以用(6.40)和(6.41) 式计算网络结构的后验概率。通过对所有网络结构的穷举搜索,发现的两个最相似的网络结 构如图 6.1。请注意,最相似的结构的后验概率也是极端接近的。如果采纳因果马尔科夫假设, 并假设没有隐藏变量,则在两个图中的弧都可以有因果的解释。其中一些结果,例如社会经 济状态和智商对升学愿望的影响,并不使人意外。另一些结果更有趣:从两个图中都可以得 到性别对升学愿望的影响仅仅通过父母的影响体现出来。此外,两个图的不同仅仅在于 PE 和 IQ 之间的弧的方向。两个不同的因果关系似乎都有道理。右边的网络曾由 Spirtes 等用非贝叶 斯方法于 1993 年选出。 www.aibbt.com 让未来触手可及 165 SEX SEX SES SES IQ PE IQ PE CP CP Log p(D| hS1 )≈-45653 Log p(D| hS2 )≈-45699 p( hS1 |D)≈1.0 p( hS2 |D)≈1.2×10-10 图 6.1 没有隐藏变量的后验最可能的网络结构 最值得怀疑的结果是:社会经济状况对智商有直接的影响。为了考证这个结果,考虑一 个新的模型,即将图 6.1 中原来模型的直接影响用一个指向 SES 和 IQ 的隐藏变量代替。此外 还考虑这样的模型,隐藏变量指向 SES,IQ 和 PE,而且在 SES—PE 和 PE—IQ 两个连接中分 别去掉两个、一个和 0 个,对每个结构将隐藏变量的状态数从 2 变到 6。 H SEX PE SES IQ CP Log p(D| hS )≈-45629 图 6.2 带有隐藏变量的后验最可能的网络结构 使用 Laplace 逼近的 Cheeseman-Stutz 变体计算这些模型的后验概率。为了找最大后验构 成θ~ s,使用 EM 算法,并在带有不同的随机初始化的 sθ 的 100 次运行中取最大局部极大。这 些模型中带有最高后验概率的一个如图 6.2。这个模型的可能性比不含有隐藏变量的最好模型 高 2*1010 倍。另一个最有可能的模型包含一个隐藏变量,并有一条从隐藏变量到 PE 的弧。这 个模型的可能性比最好模型只差 5*10-9 倍。假定没有忽略合理的模型,那么有强烈的证据表 明:有一个隐藏变量在影响着 SES(社会经济状态)和 IQ(智商)。分析图 6.2 的概率可知, 隐藏变量对应于“家长的素质”。 使用贝叶斯方法从先验信息和样本信息学习贝叶斯网络的结构和概率分布,进而建立贝叶 斯网络,为贝叶斯网络在数据采掘和知识发现中的应用开辟了道路。与其它用于数据采掘的 表示法如规则库、决策树、人工神经网络相比,贝叶斯网络有如下特点: ⑴ 可以综合先验信息和后验信息,既可避免只使用先验信息可能带来的主观偏见,和缺 乏样本信息时的大量盲目搜索与计算,也可避免只使用后验信息带来的噪音的影响。只要合 理地确定先验,就可以进行有效的学习,这在样本难得或者代价高昂时特别有用; www.aibbt.com 让未来触手可及 166 (2)适合处理不完整数据集问题; ⑶可以发现数据间的因果关系。后两点在实际问题中经常遇到,而且是用其他模型难以 处理的; ⑷有成熟有效的算法。虽然任意贝叶斯网络的概率推断是 NP 难题,但是很多问题加上一 些限制后计算就可以简化。有些问题有近似解法。 不过,贝叶斯网络的计算量较大,在某些其它方法也可以解决的问题求解中显得效率较 低。先验密度的确定虽然已经有一些方法,但对具体问题要合理确定许多变量的先验概率仍 然是一个较困难的问题,而这在样本难得时却特别重要。此外,贝叶斯网络需要多种假设为 前提,如何判定某个实际问题是否满足这些假设,没有现成的规则,这给实际应用带来困难。 这些都是需要进一步研究的问题。尽管如此,可以预见,在数据采掘和知识发现中,尤其在 具有概率统计特征的数据采掘中,贝叶斯网络将成为一个有力的工具。 6.6 贝叶斯潜在语义模型 随着互联网的普及,网上信息正在呈指数级增长趋势。合理地组织这些信息,以便从茫 茫的数据世界中,检索到期望的目标;有效地分析这些信息,以便从浩如烟海的信息海洋中, 挖掘出新颖的、潜在有用的模式,正在成为网上信息处理的研究热点。网上信息的分类目录 组织是提高检索效率和检索精度的有效途径,如在利用搜索引擎对网页数据进行检索时,如 能提供查询的类别信息,必然会缩小与限制检索范围,从而提高查准率,同时,分类可以提 供信息的良好组织结构,便于用户进行浏览和过滤信息。很多大型网站都采用这种组织方式, 如 Yahoo 采用人工方式来维护网页的目录结构;Google 网站采用一定的排序机制,使与用户 最相关的网页排在前面,便于用户浏览。Deerwester 等人利用线性代数的知识,通过矩阵的奇 异值分解(Singular Value Decomposition SVD)来进行信息滤波和潜在语义索引(Latent Semantic Index LSI)[ Deerwester 1990]。它将文档在向量空间模型(VSM)中的高维表示,投影到低维 的潜在语义空间(LSS)中,这一方面缩小了问题的规模,另一方面也从一定程度上避免了数 据的过分稀疏现象。它在语言建模、视频检索及蛋白质数据库等实际应用中取得较好的效果。 聚类分析是文本挖掘的主要手段之一。它的主要作用是:1)通过对检索结果的聚类,将 检索到的大量网页以一定的类别提供给用户,使用户能快速定位期望的目标;2)自动生成分 类目录;3)通过相似网页的归并,便于分析这些网页的共性。K-均值聚类是比较典型的聚类 算法,另外自组织映射(SOM)神经网络聚类和基于概率分布的贝叶斯层次聚类(HBC)等 新的聚类算法也正在不断的研制与应用中。然而这些聚类算法大部分是一种无监督学习,它 对解空间的搜索带有一定的盲目性,因而聚类的结果一定程度上缺乏语义特征;同时,在高 维情况下,选择合适的距离度量标准变得相当困难。而网页分类是一种监督学习,它通过一 系列训练样本的分析,来预测未知网页的类别归属。目前已有很多有效的算法来实现网页的 分类,如 Naive Bayesian、SVM 等。遗憾的是获得大量的、带有类别标注的样本的代价是相当 昂贵的,而这些方法只有通过大规模的训练集才能获得较高精度的分类效果。此外由于在实 际应用当中,分类体系常常是不一致的,为目录的日常维护带来了一定的困难。Kamal Nigam 等人提出从带有类别标注和不带有类别标注的混合文档中分类 Web 网页,它只需要部分带有 类别标注的训练样本,结合未标注样本含有的知识来学习贝叶斯分类器[Nigam 1998]。 我们对这一问题处理的基本思想是:如果知道一批网页 },,{ 21 ndddD = 是关于某些潜 在类别主题变量 },,{ 21 kzzzZ = 的描述。通过引入贝叶斯潜在语义模型,首先将含有潜在 www.aibbt.com 让未来触手可及 167 类别主题变量的文档分配到相应的类主题中。接着利用简单贝叶斯模型,结合前一阶段的知 识,完成对未含类主题变量的文档作标注。针对这两阶段的特点,我们定义了两种似然函数, 并利用 EM 算法获得最大似然估计的局部最优解。这种处理方法一方面克服了非监督学习中 对求解空间搜索的盲目性;另一方面它不需要对大量训练样本的类别标注,只需提供相应的 类主题变量,把网站管理人员从繁琐的训练样本的标注中解脱出来,提高了网页分类的自动 性。为了与纯粹的监督与非监督学习相区别,称这种方法为半监督学习算法。 潜在语义分析(LSA:Latent Semantic Analysis)的基本观点是:把高维的向量空间模型 (VSM)表示中的文档映射到低维的潜在语义空间中。这个映射是通过对项/文档矩阵 nmN × 的 奇异值分解(SVD)来实现的。具体地说,对任意矩阵 nmN × ,由线性代数的知识可知,它可 分解为下面的形式: ∑= TVUN (6.42) 这里: VU, 是正交阵( IVVUU TT == )。),,,( 11 vk aaaadiag =∑ ( vaaa ,, 21 为 N 的奇异值)是对角阵。潜在语义分析通过取 k 个最大的奇异值,而将剩余的值设为零来近 似(6.42): NVUVU TTN =≈∑= ∑ ~~ (6.43) 由于文档之间的相似性,可以通过 T T T UUNNNN ~ 2~~ ∑=≈ 来表示,因此文档在潜在 语义空间中的坐标可以通过 ∑ ~ U 来近似。所以高维空间中的文档表示投影到低维的潜在语 义空间中,原来在高维中比较稀疏的向量表示在潜在语义空间中变得不再稀疏。这也暗指, 即使两篇文档没有任何共同的项,仍然可能找到它们之间比较有意义的关联值。 通过奇异值分解,将文档在高维向量空间模型中的表示,投影到低维的潜在语义空间中, 有效地缩小了问题的规模。潜在语义分析在信息滤波、文本索引、视频检索等方面具有较为 成功的应用。然而矩阵的 SVD 分解对数据的变化较为敏感,同时缺乏先验信息的植入等而显 得过分机械,从而使它的应用受到了一定的限制。 经验表明,人们对任何问题的描述都是围绕某一主题展开的。各个主题之间具有相对明 显的界限,同时由于偏爱、兴趣等的不同,对不同的主题的关注也存在着差别,也就是说对 不同的主题具有一定的先验知识。基于此,我们给出文档产生的潜在贝叶斯语义模型: 设文档集合为: },,{ 21 ndddD = ,词汇集为: },,{ 21 mwwwW = ,则文档 Dd ∈ 的 产生模型可表述为: (1) 以一定的概率 )(dP 选择文档 d ; (2) 选取一个潜在的类主题 z ,该类主题具有一定的先验知识 )|( θzp (3) 类主题 z 含有文档 d 的概率为: ),|( θdzp (4) 在类主题 z 的条件下,产生词 Ww∈ ,其概率为: ),|( θzwp www.aibbt.com 让未来触手可及 168 经过上述过程获得观测点对 ),( wd ,潜在的类主题 z 被忽略掉,产生下面的联合概率模型: )|()(),( dwpdpwdp = (6.44) ∑ ∈ = Zz dzpzwpdwp ),|(),|()|( θθ (6.45) 该模型是建立在下面的独立性假定下的混合概率模型。 (1) 每一观测点对 ),( wd 的产生是相对独立的,它们通过潜在类主题相联系; (2) 词 w 的产生独立于具体的文档 d ,而只依赖于潜在的类主题变量 z 。 (6.45)也表明,在某一文档 d 中,词 w 的分布是它在潜在类主题下的凸组合,组合权重 是该文档类属于此主题的概率。图 6.3 表明了该模型各分量间的关联。 利用贝叶斯公式,并将(6.45)代入(6.44)得到: ∑ ∈ = Zz zdpzwpzpwdp ),|(),|()|(),( θθθ (6.46) 与潜在语义分析相比,贝叶斯潜在语义模型具有较为稳固的统计学基础,克服了 LSA 中 的数据敏感性;它对潜在的类变量植入先验信息,避免了 SVD 的机械性。对应于(6.42)的 奇异值分解: ))(),(),(()}|({)}|({ ~ kkkkmkiknki zpzpzpdiagzwpVzdpU === ∑×× 因此 Bayes 潜在语义模型与 SVD 在形式上是统一的。 在 LSA 中,选取近似(6.42)的标准是最小二乘意义下的损失最小。而从贝叶斯的观点, 拟合模型(6.46)有两种标准:最大后验概率(MAP: Maximum A Posterior)和最大似然估计 (ML: Maximize Likelihood)。 最大后验概率估计是在文档集 D 和词汇集 W 的情况下,使得潜在变量的后验概率最大, 即: 1d 2d 3d nd... 1w 2w 3w mw ... 1z 2z kz... 图 6.3 贝叶斯潜在语义模型 www.aibbt.com 让未来触手可及 169 ∏∏∏ ∈∈∈ = ZzDdWw wdzpWDZP),|(),|( (6.47) 由贝叶斯公式得: ∑ ∈ = Zz zdpzwpzp zdpzwpzpwdzp )|()|()( )|()|()(),|( (6.48) 最大似然估计是最大化下面的表达式: ∏∏ ∈∈DdWw wdnwdp ),(),( (6.49) 这里 ),( wdn 表示词 w 在文档 d 中出现的次数。在实际计算中一般取它的对数形式,称为对数 似然。 ∑∑ ∈∈DdWw wdpwdn ),(log),( (6.50) 获得上述两种估计最大化的一般方法是期望最大化(EM: Expectation Maximum)方法,在 6.7 中将进行详细讨论。 一般的检索系统都是通过简单的关键词匹配算法,采用一定的排序机制,将检索到的相 关网页以一定的方式提供给用户。这种处理方法的缺点是忽略了特征间的相关性,如用户查 询关键词“计算机”时,传统的关键词匹配算法返回的将全是含有“计算机”的网页,而大 部分关于“电脑”的网页将不能检索到,即所谓的同义词与多义词现象。从语义角度上讲, 同义词指的是在不同的场景下,不同的词表达的意义相同;多义词指的是同一个词在不同的 场景下表达的意义不同。而概率意义上的同义词与多义词则具有更为广泛的含义:同义词指 的是在某一主题下,它们的概率关联较为密切;多义词则指的是同一个词关联着不同的类别 主题。贝叶斯概率语义模型有效地解决了这一问题。若 )|( zwp 较大,我们称词 w 与 z 为同 义词;若对词 w 存在两个潜在类别变量 21, zz ,使 得 )|()|( 21 zwpzwp = 则称该词为多义词。 下面是我们利用贝叶斯潜在语义模型,对 1199 篇足球类的文章,引入 14 个潜在类别变量,得 到的部分同义词实验结果(表 6.3)。 表 6.3 基于贝叶斯潜在语义下的同义词表 泰山 申花 实德 天津泰 达 深圳平 安 全兴 英格兰 意大利 世界杯 泰山 山东 鲁能泰山 宿茂臻 舒畅 卡西 谢尔盖 申花 上海 彼得洛 维奇 阵容 阵地 组队 实德 大连实德 王鹏 王涛 王健 孙继海 郝海东 天津泰达 泰达 金志扬 津门 张效瑞 张开 张明 深圳平安 深圳 张军 违反 违纪 刘建 李毅 四川 全兴 助攻 米罗西 马明宇 刘成 里奇 英格兰 英超 英超联赛 英德 伊斯坦布 尔 水晶宫 意大利 意甲 尤文图斯 罗纳尔多 里瓦尔多 雷东多 劳尔 世界杯 足球界 足球场 预选赛 邀请赛 锦标赛 亚洲杯 www.aibbt.com 让未来触手可及 170 桑特拉奇 拉尔 守门员 门将 张凤 李东国 黎兵 卡纳瓦罗 卡伦 安德森 欧锦赛 欧洲杯 欧洲足联 拉齐奥 拉科鲁尼 亚 亚足联 奥林匹克 国际足联 概率语义上的同义词与多义词的提出,不仅可以实现检索过程中同一类别之间的联想转换 和不同类别之间的漫游,而且为基于贝叶斯潜在语义的半监督学习提供了依据,那就是通过 潜在类别变量的引入,将含有与潜在变量同义词较多的文章聚为一类。下面将详细讨论这种 算法的实现。 6.7 半监督文本挖掘算法 6.7.1 网页聚类 目前已经有很多算法来实现文本分类,获得了较高的精度(Precision)和 召 回 率( Recall)。 然而获得分类中带有标注的训练样本的代价是相当昂贵的,因而 Nigam 等人提出从带有和不 带有类别标注的混合文档中学习分类 web 网页,并获得了很好的精度,但它仍然需要一定量 的标注样本[Nigam 98]。网页聚类通过一定的相似性度量,将相关网页归并到一类,它也能达 到缩小搜索空间的目的,然而传统的聚类方法,在处理高维和海量数据时,它的效率和精确 度却大打折扣。这一方面由于非监督学习对解空间的搜索本身具有一定的盲目性,另一方面, 在高维的情况下,很难找到比较适宜的相似性度量标准,例如,欧式距离度量在维数较高时, 变得不再适用。基于上面的监督学习与非监督学习的特性,我们提出了一种半监督学习算法。 在贝叶斯潜在语义模型的框架下,由用户提供一定数量的潜在类别变量,而不需要任何带有 类别标注的样本,将一组文档集划分到不同的类别中。 它的一般模型可以描述为:已知文档集 },,{ 21 ndddD = 和它的词汇集 },,{ 21 mwwwW = ,一组带有先验信息 },,{ 21 kθθθθ = 的潜在类别变量 },,{ 21 kzzzZ = ,找出 D 上的一个划分 ))1(( kjD j …∈ ,使得: )(, 1 jiDDDD ji k j j ≠== = φ∩∪ 首先我们将 D 划分为两个集合: ULDDD ∪= ,满足: ]}1[,,|{ kjdzjdD jL …∈∈∃= , ]}1[,,|{ kjdzjdD jU …∈∉∀= 我们的算法对文档的类别标注分两个阶段实现: 第一阶段,对 LD 中的元素,我们利用贝叶斯潜在语义模型,在基于 EM 参数估计的基础 www.aibbt.com 让未来触手可及 171 上,用潜在类别变量来标注文档。即: )}|({max)( iij zdpzdl == (6.51) 第二阶段,对 UD 中的元素,根据对 LD 中的元素的类别标注,利用 Naïve Bayes 分类模 型,经过 EM 算法,来实现类别标注。 6.7.2 对含有潜在类别主题词的文档的类别标注 理想的情况下,任何文档都不含有两个以上的潜在类别主题词,此时只需将该文档标以 潜在的类别。然而在实际应用中,这种理想的情况很难达到,一方面由于很难选择这样的潜 在类别主题词,另一方面,这种要求也是不太现实的,因为两个不同的类别很可能含有多个 潜在的类别主题词。如在“经济”类的文档中,很可能含有像“政治”、“文化”等词。我们 的处理方法是把它分到与潜在的类别主题词语义最为密切的类别中。在我们选择的似然标准 下,通过一定次数的 EM 迭代,最后通过式(6.51)来决定文档的类别。 EM 算法是稀疏数据参数估计的主要方法之一。它交替地执行 E 步和 M 步,以达到使似然 函数值增加的目的。它的一般过程可描述为: (1) E 步,基于当前的参数估计,计算它的期望值; (2) M 步,基于 E 步参数的期望值,最大化当前的参数估计; (3) 对修正后的参数估计,计算似然函数值,若似然函数值达到事前制定的阀值或者指定 的迭代次数,则停止,否则转(1)。 在我们的算法中,采用下面两步来实现迭代。 (1) 在 E 步,通过下面的贝叶斯公式来获得期望值。 ∑= ' )|()|()( )|()|()(),|( ''' z zwpzdpzp zwpzdpzpwdzP (6.52) 从概率语义上讲,它是用潜在类别变量 z 来解释词 w 在文档 d 中出现的概率度量。 (2) 在 M 步中,利用上一步的期望值,来重新估计参数的分布密度。 ∑ ∑= ', '' ),|(),( ),|(),( )|( wd d wdzpwdn wdzpwdn zwp (6.53a) ∑ ∑= wd w wdzpwdn wdzpwdn zdp , '' ' ),|(),( ),|(),( )|( (6.53b) ∑ ∑= wd wd wdn wdzpwdn zp , , ),( ),|(),( )( (6.53c) 相对于潜在语义分析中的 SVD 分解,EM 算法具有线性的收敛速度,并且简单,容易实现, 可以使似然函数达到局部最优。图 6.4 是我们在实验过程中得到的 EM 迭代次数与似然函数的 值的关系。 www.aibbt.com 让未来触手可及 172 -650000 -600000 -550000 -500000 -450000 -400000 1234567891011 迭代次数 似然函数值 图 6.4 最大似然估计值与 EM 迭代次数的关系 6.7.3 基于简单贝叶斯模型学习标注和未标注样本 传统的分类方法都是通过一定的学习机制,对带有类别标签的训练样本学习的基础上,来 决定未知样本的类别标签。然而获得大量的带有类别标注的训练样本是相当繁琐的任务。 Kamal Nigam 等人研究表明,未带类别标注的文档仍然含有学习分类模型的大量信息。基于此, 我们利用简单贝叶斯(Naïve Bayesian)模型作为分类器,把未带标签的训练样本作为一种特 殊的缺值状态,通过一定的 EM 迭代算法来估计这种缺值。 在这里,我们首先给出 Naïve Bayes 学习文本分类的一般原理:已知训练文档集 },,{ 21 ndddD = 和它的词汇集 },,{ 21 mwwwW = 。每一训练样本是一 1+m 维向量: >=< imi cwwwd 21 ,其 中 },,{ 21 ki cccCc =∈ 是类别变量。分类的任务就是对未知类 别的样本 >=< mwwwd 21 ,来预测它的类别: )},|({max ]1[ θdcpc jkj …∈ = (这里θ 是模型的参数) 为计算上式,将其展开得到: ∏ = <= || 1 ),;;|(|)(|),|( d k qjkj kqwcwpdpcdp θθ (6.54) Naïve Bayes 模型在计算(6.54)时,引入了下面一些独立性假设: (1) 文档的词的产生独立于它的内容,即词在文档中出现的位置无先后关系。 (2) 文档中各个词相对于类别属性是相对独立的。 在上面的独立性假定下,结合贝叶斯公式(6.54)可记为: www.aibbt.com 让未来触手可及 173 ∏∑ ∏ ∏ == = = = == m r ir k i i m r jrj jj d r jrj cwpcp cwpcp dp cdpcpcwpdpcdp 11 1 || 1 );|()|( );|()|( )|( ),|()|();;|(|)(|),|( θθ θθ θ θθθθ (6.55) 学习的任务变为从数据中,利用一定的先验信息来学习模型的参数。在这里我们选用多项 分布模型和 Dirichlet 共轭先验。 || ))(( )|( || 1 D cdcI cp D i ii jc j ∑ = = == θθ (6.56a) ∑∑ ∑ == = =+ =+ == m k D i jiki D i jitij jtcw cdcIwdn cdcIwdn cwpjt 1 || 10 || 1 | ))((),( ))((),( );|( α α θθ (6.56b) 这里: ∑ == k i i10 αα 为模型的超参数。函数 )(⋅c 是类别标注函数, )( baI = 为示性函数(若 ba = ,则 1)( == baI ,否则 0)( == baI )。 尽管简单贝叶斯对模型的适用条件作了较为苛刻的限制,然而大量实验表明,即使在违背 这些独立性假定的条件下,它仍能表现出相当的健壮性,它已经成为文本分类中广为使用的 一种方法。 下面我们将通过引入一种最大化后验概率(MAP)似然标准,结合未标注样本的知识为这 些未标注的样本贴标签。 考虑所有的样本集 ULDDD ∪= ,其中 LD 中的元素在第一阶段已被贴上标签。假设 D 中 各样本的产生是相互独立的,那么下面的式子成立: ∏∏ ∑ ∈∈ = ⋅= LiUi Dd iiiji Dd C j j dcdpdcpcdpcpDp ));(|()|)(();|()|()|( || 1 θθθθθ (6.57) 在上面的式子中,将未标注的文档看作是混合模型。我们的学习任务仍然是通过样本集 D 来获得模型参数θ 的最大估计。利用贝叶斯定理: )( )|()()|( DP DppDp θθθ = (6.58) 对固定的样本集而言, )(θp 和 )(Dp 是常量。对(6.58)取对数得: ∑ ∑∑ ∈ ∈= + +== Li Ui Dd iii Dd ji C j j dcdpdcp cdpcpDp pDpDl ));(|()|)((log );|()|(log)( )(log)|(log)|( || θθ θθθθθ (6.59) 为估计未标注样本的标签,借用潜在语义分析中的潜在变量,我们在这里引入 k 个潜在变 量 },{ 21 kzzzZ = ,每个潜在变量是 n 维向量 >=< iniii zzzz …,, 21 ,并且:如果 ij cdc =)( www.aibbt.com 让未来触手可及 174 那么 1=ijz ,否则 0=ijz 。所以(6.59)可以统一表示成下面的形式: ∑∑ == += || 1 || 1 );|()|(log)( )(log)|( D i C j jjijji cdpcpzDp pDl θθθθ (6.60) 在(6.59)中,对已标注的样本 jiz 是已知的,学习的任务是最大化模型的参数和对未知的 jiz 的估计。 在这里,我们仍然用 EM 算法来学习未标注样本的知识。但它的过程与前一阶段有所不同。 在 E 步的第 k 次迭代中,基于当前的参数估计,利用简单贝叶斯分类器来计算未标注样本的 类别。对 uDd ∈∀ : ∏∑ ∏ == == m r k ir k i k i m r k jr K jk j cwpcp cwpcp cdp 11 1 );|()|( );|()|( ),|( θθ θθ θ ]1[ kj …∈ 取获得最大后验概率的类别 ic 作为该文档的期望类别标注。即 1=idz , )(0 ijz jd ≠= 在 M 步,基于前一步获得的期望值,最大化当前的参数估计: ||)|( || 1 D z cp D i ji jc j ∑ === θθ (6.61a) ∑∑ ∑ == = + + == m k D i jiki D i jitij jtcw zwdn zwdn cwpjt 1 || 10 || 1 | ),( ),( );|( α α θθ (6.61b) 4)实验设计与结果分析 我们的实验数据是用搜索引擎 Spider 从 http://www.fm365.com 搜集的关于体育方面的网 页,在每一类别中都包括了含有类别词的网页和不含有类别词的网页。它们的类别和分布见 表 6.4: 表 6.4 选择的训练文档及其分布 足球 篮球 排球 乒乓球 网球 棋牌 含有主 题词 40 60 48 30 57 80 不含有 主题词 80 40 29 11 6 4 上述共有 485 篇网页,经过切词处理后,去掉一定的停用词后,共计有 2719 个词,经过 半监督学习算法处理后,得到表 6.5 的结果: www.aibbt.com 让未来触手可及 175 表 6.5 半监督文本挖掘的结果 结果评价 足球 篮球 排球 乒乓球 网球 棋牌 精度 召回率 足球(120) 112 5 0 1 2 2 0.96552 0.93333 篮球(100) 1 98 0 1 0 0 0.93333 0.98000 排球(77) 1 2 74 0 0 0 0.97368 0.96103 乒乓球 (41) 0 0 0 40 1 0 0.83333 0.97561 网球(63) 0 0 1 4 58 0 0.93548 0.92063 棋牌(84) 4 0 1 2 1 76 0.97436 0.90476 在足球类的 120 篇文档中,分到篮球、排球、乒乓球、网球及棋牌类的文档个数分别为 5、 0、1、2、2。其中分到篮球类的文档数较多,通过进一步的研究我们发现,这些文档中含有 的词与篮球类中含有的词中同义词较多所致。我们使用同样的数据,利用 Naïve Bayes 分类, 得到类似的结果。 另外,选取足球类的文档 1000 篇,经过初步的预处理后得到 876 个词。图 6.5 是选取不 同的潜在类别变量分到各类中的文档个数对比。 第一次选择 14 个潜在变量,第二次选择 7 个潜在变量,两次的差别是在第一次选择中, “甲 A”的各个俱乐部在第二次中用“甲 A”来替代。从图中可以看出,第一次选择各个类别 分到的文档数基本相同,而在第二次选择中,分到“甲 A”中的文档数近似为各“俱乐部”中 的文档数之和,分到其余类别中的文档数基本不变。这个结果与我们的抽样基本是吻合的, 同时也说明,潜在类别变量的概括能力具有一定的层次性。 0 50 100 150 200 250 300 350 敖 东 北 京国 安 泰山 厦门厦新 海狮 武汉红 桃 K 青岛 深圳平 安 甲A 国 家队 甲B 意甲 英超 德甲 世界杯 赛 图 6.5 各类中的文档个数对比 网上信息的分类目录组织是提高检索效率和检索精度的有效途径。它通过学习大量的带 有类别标注的训练样本,来预测网页的类别,然而人工标注这些训练样本是相当繁琐的。网 页聚类通过一定的相似性度量,将相关网页归并到一类,它也能达到缩小搜索空间的目的,然 而传统的聚类方法,对解空间的搜索带有盲目性和缺乏语义特性,因而它的效率和精确度大 打折扣。我们提出的半监督学习算法, 在贝叶斯潜在语义模型的框架下,由用户提供一定数量 的潜在类别变量,而不需要任何带有类别标注的样本,将一组文档集划分到不同的类别中。 它分为两个阶段:第一阶段,利用贝叶斯潜在语义分析来标注含有潜在类别变量的文档的类 别,第二阶段则通过简单贝叶斯模型,结合未标注文档的知识,对这些文档贴标签。实验结 果也表明,该算法具有较高的精度与召回率。我们将进一步研究潜在类别变量的选择对结果 www.aibbt.com 让未来触手可及 176 的影响, 以及在贝叶斯潜在语义分析框架下如何实现词的聚类等问题。 习 题 1. 分别解释条件概率、先验概率和后验概率。 2. 描述全概率下的贝叶斯公式,并详细说明贝叶斯公式的重要意义。 3. 描述几种常用的先验分布选取方法。 4. 简单贝叶斯分类中简单的含义是什么,简述改进分类方法的主要思想。 5. 叙述贝叶斯网络的结构和建立方法,试举例描述贝叶斯网络的使用。 6. 何谓半监督文本挖掘,描述贝叶斯模型在网页聚类中的应用。 7. 近年来随着 Internet 技术的发展,贝叶斯规则被广泛应用,试举两个具体的贝叶斯规则应 用实例,并加以解释。 www.aibbt.com 让未来触手可及 177 第七章 归纳学习 7.1 概 述 归纳学习是符号学习中研究得最为广泛的一种方法。给定关于某个概念的一系列已知的 正例和反例,其任务是从中归纳出一个一般的概念描述。归纳学习能够获得新的概念,创立 新的规则,发现新的理论。它的一般的操作是泛化 (generalization) 和特化 (specialization)。泛化用来扩展一假设的语义信息,以使其能够包含更多的正例,应用于 更多的情况。特化是泛化的相反的操作,用于限制概念描述的应用范围。 用程序语言描述定义上述内容的过程就是归纳学习程序,用于书写归纳程序的语言称为 归纳程序设计语言, 能执行归纳程序,完成特定归纳学习任务的系统叫做归纳学习系统。归纳 学习系统可独立,也可嵌入另一较大的知识处理系统。一般归纳程序的输入是科学实验中个别 观察对象(过程)的描述, 输出是一类对象的总体特征描述或几类对象的分类判别描述。 与演绎相对照, 归纳的开始前提是具体事实而不是一般公理,推理目标是形式化解释事 实的似然一般断言和预见新事实。归纳推理企图从给定现象或它的一部分的具体观察推导出 一个完整的、正确的描述。归纳的两个方面⎯⎯似然假设的产生和它的有效性(真值状态的建 立),只有前者对归纳学习研究具备基本意义, 而假设有效性的问题是次要的,因为假定所产 生的假设由人类专家判断, 由已知的演绎推理和数理统计的方法测试。 归纳学习可以分为实例学习、观察与发现学习。实例学习, 又叫概念获取, 它的任务是 确定概念的一般描述,这个描述应能解释所有给定的正例并排除所有给定的反例。这些正反 例由信息源提供。信息源的来源非常广泛,可以是自然现象,也可以是实验结果。实例学习 是根据教师给以分类的正反例进行学习,因此是有教师学习。 观察与发现学习又称描述的泛化。这类学习没有教师的帮助,它要产生解释所有或大多 数观察的规律和规则。这类学习包括概念聚类、构造分类、发现定理、形成理论等。观察与 发现学习是由未经分类的观察学习,或由系统自身的功能去发现,因此是无教师学习。 因为归纳推理是从有限的、不完全的知识状态推出完全的知识状态,故归纳推理本身就是 一种非单调推理。但归纳推理本身又无法验证新知识正确与否, 而非单调逻辑则为我们处理 非单调归纳知识提供理论基础。 归纳原理的基本思想是在大量观察的基础上通过假设形成一个科学理论。所有观察都是 单称命题,而一个理论往往是领域内的全称命题,从单称命题过渡到全称命题从逻辑上来说没 有必然的蕴涵关系,对于不能观察的事实往往默认它们成立。我们把归纳推理得到的归纳断言 作为知识库中的知识使用,而且做为默认知识使用, 当出现与之矛盾的新命题时, 可以推翻 原有的由归纳推理得出的默认知识, 以保持系统知识的一致性。 单个概念的归纳学习的一个通用定义是: (1) 给定由全体实例组成的一个实例空间,每个实例具有某些属性。 (2) 给定一个描述语言,该语言的描述能力包括描述每一个实例(通过描述改实例的属性 来实现)及描述某些实例集,称为概念。 (3) 每次学习时,由实例空间抽出某些实例,称这些实例构成的集合为正例集。再由实例 空间抽出另外一些实例,称这些实例为反例集。 (4) 如果能够在有限步内找到一个概念 A,它完全包含正例集,并且与反例集的交集为空, www.aibbt.com 让未来触手可及 178 则 A 就是所要学习的单个概念,学习成功,否则,学习失败。 (5) 如果存在一个确定的算法,使得对于任意给定的正例集和反例集,学习都是成功的, 则称该实例空间在该语言表示下是可学习的。 归纳学习中具有代表性的学习方法有变型空间、AQ11 算法、决策树方法等,本章将分别进 行讨论。 7.2 归纳学习的逻辑基础 7.2.1 归纳学习的一般模式 为了较具体地刻画概念的归纳学习,这里给出归纳学习的一般模式。 给定: ① 观察语句集(事实)F:这是有关某类对象中个别具体对象的知识或某一对象的部分特 征的知识。 ② 假定的初始归纳断言(可空):是关于目标的泛化项或泛化描述。 ③ 背景知识:背景知识定义了在观察语句和所产生的候选归纳断言上的假定和限制,以 及任何有关问题领域知识。有关问题领域知识包括特化所找归纳断言的期望性质的择优标准。 寻找: 归纳断言 H (假设), H 重言或弱蕴涵观察语句并满足背景知识。 假设 H 永真蕴涵事实 F,是指 F 是 H 的逻辑推理,即 H ⇒ F 成立。也就是若表达式 H ⇒ F 在所有解释下均为真,可表示为: H | F H 特化为 F 或 F <| H . F 归结或泛化为 H 这里,从 H 推导出 F 的过程是保真过程,因为根据上述模式 H ⇒ F 必成立,故只要 H 为 真,F 必为真。反之,从事实 F 推导出假设 H 的过程是保假过程,即如果有事实 F 为假,则 H 一定为假。 所谓 H 弱蕴涵 F,意指事实 F 不是 H 确定的结论,而是 H 合理的或部分的结论。有了弱蕴 涵概念,这个模式就可以有只需解释所有事实中的某些事实的可能的和部分的假设。不过我 们仍然集中注意在永真蕴涵事实的假设上。 对于任意给定的事实集,可能产生无数个蕴涵这些事实的假设,这时就需要背景知识来 提供限制条件和优先原则,以便将假设从无穷个减少到一个假设或者几个最优的假设。 为了将概念归纳学习的逻辑基础形式化,表 7.1 给出了基本符号,并附上简单的解释。 表 7.1 给出了基本符号表 符 号 意 义 ∼ 非 ∧ 合取(逻辑乘) www.aibbt.com 让未来触手可及 179 ∨ 析取(逻辑加) ⇒ 蕴涵 ⇔ 逻辑等价 ↔ 项重写 ⊕ 异或 F 事实集 H 假设 | 特化 <| 泛化 ⊨ 重新形式化 ∃vi 存在量词约束变项 vi ∃Ivi 数值存在量词约束变项 vi ∀vi 全称量词约束变项 vi Di 概念描述 Ki 判断一个概念的名字的谓词 >:: 将概念描述与概念名连接的蕴涵 ei 一个事件(对一种情况的描述) Ei 仅对概念 ki 的事件为真的谓词 Xi 属性 LEF 评价函数 DOM(P) 描述符 P 的定义域 7.2.2 概念获取的条件 概念获取的一类特殊情况,它的观察语句集$F$是一个蕴涵的集合, 其形式如下: F: {eik >:: Ki} i ∈ I (7.1) 其中,eik(Ki 的训练事件)是概念 Ki 的第 k 个例子的符号描述。概念的谓词 Ki, I 是 Ki 的下标集 合。eik >:: Ki 的含义是“凡符合描述 eik 的事件均可被断言为概念 Ki 的例子”。学习程序要 寻求的归纳断言 H 可以用概念识别规则集来刻画, 形式如下: www.aibbt.com 让未来触手可及 180 H: {Di >:: Ki} i ∈ I (7.2) 其中 Di 是概念 Ki 的描述,即表达式 Di 是事件的逻辑推论,该事件可被断言为概念 Ki 的一个例 子。 用 Ei 来表示概念 Ki 中所有训练事件的描述(i ∈ I ), 根据归纳断言的定义,必须有 H | F。 要使 Di 成为概念 Ki 的描述,用式(6.1)和式(6.2)分别代替这里的 H 和 F, 则下述条件必 须成立: ∀ i ∈ I (Ei ⇒ Di) (7.3) 即所有 Ki 的训练事件必须符合 Di。 如果约定每一训练事件只能属于一个概念,则下面条件也 成立: ∀ i,j ∈ I (Di ⇒ ∼Ei) 若 i ≠ j (7.4) 其含意是任何一个概念 Ki (j ≠ i)的训练事件均不符合 Di。 表达式条件(6.3)称为完整性条件,条件(6.4})称为一致性条件。作为概念识别规则接受 的归纳断言一定要满足这两个条件,从而保证 Di 的完整性和一致性。完整性和一致性条件为 实例学习概念的算法提供了逻辑基础。 一类物体的特征描述是一个满足完整性条件的表达式,或是这种表达式的合取。这种描 述从所有可能的类别中判别给定类。一个物体类的差别描述则是满足完整性和一致性条件的 表达式,或这些表达式的析取,其目标是在一定数目的其它类中标识给定类。 知识获取的主要兴趣在于面向符号描述的推导。这种描述要易于理解,在产生它所表达 信息的智能模型时要易于应用,因此由归纳推理产生的描述要与人类的知识表示相似。 归纳学习方法分类中,一个指导性原则是选择归纳断言语言的类型。例如,常用谓词逻辑 的某种限定形式或与此类似的概念,或者决策树、产生式规则、语义网络、框架等方式,或 者采用多值逻辑、模态逻辑等。 在谓词逻辑的基础上,进行修改和扩充,增加一些附加形式和新概念,以增强表达能力。 Michalski 等提出了一种标注谓词演算 APC(Annotated Predicate Calculus), 使之更适合于 归纳推理。APC 与通常谓词演算之间的主要差别是:①每个谓词、变量和函数都被赋予一个标 注。标注是该描述符学习问题有关的背景知识的集合。例如描述符所代表概念的定义,该标 注与其它概念的关系,描述符作用范围说明等。②除谓词外,APC 还包括复合谓词,这些复合 谓词的参数可以是复合项。一个复合项是几个通常项的组合,如 P(t1 ∨ t2, A)。③表达项之 间关系的谓词被表示为选择符关系,如:=,≠, >, ≥, ≤, <。④除全称量词和存在量词外, 还有数字量词。该量词用来表达满足一个表达式的物体数量信息。 7.2.3 问题背景知识 对于一个给定的观察陈述集,有可能构造无数个蕴涵这些陈述的归纳断言。因此,有必 要使用一些附加信息,即问题的背景知识,限制可能的归纳断言范围,并从中决定一个或若 干个最佳的归纳断言。例如,在 Star 的归纳学习方法中,背景知识包括这样几部分:①观察 陈述中用到的描述符信息,该信息附在每个描述符标注中。②关于观察和归纳断言的形式假 设。③列举归纳断言应有特性的选择标准。④各种推理规则、启发式规则、特殊子程序、通 用的和独立的过程,以便允许学习系统产生给定断言的逻辑结论和新的描述符。由于观察陈 述中描述符选择对产生归纳断言有重要影响,因此先考虑描述符选择问题。 www.aibbt.com 让未来触手可及 181 学习系统输入的主要内容是一个观察陈述集。这些陈述中的描述符是事物可观察到的特 性和可利用的测量数据,决定这些描述符是归纳学习的一个主要问题。可以通过初始描述符 与学习问题的联系程度来刻画学习方法。这几种联系有:①完全相关,即观察陈述集中的所 有描述符都与学习任务直接相关,学习系统的任务是形成一个联系这些描述符的归纳断言。 ②部分相关,观察陈述集中可能有许多无用或冗余的描述符,有些描述符是相关的,此时学 习系统的任务是选择出其中最相关的描述符,并用它们构造合理的归纳断言。③间接相关, 观察陈述不包括与问题直接相关的描述符。但是,在初始描述中,有一些描述符可以用来生 成相关的描述符。学习系统的任务是生成这些直接相关的描述符,并由此得到归纳断言。 描述符标注是描述符与学习问题有关背景知识的集合,包括: (1) 定义域和描述符的类型说明; (2) 与描述符有关的操作符说明; (3) 描述符之间的约束和关系说明; (4) 表示数量的描述符在问题中的意义、变化规律; (5) 描述符可应用事物的特性; (6) 指出包含给定描述符的类,即该描述符的父节点; (7) 可代替该描述符的同义词; (8) 描述符的定义; (9) 给出物体描述符的典型例子。 描述符定义域是描述符所能取值的集合。如人的体温在 34oC∼ 44oC 之间,则描述符“体 温”只能在这个范围内取值。描述符类型则是根据描述符定义域元素之间的关系决定的。根 据描述符定义域的结构,有三种基本类型: (1) 名称性描述符。这种描述符的定义域由独立的符号或名字组成,即值集中值之间没 有结构关系。例如水果、人名等。 (2) 线性描述符。该类描述符值集中的元素是一个全序集。例如,资金、温度、重量、 产量等都是线性描述符。表示序数、区间、比率和绝对标度的变量都是线性描述符的特例。 将一个集合映射成一个完全有序集的函数也是线性描述符。 (3) 结构描述符。其值集是一个树形的图结构,反映值之间的生成层次。在这样的结构 中,父节点表示比子节点更一般的概念。例如,在“地名”的值集中,“中国”是节点“北京”、 “上海”、“江苏”、“广东”等的父节点。结构描述符的定义域是通过问题背景知识说明的一 组推理规则来定义的。结构描述符也能进一步细分为有序和无序的结构描述符。描述符的类 型对确定应用描述符的操作是很重要的。 在 Star 学习系统中,断言的基本形式是 c-表达式,定义为一个合取范式: <量词形式><关系陈述的合取> (6.5) 其中, <量词形式>表示零个或多个量词。<关系陈述>是特殊形式的谓词。下面是一个 c-表达 式的例子: ∃P0,P1([shape(P0∧P1) = box][weight(P0) > weight(P1)]) 即物体 P0 和 P1 的形状都是盒子,物体 P0 比 P1 重。 c-表达式的一个重要的特殊形式是 a-表达式,即原子表达式,其中不含“内部析取”。所 谓内部合取、析取,是指连接项的与、或;而外部合取、析取指连接谓词的与、或,即通常 意义下的逻辑与、或。 www.aibbt.com 让未来触手可及 182 7.2.4 选择型和构造型泛化规则 一个泛化规则是从一个描述到一个更一般描述之间的转换。更一般的描述永真蕴涵初始 描述。由于泛化规则是保假的,即若 F <| H , 则对于有事实使 F 为假, 也一定会使 H 为假(∼ F ⇒ ∼H)。 概念获取中,如果要将一个规则 E >:: K 转换成一个更一般的规则 D >:: K,必须有 E ⇒ D。 因此可利用形式逻辑中的永真蕴涵来获得泛化规则。如形式逻辑中有 P∧Q ⇒ P, 则可将其 转换成泛化规则: P∧Q >:: K <| P >:: K (7.6) 用标注谓词演算来表示这些泛化规则,主要考虑将一个或多个陈述转换成单个更一般陈 述的泛化规则: {Di >:: Ki} i ∈ I <| D >:: K (7.7) 等价于: D1∧D2 ∧┄∧Dn >:: K <| D >:: K (7.8) 该规则表示,如果一个事件满足所有的描述 Di (i∈ I),则它也满足一个更一般的描述 D。 泛化转换的一个基本性质是:它得出的只是一个假设,需用新的数据来测试,且泛化规 则并不保证所得描述符是合理的或有用的。泛化规则分为两类:构造型和选择型。若在产生 概念描述$D$中,用到的描述都是在初始概念描述 Di (i∈ I)中出现过,则称为选择型泛化, 否则称为构造型泛化规则。 1. 选择型泛化规则 设 CTX,CTX1,CTX2 代表任意的表达式。 (1) 消除条件规则 CTX∧S >:: K <| CTX >:: K (7.9) 其中 S 是任意的谓词或逻辑表达式。 (2) 增加选择项规则 CTX1 >:: K <| CTX1 ∨CTX2 >:: K (7.10) 通过增加选择项将概念描述泛化,如: CTX ∧ [color = red] >:: K <| CTX ∧[L = R2] >:: K (3) 扩大引用范围规则 CTX ∧ [L = R1] >:: K <| CTX ∧ [color: red ∧ blue] >:: K (7.11) 其中 R1⊆R2⊆DOM(L), DOM(L) 为 L 的域,L 是一个项,Ri 是 L 取值的一个集合。 (4) 闭区间规则 <> > K:: b] = [L∧CTX K:: a] = [L∧CTX CTX∧[L = a⋯b]::>K (7.12) www.aibbt.com 让未来触手可及 183 其中 L 是线性描述符,a 和 b 是 L 的一些特殊值。 (5) 爬山泛化树规则 < >=∧ >=∧ >=∧ K K K ::i] [LCTX ::b] [LCTX ::a] [LCTX CTX∧[L = S] ::> K (7.13) 其中 L 是结构描述符,在 L 的泛化树域中,S 表示后继为 a,b,⋯, i 的最低的父节点。 (6) 将常量转换为变量规则 ][ }[ ][ ][ xxF iF bF aF ∀< (7.14) 其中 F[x]是依赖于变量 x 的描述符,a,b, ⋯, i 是常量。 对于描述 F[x], 若 x 的某些值(a,b, ⋯, i)使 F[x]成立,则可得到假设:对于 x 的所有值,F[x]成立。 (7) 将合取转换为析取规则 F1 ∧ F2 ::> K <| F1 ∨ F2 ::> K (7.15) 其中 F1,F2 为任意描述。 (8) 扩充量词范围规则 ∀xF[x] ::> K <| ∃xF[x] ::> K (7.16) ∃(I1)xF[x] ::> K <| ∃(I2)xF[x] ::> K (7.17) 其中 I1,I2 是量词的域(整数集合),且 I1 ⊆ I2。 (9) 泛化分解规则 用于概念获取 KFFKFP KFP >∨<>∧ >∧ ::::~ :: 21 2 1 (7.18) 用于描述泛化 2121 |~ FFFpFP ∧<∧∨∧ (7.19) 这里 P 均为谓词。 (10) 反扩充规则 KRLK K >≠<>=∧ >=∧ ::][~::] R [LCTX ::] R [LCTX 2 22 11 (7.20) 其中 R1,R2 是析取式。 给定一个属于概念 K 的对象描述(正例)和一个不属于概念 K 的对象描述(反例),该规 则将生成一个包括这两个描述的更一般描述。这是实例学习差别描述的一个基本规则。 2.构造型泛化规则 构造性泛化规则能生成一些归纳断言,这些归纳断言使用的描述符不出现在初始的观察 www.aibbt.com 让未来触手可及 184 陈述中,也就是说,这些规则对初始表示空间进行了变换。 (1) 通用构造型规则 KFF K >∧<⇒ >∧ ::FCTX::FCTX 2 21 1 (7.21) 该规则表示,若一个概念描述含有一部分 F1, 已知 F1 蕴涵另一概念 F2,则通过用 F2 替代 F1 可得 到一个更一般的描述。 (2) 计算变量规则 计算量词变量 CQ 规则: ∃V1,V2,┄,VkF[V1,V2,┄,Vk] CQ 规则将产生一个新的描述符“#v-COND”, 表示满足某条件 COND 的 vi 的个数。例如, “#vi-length─2..4”, 表示其长度在 2 和 4 之间 vi 的个数。 计算谓词变量个数 CA 规则: 在描述中一个描述符是一个具有几个变量的关系 REL(v1,v2,⋯), CA 规则将计算关系 REL 中满足条件 COND 的个数。 (3) 产生链属性规则 概念描述中,若一个概念描述中传递关系不同出现的变量形成一条链,该规则能生成刻画 链中某些特定对象的特征的描述符。这种对象可能是: LST-对象:“最小的对象”,或链的开始对象。 MST-对象:链的结束对象。 MID-对象:链中间的对象。 Nth-对象:链中第 N 个位置上的对象。 (4) 检测描述符之间的相互依靠关系规则 假设已知一个例示某个概念的对象集合,用属性描述来刻画对象的特征。这些描述仅定 义出对象的属性值,它们不刻画对象的结构特性。假设在所有事实描述中,线性描述符 x 的 值按升序排列,而另一个线性描述符 y 的对应值也是升序或降序的,则生成一个 2 维描述符 M(x,y),表示 x,y 之间有单调关系。当 y 值为升序时,描述符取值↑,当降序时取值↓。 7.3 偏置变换 偏置在概念学习中具有重要作用。所谓偏置,是指概念学习中除了正、反例子外,影响 假设选择的所有因素。这些因素包括:①描述假设的语言。②程序考虑假设的空间。③按什 么顺序假设的过程。④承认定义的准则,即研究过程带有已知假设可以终止还是应该继续挑 选一个更好的假设。采用偏置方法,学习部分选择不同的假设,会导致不同的归纳跳跃。偏 置有两个特点: (1) 强偏置是把概念学习集中于相对少量的假设;反之,弱偏置允许概念学习考虑相对 大量的假设。 (2) 正确偏置允许概念学习选择目标概念,不正确偏置就不能选择目标概念。 www.aibbt.com 让未来触手可及 185 图 7.1 偏置在归纳学习中的作用 图 7.1 给出了偏置在归纳学习中的作用。由图可知,给定任何特殊顺序的训练例子,归 纳就变成一个自变量的函数。当偏置很强且正确时,概念学习能立即选择可用的目标概念。 当偏置很弱且不正确时,概念学习的任务是最困难的,因为没有什么引导可以选择假设。为 了变换一个较弱的偏置,可以采用下面的算法: (1) 经过启发式,推荐新概念描述加到概念描述语言。 (2) 变换推荐的描述成为概念描述语言已形式化表示的新概念描述。 (3) 同化任何新概念进入假设的限定空间,保持假设空间机制。 上述算法中,第(1)步确定一个更好的偏置。第(2)、(3)步机器执行变换,其结果新概念 描述语言较前面的描述语言要好。 实现归纳学习,需要研究一个好的偏置。关于偏置变换的根本问题,包括同化生成知识 获取问题的任务、初始偏置的计算、目标自由与目标敏感的方法等,尚需进一步研究。 7.4 变型空间方法 变型空间(Version Space)方法以整个规则空间为初始的假设规则集合 H。依据训练例子 中的信息,它对集合 H 进行泛化或特化处理,逐步缩小集合 $H$。最后使 $H$收敛为只含有 要求的规则。由于被搜索的空间 H 逐步缩小,故称为变型空间。 Mitchell(1977)指出,规则空间中的点之间可以按其一般性程度建立偏序关系。在图 7.2 中表示了一个规则空间中偏序关系的一部分。其中 TRUE 表示没有任何条件,这是最一般的概 念。概念∃xCLUBS(x) 表示至少有一张梅花牌,它比前者更特殊。概念∃x,yCLUBS(x) ∧HEARTS(y) 表示至少有一张梅花牌且至少有一张红心牌,它比前两个概念都特殊。图中的箭头是从较特 殊的概念指向较一般的概念。 图 7.2 一个规则空间的偏序关系 程 序 训练集 偏置 训练例 假设 搜索程序 知识 www.aibbt.com 让未来触手可及 186 一般规则空间排序后的示意图见图 7.3。图中最上面的一个点是最一般的规则(概念), 是没有描述的点,即没有条件的点。所有例子都符合这一概念。图中最下面一行的各点是训 练正例直接对应的概念。每个点的概念只符合一个正例。例如,每个例子都是一张牌 C 的花 色和点数,一个例子是 SUIT(C, clubs) ∧ RANK(C,7) 这是一个训练正例,又是一个最特殊的概念。概念 RANK(C,7) 是在规则空间中部的点。它比 没有描述更特殊,但比训练正例更一般。 图 7.3 一般规则空间排序示意图 在搜索规则空间时,使用一个可能合理的假设规则的集合 H。H 是规则空间的子集,它 是规则空间中间一段。H 中最一般的元素组成的子集称为 G 集合,H 中最特殊的元素组成的 子集称为 S 集合。在规则空间中,H 是上界 G 和下界 S 之间的一段。因此可以用 G 和 S 表 示集合 H。 变型空间方法的初始 G 集是最上面的一个点(最一般的概念),初始 S 集是最下面的直 线上的点(训练正例),初始 H 集是整个规则空间。在搜索过程中,G 集逐步下移(进行特化), S 集逐步上移(进行泛化),H 逐步缩小。最后 H 收敛为只含一个要求的概念。下面分别介绍 几种算法。 7.4.1 消除候选元素算法 Mitchell 的算法称为消除候选元素算法,它利用边界集合 G 和 S 表示集合 H。集合 H 称为变型空间,H 中所有的概念描述都满足至此已提供的全部正例,且不满足至此已提供的 任一反例。 开始时,H 是整个规则空间。在接受训练正例后,程序进行泛化,从 H 中去掉一些较特 殊的概念,使 S 集上移。在接受训练反例后,程序进行特殊化,从 H 中去掉一些较一般的概 念,使 G 集下移。二者都从 H 中消除一些候选概念。算法过程可分四步。 算法 7.1 消除候选元素算法 (1) 初始化 H 集是整个规则空间,这时 S 包含所有可能的训练正例(最特殊的概念)。 这时 S 集规模太大。实际算法的初始 S 集只包含第一个训练正例, 这种 H 就不是全空间了。 (2) 接收一个新的训练例子。如果是正例,则首先由 G 中去掉不覆盖新正例的概念,然 后修改 S 为由新正例和 S 原有元素共同归纳出的最特殊的结果(这就是尽量少修改 S,但要 求 S 覆盖新正例)。如果这是反例,则首先由 S 中去掉覆盖该反例的概念,然后修改 G 为由 www.aibbt.com 让未来触手可及 187 新反例和 G 原有元素共同作特殊化的最一般的结果(这就是尽量少修改 G,但要求 G 不覆盖 新反例)。 (3) 若 G=S 且是单元素集,则转 (4),否则转 (2)。 (4) 输出 H 中的概念(即 G 和 S)。 下面给出一个实例。用特征向量描述物体,每个物体有两个特征:大小和形状。物体的 大小可以是大的(lg)或小的(sm)。物体的形状可以是圆的(cir) 、方的(squ) 或三角的 (tri) 。要教给程序“圆”的概念,这可以表示为(x, cir),其中 x 表示任何大小。 初始 H 集是规则空间。G 和 S 集分别是 G={(x,y)} S={(sm squ), (sm cir),(sm tri),(lg squ), (lg cir), (lg tri)} 初始变型空间 H 如图 7.4 所示。 第一个训练例子是正例 (sm cir) ,这表示小圆是圆。经过修改 S 算法后得到 G ={(x y)} S ={(sm cir)} (x y) (sm y) (lg y) (x squ) (x cir) (x tri) (sm squ) (lg squ) (sm cir) (lg cir) (sm tri) (lg tri) 图 7.4 初始变型空间 图 7.5 显示第一个训练例子后的变型空间。图中由箭头线连接的四个概念组成变型空间。满 足第一个训练例子的正是这四个概念,并仅有这四个。实际算法中以这个作为初始变型空间, 而不用图 7.4 。 (x y) (sm y) (lg y) (x squ) (x cir) (x tri) (sm squ) (lg squ) (sm cir) (lg cir) (sm tri) (lg tri) 图 7.5 第一个训练例子后的变型空间 第二个训练例子是反例 (lg tri) 。这表示大三角不是圆。这一步对 G 集进行特化处理, 得到 G ={(x cir), (sm y)} S ={(sm cir)} 图 7.6 显示第二个训练例子后的变型空间。这时 H 仅含三个概念, 它们满足上一个正例, 但 不满足这一个反例的全部概念。 www.aibbt.com 让未来触手可及 188 (x y) (sm y) (lg y) (x squ) (x cir) (x tri) (sm squ) (lg squ) (sm cir) (lg cir) (sm tri) (lg tri) 图 7.6 第二个训练例子后的变型空间 第三个训练例子是正例(lg cir)。这表示大圆是圆。这一步首先从 G 中去掉不满足此正 例的概念 (sm y) 。再对 S 和该正例作泛化,得到 G={(x cir)} S={(x cir)} 这时算法结束,输出概念(x cir)。 对这个算法再补充说明几点。 (1) 对集合 G 和 S 的理解。对于符合所求概念的新例子,集合 S 是其充分条件的集合, 集合 G 是其必要条件的集合。例如在第一个训练例子后,(sm cir)是充分条件,即小圆一定 满足所求概念。当时程序还不知道大圆是否满足。又如在第二个训练例子后,(x cir)和 (sm y) 是必要条件,即满足所求概念的例子或者是圆,或者是小的。算法结束时,G=S ,即满足 了充要条件。 (2) 学习正例时,对 S 进行泛化,这往往扩大 S。学习反例时,对 G 进行特化,这往往 扩大 G。G 和 S 的规模过大会给算法的实用造成困难。算法是在训练例子引导下,对规则空 间进行宽度优先搜索。对大的规则空间,算法慢得无法接受。 7.4.2 两种改进算法 基本的变型空间学习方法很难实用, 人们提出了一些改进的方法。其中两种改进的算法 仅采用正例学习,它们类似于上述的修改 S 过程。 第一种是冲突匹配算法 (Hayes-Roth 和 McDormott)。它用于学习“参数化结构表示”所 表达的概念。在上述的修改 S 过程中,总是对 S 作尽量少的泛化,以便覆盖新的正例。如果 描述形式为谓词表达式,则这个过程相当于寻找最大的公共子表达式,这只需要去掉最少的 合取条件。例如,S 集合为 S={BLOCK(x)∧BLOCK(y)∧SQUARE(y)∧RECTANGLE(x)∧ONTOP(x,y)} 这表示积木 x 为矩形,积木 y 为正方形,且 x 在 y 上。若下一个训练正例 I1 为 I1 = {BLOCK(w)∧BLOCK(v)∧SQUARE(w)∧RECTANGLE(v)∧ONTOP(w, v)} 这表示积木 w 为正方形,积木 v 为矩形,且 w 在 v 上。 经过修改 S 过程,将产生下列公共子集 S'={S1, S2} 其中 S1=BLOCK(a)∧BLOCK(b)∧SQUARE(a)∧RECTANGLE(b) S2=BLOCK(c)∧BLOCK(d)∧ONTOP(c,d) S1 相当于假设 ONTOP 这个位置关系与所求概念无关。S2 相当于假设积木形状与所求概念 无关。应当注意,当 x 对应 w,且 y 对应 v 时,S 与 I1 的位置关系匹配,但形状特征不匹配。 www.aibbt.com 让未来触手可及 189 反之,当 x 对应 v 而 y 对应 w 时,S 与 I1 的形状特征匹配,但位置关系不匹配。这种现象是 在匹配中的冲突。为了解决冲突,在 S'中用两个元素分别考虑这两个方面。 第二种方法是最大的合一泛化。这个算法用于寻找谓词表达式的最大的合一泛化。它类 似于冲突匹配算法,但是它使用的表示语言允许在匹配中多对一的参数联系。 变型空间方法有如下两个主要缺点: (1) 抗干扰能力差。 所有数据驱动方法(包括变型空间方法)都难以处理有干扰的训练例子。由于算法得到 的概念应满足每个训练例子的要求,所以一个错误例子会造成很大影响。有时错误例子使程 序得到错误概念,有时得不到概念,这时 H 成为空集。 Mitchell(1978)提出的解决方法是保存多个 G 和 S 集合。例如,S0 符合所有正例,S1 符 合除一个正例外其它的正例,S2 等类似。如果 G0 超过 S0,则 H0 为空集。这说明没有任何一个 概念符合全部例子.于是程序去找 G1 和 S1,以便得到 H1。如果 H1 也空,则找 H2。 (2) 学习析取概念。 变型空间方法不能发现析取的概念。有些概念是析取的。例如,PARENT 可能是父亲,也 可能是母亲。这表示为PARENT(x)=FATHER(x) ∨ PARENT(x)=MOTHER(x),由于 集合 G 和集合 S 的元素都是合取形式,所以上述算法找不到析取概念。 第一种解决方法使用不含析取联结词的表示语言。它重复多次进行消除候选元素工作, 以找到覆盖全部例子的多个合取描述。 算法 7.2 学习析取概念算法 第一步:集合 S 初始化为只含一个正例,集合 G 初始化为没有描述。 第二步:对每个反例,进行修改 集合 G。 第三步:在 G 中选择一个描述 g,把 g 作为解集合中的一个合取式。 g 不覆盖任一反例, 但会覆盖一部分正例。这时从正例集合中去掉比 g 特殊的所有正例(即 g 覆盖的那些正例)。 第四步:对剩余的正例和全部反例,重复一、二、三步,直到所有正例都被覆盖。于是, 每次循环得到的 g 的析取就是所求概念。 这个析取不覆盖任一反例,而且每一个 g 都不覆盖任一反例。该析取覆盖全部正例,每 一个 g 覆盖由它去掉的正例。注意,由于没有修改 S 过程,所以 g 不覆盖全部正例,但 g 至少覆盖第一步那个正例,所以 g 至少去掉这个正例。 第二个方法称为 AQ 算法[Michalski 1975] 。这类似于上一种算法,只是 AQ 算法在第 一步用启发式方法选择一个正例,要求这个正例是前几个 g 都没有覆盖过的。Larson 改进了 AQ 算法,把它用于推广的谓词演算表示。 7.5 AQ 归纳学习算法 1969 年, Michalski 提出了 AQ 学习算法, 这是一种基于实例的学习方法。AQ 算法生成的 选择假设的析取, 覆盖全部正例, 而不覆盖任何反例。它的基本算法如下: 算法 7.3 简单的 AQ 学习算法。 (1) 集中注意一个实例(作为种子); (2) 生成该实例的一致性泛化式(称作 star); (3) 根据偏好标准, 从 star 选择最优的泛化式(假设)。如果需要, 特化该假设; (4) 如果该假设覆盖了全部实例, 则停止; 否则选择一个未被假设覆盖的实例,转到 (2)。 Michalski 于 1978 年提出了 AQ11。它搜索规则空间,反复应用消除候选元素,得到尽可 www.aibbt.com 让未来触手可及 190 能一般的规则。AQ11 算法把学习鉴别规则问题转化为一系列学习单个概念问题。为了得到 Ci 类的规则,它把 Ci 类的例子作为正例,而把所有其它类的例子作为反例。由此找到覆盖全部 正例而不包括任一反例的描述,以此作为 Ci 的规则。这样找到的鉴别规则可能在例子空间中 未观察的区域内重迭。 为了寻找不重迭的分类规则集,AQ11 以 Ci 类的例子为正例,反例包括所有其它类型 Cj(j ≠ i)的例子和已处理的各类型 Ck(1 ≤ k ≤ i)的正例区中的全部正例。于是,C2 类只覆盖 C1 类 未覆盖的那部分,C3 类覆盖的部分是在 C2 和 C1 类都不覆盖的部分。 AQ11 得到的鉴别规则相当于符合训练例子的最一般的描述的集合,即各类型的 G 集合 G1, G2 等。有时要使用符合训练例子的最特殊的描述的集合,即各类型的 S 集合 S1, S2 等。 Michalski 等采用 AQ11 程序学习 15 种黄豆病害的诊断规则。提供给程序 630 种患病黄豆 植株的描述,每个描述是 35 个特征的特征向量。同时送入每个描述的专家诊断结论。选择例 子程序从中选出 290 种样本植株作为训练例子。选择准则是使例子间相差较大。其余 340 种 植株留作测试集合,用来检验得到的规则。 7.6 CLS 学习算法 CLS 学习算法是 1966 年由 Hunt 等提出的[Hunt 1966]。它是早期的决策树学习算法,后 来的许多决策树学习算法都可以看作是 CLS 算法的改进与更新。 CLS 算法的主要思想是从一个空的决策树出发,通过添加新的判定结点来改善原来的决 策树,直至该决策树能够正确地将训练实例分类为止。 算法 7.4 CLS 算法. (1) 令决策树 T 的初始状态只含有一个树根(X,Q),其中 X 是全体训练实例的集合,Q 是全体测试属性的集合; (2) 若 T 的所有叶结点(X’,Q’)都有如下状态:或者第一个分量 X’中的训练实例都 属于同一各类,或者第二个分量 Q’为空,则停止执行学习算法,学习的结果为 T; (3) 否则,选取一个不具有第 2 步所述状态的叶结点(X’,Q’); (4) 对于 Q’,按照一定规则选取测试属性 b,设 X’被 b 的不同取值分为 m 个不相交的 子集 Xi’,1≤i≤m,从(X’,Q’)伸出 m 个分叉,每个分叉代表 b 的一个不同取值,从而形 成 m 个新的叶结点(Xi’,Q’-{b}),1≤i≤m; (5) 转2。 从 CLS 算法的描述可以看出,决策树的构造过程也就是假设特化的过程,所以 CLS 算法 可以看作是一个只带一个操作符的学习算法,此操作符可以表示为:通过添加一个新的判定 条件(新的判定结点),特化当前假设。CLS 算法递归的调用这个操作符,作用在每个叶结点 上,来构造决策树。 在算法 7.4 的步骤(2)中,如果训练实例集没有矛盾,即在没有所有属性的取值相同的两个 实例属于不同的类,则如果第二个条件得到满足(即 Q’为空),则第一个条件(即 X’的所 有训练实例都属于同一个类)也会得到满足,即停止条件只用二者中间的任何一个即可。但 是对于可能存在的有矛盾的训练实例集,上述说法不一定成立。 在算法的步骤(4)中,应该满足 m>1 否则继续分类没有意义。但是,若 X 中有矛盾的训练 实例,则难以保证 m>1。 在算法的步骤(4)中,并未明确给出测试属性的选取标准,所以 CLS 有很大的改进空间。 www.aibbt.com 让未来触手可及 191 7.6 ID3 学习算法 在算法 7.4 中并未给出如何选取测试属性 b,Hunt 曾经提出几种选择标准。但在决策树学 习算法的各种算法当中,最为有影响的是 Quinlan 于 1979 年提出的以信息熵的下降速度作为 选取测试属性的标准的 ID3 算法[Quinlan 1979]。信息熵的下降也就是信息不确定性的下降。 7.6.1 信息论简介 1948 年 Shannon 提出并发展了信息论,研究以数学的方法度量并研究信息。通过通信后 对信源中各种符号出现的不确定程度的消除来度量信息量的大小。它提出了一系列概念: (1)自信息量。在收到 ai 之前,收信者对信源发出 ai 的不确定性定义为信息符号 ai 的自信 息量 I(ai)。即 I(ai)=-log p(ai),其中 p(ai)为信源发出 ai 的概率。 (2)信息熵。自信息量只能反映符号的不确定性,而信息熵可以用来度量整个信源 X 整 体的不确定性,定义如下: 其中 r 为信源 X 所有可能的符号数,即用信源每发一个符号所提供的平均自信息量来定以 信息熵。 (3)条件熵。如果信源 X 与随机变量 Y 不是相互独立的,收信者收到信息 Y。那么,用 条件熵 H(X/Y)来度量收信者在收到随机变量 Y 之后,对随机变量 X 仍然存在的不确定性。假 设 X 对应信源符号 ai,Y 对应信源符号 bj。 )/( ji bap 为当 Y 为 bj 时 X 为 ai 的概率。则有: (4)平均互信息量。用它来表示信号 Y 所能提供的关于 X 的信息量的大小,用 I(X,Y) 表示: )/()(),( YXHXHYXI −= (7.24) 7.6.2 信息论在决策树学习中得以以及应用 在算法 7.4 中,我们在学习开始的时候只有一棵空的决策树,并不知道如何根据属性将实 例进行分类,我们所要做的就是根据训练实例集构造决策树来预测如何根据属性对整个实例 空间进行划分。设此时训练实例集为 X,目的是将训练实例分为 n 类,设属于第 i 类的训练实 例个数是 Ci,X 中总的训练实例个数为|X|,若记一个实例属于第 i 类的概率为 P(Ci)则: )()()()()()()( 2211 rr aIapaIapaIapXH ……++= ∑ = −= r i ii apap 1 )(log)( (7.22) ∑∑ == −= r i s j jiji bapbapYXH 11 )/(log)()/( (7.23) www.aibbt.com 让未来触手可及 192 ||)( X CCP i i = (7.25) 此时决策树对划分 C 的不确定程度为: ∑−= )(log)(),( ii CPCPCXH (7.26) 以后在无混淆的情况下将 H(X,C)简记为 H(X)。 决策树学习过程就是使得决策树对划分的不确定程度逐渐减小的过程。若选择测试属性 a 进行测试,在得知 jaa = 的情况下属于第 i 类的实例个数为 Cij 个。记 ||);( X CaaCiP ij j == ,即 P(Ci;a=aj)为在测试属性 a 的取值为 aj 时它属于第 i 类的概 率。此时决策树对分类的不确定程度就是训练实例集对属性 X 的条件熵。 )/(log)/()( jj i j aaCipaaCipXH ==−= ∑ (7.28) 又因为在选择测试属性 a 后伸出的每个 a=aj 叶结点 Xj 对于分类信息的的信息熵为固有: )()()/( jj j XHaapaXH == ∑ (7.29) 属性 a 对于分类提供的信息量为 I(X;a): )/()();( aXHXHaXI −= (7.30) 式(7.29)的值越小则式(7.30)的值越大,说明选择测试属性 a 对于分类提供的信息越大, 选择 a 之后对分类的不确定程度越小。Quinlan 的 ID3 算法就是选择使得 I(X;a)最大的属 性作为测试属性,也即选择使得式(7.29)最小的属性 a。 7.6.3 ID3 算法 在 ID3 算法中除去以信息论测度作为标准之外,还引入了增量式学习的技术。在 CLS 算 法中,因为每次运行开始的时候算法要知道所有训练实例,当训练实例集过大的时候,实例 无法立刻全部放入内存,会发生一些问题。Quinlan 在 ID3 算法中引入了窗口(windows)的 方法进行增量式学习来解决这个问题。下面给出 ID3 算法。 算法 7.5 ID3 算法 (1)选出整个训练实例集 X 的规模为 W 的随机子集 X1(W 称为窗口规模,子集称为窗口); (2)以使得(7.29)式的值最小为标准,选取每次的测试属性形成当前窗口的决策树; (3)顺序扫描所有训练实例,找出当前的决策树的例外,如果没有例外则训练结束; )/(log);()/( j ij j aaCipaaCipaXH ==−= ∑∑ )/(log)/()( j ij jj aaCipaaCipaap ===−= ∑∑ )/(log)/()( jj ji j aaCipaaCipaap ===−= ∑ ∑ (7.27) www.aibbt.com 让未来触手可及 193 (4)组合当前窗口的一些训练实例与某些在(3)中找到的例外形成新的窗口,转(2)。 为了在步骤(4)建立新的窗口, Quinlan 试验了两种不同的策略:一个策略是保留窗口的所 有实例,并添加从步骤(3)中获得的用户指定数目的例外,这将大大扩充窗口;第二个策略是 相当于当前决策树的每一个叶结点保留一个训练实例,其余实例则从窗口中删除,并用例外 进行替换。实验证明两种方法都工作得很好,但是如果概念复杂到不能发现固定规模 W 的任 意窗口的时候,第二种方法可能不收敛。 7.6.4 ID3 算法应用举例 表 7.2 给出了一个可能带有噪音的数据集合。它有四个属性,Outlook、Temperature、 Humidity、Windy。它被分为两类,P 与 N,分别为正例与反例。所要做的就是构造决策树将 数据进行分类。 因为初始时刻属于 P 类和 N 类的实例个数均为 12 个,所以初始时刻的熵值为: 124 12log24 12 24 12log24 12)( =−−=XH 如果选取 Outlook 属性作为测试属性则有,根据公式(2.8),此时的条件熵为: 5528.0)7 6log7 6 7 1log7 1(24 7 )8 7log8 7 8 1log8 1(24 8)9 5log9 5 9 4log9 4(24 9)/( =−−+ −−+−−=OutlookXH 如果选取 Temperature 属性作为测试属性则有: 6739.0)5 1log5 1 5 4log5 4(24 5 )11 7log11 7 11 4log11 4(24 11)8 4log8 4 8 4log8 4(24 8)/( =−−+ −−+−−=TempXH 如果选取 Humidity 属性作为测试属性则: 9183.0)12 8log12 8 12 4log12 4(24 12)12 8log12 8 12 4log12 4(24 12)/( =−−+−−=HumidXH 如果选取 Windy 属性作为测试属性则有: 1)10 5log10 5 10 5log10 5(24 10 )6 3log6 3 6 3log6 3(24 6)8 4log8 4 8 4log8 4(24 8)/( =−−+ −−+−−=WindyXH 表 7.2 样本数据集合 www.aibbt.com 让未来触手可及 194 可以看出 H(X/Outlook)最小,即有关 Outlook 的信息对于分类有最大的帮助,提供最 大的信息量,即 I(X;Outlook)最大。所以应该选择 Outlook 属性作为测试属性。并且也可 以看出 H(X)=H(X/Windy),即 I(X;Windy)=0,有关 Windy 的信息不能提供任何有关 分类的信息。选择 Outlook 作为测试属性之后将训练实例集分为三个子集,生成三个叶结点, 对每个叶结点依次利用上面过程则生成图 2.4 的决策树。 www.aibbt.com 让未来触手可及 195 图 7.7 表 7.2 所训练生成的决策树 ID3 算法有着广泛的应用,其中比较著名的是 C4.5 系统。C4.5 的新功能是它能够将决策 树转换为等价的规则表示,并且 C4.5 解决了连续取值的数据学习问题。 7.6.5 连续性属性离散化 决策树主要是用来学习离散性变量作为的属性类型的学习方法,连续性变量必须被离散 化才能够被学习。然而在一些算法当中(例如 C4.5),使得被离散化的连续性属性相对于离散 变量的属性来说更容易被选取。在这些算法当中,对于某个连续属性,首先将储存的训练实 例中的不同的值进行排序,然后选取每一对相邻的值的中点作为离散化时区分不同属性值的 标准。因为这些离散化后的属性值只有一个实例为代表,则这些离散化后的连续属性将被优 先选取。 Dougherty 采取了一种基于信息熵的过程对连续型的属性离散化。他们在进行决策树生成 之前对连续性变量全局的离散化,而不只是象在 C4.5 中那样只是基于某个结点的实例来进行 局部的离散化。因为局部的数据过于少而更容易受到数据当中噪音的干扰。这种方法基于信 息熵不断递归地对连续型属性的值进行二分来产生由多个属性值的离散型属性,并且采用基 于 MDL 标准停止标准。他们发现这种方法用于 C4.5 并不降低整个分类的正确性,反而有时会 提高它的正确性,并且它能够减小 C4.5 中树的大小。 Auer 提出了一个用局部的方法离散化连续型变量的方法,他的 T2 算法也是将连续变量分 为多个离散变量而不只是二分连续变量,它并不是项上面那样递归地对连续型变量二分,而 是进行彻底的搜索以找出一组 m 个间隔来使得在训练实例集上错误率的最小。m 的缺省值是 C+1,这里 C 是所要划分的类的数目。所以 T2 的复杂度与 26 fC 成正比,f 是属性个数。 www.aibbt.com 让未来触手可及 196 在 C4.5 Release8 (R8)中 Quinlan 提出了一种局部的、基于 MDL 的方法来对离散化后 的连续型属性的如果取值过多进行惩罚(penalize)。 实验数据表明,C4.5 R8 的方法在大数据集合当中进行离散化效果比较好,而 Dougherty 的全局离散化的方法在小数据集合当中效果比较好。T2 在数据被分为较少的类的时候工作较 好。 7.7 基于偏置变换的决策树学习算法 BSDT 构造好的决策树的关键在于选择好的属性。一般情况下,在众多能够拟合给定训练例子 的决策树中, 树越小则树的预测能力越强。要构造尽可能小的决策树,关键在于选择恰当的属 性。由于构造最小树问题是个 NP 完全问题,因此大量的研究只能采取用启发式策略选择好的 属性。属性选择依赖于各种对例子子集的杂质度量方法。杂质度量方法包括信息增益、信息 增益比、Gini-index、距离度量、J-度量、G 统计、χ2 统计、P0 零假设概率、证据权值、最小 描述长(MDL)、正交法度量、相关度和 Relief 等。不同的度量有不同的效果,因此还出现了单 元决策树与多元决策树的分别。对这些度量方法的比较进行了较为深入的研究,结论却是莫 衷一是的,没有一种算法在解决属性选择、数据噪声、数据递增、预剪枝与后剪枝及剪枝停 机标准等问题时占绝对优势。在一定程度上,经验的和直觉的东西代替了严密完备的理论证 明。 上述问题实际上就是关于决策树学习中的偏置问题。偏置在概念学习中具有重要作用。 Utgoff 指出没有偏置就没有归纳学习。所谓偏置,是指概念学习中除了原始训练例子集以外影 响假设选择的所有因素。这些因素包括:描述假设的语言;程序考虑假设的空间;按什么顺 序假设的过程;承认定义的准则等。偏置有两个特点:一是强偏置将概念学习集中于相对少 量的假设。反之,弱偏置允许概念学习考虑相对大量的假设;另一个特点则是正确偏置允许 概念学习选择目标概念,不正确的偏置则不能选择目标概念。当偏置很强且正确时,概念学 习能立即选择可用的目标概念,当偏置很弱且不正确时,概念学习的任务是十分困难的。 偏置可分为表示偏置与过程偏置两类。由于 ID3 算法家族缺少对背景知识的支持,是一 个相对较弱的偏置支持下的归纳学习方法,我们通过对表示偏置及过程偏置的变换,强化决 策树学习的偏置[199]。 7.7.1 偏置的形式化 在实现偏置变换之前,我们有必要对文中涉及到的各个基本概念予以形式化的描述。 定义 7.1 S 是定义在上的一个搜索空间。其中:属性向量 A={a1,…,am} 具有有限或无限个元素;类别向量 C={c1,…,ck}有有限个元素,对于给定的 A 和 C,F 是所有 概念的集合,T 是所有元组数为 n 的训练例子的集合;其中 L 表示一个学习算法簇。 定义 7.2 一个学习算法 l 定义了一个从 T 到 F 的映射,即: (7.31) 定义 7.3 DA×C 是在 A×C 上的一个概率分布;t 是定义在 A×C 上并服从 DA×C 的 n 个元 组。设 DC是在C上的一个概率分布,且属性集的同一性 IA(A1,A2)是指在给定概念 f 及 DC的 情况下将一随机属性赋予同一类的概率。即: FfAAATTLlfATlfATlPAAIA AD ∈∩⊆∩⊆∩∈== 210201021 ,))),,(()),(((),( LlFffTtt ftl ∈∈⎯⎯→⎯∈ },{}{),( www.aibbt.com 让未来触手可及 197 定义 7.4 假设目标概念为 fg,偏置的正确性 CorrB 可定义为: (7.32) 定义 7.5 设|S|表示 S 中元素个数,则可定义偏置的强度 StrB 为: (7.33) 定义 7.6 设 State0(S)= 与 State1(S)= 为搜索空间的两个状态,表 示偏置变换 BSR 定义为: 定义 7.7 设 DA 是在 A 上的一个概率分布,且学习算法的同一性 IL(l1, l2)是指在给定概念 f 及 DA 的情况下 l1 及 l2 将一随机训练例子 t 赋予同一类的概率。即: (7.34) 定义 7.8 l 的预测准确性 PA 定义为: (7.35) 定义 7.9 设 State0(S)= 与 State1(S)= 为搜索空间的两个状态,过 程偏置变换 BSP 定义为: 定理 7.1 设 l1 及 l2 为学习算法,当 PA(l1)≥PA(l2)成立时,选择 l1 具有更正确的偏置。 证明 当 PA(l1) ≥PA(l2)成立时,说明由 l1 生成的分类器能将更多的例子准确地分类。即: (7.36) 我们将偏置正确性概念投射到 DA×C 分布上以后,得到: 由于目标概念在很大程度上是由学习算法生成的分类器来具体体现的,因而偏置正确性 概念可以改写为: 将算法 l1 及 l2 代入上式并结合(7.36)式可以得到: 即:选择 l1 具有更正确的偏置。结论得证。 7.7.2 表示偏置变换 决策树学习算法是实际有效的,但由于缺乏对背景知识的支持,它不能处理各种类型的 泛化关系,而对于基于谓词逻辑的归纳算法(如 AQ11、INDUCE 等),这种功能是最基本且 FfLllTtftlftlPllIL AD ∈∩∈∩∈== 212121 ,)),,(),((),( StrB S= 1 CorrB P f a f a f F a ADgA = = ∈ ∩ ∈(() ()), State S State SBS R 01() ()⎯→⎯⎯ PA l P f a c f F t T c CDltAC () ( ( ) ),()= = ∈ ∩ ∈ ∩ ∈× State S State SBS P 01() ()⎯→⎯⎯ PfacPfacDlt DltAC AC×× =≥ =(()) (())() ()12 CorrB P f a cDgAC = =× (()) CorrB P f a cDltAC = =× (())() CorrB P f a c CorrB P f a cDlt DltAC AC1212 = = ≥ = =×× (()) (())() () www.aibbt.com 让未来触手可及 198 与学习过程本身密不可分的。缺乏背景知识的后果之一就是使决策树生成复杂化且不易于为 领域专家所理解。 很多系统都试图解决这个问题。例如:Cendrowska 的 PRISM 算法, Gaines 的 INDUCT 算法,以及后来 Quinlan, Lavrac 等援引其它技术将决策树修改得更易懂、更精确,但它们都 仅仅将注意力集中于包含在历史数据中的信息,力图从中挖掘出更多一点的可用资源。 我们提出了一种使基于表示偏置变换的、能够处理不同泛化关系的学习算法的预处理算 法。该方法首先对原始训练例子集进行预处理,调用泛化算法 CGAOI,使原始训练例子集达 到指定的概念层次;然后再对原始训练例子集进行预处理。 为了实现提出的方法,我们首先引入了概念层次的概念。 定义 7.10 一个概念层次是从一组较低级概念向高一级概念的映射序列。一棵概念层次树 则是将这些映射序列以树的形式组织起来。 定义 7.11 一个原始训练集 E0 对应于一个概念层次森林 F = {F1,…,Fϖ} 。其中,Fi 是与第 i 个属性 Ai 相对应的一棵概念层次树集合,1≤i≤ϖ。Fi = {T1,…,Tτ},其中,Tj 是属性 Ai 的 第 j 棵概念层次树,1≤j≤τ 。 定义 7.12 当属性 Ai 不存在概念层次树时,Fi = NULL。 定义 7.13 一个概念层次库 D 用于保存历史概念层次树。 在原始训练集的所有属性中,许多属性都存在各自固有的概念层次。例如,一个商品的 产地在北京,我们就可以说是在中国,进而也可以说产自亚洲。这就是一个{Product Place : Beijing, China, Asia}的概念层次。 概念层次用于表达控制泛化及特化过程所必需的背景知识。通过将不同层次的概念组织 成一个树形分类,概念空间可以从泛化到特化的顺序偏序地表示。最泛化的概念就是内涵为 空的描述,可用关键字“ANY”来表示;而最特化的概念就是树形分类中的叶子。利用一个 概念层次,我们就可以将所发现的规则表述为简洁明了、更易懂、更泛化及逻辑性更强的形 式。 7.7.3 算法描述 1. 分类制导的面向属性算法 CGAOI 分类制导的面向属性归纳方法 CGAOI 能够将原始关系泛化到指定的概念层次。我们提出 了由分类制导的面向属性归纳方法 CGAOI。该方法是一种有教师学习方法。它作为分类学习 任务的先导,对原始训练例子集进行预处理,并柔性地输出指定层次的泛化关系。 该算法在原始训练例子集的分类特征的制导下,在实现面向属性归纳的基本泛化操作 如:属性去除、概念提升、属性阈值控制及频数传播等操作的同时,实现泛化一致性检查、 数据噪声去除、概念层次自动生成等操作。 算法 7.6 泛化算法 CGAOI。 输入:原始训练例子集 E0, 属性集 A0, 当前属性 A;概念层次树 T, 指定概念层次 L;指 定属性控制阈值 Y;当前概念层次, 当前属性控制阈值 Y0。 输出:指定概念层次训练例子集 E, 属性集 A, 频数 CT。 (1) 调用算法 GCCC 进行泛化一致性检查与噪声去除,返回 Ret1; (2) 如果泛化一致性检查失败,则 return -1; (3) 在 Y 及 L 控制下作概念提升操作; (4) 属性去除及频数传播操作; www.aibbt.com 让未来触手可及 199 (5) 返回 0。 定理 7.2 令 BSR = CGAOI 算法,则通过 CGAOI 操作进行的表示偏置变换得到的偏置是更 强且正确的。 证明 设变换前后的属性集、偏置正确性、偏置强度分别为 A0、A1;CorrB0、CorrB1;StrB0、 StrB1。 ① 由于 CGAOI 算法并没有改变目标概念以及在 C 的概率分布,因此 CGAOI 操作得 到的偏置并不改变原偏置的正确性; ② 由于 CGAOI 算法使得 A1≤A0,从而有 |S1|=|A1×C×F×T×L|≤|S0|=|A0×C×F ×T×L| ,由偏置强度定义可以推出:StrB1 ≥ StrB0。 从①、②可以证得:通过 CGAOI 算法进行的表示偏置变换得到的偏置是更强且正确 的。 2. 预处理算法 PPD 在该算法中,我们以数据库中特定的属性值作为泛化过程及特化过程的分界,当属性控 制阈值大于当前属性值(或层次级别低于当前级别)时,调用泛化过程;反之则调用特化过 程将原始训练例子集归约到相应的概念层次中。 算法 7.7 预处理算法 PPD。 输入:原始训练例子集 E0;属性集 A0;概念层次森林 F ;概念层次库 D;指定概念层次 L; 指定属性控制阈值 Y;当前概念层次;当前属性控制阈值 Y0; 输出:指定概念层次训练例子集 E;属性集 A; (1) 对属性集合 A0 中的每个属性 Ai 做: (2) Ai 的概念层次树 Fi 是否为空; ① 空则调用算法 AGCH 自动生成 Ai 的概念层次树 Fi,返回 Ret1; ② Ret1=-1,则转到步骤 1;/* Ai 无概念层次树 */ (3) 如果 (Y =Y0 ∩ L = L0),则转到步骤(1); (4) 如果 (Y L0),则调用泛化算法 CGAOI,返回 Ret2; ① Ret2=-1,则转到步骤(1);/* 失败,则放弃泛化 */ ② Ret2=0,则转到步骤(7); /* 泛化成功 */ (5) 不满足上述条件,则转到步骤 1; (6) 调用算法 MEA 进行训练例子集及属性集维护; (7) 调用算法 STCH 将 Ai 的概念层次树 T 存入概念层次库 D 中; (8) 转步骤(1)。 7.7.4 过程偏置变换 各种决策树学习算法各有所长,博采众长正是我们所提出的基于偏置变换的决策树学习算 法的基本点。同时,学习算法及其学习任务与训练集的大小、维数、所属领域等属性有着复 杂的关系,不能用简单的控制分支语句来实现对最优算法的选择。因此,我们引入了两级式 基于偏置变换的决策树学习算法的概念(见图 7.8)。 本算法是基于两级式及多策略的思想进行设计的。两级式学习的着眼点在于:第一级的 基于范例推理用于解决从众多评介标准不一、适应领域不一、训练例子规模不一的决策树学 习算法中找到一个最适合解决原始训练例子集的学习算法;第二级的学习任务用于分类器的 构造,即利用选出的决策树学习算法从一组无次序、无规则的事例中推理出决策树表示形式 的分类规则。 www.aibbt.com 让未来触手可及 200 基于范例推理是由目标范例的提示而获得记忆中的源范例,并由源范例来指导目标范例 求解的一种策略。这里,目标范例是由各种决策树算法运行经典范例库而生成的。对一给定 原始训练例子集,我们首先抽取它的检索信息元组θ作为检索信息到范例库中进行检索。检索 过程的相似度符合定义 7.25 中给出的选优指标ζ。 多策略学习体现在本算法不局限于一个学习算法。同时还为引入新算法和经典例子集提 供了机制。这种机制保证了新引入算法与原注册算法、新引入经典范例集与原注册经典范例 集间的无缝连接。这种机制是由人机交互纳入接口及经典范例库维护算法实现的。 定义 7.14 偏置系数 Cb = [ Cb 1 ,…, Cb ϖ ]T 表示原始训练集的各个属性与待学习任务的相 关程度;其中:ϖ是原始训练例子集的属性个数。 定义 7.15 代价系数 Cc = [ Cc 1,…, Cc ϖ ]T 表示为得到原始训练集的各个属性所付出的代价; 其中:是原始训练例子集的属性个数 www.aibbt.com 让未来触手可及 201 图 7.8 BSDT 算法结构 定义 7.16 原始训练例子集 E 是非 BSDT 算法构造的面向目标学习任务的训练例子集。 定义 7.17 一个算法α是一个在 BSDT 中注册的且已被实验证实可行的决策树学习算法。 一个算法的名字是该算法的唯一标志。一个算法集Α是在 BSDT 算法中注册的所有算法α的集 合。 定义 7.18 算法索引表 AI 是在 BSDT 算法中注册的所有算法α的名字的集合。算法集Α与 算法索引表 AP 存在着一一对应的关系。 定义 7.19 范例属性描述集Θ是一个定义在经典范例库上的六元组<π,Se,Sd,St,η, Na>。 其中:π表示由算法δ处理的经典训练例子集 Et 所属的域名;Se 表示 Et 的大小;Sd 表示 Et 的 维数;St 表示符合 Et 且由算法δ生成决策树所需的时间;η表示该决策树的错分率;Na 表示算 法δ的名字。这里 Na 作为范例库的类别标志。 定义 7.20 检索信息元组θ是一个定义在原始训练例子集上的三元组。其中,a1 表示给定的原始训练例子集 E 所属的域名;a2 表示 E 的大小;a3 表示 E 的维数。 定义 7.21 范例库 CE 是由 BSDT 算法生成的范例的集合。它的六个属性由范例属性描述集 Θ描述;类别 Na∈算法索引表 AP;例子 ce∈CE 由算法 ANA 生成。 定义 7.22 域名π∈域名集合Π。在 BSDT 中,Π={1-农业, 2-工业, 3-商业, 4-教育, 5- 电子,6-物理, 7-化学, 8-数学, 9-医药, 10-其它}。 定义 7.23 经典范例库 TEB = 例子索引表 EI∪经典范例表 TET。例子索引表 EI 是在 BSDT 算法中注册的所有域名π的集合;经典范例表 TET 是一个以域名π命名的从某一领域得到训 练例子集合。 定义 7.24 一个选优指标ζ是由范例属性描述集Θ与检索信息元组θ共同决定的范例检索 标准。它由下式确定: 其中,λ1,λ2,λ3 分别是元组阈值,维数阈值及树控阈值,在算法运行过程中可调。在 BSDT 中,λ1,λ2,λ3 的缺省值分别为(其中,Tin, ES, Eη分别为经典范例库中的元组间隔、错分率 及生成时间的期望值): )()()()( 323121 ληλλπζ <•∧<−∧<−∧== tde SSaSaa ANE 算法 TCBM 算法 经典范例库 新引入算法 ANA 算法 检索信息集 范例库 选优算法 (CBR) 范例属性描述集 后台处理 报告 原始训练例 子集 最优算法 知识库 PPD 算法 训练例子集 www.aibbt.com 让未来触手可及 202 定义 7.25 一个算法是最优算法Γ当且仅当它是满足选优指标ζ且使λ3 达到最小的算法。 定义 7.26 后台算法处理报告 REP 是一个文本文件 ErrRep.txt。当 BSDT 在指定路径找不 到最优算法Γ时,就会将出错信息记录下来,通知管理人员处理。 定义 7.27 在 BSDT 算法中注册表示下列过程: (1)将一个算法的名字 Na 存入算法索引表 AI,将算法本身存放在 BSDT 指定路径下; (2)将一个例子集的名字 Nes 存入例子索引表 EI,将经典范例表 TET 存放在经典范例库中。 7.7.5 基于偏置变换的决策树学习算法 BSDT BSDT 算法首先调用选优算法 SM 求出最优算法Γ。然后就到系统目录及当前工作目录 下去寻找该算法。如果没有找到就应该从范例库及算法索引表中去掉它,以免引起下一次寻 找失败。 选优算法 SM 实际上是一个运用基于范例推理的过程。对一给定的原始训练集,首先抽 取出它的检索信息元组θ,再到范例库中查找出满足选优指标ζ的最优算法。当范例库空时或 SM 算法失败时,令 GSD 作为最优算法的默认选择。 由于在算法运行中应减少不必要的干扰,BSDT 日志在此可作为管理员对系统进行干预 的一个手段。 算法 7.8 基于偏置变换的决策树学习算法 BSDT。 输入:原始训练集; 输出:目标知识库; (1) 调用预处理算法 PPD; (2) 调用选优算法 SM 求出最优算法Γ; (3) 在指定路径上搜索算法Γ; (4) 如果算法存在: ① 调用Γ; ② 生成决策树 and/or 产生式规则集; ③ 将学习结果处理后存入目标知识库。 (5) 算法不存在: ① 令ρ=3,调用范例库维护算法 CBM 从范例库及相应数据结构中删去Γ; ② 转(2); (6) 填写 BSDT 日志; 7.7.6 经典范例库维护算法 TCBM TCBM 算法实现对经典范例库的各种操作,如:增加新的例子集、例子集版本升级、删 除例子集以及向例子库的指定例子集中增加、删除例子等。只有当有新例子及例子集的增删 及修改已有例子集时才能激活该算法。由于采取了逐级激活的方式,TCBM 算法在修改了经 典范例库后,会自动调用在算法索引表中的各算法重新执行以构造与经典范例库内容一致的 范例库,而范例库及相关数据结构的修改以会直接影响最优算法的选取。 2,2,1.0 321 ηλλλ EET S in ×==×= www.aibbt.com 让未来触手可及 203 算法 7.9 经典例子库维护算法 TCBM。 输入:原始例子库、例子索引表,例子集 S0,域名π,维护操作算子ρ 输出:修改后例子库、例子索引表 (1) IF ρ<1 and ρ>5 THEN 返回。 (2) IF ρ=1,THEN:/* 增加新例子集 */ 调用 ANE 算法增加新例子; (3) IF ρ=2,THEN:/* 经典范例库版本升级 */ ① 检查例子索引表,域名π是否存在; ② 存在: a 从例子库删除相应表; b 删除例子索引表中相关项; ③ 调用 ANE 算法引入新例子集; (4) IF ρ=3,THEN:/* 例子集删除 */ ① 检查例子索引表,域名π是否存在,否则返回; ② 从库中删除相应表; ③ 从例子索引表中删除域名π; (5) IF ρ=4,THEN:/* 增加例子库例子 */ ① 若域名π不在索引表中,则调用 ANE 算法增加新域; ② 进行记录值的适当性检测,不适当的记录值被舍弃;将训练集 S0 依次存入相应 表中; (6) IF ρ=5,THEN:/* 删去例子库例子 */ ① 若域名π不在索引表中,则返回; ② 删去表中例子; (7) Extract(S0, π); /* 为经典例子库生成例子 */ (8) 存储例子; 7.7.7 偏置特征抽取算法 偏置,也就是候选算法的特征能够帮助我们利用选优算法自动选取最优偏置。这些特征 按照定义 7.19 的形式进行组织。当经典例子库或算法索引表发生变化时,该过程即被激活。 算法 7.10 偏置特征抽取算法 输入:经典例子库 CEB, 注册算法 RA, 例子集 ES, 例子索引表 EI, 算法索引表 AI, 范例库 CB, 操作算子 OP 输出:修改后的 CB (1) If op=1 then /* CB 是空的 */ { If EI = NULL || AI = NULL return; (2) For i=1 to maxRA (3) For j=1 to maxEI (4) For k=1 to Interval do { 用算法 AI(i)在例子集 EI(j)上生成一个分类器, 并根据定义 7.19 生成一个数据 项; 将数据项存入 CB; } (5) Else if op=2 then /* 添加一个新算法 */ www.aibbt.com 让未来触手可及 204 (6) { For i=1 to maxEI (7) For j=1 to Interval do { 用算法 RA 在例子集 EI(j)上生成一个分类器, 并根据定义 7.19 生成一个数据项; 将数据项存入 CB; } (8) Else if op=3 then /* 添加一个新的例子集 */ (9) { For i=1 to maxRA (10) For j=1 to Interval do { 用算法 AI(i)在例子集 ES 上生成一个分类器, 并根据定义 7.19 生成一个数据 项; 将数据项存入 CB; } (11) Else if op=4 then /* 删除一个老的注册算法 */ 从 CB 中删除 RA 的相关项; (12) Else if op=5 then /* 删除一个老的注册例子集 */ 从 CB 中删除 ES 的相关项; (13) Else return failed; 根据 CEB 的大小调整 Interval; 7.7.8 改进的决策树生成算法 GSD 在构造 ASF 函数时,我们用到了代价系数 Cc 及偏置系数 Cb,并为它们建立了缺省设置。 下面给出了属性选择函数 ASF 的构造方法。 定义7.28 E 0={e0 1,…,e0 υ}是原始训练例子的集合,A 0={A0 1,…, A0 ϖ}是E0的属性集。其中, υ是最大原始训练例子数,ϖ是E0的最大属性数;Ai={V1,…, V v}表示属性i的v个相互区别的取 值。 定义7.29 E = {e1,…, e n },AT= A∪AX = {A1,…, A m} ∪ AX= {A1,…, A m, Am+1},是通 过引入背景知识及用CGAOI进行预处理后得到的训练例子集与属性集。其中,1≤n≤υ;2≤m ≤ϖ。 定义7.30 AX = CT = [ CT 1,…, CT n ] T 是在CGAOI算法中得到的传播频数。 定义 7.31 C={C1,…,Ck}是原始训练例子集 E 中 k 个可能的类别。Pi 表示类 Ci 在 E 中出现 的概率。 定义7.32 在决策树的生成过程中,每一次面向属性的测试都必须使属性选择函数ASF的 值达到最大。 定义7.33 ASF函数定义如下: 其中,f(Ai)表示属性 i 的效益;g(A i) 表示属性 i 的偏置值;h(Ai) 表示属性 i 的代价; 1≤i≤k 。 (1) 右式给出了 f(Ai)的定义。其中UI 表示有用信息;NI 表示无用信息;TI 表示总信息= UI + NI。 )( )()()( i ii i Ah AgAfAASF •= I I I I T N T Uf −== 1() www.aibbt.com 让未来触手可及 205 令: (2)g(Ai) 定 义 为: (3)h(Ai) 定义为: 从而得到的 ASF 表达 式: 我们的决策树生成算法 GSD 是 Quinlan 的 C4.5 算法的一个修改版。修改体现在输入及属性选 择等两个方面。GSD 的输入采用预处理算法 PPD 输出的指定概念层次的训练例子集;并用属性 选择函数 ASF 代替了 C4.5 的属性选择标准。 算法 7.11 决策树生成算法 GSD。 输入:训练集 输出:决策树,规则集 (1) 在 Gain、Gain Ratio 及 ASF 中选择出标准 CR; (2) 本如果所有数据项属于同一类,则决策树是一个标有该类标志的叶子; (3) 否则,用标准 CR 选取最佳测试属性把数据项分为子集; (4) 递归地调用(2)、(3)过程为每一个子集生成一棵决策树; (5) 生成决策树并转化为规则集。 7.7.9 实验结果 BSDT 算法用到了下列数据集(见表 7.3)。 表 7.3 实验数据集 数据集 #训练例子 数 #属性数 #类别数 #测试集例 子数 anneal 898 38 5 - I I I I I I I I IIII II f fT U T N T NTNTHNHI NHTHI ∆− ∆− −= −=⎥⎦ ⎤ ⎢⎣ ⎡−=⎥⎦ ⎤ ⎢⎣ ⎡= ⎥⎦ ⎤ ⎢⎣ ⎡=−=−=∆− −=∆ 21() ()112 log)(log)(log)()( )()( 222 () 1 1 2 21() )(),( ,log)( ),()(),( Gain i v i i l j k j j jjj ll f EIE EEAEnt CTE CE PPPEI EAEntEIEAGainI − = = −= = • ∩ =−= −==∆ ∑ ∑ i b i CAg =)( 1)( += i c i CAh 1 )21(() () + •−= − c bGain C CASF www.aibbt.com 让未来触手可及 206 breast-cancer credit genetics glass heart hypo letter sonar soybean voting diabetes 699 490 3,190 214 1,395 2,514 15,000 208 683 300 768 10 15 60 9 16 29 16 60 35 16 8 2 2 3 6 2 5 26 2 19 2 2 - 200 - - - 1,258 5,000 - - 135 - 这些数据集中的一部分来源于 UCI 测试库 (ftp://ics.uci.edu/pub/ machine-learning-database)。在测试数据集的时候,我们采取了下述措施: 将没有给定测试集的数据集 DS(如 anneal、breast-cancer 等)利用随机选取的办法分为 测试集 TS 与学习集 LS 并令 TS = DS×10%; z 用 C4.5 算法在 LS 上用 10 次交叉验证生成分类器 C0,在 TS 上测试后得到的预测 准确度 P0; 表 7.4 预测准确度比较 数据集 P0 P1 P2 Anneal breast-cancer credit genetics glass heart hypo letter sonar soybean voting diabetes 96.9±10.4 95.7±2.1 84.8±2.5 98.7±4.4 68.9±9.2 77.8±4.3 93.2±4.2 88.4±9.8 65.4±7.1 78.9±5.9 95.8±1.3 74.3±3.0 97.1±9.7 96.2±1.7 87.4±1.8 98.7±4.4 75.2±6.5 79.6±3.9 92.7±3.9 93.7±8.7 74.7±12.1 84.8±6.5 95.9±1.6 76.1±3.1 97.8±10.8 97.2±2.5 89.5±2.1 98.7±4.4 75.2±6.5 79.8±3.7 92.7±3.9 93.7±8.7 74.7±12.1 84.8±6.5 95.9±1.6 77.2±2.3 z 用 BSDT 算法的 gain ratio 属性选取标准在 LS 上用 10 次交叉验证生成分类器 C1, 在 TS 上测试后得到的预测准确度 P1; z 用 BSDT 算法的 ASF 属性选取标准在 LS 上用 10 番交叉验证生成分类器 C2,在 TS 上测试后得到的预测准确度 P2; z 每种算法都进行了 15 次试验的平均值,以期得到稳定的预测模型; z 将 P0、P1 及 P2 的结果进行比较,结果见表 7.4。 www.aibbt.com 让未来触手可及 207 从表 7.4 可以看出:所有的数据集经 BSDT 算法生成的决策树分类预测模型进行分类的 预测准确度都改善了。由代价系数及偏置系数定义的 ASF 函数,预测准确度得到明显提高。 实验结果表明:ASF 函数与 BSDT 算法是行之有效的。 我们在 BSDT 算法中实现了一种可以集成多种决策树学习算法的方法。它是一种集成多 种机器学习算法的有效途径,并保证最佳的表示偏置与过程偏置的选择,从而支持多策略学 习算法。 7.8 归纳学习的计算理论 学习的计算理论主要研究学习算法的样本复杂性和计算复杂性。本节重点讨论 Gold 学 习理论和 Valiant 学习理论,并将它们进行比较。 对于建立机器学习科学,学习的计算理论非常重要,否则无法识别学习算法的应用范围, 也无法分析不同方法的可学习性。收敛性、可行性和近似性是本质问题,它们要求学习的计 算理论给出一种令人满意的学习框架,包括合理的约束。这方面的早期成果主要是基于 Gold 框架。在形式语言学习的上下文中,Gold 引入收敛的概念,有效地处理了从实例学习的问题。 学习算法允许提出许多假设,无须知道什么时候它是正确的,只要确认某点它的计算是正确 的假设。由于 Gold 算法的复杂性很高,因此这种风范并没有在实际学习中得到应用。 基于 Gold 学习框架,Shapiro 提出了模型推理算法研究形式语言与其解释之间的关系, 也就是形式语言的语法与语义之间的关系。模型论把形式语言中的公式、句子理论和它们的 解释 ─ 模型,当作数学对象进行研究。Shapiro 模型推理算法只要输入有限的事实就可以 得到一种理论输出[Shapiro 1981]。 1984 年 Valiant 提出一种新的学习框架[Valiant 1984]。它仅要求与目标概念具有高 概率的近似,而并不要求目标概念精确的辨识。Kearns、Li、Pitt 和 Valiant 对可以表示为 布尔公式的概念给出了一些新的结果。Haussler 应用 Valiant 框架分析了变型空间和归纳偏 置问题,并给出了样本复杂性的计算公式。 7.8.1 Gold 学习理论 Gold 的语言学习理论研究引入两个基本概念,即极限辨识和枚举辨识,这对早期的归纳推 理的理论研究起了非常重要的作用[Gold 1967]。 极限辨识把归纳推理看作一种无限过程,归纳推理方法的最终或极限行为可以看作是它 的成功标准。 假设 M 是一种归纳推理方法,它企图正确地描述未知规则 R。假设 M 重复运行, R 的实例集合则愈耒愈大,形成M 推测的无限序列 g1, g2, …。如果存在某个数 m,使得 gm 是 R 的正确描述, gm=gm+1=gm+2=…, 那么 M 在这个实例序列的极限正确地辨识 R。 M 可以看作对未知规则 R 学习愈来愈多,成功 地修改它关于 R 的推测。如果有限次后 M 停止修改它的推测,最后的推测就是 R 的正确描述, 那么在这个实例序列的极限 M 正确地辨识 R。注意, M 不能确定它是否会收敛到一个正确的 假设,因为新的数据与当前的推测是否会发生矛盾并不知道。 枚举辨识是第一种方法推测多项式序列的抽象,即对可能的规则空间进行系统搜索,直 到发现与迄今为止的所有数据相一致的推测。假设规定了规则的具体领域,有一个描述枚举, 即 d1,d2, d3, …, 以致于领域中的每一条规则在枚举中有一种或多种描述。给定一条规则的 www.aibbt.com 让未来触手可及 208 某个实例集合,枚举辨识方法将通过这个表,找到第一个描述 d1,即与给定的实例相容,那 么推测为 d1。这种方法不能确定是否会达到正确的极限辨识。如果实例表示和相容关系满足 下面两个条件,那么枚举方法保证极限辨识该领域中的全部规则: (1) 一个正确假设总是与给定的实例相容。 (2) 任何不正确的假设与实例足够大的集合或与全部集合不相容。 为了枚举方法是可计算的,枚举 d1,d2, d3, …必须是可计算的,它必须能够计算给定 的描述与给定的实例集合是相容的。 算法 7.12 枚举辨识算法 输入: •一组表达式的集合 E = e1,e2,…。 • 谕示(oracle) TE 提供足够的目标实例集。 • 排序信息的谕示 LE。 输出: 一系列假设断言 H1, H2, …, 每个假设 Hi 都在 E 中,并与第 i 个实例一致。 过程: (1) 初始化,i ←1; (2) examples ← emptyset; (3) Loop: 3.1 调用 TE(), 将 example 加到集合 examples; 3.2 While LE(ei,+x) = no, +x, 或者 LE(ei,-x) = yes, 对反例集-x, i ← i + 1; (4) 输出 ei。 7.8.2 模型推理系统 模型推理问题是科学家所面临的问题抽象,他们在具有固定概念框架的某种领域里工作, 进行试验,试图找到一种理论可以解释他们的结果。在这种抽象中研究的领域是对给定的一 阶语言 L 某种未知模型 M 的领域,实验是检测 M 中 L 语句的真值,目标是寻找一组正确假 设,它们包含全部正确的可测试的句子。 L 语句分成两个子集:观测语言 Lo 和假设语言 Lh 。假设 □ ∈ Lo ⊂ Lh ⊂ L' 其中□是空语句。那么模型推理问题可以定义如下:假设给定一阶语言 L 和两个子集:观测语 言 Lo 和假设语言 Lh。另外对 L 的未知模型 M 给定一种处理机制 oracle。模型推理问题是寻 找 M 的一种有限的 Lo ─- 完备公理化。 求解模型推理问题的算法称为模型推理算法。模型 M 的枚举是一个无限序列 F1, F2, F3, ⋯, 其中 Fi 是关于 M 的事实,Lo 的每个语句α发生在事实 Fi = <α,V>,i > 0 。模型推理算法一次 读入给定观测语言 Lo 的模型的一种枚举,一个事实,产生假设语言 Lh 的语句的有限集称为算 法的推测。一种枚举模型推理算法如下。 算法 7.13 枚举模型推理算法 www.aibbt.com 让未来触手可及 209 h 是整个递归函数。 设Sfalse 为{□},Strue 为{},k 为 0。 repeat 读入下一个事实 Fn =<α,V>, α加到 Sv, while 有一个α∈Sfalse 以致于 Tk ⊢n α 或有一个αi ∈ Strue 以致于 Tk ¬⊢n(i) αi do k = k+1, 输出 Tk。 forever 上面算法中 T ⊢nα表示在推导 n 步或少于 n 步时,假设语句 T 可以推导出α。T ¬⊢n(i) α 表示在推导 n 步或少于 n 步时, 假设语句 T 不能推出α。推导中假设是单调的。Shapiro 证 明这种算法是极限辨识。这种算法功能强且灵活,可以从事实推出理论,是一种递增算法。 7.8.3 Valiant 学习理论 Valiant 认为一个学习机必须具备下列性质: (1) 机器能够证明地学习所有类的概念。更进一步,这些类可以特征化。 (2) 对于通用知识概念类是合适的和不平常的。 (3) 机器演绎所希望的程序的计算过程要求在可行的步数内。 学习机由学习协议和演绎过程组成。学习协议规定从外部获得信息的方法。演绎过程是 一种机制,学习概念的正确识别算法是演绎的。从广义来看,研究学习的方法是规定一种可 能的学习协议,使用这种协议研究概念类,识别程序可以在多项式时间内演绎。具体协议允 许提供两类信息。第一种是学习者对典型数据的访问,这些典型数据是概念的正例。要确切 地说,假设这些正例本质上有一种任意确定的概率分布。调用子程序 EXAMPLES 产生一种这样 的正例。产生不同例子的相对概率是分布确定的。第二个可用的信息源是 ORACLE。在最基本 的版本中,当提交数据时,它将告诉学习该数据是否是概念的正例示。 假设 X 是实例空间,一个概念是 X 的一个子集。如果实例在概念中则为正例,否则为反 例。概念表示是一种概念的描述,概念类是一组概念表示。学习模型是概念类的有效的可学 习性。Valiant 学习理论仅要求对目标概念的很好近似具有极高的概率。允许学习者产生的 概念描述与目标概念有一个小的偏差ε,它是学习算法的一个输入参数。并且,允许学习者 失败的概率为δ,这也是一个输入参数。两种概念之间的差别采用在实例空间 X 的分布概率 D 来评测: ∑ ≠∈ = )()(, 21D 21 )(),(diff xcxcXx xDcc (7.37) 根据协议,一个概念类 C 是可学习的当且仅当有一种算法 A,使用协议,对所有的目标概念 表示 c* ∈ C 和全部分布 D, (1) 执行时间是与 ε 1 , δ 1 ,c* 数目和其它相关参数有关的多项式。 www.aibbt.com 让未来触手可及 210 (2) 输出 C 中的概念 c 具有概率 1-δ, diffD(c,c*)<ε Valiant 学习理论中,有两种学习复杂性测度。一种是样本复杂性。这是随机实例的数 目,用以产生具有高的概率和小的误差。第二种性能测度是计算复杂性,定义为最坏情况下 以给定数目的样本产生假设所要求的计算时间。 设 L 是学习算法, C 是例示空间 X 上的一类目标概念。对于任意的 0<ε,δ<1, ),( δεL cS 表示最小的样本数 m 使任意目标概念 c ∈ C , X 上任意分布,给定 m 个 c 的随机样本,L 产生 一个假设,其概率至少为 1-δ,误差最大为ε。 ),( δεL cS 称为目标类 c 的 L 样本复杂性。 下面我们讨论两种学习算法的样本复杂性。 1.学习合取概念的分类算法 该算法的内容如下: (1) 对于给定的样本找出每个属性最小的主原子。这些原子合取形成假设 h。 (2) 如果 h 中不包含反例,那么返回 h,否则得到结果,认为样本与任何纯合取概念不 一致。 Haussler 分析这种算法,得出其样本复杂性 ),( δεL cS 为 εεδδεεδ /))1log()1(log(),(/))1(log( 10 nCSnC L c +≤≤+ (7.38) 其中 C0,C1 是正的常数。 2.学习纯合取概念的贪婪算法 算法 7.14 学习纯合取概念的贪婪算法 (1) 对于给定的样本找出每个属性最小的主原子。 (2) 开始纯合取假设 h 为空,当样本中有反例时则做 2.1 在所有属性中,找到最小的主原子,它删除最多的反例,把它加到 h, 如果没有最小主原子可以删除任何反例,则循环结束。 2.2 从样本中去掉已删除的反例。 (3) 如果没有反例则返回 h,否则报告样本与任何纯合取概念不一致。 Haussler 在文章 [Haussler 1988a] 中详细讨论了该算法的样本复杂性问题,并给出如 下结果: εεδδεεδ /)))1(log()1(log(),(/))log()1(log( 2 10 snsCSs nsC L c +≤≤+ (7.39) 其中 C0,C1 是正常数, s 为纯合取概念中最大的原子数。 由上看出,Valiant 学习理论,仅要求学习算法产生的假设能以高的概率很好接近目标 概念,并不要求精确地辨识目标概念。这种学习理论是“几乎大体正确”辨识,有时简称为 PAC(Probably Approximately Correct)理论。Valiant 学习理论比 Gold 学习理论更有实际 意义。 习 题 1. 何谓归纳学习,其主要特点是什么? 2. 通过实例,说明选择型和构造型泛化规则的用途。 3. 什么是决策树学习中的偏置问题,简述几种偏置学习算法。 www.aibbt.com 让未来触手可及 211 4. 何谓假设空间?假设空间中的各假设间存在什么关系? 5. AQ 学习方法遵从的一般归纳推理模式是什么样的?为什么说 AQ 学习的过程就是搜索假设 空间的过程? 6. 结合规则空间排序示意图,描述变型空间方法的基本思想。 6. 给出候选项删除算法用于下列数据集的过程: 正实例: a) object(red, round, apple) b) object(green, round, mango) 负实例: a) object(red, large, banana) b) object(green, round, guava) 7. 阐述决策树学习方法及其适用场合。 8. 在构造决策树的过程中,测试属性的选取采用什么原则?如何实现? 9. 叙述 ID3 算法的基本思想和建树步骤。 10. 给定下面的数据,回答问题。 StudiedHard HoursSelptBefore Breakfast GotA No 5 Eggs No No 9 Eggs No Yes 6 Eggs No No 6 Bagel No Yes 9 Bagel Yes Yes 8 Eggs Yes Yes 8 Cereal Yes Yes 6 Cereal Yes (1) GotA 的初始熵为多少? (2) 决策树算法(ID3)会选择哪个属性作为根结点? (3) 构造该决策树。 11. C4.5 算法对 ID3 算法的改进体现在哪些方面。 12. 何谓学习算法的样本复杂性和计算复杂性? 13. 为什么 Valiant 学习理论比 Gold 学习理论更有实际意义? www.aibbt.com 让未来触手可及 212 第八章 支持向量机 Vapnik 等人从 20 世纪 60 年代开始就研究有限样本的机器学习问题。经过几十年的研究, 到 90 年代中期终于形成了一个较完整的理论体系,即统计学习理论[Vapnik 1995]。近几年来, 在统计学习理论的基础上又发展出一种新的机器学习方法,即支持向量机(Support Vector Machine, SVM)。支持向量机是建立在计算学习理论的结构风险最小化原则之上,其主要思想 是针对两类分类问题,在高维空间中寻找一个超平面作为两类的分割,以保证最小的分类错 误率[Vapnik 1997]。SVM 一个重要的优点是可以处理线性不可分的情况。 8.1 统计学习问题 8.1.1 经验风险 学习的目的是根据给定的训练样本求系统输入输出之间的依赖关系。学习问题可以一般 地表示为变量 y 与 x 之间存在的未知依赖关系,即遵循某一未知的联合概率 F(x,y)。机器学习 问题就是根据 n 个独立同分布观测样本: (x1,y1),(x2,y2),…,(xn,yn) (8.1) 在一组函数{f(x,w)}中,求一个最优的函数 f(x,w0),对依赖关系进行估计,使期望风险 R(w) = ⌡⌠ L(y,f(x,w))d F(x,y), (8.2) 最小。其中,{f(x,w)}称作预测函数集,w 为函数的广义参数。{f(x,w)}可以表示任何函数集。 L(y,f(x,w))为由于用 f(x,w)对 y 进行预测而造成的损失。不同类型的学习问题有不同形式的损 失函数。 在传统的学习方法中,采用了所谓的经验风险最小化(Empirical Risk Minimization, ERM) 准则,即用样本定义经验风险 ∑ = = l i ii wxfyLlwmp 1 )),(,(1)(Re (8.3) 机器学习就是要设计学习算法使 Remp(w)最小化,作为对(8.2)式的估计。 8.1.2 VC 维 统计学习理论是关于小样本进行归纳学习的理论。其中一个重要的概念是 VC 维 (Vapnik-Chervonenkis Dimension)。模式识别方法中 VC 维的直观定义是:对一个指示函数集, 如果存在 h 个样本能够被函数集里的函数按照所有可能的 2h 种形式分开,则称函数集能够把 h 个样本打散。函数集的 VC 维就是它能打散的最大样本数目 h。若对任意数目的样本都有函 数能将它们打散,则函数集的 VC 维是无穷大。有界实函数的 VC 维可以通过用一定的阈值将 它转化成指示函数来定义。 VC 维反映了函数集的学习能力。一般而言,VC 维越大则学习机器越复杂,学习容量就 越大。目前尚没有通用的关于任意函数集 VC 维计算的理论,只对一些特殊的函数集知道其函 www.aibbt.com 让未来触手可及 213 数维。例如在 n 维实数空间中线性分类器和线性实函数的 VC 维是 n+1,而 f(x,α)=sin(αx)的 VC 维则为无穷大。如何用理论或实验的方法计算其 VC 维是当前统计学习理论中有待研究的 一个问题。 8.2 学习过程的一致性 8.2.1 学习一致性的经典定义 为了从有限的观察中构造学习算法,我们需要一种渐近理论,刻画学习过程一致性的必 要和充分条件。 定义 8.1 经验风险最小一致性原理 对于指示函数集 ),( wyL 和概率分布函数 F(y),如果下面两个序列概率地收敛到同一极限 (见图 8.1),则称为经验风险最小一致性: )(inf)( wRwR w P ll Λ∈∞→ → (8.4) )(inf)( wRwR w P llemp Λ∈∞→ → (8.5) 换句话说, 如果经验风险最小化方法是一致性,那么它必须提供一个函数序列 ),( lwyL , l=1,2,…, 使得期望风险和经验风险收敛到一个可能最小的风险值。(8.4)式判定风险收敛到最 好的可能值。(8.5)式人们可以根据经验风险判定估计风险可能的最小值。 Inf R(w) R(wl) Remp(wl) 图 8.1 学习过程一致性 8.2.2 学习理论的重要定理 Vapnik 和 Chervonenkis 于 1989 年提出了学习理论的重要定理如下: 定理 8.1 设 Λ∈wwyL ),,( 是满足下列条件的函数集 www.aibbt.com 让未来触手可及 214 ∫ ≤≤ BydFwyLA )(),( ).)(( BwRA ≤≤ (8.6) 那么对于经验风险最小是一致的,在下面情况下: ,0}))()(sup{lim =>− Λ∈∞→ εwRwRP emp wl .0>∀ε (8.7) 经验风险 )(wRemp 在整个函数集 Λ∈wwyL ),,( 上一致地收敛到实际风险 R(w)。我们称这类 一致性收敛为单侧一致性收敛。 8.2.3 VC 熵 定义 8.2 设 Λ∈≤≤ wBwyLA ,),( 是界限损耗函数集。使用这个函数集和训练集 lzz …,1 ,可以构造下列 l 维向量: )),,(,),,(()( 1 wzLwzLwq l= .Λ∈w (8.8) 这个向量集属于 l 维立方体,并且在品质 C 上具有有限最小ε网格。设 ),,;( 1 lzzNN εΛ= 是 向量集 q(w), w∈Λ 最小ε网格元素的数目。 注意, ),,;( 1 lzzN εΛ 是随机变量,因为它是使用随机向量 z1,…,zl 构造的。随机值 ),,;( 1 lzzN εΛ :的对数 ),,;(ln),,;( 11 ll zzNzzH εε ΛΛ = 被称作函数集 Λ∈≤≤ wBwyLA ,),( 对于训练样本 z1,…,zl 随机 VC 熵。随机 VC 熵的期望值: ),,;();( 1 lzzEHlH εε ΛΛ = 被称作函数集 Λ∈≤≤ wBwyLA ,),( 对于训练样本数 l 的 VC 熵。这里,期望值取乗积测度 ),,( 1 lzzF 。 定理 8.2 双侧一致收敛的必要和充分条件是下式成立: ,0),(lim = Λ ∞→ l lH l ε ∀ε>0 (8.9) 换句话说,VC 熵与观察数的比值应随观察数增加而减小到 0。 推论 8.1 在指示函数集 Λ∈wwyL ),,( 一定的可测条件下,双侧一致收敛的必要和充分 条件是: www.aibbt.com 让未来触手可及 215 ,0)(lim = Λ ∞→ l lH l 它是(8.9)式的特例。 定理 8.3 对于整个界限函数集 Λ∈wwyL ),,( ,为了使经验方法单侧一致收敛到它们的 期望值,其必要和充分的条件是对于任何正的δ、η和ε,存在函数集 ****),,( Λ∈wwyL 满足 .)()),(),(( ,,0),(),( ** ** δ≤− ∀≥− ∫ ydFwyLwyL ywyLwyL (8.10) 对于样本数 l, ****),,( Λ∈wwyL 的ε 熵下式成立: .),(lim * ηε < Λ ∞→ l lH l (8.10) 在进行学习理论研究中,可以分为三个里程碑,即依次根据以下三种方法来定义经验风 险最小化原理的一致性的充分条件: (1) 运用 VC 熵来定义: 0)(lim = Λ ∞→ l lH l (8.11) (2) 运用退火熵来定义: 0)(lim = Λ ∞→ l lH ann l (8.12) 其中退火 VC 熵为 ).,,(ln)( lann zzENlH ΛΛ = (3)运用增长函数来定义: 0)(lim = Λ ∞→ l lG l (8.13) 其中增长函数为 ).,,(supln)( 1,, l zz zzNlG l ΛΛ = 8.3 结构风险最小归纳原理 统计学习理论系统地研究了对于各种类型的函数集、经验风险和实际风险之间的关系, 即泛化的界限[Vapnik 1995]。关于两类分类问题有如下结论:对指示函数集中的所有函数(包 括使经验风险最小的函数),经验风险 Remp(w)和实际风险 R(w)之间以至少 1-η的概率满足如下 的关系[Burges 98]: www.aibbt.com 让未来触手可及 216 l hlhwRwR emp )4/ln()1)/2(ln()()( η−++≤ (8.14) 其中 h 是函数集的 VC 维,l 是样本数,η是满足 10 ≤≤ η 的参数。 由此可见,统计学习的实际风险 )(wR 由两部分组成:一是经验风险(训练误差) ),(wRemp 另一部分称为置信界限(VC confidence)。置信界限反映了真实风险和经验风险差值的上确界, 反映了结构复杂所带来的风险,它和学习机器的 VC 维 h 及训练样本数 l 有关。(8.14)式可以 简单地表示为: )/()()( lhwRwR emp Φ+≤ (8.15) 由(8.14)式右端第二项可知, )/( lhΦ 随 h 加大而增长。因此,在有限训练样本下,学习机器的 复杂性越高,VC 维越高,则置信界限越大,就会导致真实风险与经验风险之间的可能的差别 越大。 请注意,这里的泛化界限是对于最坏情况的结论。在很多情况下是较松的,尤其当 VC 维较高时更是如此。文献[Burges 1998] 指出,当 lh / >0.37 时,这个界限肯定是松弛的。当 VC 维无穷大时,这个界限就不再成立。 为了构造适合于对小样本学习的归纳学习原理,可以通过控制学习机器的泛化能力来达 到此目的。对于完全有界非负函数,0≤L(z,w)≤B, w∈Λ(Λ是抽象参数集合),以至少 1- η的概率满足以下不等式, ),(411(2)()( ε ε B wRBwRwR lemp empl ) +++≤ (8.15) 其中,对于无界限函数集合,学习机器的泛化能力的界限是 +− ≤ ))(1 ()( ετpa wRwR lemp l ( ) (8.16) p p p ppa 1)2 1(2 1)( − − −= 其中, l N ηε lnln2 −= 运用以上的公式可以控制基于固定数目的经验样本之上的风险函数的最小化的过程。控 制最小化过程的有几种方法。一是最小化经验风险。根据上面的公式可以看出,当风险的上 界随着经验风险的值的减少而减少。二是最小化(8.15)式中右边的第二项,将样本的数目 与 VC 维作为控制变量。后者适合于样本数较小的情况。 设函数集 L(z,w) 具有嵌套函数子集 }),,({ kk wwzLS Λ∈= 的结构组成,如图 8.2 所示 nSSS ⊂⊂⊂ 21 , (8.17) 其中结构元素满足以下性质: www.aibbt.com 让未来触手可及 217 (1)每个函数集 Sk 的拥有一个有限的 VC 维 hkk; h1 ≤ h2 ≤ ,…, ≤hn, … . (2)结构中的任何元素 Sk 包含性质: 整个界限函数集满足 0 ≤ L(z,w) ≤ Bk; α∈Λk 或者对于某种(p,τk), 函数集满足下列不等式: k pp w zdFwzL zdFwzL k τ≤ ∫ ∫ Λ∈ )(),( ))(),(( sup 1 p>2 (8.18) 我们称这种结构为可同伦结构。 为了选择合适的 Sk 作为学习函数,可以将(8.14)式右边划分为两个部分,左边项为经 验风险;右边项为置信区。如果给定样本数目 l,那么,随着 VC 维数目 h 的增加,经验风险 逐渐变小,而置信区逐渐递增。 如图 8.3 所示,综合考虑经验风险与置信区的变化,可以求得最小的风险边界,它所对应 的函数集的中间子集 S*可以作为具有最佳泛化能力的函数集合。 图 8.2 函数嵌套子集构成的函数集结构 Sn S2 S1 www.aibbt.com 让未来触手可及 218 8.4支持向量机 支持向量机(Support Vector Machine)是近几年发展起来的新型的通用知识发现方法,在 分类方面具有良好的性能。 8.4.1 线性可分 假设存在训练样本(x1,y1),…,(xl,yl),x∈Rn,y∈{+1,-1},l 为样本数,n 为输入维数, 在线性可分的情况下就会有一个超平面使得这两类样本完全分开。该超平面描述为: (w·x) + b = 0 (8.19) 其中,“·”是向量点积。分类如下: ,0≥+• bxw i 对于 yi=+1 ,0<+• bxw i 对于 yi=-1 w 是超平面的法线方向, w w 为单位法向量,其中 w 是欧氏模函数。 如果训练数据可以无误差地被划分,以及每一类数据与超平面距离最近的向量与超平面 之间的距离最大则称这个超平面为最优超平面(如图 8.4 所示)。 风险边界 置信区 经验风险 h1 h* hn h 图 8.3 结构风险最小归纳原理图 Sn S* S1 www.aibbt.com 让未来触手可及 219 分界超平面 分界超平面 图 8.4 最优超平面 在线性可分情况下, 求解最优超平面,可以看成解二次型规划的问题。对于给定的训练样本, 找到权值 w 和偏移 b 的最优值,使得权值代价函数最小化: 2 2 1)(min ww =Φ (8.20) 满足约束条件: ,01)( ≥−+• bxwy ii li ,,2,1 = (8.21) 优化函数Φ(w)为二次型, 约束条件是线性的, 因此是个典型的二次规划问题,可由 Lagrange 乘子法求解。引入 Lagrange 乘子 lii ,,2,1,0 =≥α : }1)({2 1),,( 1 2 −+•−= ∑ = bwxywbwL ii l i iαα (8.22) 这里,L 的极值点为鞍点,可取 L 对 w 和 b 的最小值 w=w*, b=b*,以及对α的最大值α=α*。 对 L 求导可得: 0 1 ==∂ ∂ ∑ = i l i iyb L α (8.23) 0 1 =−=∂ ∂ ∑ = ii l i i xyww L α (8.24) 其中, ⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ ∂ ∂ ∂ ∂ ∂ ∂=∂ ∂ lw L w L w L w L ,, 21 。 于是,SVM 通过求解二次规划,得到对应的α*和 w*: ii l i i xyw ∑ = = 1 ** α (8.25) 以及最优的超平面(见图 8.4)。 经过变换线性可分条件下的原问题成为对偶问题,求解如下的极大化: www.aibbt.com 让未来触手可及 220 Γ•Γ−•Γ=•−= ∑∑∑ === DIxxyyW jijij l j i l i l i i 2 1 2 1)(max 111 αααα α (8.26) 满足约束: ,0 1 =∑ = i l i iy α lii ,,2,1,0 =≥α (8.27) 其中, )1,,1,1(),,,,( 21 ==Γ Ilααα ,D 是 ll × 的对称矩阵,各个单元为: jijiij xxyyD •= (8.28) 在对这类约束优化问题的求解和分析中,Karush-Kuhn-Tucker(KKT)条件将起重要作用。如 (8.27)式这样的问题,其解必须满足: ,0}1)({ =−+• bxwy iiiα li ,,2,1 = (8.29) 从(8.25)式看到, 那些 αi =0 的样本对于分类问题不起什么作用,只有 αi>0 的样本对 w*起作用, 从而决定分类结果。这样的样本定义为支持向量。 所求向量中,α*和 w*可以被训练算法显式求得。选用一个支持向量样本 xi ,可以这样求得 b*: ii xwyb •−=* (8.30) 对输入样本 x 测试时,计算下式 * 1 ***)()( bxxybwxxd i l i ii +•=+•= ∑ = α (8.31) 根据 d(x)的符号来确定 x 的归属。 8.4.2 线性不可分 线性可分的判别函数建立在欧氏距离的基础上,即 j T ijiji xxxxxxK =•=),(。对非线 性问题,可以把样本 x 映射到某个高维特征空间 H(见图 8.5),并在 H 中使用线性分类器, 换句话说,将 x 做变换 ::HR d →Φ T xixxxx ),,),(),(()( )(21 φφφ=Φ→ (8.32) 其中,φi(x)是实函数。 输入空间 特征空间 Φ 图 8.5 输入空间到特征空间的映射 www.aibbt.com 让未来触手可及 221 如果以特征向量Φ(x)代替输入向量 x, 则由(8.28)式和(8.31)可以得到: )()( jijiij xxyyD Φ•Φ= (8.33) * 1 **)()()()( bxxybwxxd ii l i i +Φ•Φ=+•Φ= ∑ = α (8.34) 由上可知,不论是寻优函数(8.26)式还是分类函数(8.31)都只涉及训练样本之间的内积 )( ji xx • 。这样,在高维空间实际上只需进行内积运算,而这种内积运算是可以用原空间中 的函数实现的,我们甚至没有必要知道变换的形式。根据泛函的有关理论,只要一种核函数 )( ji xxK • 满足 Mercer 条件,它就对应某一空间中的内积[Vapnik 95]。 因此,在最优分类面中采用适当的内积函数 )( ji xxK • 就可以实现某一非线性变换后的 线性分类,而计算复杂度却没有增加。此时的目标函数(8.26)式变为 ),(2 1)(max 111 jijij l j i l i l i i xxKyyW αααα α ∑∑∑ === −= (8.35) 而相应的分类函数也变为 * 1 * ),()( bxxKyxd i l i ii += ∑ = α (8.36) 这就是支持向量机。 对给定的 K(x,y), 存在对应的Φ(x)的充要条件是: 对于任意给定的函数 g(x), 当 dxxg b a ∫ 2)( 有限时,有 ∫∫ ≥ b a b a dxdyygxgyxK 0)()(),( (8.37) 这个判别条件不容易实际操作,有一个简单的方法: 因为多项式是满足 Mercer 条件的,因此 只要 K(x,y) 能被多项式逼近,就满足 Mercer 条件。 构造类型判定函数的学习机称为支持向量机, 在支持向量机中构造的复杂性取决于支持 向量的数目, 而不是特征空间的维数。支持向量机的示意图如图 8.6 所示。 对非线性问题支持向量机首先通过用内积函数定义的非线性变换将输入空间变换到一个 高维空间,在这个空间中求广义最优分类面。 www.aibbt.com 让未来触手可及 222 图 8.6 支持向量机的示意图 8.5 核函数 支持向量机中不同的内积核函数将形成不同的算法。目前常用的核函数主要有多项式核 函数、径向基函数、多层感知机、动态核函数等。 8.5.1 多项式核函数 多项式核函数: d ii xxxxK ]1),[(),( += (8.38) 所得到的是 d 阶多项式分类器。 ⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ −+•= ∑ vectorport d iii bxxysignxf sup ]1)[),( αα 8.5.2 径向基函数 经典的径向基函数使用下面的判定规则:: K(xn,x) 输入层 中间层 输出层 d(x) α1y1 α2y2 αnyn K(x1,x) K(x2,x) X1 X2 X3 Xd www.aibbt.com 让未来触手可及 223 ⎟ ⎠ ⎞⎜ ⎝ ⎛ −−= ∑ = l i ii bxxKsignxf 1 )()( γα (8.39) 其中, )( ixxK −γ 取决于两个向量之间的距离 ixx − 。对于任何γ值,函数 )( ixxK −γ 是一 个非负的单调函数。当训练样本数趋向无穷大时它趋向零。最通用的判定规则是采用高斯函 数: () ⎪⎭ ⎪⎬ ⎫ ⎪⎩ ⎪⎨ ⎧ −−=− 2 2 exp σγ i i xxxxK (8.40) 构造(8.39)式的判定规则, 必须估计: (1) 参数γ的值; (2) 中心点 xi 数目 N; (3) 描述中心点向量 xi; (4) 参数αi 的值。 与传统的径向基函数方法的重要区别是,这里每个基函数的中心点对应一个支持下向量, 中心点本身和输出权值都是由 SVM 训练算法来自动确定的。 8.5.3 多层感知机 支持向量机采用 Sigmoid 函数作为内积,这时就实现了包含一个隐层的多层感知机。隐层 节点数目由算法自动确定。满足 Mercer 条件的 Sigmoid 核函数为 )tanh(),( Θ−= j T iji xxxxK γ (8.41) 算法不存在困扰神经网络的局部极小问题。 8.5.4 动态核函数 1999 年 Amari 和 Wu 通过对核函数的黎曼几何分析,提出利用实验数据逐步修正原有的核 函数,使之更好适应实际问题。设特征映射 U=Φ(x),则 i i i dxxxdU )(∑ Φ∂ ∂= j ji iij dxdxxgdU ∑= , 2 )( 这里 ⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ Φ∂ ∂•⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ Φ∂ ∂= )()()( xxxxxg ji ij 称非负定阵(gij(x)) 为 Rn 上的黎曼张量, ji ij ij dxdxxgds )(2 ∑= 为Rn 上的黎曼距离。赋予黎曼距离的 Rn 成为黎曼空间,体积 ndxdxxgdv 1)(= www.aibbt.com 让未来触手可及 224 其中, ))(det()( xgxg ij= 。直观地说,g(x)反映了特征空间中,点Φ(x)附近局部区域被放大 的程度。因此,也称 g(x)为放大因子。 因为 ))()((),( zxzxk Φ•Φ= ,可以验证 xz ji ij zxkzxxg =∂∂ ∂= ),()( 特别对高斯函数 },2exp{),( 2 2 σ zxzxk −= ijij xg δσ 2 1)( = 。 为了有效地将两类不同的模式区分开,希望尽量拉大它们之间的距离,即尽量放大分离曲面 附近的局部区域。可以用修正核函数的办法达到此目的。设 c(x)是正的可微实函数,k(x,z) 是高斯核,则 )(),()(),(~ zczxkxczxk = (8.42) 也是核函数,且 ijjiij gxcxcxcxg )()()()(~ 2+= 这里, )()( xcxxc i i ∂ ∂= 。Amari 和 Wu 设 c(x)有如下的形式 2 2 2)( τ i i xx SVx i ehxc − ∈ ∑= (8.43) 这里,τ>0 是参数,hi 是权系数。在支持向量 xi 附近,有 2 4 2 2 1)(~ 2 2 γτ σ σ γ +≈ nr n i ehxg 其中, ixx −=τ 是欧几里德距离,为保证 )(~ xg 在xi 附近取最大值,同时在其它区域取较 小值。经计算知 n στ ≈ (8.44) 这样,新的训练过程由两步组成: (1) 先用某个核 k(高斯核)进行训练,然后按照(8.42)、(8.43)、(8.44)得到修正的核 k~ ; (2) 用 k~ 进行训练。 这种改进的训练方法,不仅可以明显地降低错误识别率,而且,还可减少支持下向量的个数, 从而提高识别速度。 www.aibbt.com 让未来触手可及 225 8.6 基于分类超曲面的海量数据分类方法 张铃与张钹教授采用球面投影函数作为非线形映射,完成样本点的分类问题,这与 Vapnik 的思想在本质上是相同的[Zhang Lin 1999],其算法可以说明为:在球面上,考虑一个被映 射到球面上的样本,并建立以其坐标为中心的邻域,使得在这个邻域中最大限度地包括相同 类别的样本。显然,这个邻域可以通过在原空间中的距离(样本之间的内积)来定义。然后, 将这些样本删除,再重复上述过程,直到覆盖所有的样本。与 Vapnik 的支持向量机相比较, 他们未显现地使用向量这个概念,而使用邻域来代替,而两种方法的区别就在求解这个二次 规划问题的方法上:Vapnik 直接计算(8.45)式, )()( jijijiii xxKyyQ •−= ∑∑ αααα (8.45) 这需要计算出一个 m 维的内积矩阵,而基于邻域的方法则是在计算样本之间内积的同时,边 判断哪些样本可以删除,即可以使用邻域概括一部分 0=iα 的向量,因为每删除一个样本就 意味着使得基于(8.45)式的内积矩阵降低一维,因此,这个考虑可以大大减少所需要的存 储空间与计算量。在应用上,它使得基于 SVM 原理处理海量样本集成为可能,这是对统计机 器学习理论的重要贡献。 8.6.1 Jordan 曲线定理 设 X 2R⊂ 是平面的闭子集,X 同胚与圆周,那么它的余集 XR\2 有两个连通分支,一 个是有界的,另一个是无界的, X 中任何一点的任何邻域与这两个连通分支均相交。 推论 8.2 设 D 是一个闭圆盘, 0D 为其内部,C 为其边界圆周, 2: RDf → 是一个连续 的一一映射,那么 )(\2 CfR 有两个连通的分支 )( 0Df 和 )(\2 DfR ,特别地 )( 0Df 是平 面的一个开子集。 Jordan 曲线定理表明任何的简单闭曲线(一条两端相接并且自身不相交的曲线)都把一 个平面分成两个区域——一个外部和一个内部。给定一个点,如何判断它在曲线的内部还是在 曲线的外部呢? 定义 8.4 围绕数 对于任何连续曲线 }{\],[: 2 PRba >−γ ,我们定义围绕数 ),(PW γ 如 下: 1.将小区间划分为 bttta n =≤≤≤= 10 ,使得每个小区间 ],[ 1 ii tt − 映射到顶点为 P 的 小曲线段,根据 Lebesgue 引理这样的划分是存在的,因为γ 的每个象点都包含于这样的小曲 线段。 2.选取包含 ]),([ 1 ii tt −γ 的小曲线段 iU 及其对应的极角函数 iθ )1( ni ≤≤ 。设 nitP ii ≤≤= 0),(γ 。定义 ∑ = −−= n i iiii PPPW 1 1 )]()([(2 1),( θθπγ (8.46) www.aibbt.com 让未来触手可及 226 命题 8.1 围绕数与步骤 1 与步骤 2 中的选取方法无关,若γ 为闭曲线,即 )()( ba γγ = , 则 ),(PW γ 为一个整数。 定理 8.4 分类判别:设 X 2R⊂ 是平面的闭子集,X 同胚与圆周,那么它的余集 XR\2 有两个连通分支,一个是内部,另一个是外部,任取 XRx \2∈ ,则 Xx∈ 的内部 ⇔ ),( xXW 为奇数, Xx∈ 的外部 ⇔ ),( xXW 为偶数。 上述定义与定理可推广到高维空间。 图 8.7 分类判别定理图示 基于拓扑学中的 Jordan 曲线定理,不需要考虑使用何种核函数,而通过使与球面同胚的 双侧闭曲面作为分类超曲面(Separating Hyper Surface)对空间进行划分。分类超曲面可以由 多个超平面构成,而点属于超曲面内部还是外部取决于该点引出的射线与超曲面相交为奇数 还是偶数,该判别方法使得基于非凸的超曲面的分类判别变得直接、简便。 8.6.2 SVM 直接方法基本思想 根据上述定理我们提出如下 SVM 直接方法的基本思想用于二元数据分类,下述方法有望 推广到高维数据的处理。 1. 设已给的样本点落在一个矩形区域中; 2. 将矩形区域划分成若干小区域,使每个小区域至多含一个样本点; www.aibbt.com 让未来触手可及 227 3. 对每个含样本点的小区域边界根据样本点的类别标定方向,一种为顺时针方向,一种 为逆时针方向; 4. 合并矩形边界,同向线段保留,异向线段抵消,获得若干封闭折线组成的分类超平面, 并以链的形式存储超平面; 5. 输入新样本点,计算该点关于以上分类曲线的围绕数,根据围绕数判定该样本点所在 的类;另一种简便方法是选择适当的由待定点出发的射线,通过射线与超平面的相交数的奇 偶性判断样本点所在的类;若不能判断,就围绕该点做一个小矩形,并对边界定向,之后转 入第 4 步; 6. 若是多类判断问题,就对第 3 步的小矩形的向量增加一个标类别的分量,第 4 步用同 类合并的办法。 8.6.3 实现算法 根据上述基本思想,设计出 SVM 直接方法的训练算法及分类算法(二元)如下。 1. 学习过程 设矩形区域为归一化单元格(如图 8.8),训练样本落入此区域内一单元格内,按照类别 (X、O)将此单元格分为两类,分别标注边界;将同类区域边界合并,并以链表形式存放。 2. 细化方案 若单元格内已有一不同类训练样本,则将此单元格细化,并进行归一化操作,继续标注, 再合并边界,存放边界链表;循环完成此训练过程。 3. 分类过程 当一待识别的样本(A)进入此区域后,作射线,与存储链表形成的区域多边形各边作相 交操作,根据判别点是否在多边形内的规则,即两类边界围绕数的奇偶性,判断出此样本所 属类别。 如果样本所在小区域已经细化,则将样本坐标单位化,放入细化区域,继续进行上述的 X Y 0 10 10 X O XX X X O OO A 图 8.8 实现方案 X — 边界为顺时针 O — 边界为逆时针 A — 待识别样本 www.aibbt.com 让未来触手可及 228 分类过程。 根据分类超曲面的思想,我们给出以上几步算法实现过程,训练过程与分类过程的算法 复杂度都是多项式的。实际细化过程中,为保证边界的连续性,链表也要同时记录同区域内 同类训练样本,但在样本集规模很大的情况下,可对细化的层次进行控制,即在训练过程中 将不影响分类边界生成的样本删除,可保证计算速度。 8.6.4 实验结果分析 我们已经提出了基于分类超曲面的分类算法,本节使用 Spiral 螺线两类样本数据(线形不 可分),测试本算法的分类正确率。可以看到随着样本数的增加,形成的分类折线连贯性越好, 分类测试准确率越高。对于海量数据( 710 ),SVM 直接方法的计算速度极快,同时对计算机 资源要求很低,而传统的 SVM 不具备有这种优点,由此可见,对大规模样本点进行分类,SVM 直接方法可得到良好的结果。 1.构造测试数据 双螺旋分类问题:两条螺旋线 1K 和 2K (极坐标形式) πθρ θρ += = : : 2 1 K K πρπ 82 ≤≤ (8.47) . 根据公式(8.47)构造训练样本集合及测试样本集合,圈数=4,不失一般性,将样本点平 移并压缩至算法所需范围内,如图 8.9 所示。 图 8.9 双螺旋问题 www.aibbt.com 让未来触手可及 229 实验经过以下几个步骤: (1)生成训练样本,导入数据库; (2)对训练样本进行训练,记录训练所需时间;保存训练所得分类链表; (3)从数据库提取分类链表,对测试样本进行分类,记录测试所需时间,记录分类结果,计 算分类正确率。测试样本的选取一类为训练样本本身集合,一类为数量多倍于训练样本的另 一样本集合。 1. 中小规模样本实验结果 (1)训练结果见表 8.1。. 表 8.1 中小规模样本训练结果 样本点个数○1 训练所需时间○2 分类所需时间○3 分类正确率(%)○4 5,402 2s 4s 100.00 13,500 6s 10s 100.00 27,002 13s 21s 100.00 54,002 27s 43s 100.00 108,000 57s 1m 24s 100.00 540,000 6m 21s 8m 11s 100.00 1,350,002 19m 14s 20m 10s 100.00 5,400,000 46m 45s 1h 10m 5s 100.00 ○1 样本点为 Spiral 螺线等角速度构造,○2 时间表示为间隔:h(小时)、m(分钟)、s(秒),○3 测试样本点集 合为训练样本点本身集合,○4 测试样本点实际类别为构造时所得. (2)训练所得分类链表. 训练所得分类链表的保存和提取均可在几秒内完成,且需要的存储空间极少。训练所得 分类链表结构见图 8.10。 2. 大规模样本实验结果 (1)训练结果见表 8.3。 表 8.3 大规模样本训练结果 样本点个数 训练所需时间 分类所需时间○1 分类正确率(%) 10,800,000 1h 34m 57s 2h 17m 35s 100.00 22,500,002 3h 16m 9s 4h 49m 55s 100.00 54,000,000 7h 42m 52s 11h 47m 7s 100.00 ○1 测试样本点集合为训练样本点本身集合. (2)分类测试结果见表 8.4。 表 8.4 大规模样本测试结果 样本点个数○1 测试样本点个数 分类所需时间 分类正确率(%) 10,800,000 22,500,002 4h 7m 4s 100.00 22,500,002 54,000,000 11h 25m 3s 100.00 54,000,000 67,500,002 14h 37m 6s 100.00 www.aibbt.com 让未来触手可及 230 ○1 样本点个数为训练点个数 3. 小样本训练,大样本分类测试结果见表 8.5。 表 8.5 小样本训练,大样本分类测试结果 样本点个数○1 测试样本点个数○2 分类所需时间 分类正确率(%) 5,402 54,002 41s 99.59 5,402 540,000 6m 45s 99.58 27,002 540,000 6m 44s 99.98 54,002 540,000 6m 47s 100.00 54,002 5,400,000 1h 7m 7s 100.00 ○1 样本点个数为训练点个数,○2 测试样本点由 Spiral 螺线构造的另一样本集合(样本数量为训练样本的 10 倍 以上)。 表 8.5 表明基于分类超曲面的 SVM 直接方法有很好的泛化能力。 图 8.10 训练所得分类链表结构 www.aibbt.com 让未来触手可及 231 训练所得分类链表及其对样本点的覆盖情况见图 8.11。 样本数:27002 正确率: 10000% 图 8.12 分类链表及其对样本点的覆盖情况 习 题 1. 比较经验风险最小化原理和结构风险最小化原理。 2. VC 维的含义是什么,为什么说 VC 维反映了函数集的学习能力。 3. 试叙述统计学习理论的三个里程碑,并分析各个里程碑具体解决了什么问题。 4. 描述支持向量机的基本思想和数学模型。 5. 为什么说统计学习理论是支持向量机的理论基础,表现在哪些方面。 6. 考虑用于线性可分模式的超平面,它的方程定义为: 0=+ bxwT 其中 w 表示权值向量,b 为偏置,x 为输入向量。如果输入模式集 N iix 1}{ = 满足附加的条件 1||min ,,2,1 =+ = bxw i T Ni 则称(w,b)为超平面的标准对(canonical pair)。证明标准对的要求导致两类分离边界的距离 为 2/||w||. 7. 简述支持向量机解决非线性可分问题的基本思想。 8. 两层感知器的内积核定义为 )tanh(),( 10 ββ += i T i xxxxK www.aibbt.com 让未来触手可及 232 探讨对常数 0β 和 1β 的那些值不满足 Mercer 定理的条件 9. 关于下列任务比较支持向量机和径向基函数(RBF)网络的优点和局限: (1) 模式识别 (2) 非线性回归 10. 比较其它的分类方法,讨论支持向量机的几个重要优势,并从理论上 的加以解释。 www.aibbt.com 让未来触手可及 233 第九章 解释学习 解释学习(Explanation-Based Learning,简称 EBL)是一种分析学习方法,在领域知识指 导下,通过对单个问题求解实例的分析,构造出求解过程的因果解释结构,并获取控制知识, 以便用于指导以后求解类似问题。 9.1 概述 解释学习最初是由美国 Illinois 大学的 DeJong 于 1983 年提出来的。在经验学习的基础 上,运用领域知识对单个例子的问题求解作出解释,这是一种关于知识间因果关系的推理分 析,可产生一般的控制策略。 1986 年,Mitchell,Keller 和 Kedar-Cabelli 提出了解释的泛化(Explanation-Based Generalization,简称 EBG)的统一框架,把解释学习的过程定义为两个步骤: (1)通过分析一个求解实例来产生解释结构; (2)对该解释结构进行泛化,获取一般的控制规则。 DeJong 和 Mooney 提出了更一般的术语---解释学习(Explanation-based Learning,简称 EBL)。从此解释学习成为机器学习中的一个独立分枝。基于解释的学习从本质上说属于演绎 学习,它是根据给定的领域知识,进行保真的演绎推理,存储有用结论,经过知识的求精和 编辑,产生适合以后求解类似问题的控制知识。解释学习与经验学习的方法不同,经验学习 是对大量训练例的异同进行分析,而解释学习则是对单个训练例(通常是正例)进行深入的、 知识集约型的分析。分析包括:首先解释训练例为何是欲学概念(目标概念)的一个例子, 然后将解释结构泛化,使得它能比最初例子适用于更大一类例子的情况,最后从解释结构得 到更大一类例子的描述,得到的这个描述是最初例子泛化的一般描述。 解释学习可以用于获取控制知识、精化知识、软件重用、计算机辅助设计和计算机辅助 教育等方面。在传统程序中解释的作用主要是说明程序、给定提示、向用户提供良好的可读 性。按人工程序的特点,解释已被赋予新的含义,其作用是: (1)对所产生的结论的推理过程作详细说明,以增加系统的可接受性; (2)对错误决策进行追踪,发现知识库中知识的缺陷和错误的概念; (3)对初学的用户进行训练。 解释的方法也因此由简单变得复杂了。一般采用的解释方法有: (1)预制文本法。预先用英文写好,并插入程序中; (2)执行追踪法。遍历目标树,通过总结与结论相关的目标,检索相关规则,以说明结论 是如何得到的; (3)策略解释法。明确表示控制知识,即用元知识概括地描述,与领域规则完全分开。从 策略的概括表示中产生解释,能为用户提供问题求解策略的解释。 在解释学习中主要采用了执行追踪法。通过遍历目标树,对知识相互之间的因果关系给 出解释,而通过这种因果关系的分析,学习控制知识。 www.aibbt.com 让未来触手可及 234 9.2 解释学习模型 R。M。Keller 指出解释学习涉及三个不同的空间:例子空间、概念空间和概念描述空间 [Keller 1987]。一个概念可由例子空间外延地表示成某些事例的集合。概念也可以由概念描 述空间内涵地表示为例子空间例子的属性。图 9.1 说明了三个空间的关系。 概念空间指某个学习程序能描述的所有概念的集合,其中每个点对应例子空间的唯一的 一个子集合。例如 C1 对应 I1,I2,I3.但是概念空间中的一个点可以对应概念描述空间的多个 点,这些点分成可操作的和不可操作的两部分。例如 C1 对应 D1(不可操作的)和 D2(可操作的)。 对应同一概念的两个描述称为同义词。如 D1 和D2 是同义词。解释学习的任务就是由不可操作 的描述转化为可操作的描述。 在解释学习中,如图 9.1 所示,D1 是提给系统初始的、不可操作的描述。而 D2 是学习到 的最终的、可操作的描述。所以 D1 可看成是搜索的开始结点,D2 是解结点,解释是空间变换, 而可操作性是搜索结束的标准。从 D1 到D2 变换的过程称作概念可操作[Keller 1987]。 从概念上讲,每种解释学习系统都包括可操作性评估过程,评价概念的描述,产生可操 作性评测结果。可变性、粒度、确定性是可操作性在评估过程中产生的三维特性。表 9.1 给 出了几个系统的可操作特性。 根据上述的空间描述,可以建立解释学习的一种模型。解释学习系统主要包括执行系统 PS,学习系统 EXL,领域知识库 KB(这是不同描述间转换规则的集合)。令概念空间为 C,概念 描述空间为 CD,例子空间为 I。则系统工作过程如下。EXL 的输入是概念 C1 的描述 D1(一般是 不可操作的)。根据 KB 中的知识,对 D1 进行不同描述的转换(这是一个搜索过程)。PS 对每个 转换结果进行测试,直至转换结果是 PS 可接受的描述 D2 (是可操作的)时,学习结束并输出 D2.模型如图 9.2 所示。 图 9.1:解释学习的空间描述 表 9.1:可操作特性 图 9.2:解释学习的模型 www.aibbt.com 让未来触手可及 235 9.3 解释泛化学习方法 9.3.1 基本原理 Mitchell,Keller 和 Kedar-Cabelli 于 1986 年为解释泛化学习方法提出了一个统一的框架 [Mitchell 1986]。其基本思想是对某一情况建立一解释结构,将此解释结构概括使之可应用 于更广泛的情况。解释泛化学习运用了知识的逻辑表示和演绎型问题求解方法。 为了便于叙述,我们先引入一些术语。概念是例子空间上的谓词,表示例子空间的一些 子集。概念由其属性和属性值表示。概念定义说明了作为概念的一个例子应满足的充分必要 条件,而充分概念定义说明的只是充分条件。满足概念定义的例子称为实例或正例,而不满 足概念定义的例子则称为反例。一个实例的概括是描述包含此实例的例子集合的一个概念定 义,解释结构是证明树,其中每个已例示的规则均被对应的泛化规则代替。 解释泛化学习问题可以形式化地描述为: 已知: · 目标概念(Goal concept): 要学习概念的描述。 · 训练例(Training example): 目标概念的一个实例。 · 领域理论(Domain theory): 用于解释训练例的一组规则、事实。 · 可操作性标准(Operationality criterion): 说明概念描述应具有的形式的谓词。 欲求: · 训练实例的泛化,使之满足以下两个条件: (1) 是目标概念的充分概念描述。 (2) 满足可操作性标准。 解释泛化学习方法可以分成两个阶段。第一阶段是解释,这个阶段的任务就是利用领域 理论中的知识,对训练实例进行解释,建立解释树,或叫证明树,证明训练例如何满足目标 概念定义。树的叶结点满足可操作性标准。第二阶段的工作是泛化,也就是对第一阶段的结 果——证明树进行处理,对目标概念进行回归,从而得到所期望的概念描述。实际上,第一 阶段解释的工作是将实例的相关属性与无关属性分离开来,第二阶段泛化的工作是分析解释 结构。 (1) 产生解释。用户输入实例后,系统首先进行问题求解。如由目标引导反向推理,从 领域知识库中寻找有关规则,使其后件与目标匹配。找到这样的规则后,就把目标作为后件, 该规则作为前件,并记录这一因果关系。然后以规则的前件作为子目标,进一步分解推理。 如此反复,沿着因果链,直到求解结束。一旦得到解,便证明了该例的目标可满足,并获得 了证明的因果解释结构。 构造解释结构通常有两种方式:一是将问题求解的每一步推理所用的算子汇集,构成动 作序列作为解释结构;另一种是自顶向下的遍历证明树结构。前者比较概括,略去了关于实 例的某些事实描述;后者比较细致,每个事实都出现在证明树中。解释的构造可以在音量求 解的同时进行,也可在问题求解结束后,沿着解路径进行。这两种方式形成了边解边学和解 完再学两种方法。 www.aibbt.com 让未来触手可及 236 (2) 对得到的解释结构核心事件进行泛化。在这一步,通常采取的办法是将常量转换为 变量,即把例子中的某些具体数据换成变量,并略去某些不重要的信息,只保留求解所必需 的那些关键信息,经过某种方式的组合,形成产生式规则,从而获得泛化的控制知识。 作为一个例子,考虑目标概念 SAFE-TO-STACK(x,y),即一对物体,x 可以安全地放 在 y 的上面。SAFE-TO-STACK 的实例如下: 设定: · 目标概念:一对物体,SAFE-TO-STACK(x,y),其中 SAFE-TO-STACK(x,y)⇔ NOT(FRAGILE(y)) ∨ LIGHTER(x,y)。 · 训练实例: ON(OBJ1,OBJ2) ISA(OBJ1,BOX) ISA(OBJ2,ENDTABLE) COLOR(OBJ1,RED) COLOR(OBJ2,BLUE) VOLUME(OBJ1,1) DENSITY(OBJ1,.1) … · 领域知识: VOLUME(p1,v1) ∧ DENSITY(p1,d1) → WEIGHT(p1,v1*d1) WEIGHT(p1,w1) ∧ WEIGHT(p2,w2) ∧ LESS(w1,w2) → LIGHTER(p1,p2) ISA(p1,ENDTABLE) → WEIGHT(p1,5)(default) LESS(.1,5) … · 可操作标准:概念定义必须要用描述实例中的谓词(例如 VOLUME,COLOR,DENSITY), 或者选自领域知识易于评测的谓词(例如 LESS)。 确定: · 训练实例的泛化是对目标概念给以充分定义,并且满足可操作性标准。 首先 EBG 系统利用领域知识建造解释树,使训练实例满足目标概念的定义。图 9.3 给出 SAFE-TO-STACK(OBJ1,OBJ2)的解释树。 图 9.4 给出了 SAFE-TO-STACK 实例处理的泛化步骤。根据领域知识提供的规则 LIGHT(p1, p2) → SAFE-TO-STACK(p1,p2),目标概念表达式 SAFE-TO-STACK(x,y) 进行回归。同样, LIGHT(x,y) 通过规则 WEIGHT(p1,w1) ∧ WEIGHT(p2,w2) ∧ LESS(w1,w2)→LIGHT(p1,p2) 图 9.3 SAFE-TO-STACK(OBJ1,OBJ2)解释树 www.aibbt.com 让未来触手可及 237 回归,产生的谓词显示在第二层。第三层 WEIGHT(x,w1) 通过规则 VOLUME(p1,v1)∧ DENSITY(p1,d1)→ WEIGHT(p1,v1*d1) 回归,所以产生 VOLUME(x,v1) ∧ DENSITY(x,d1)。 通过规则 ISA(p2,ENDTABLE) → WEIGHT(p2,5) 回归 WEIGHT(y,w2) 产生 ISA(y,ENDTABLE)。LESS(w1,w2)被简单地加到结果表达式,因为没有规则可以合一。最后, SAFE-TO-STACK(x,y) 的概念描述如下: VOLUME(x,v1)∧DENSITY(x,d1)∧LESS(v1*d1,5)∧ISA(y,ENDTABLE)→SAFE-TO–STACK (x,y) 这个描述满足可操作性。 图 9.4 SAFE-TO-STACK(OBJ1,OBJ2) 解释的泛化过程} 解释学习实际上没有获得新知识,而只是把现有的不能用或不实用的知识转化为可用的 形式。解释学习系统必须了解目标概念的初始描述,虽然该描述是正确无误的,但它是不可 操作的。通俗地讲,这意味着学习程序不能有效地使用这个描述来提高性能,也就是说,概 念描述本身与该种概念能否使用是不同的。解释学习系统的任务就是通过变换初始描述或使 初始描述可操作化来缩小这种差距。 9.3.2 解释与泛化交替进行 1987 年斯坦福大学 Hirsh 提出了新的解释泛化方法[Hirsh 1987],即将解释学习中的解 释与泛化交替进行。 1. 问题的逻辑描述 学习系统提供了正向、反向、归纳等多种推理方式。逻辑的表示方法使 EBG 的语义更为 清楚,为学习提供了方便的语言环境。例如要学习目标概念 Safe-to-Stack(V1,V2),其领域 知识就可表示如下: 事实知识: On(obj1,obj2) Isa(obj2,Endtable) Color(obj1,red) Color(obj2,blue) www.aibbt.com 让未来触手可及 238 Volme(obj1,1) Density(obj1,0.1) 领域规则: Not(Fragile(y))→Safe-to-Stack(x,y) Lighter(x,y)→Safe-to-Stack(x,y) Volume(p1,v1)∧Density(p1,d1)∧X(v1,d1,w1) →Weight(p1,w1) Isa(p1,Endtable)→Weight(p1,5) Weight(p1,w1)∧Weight(p2,w2)∧<(w1,w2) →Lighter(p1,p2) 2. 产生解释结构 为了证明该例子满足目标概念,系统从目标开始反向推理,根据知识库中已有的上述事 实和规则,分解目标。每当使用一条规则时,同时返回去把该规则应用到变量化的目标概念 上。这样,在生成该例子求解的解释结构的同时,也生成了变量化的泛化的解释结构。 3. 生成控制规则 将泛化的解释结构的所有叶结点的合取作为前件,以顶点的目标概念为后件,略去解释 结构的中间部件,就生成泛化的产生式规则。使用生成的这个控制规则求解类似问题时,求 解速度快且效率高。但是简单地把常量转为变量以实现泛化的方法可能过份一般化。在某些 特例下可能使规则失败。 9.4 全局取代解释泛化方法 1986 年 DeJong 和 Mooney 提出全局取代解释泛化(Explanation Generalization using Global Substitutions,缩写 EGGS) 方法[DeJong & Moonet 1986]。在 EBG 方法中,通过实 例解释结构的目标概念回归,忽略析取实现泛化。DeJong 的 EGGS 方法通过解释构造单元构 件,当解释合一时这些单元就连接起来。 机器人规划 STRIPS 是第一个进行泛化解释工作的 [Fikes,Hart and Nilsson,1972]。 STRIPS 是宏命令系统,构造和泛化机器人规划。当给定要达到的目标时,STRIPS 执行搜索, 发现一个操作序列,将初始状态变换到目标状态。初始模型和目标如下: 初始世界模型: INROOM(ROBOT,R1) INROOM(BOX1,R2) CONNECTS(D1,R1,R2) CONNECTS(D1,R2,R3) BOX(BOX1) ┆ (∀x,y,z) [CONNECTS(x,y,z) ⇒ CONNECTS(x,z,y)] 目标公式: (∃x)[BOX(x) ∧ INROOM(x,R1)] STRIPS 采用的操作符如下: GOTHRU(D,r1,r2) www.aibbt.com 让未来触手可及 239 Precondition:INROOM(ROBOT,r1) ∧ CONNECTS(D,r1,r2), Delete list:INROOM(ROBOT,r1), Add list:INROOM(ROBOT,r2) PUSHTHRU(b,d,r1,r2) Precondition:INROOM(ROBOT,r1) ∧ CONNECTS(D,r1,r2) ∧ INROOM(b,r1), Delete list: INROOM(ROBOT,r1) INROOM(b,r1), Add list: INROOM(ROBOT,r2) INROOM(b,r2)。 在 STRIPS 中泛化过程具体构造泛化的机器人规划,采用三角表表示,利用归结证明前题 条件。图 9.5 给出了描述操作符 GOTHRU(d,r1,r2) 和 PUSHTHRU(b,d,r1,r2) 的三角表。 图 9.5 三角表 三角表是有用的,它给出了操作符的前提条件怎样取决于其它操作符的影响和初始世界 模型。STRIPS 的解释泛化算法如下: for each equality between pi and pj in the explanation structure do letθ be the MGU of pi and pj for each pattern pk in the explanation structure do replace pk with pk θ STRIPS 使用具有三角表的解释泛化算法生成泛化操作符序列。第一步,对整个泛化表用 变量代替常量。第二步,根据两条标准约束表:一个是保持操作符之间的依赖关系;另一个 是泛化表中的操作符前提条件可被证明,这与原来规划中前提条件证明一样。通过泛化处理, STRIPS 产生泛化如图 9.6 所示的泛化表。 www.aibbt.com 让未来触手可及 240 图 9.6 泛化三角表 DeJong 等的学习方法是学习图式(schemata)。图式的核心思想是构造系统知识时,要将 为了达到一定目标的相关知识放在一个组。图式是一种操作符的偏序集,简单的图式因果地 连在一起。EGGS 采用动态的可操作性准则,当系统学到了一个概念的一般化图式后,该概念 就可操作了。EGGS 的问题描述如下: 给定: · 领域理论:由三部分组成:①领域中对象的种类和特性的定义;② 一组关于对象特 性和相互关系的推理规则;③ 一组问题求解的操作和已知的泛化图式。 · 目标:目标状态的一般规约。 · 初始世界状态:关于世界及其特性的规约。 · 观察到的操作/状态序列(可选):通过专家观察低级操作序列,达到目标的示例而获 得。有时,这会漏掉一些操作,必须从输入到目标状态进行推理。 确定: · 达到目标状态的一个新模式。 EGGS 在泛化过程中始终维护两个独立的置换表 SPECIFIC 和 GENERAL。SPECIFIC 用于对 解释结构的置换,以得到对具体实例的解释,而 GENERAL 置换得到泛化的解释。假设σ是 SPECIFIC 置换,γ是 GENERAL 置换,那么,泛化过程的形式化描述如下: for each equality between expression e1 and e2 in the explanation structure: if e1 is the antecedent of a domain rule and e2 is the consequent of a domain rule then let ∅ = the most general unifier of e1σand e2σ let σ = σ∅ (* update SPECIFIC substitution) let δ = the most general unifier of e1γand e2γ let γ= γδ(* update GENERAL substitution) else let ∅ = the most general unifier of e1σand e2σ www.aibbt.com 让未来触手可及 241 let σ = σ∅ (* update SPECIFIC substitution) 基于上述思想,Mooney 和 Bennett 提出了 EGGS 解释泛化算法,这种算法与抽象 STRIPS 算 法非常相似: 算法 9.1 EGGS 解释泛化算法。 let γ be the null substitution {}. for each equality between pi and pj in the explanation structure do: let pi' be the result of applying γto pi. let pj' be the result of applying γto pj. let θ be the MGU of pi' and pj'. let γ be γθ. for each pattern pk in the explanation structure do: replace pk with pkγ. 9.5 解释特化学习方法 1987 年卡耐基-梅隆大学的 Minton 和 Carbonell 提出解释特化(Explanation-Based Specialization,简写 EBS)学习方法[Minton 1987]。他们利用这种方法开发了学习系统 PRODIGY。它较好地克服了 EBG 方法中过份一般化的缺点。它从多种目标概念学习,其解释过 程是对每个目标概念进行详细描述。解释过程结束后,把得到在有关目标概念的描述转换成 一条相应的控制规则。可以用这些规则来选择合适的结点、子目标、算子及约束。具体方法 如下。 PRODIGY 是一种与一些学习模块结合的通用问题求解器,它的体系结构如图 9.7 所示。 基于操作符的问题求解器,对于推理规则和操作符的搜索提供一种统一的控制结构。问题求 解器包括一个简单的理由维护子系统,规定有条件影响的操作符。问题求解器搜索可以通过 控制规则导航。 图 9.7 PRODIGY 体系结构 EBL 模块从问题求解跟踪获取控制规则。从领域和问题求解器的相关方面构造解释,然 后结果表达式变成搜索控制规则。派生抽取模块是派生类比机。它可以重播过去类似问题的 整个解。从图 9.7 可以看出,类比和 EBL 是独立的机制,获取具体领域的控制知识。实验学 www.aibbt.com 让未来触手可及 242 习模块是为了求精不完全的或不正确的具体领域知识。当规划执行控制器检测到内部期望与 外部期望不同时,实验模块就被触发。抽象产生器和抽象层次模块提供多级抽象规划能力。 基于该领域的深度优先分析,领域知识被分成多个抽象级。当问题求解时 PRODIGY 生成抽象 结果,并且进行求精。 PRODIGY 可以从四种目标概念学习,这些概念是:成功、失败、唯一的选择、 目标互相 制约。每当用户给定一个目标,以及它的一个例子,系统先反向分解目标到叶节点,得到相 应的目标概念,然后分析问题求解轨迹,解释该例为何满足这个目标概念。 例如,如果得到了解,则将学习关于成功概念的控制规则;如果无解,则学习关于失败 概念的控制规则;如果某个选择是唯一的,则学习有关唯一的选择概念的控制规则;如果某 个目标的成功须依赖别的目标,则学习目标互相制约概念的控制规则。 1.解释过程 PRODIGY 系统中的解释过程就是详细说明的过程。解释是使用训练例子提供的信息从知识 库中寻找证明依据。解释过程等价于:以目标概念为根,生成一棵自顶向下的证明树。解释 的每一步,都从领域知识库中选择与所给例子一致的规则,生成一个结点。每条规则是对结 点子目标的详细描述。解释算法如下: 第一步:如果此概念是原语,则没有规则蕴含此概念,则不改变且返回,否则按第二步。 第二步:访问与此概念相联的识别器(即连接目标概念与知识库的映射函数),取出与训 练例子一致的规则。规则中每个非负的原子式为一个子概念。如果子概念没有被特化过,则 特化该子概念;且重新唯一地命名已经特化过的变量;且用特化置换子概念并简化之。 第三步:返回。 这时的目标概念已是完全特化过的概念。用它们去套相应的规则模式,便获得一条对应 此目标概念的控制规则。 2.学习控制规则 在 PRODIGY 中,针对四种目标概念,有四种固定的控制规则模式。将某个目标概念的详 细描述与规则模式匹配,就获得相应的控制规则。由成功概念学到 preference rules,它表 明什么情况下某选择是成功的。由失败概念学到 rejection rules,它表明在这种情况下这种 选择应该拒绝。如果其它选择都失败,则选择是唯一的,于是学到 selection rules。 下面以失败概念为例,说明解释过程以及控制规则的形成。领域背景积木世界的动作规 划问题。对某个失败的规划动作的学习,产生的解释如下。 (OPERATOR-FAILS op goal node)if (AND (MATCHES op (PICKUP x )) (MATCHES goal (HOLDING x)) (KNOWN node (NOT (ONTABLE x)))) 其中小写字符是变量。上式是用领域知识库中形式化的知识对失败动作进行特化后的结 果。其语义是,如果当前节点不是“ONTABLE x”,当前算子是“PICKUP x”,则算子“PICKUP x”是一个失败算子。由这个失败概念学到相应的 rejection rule 是: (REJECT OPERATOR (PICKUP x)) if (AND (CURRENT-NODE node) (CURRENT-GOAL node (HOLDING x)) (CANDIDATE-OPERATOR (PICKUP x)) (OPERATE-FAILS op goal node)) 其中 op=(PICKUP x),goal=(HOLDING x),node=(NOT (ONTABLE x))。规则含义是:如果当前 节点是 (NOT (ONTABLE x)),当前目标是(HOLDING x),且该节点上候选算子是(PICKUP x), 而且该算子在该节点和该目标下是失败的,则拒绝算子(PICKUP x)。 www.aibbt.com 让未来触手可及 243 通过把控制规则传递到四个策略上,可以动态地改善问题求解器的性能。这四个策略是: 选择节点、子目标、算子和一组约束的方法。在以后求解类似问题时,先用selection rules 选出适合的子集,然后用 rejection rules 过滤,最后由 preference rules 寻找启发性最 好的选择,从而达到减少搜索的效果。 3.知识表示 PRODIGY 的知识库包括领域层公理和构筑层公理两类知识。前者是领域规则,后者是描 述问题求解器的推理规则。二者都用陈述性逻辑语言表示,以便扩展和显式推理。 PRODIGY 虽然没有明显的泛化过程,但其领域规则,特别是问题求解器的推理规则实际上 已经进行了泛化处理。它们不是由最原始的领域知识构成,所以实际上具有一定的概括性。 另一方面,PRODIGY 是使用特化的方法由规则来构成证明树形式的解释,所以解释的结果所获 取的描述是对目标概念的特化,对例子的泛化。这样的结果既保证不过份概括,又具有一定 的通用性。 9.6 解释泛化的逻辑程序 如前所述,EBG 方法首先要建立一个关于训练例的解释结构。这实际上是定理证明问题, 因此,可以把 EBG 看作是 Horn 子句归结定理证明的扩展,把泛化看作标准定理证明的附带工 作。 9.6.1 工作原理 像 Prolog 之类的逻辑程序设计语言都是以 Robinson 提出的归结原理为基础的。归结原 理的本质思想是检验短句集合是否包含空语句。实际上,归结原理是一种演绎规则,使用它 能够从短句集中产生所有的结果短句。 归结原理:设两个短句 C1、C2 无公共变量,L1 和 L2 分别是 C1 和 C2 的两个文字,若 L1 和¬L2 存在一个最一般的合一置换,那么子句(C1 - L1) ∨ (C2 - L2)就是两个子句 C1 和 C2 的归结式。 对于给定目标,Turbo Prolog 寻求匹配子句的详细过程就是合一过程,这个过程完成了 其他程序设计语言中所谓的参量传递。下面是 Turbo Prolog 的合一算法。 算法 9.2 Turbo Prolog 的合一算法。 (1) 自由变量可以和任意项合一。合一后该自由变量约束为与之合一的项。 (2) 常量可与自身或自由变量合一。 (3) 若两个复合项的函子相同且函子所带参量个数一样,则这两个复合项可以合一的条 件是:所有子项能对应合一(表看成是特殊类型的复合项)。约束变量要用合一后的约束值替 换。 EBG 的第一步工作——建立训练例的解释结构,就是以训练例为给定目标,通过搜索、匹 配领域理论(领域理论已表示为 Prolog 的规则、事实),得到训练例的一个证明,证明它是 目标概念的一个例子。既然如此,建立解释结构就需用到合一算法。基于这一点,把合一算 法作为 EBG 算法实现的基础,在此基础上,进行 EBG 的第二步——泛化过程。 用 Turbo Prolog 实现 EBG,我们考虑把领域理论用内部数据库的形式存贮。这样在建立 训练例的解释结构时,可以如同调用谓词一样,方便地查询数据库(领域知识),搜索匹配的 www.aibbt.com 让未来触手可及 244 规则。 虽然 Prolog 的基础是合一算法,但用 Prolog 实现 EBG,仍需显式地执行合一算法,这就 是说要用 Turbo Prolog 谓词完成合一算法,应该说,这实际上是元级程序设计的思想。具体 地,我们定义谓词来处理项的合一、项表的合一等等。正是通过合一,完成了训练例的解释, 建立一棵证明树。 第二步的泛化工作是用目标概念回归(regress)得到的证明树。这个回归过程包括常量 用变量代替,以及新项合成等工作。用 Turbo Prolog 有效地实现常量用变量代替的过程是有 困难的,尤其是当变量未被约束时。虽然已经定义了谓词实现回归,但如何增加其通用性, 更有效地处理多个变量未被约束的情况,尚待进一步的工作去完成。 解释和泛化是 EBG 的两个阶段,但容易想到的是先解释,然后把得到的证明结构交给泛 化阶段处理。这样不仅从时间效率上考虑,两者是串行工作的,而且分开进行,需要保存完 整的证明树,各条路径都需保存。这里,我们考虑两步交叉进行。在系统试图证明训练例是 目标概念的一个例子的同时,从目标概念出发,向后搜索,直到训练例的事实获得匹配为止。 在这个过程中,每次运用一个规则,就同时倒回去,将此规则不经例示地用于已变量化了的 目标概念之上,从而在建立训练例的解释的过程中同时建立起泛化的解释结构。这样,就将 EBG 的两个阶段交叉起来。 9.6.2 元解释器 Prolog 简单的元解释器如下: prolog(Leaf):-clause(Leaf,true). prolog((Goal1,Goal2)):- prolog(Goal1), prolog(Goal2). prolog(Goal):- clause(Goal,Clause), prolog(Clause). 在此基础上,使用 Prolog 构造元解释器作为 Prolog_EBG 的核心,具体程序如下: prolog_ebg(X_Goal,X_Gen,[X_Goal],[X_Gen]:-clause(X_Goal,true). prolog_ebg((X_Goal,Y_Goal),(X_Gen,Y_gen),Proof,GenProof):- prolog_ebg(X_Goal,X_Gen,X_Proof,X_GenProof), prolog_ebg(Y_Goal,Y_Gen,Y_Proof,Y_GenProof), concat(X_Proof,Y_Proof,Proof), concat(X_GenProof,Y_GenProof,GenProof). prolog_ebg(X_Goal,X_Gen,[Proof],[GenProof]):- clause(X_Gen,Y_Gen), copy((X_Gen:-Y_Gen),(X_Goal:-Y_Goal)), prolog_ebg(Y_Goal,Y_Gen,Y_Proof,Y_GenProof), concat([X_Goal],[Y_Proof],Proof), concat([X_Gen],[Y_GenProof],GenProof)。 www.aibbt.com 让未来触手可及 245 9.6.3 实验例子 这里通过“自杀”这个例子来说明如何实现 EBG。 输入: 目标概念:suicide(x). 领域理论: 一组子句或称规则. suicide(x):- kill(x,x). kill(A,B):- hate(A,B), possess(A,C), weapon(C). hate(A,A):- depressed(A). possess(A,C):- buy(A,C). weapon(Z):- gun(Z). 训练例: 一组事实子句。 depressed(john). buy(john,gun1. gun(gun1). suicide(john). 可操作性标准:暂时简单地处理为静态标准。 operational(depressed). operational(gun). operational(buy). 系统首先建立关于 suicide(john)的解释结构(见图 9.8)。由 Prolog 程序的解释机理可 以得知:建立解释结构采用的是 Top-Down 的推理策略。每次运用规则时,都相应地将规则变 量化之后用于一般化的解释结构上,从而在建立 suicide(john)的解释结构的同时,得到 suicide(x)的泛化解释结构。具体过程如图 9.9 所示。 图 9.8 suicide(john)的解释结构 www.aibbt.com 让未来触手可及 246 图 9.9 目标概念 suicide(x)的泛化过程 图 9.9 的泛化过程是通过回归实现的,其中要将谓词完成常量变量化这一过程。 从另一角度考虑实现 EBG,可以两条线推进,一条是建立 suicide(john)的具体的证明结 构,另一条是从 suicide(x)出发,得到泛化的解释结构。两条线之间的联系在于具体例子选 用的规则就是泛化解释中要用的规则。也就是说,建立具体例子解释时需要搜索问题空间, 以试图找到合适的可用规则,而建立泛化解释则可免去搜索过程,直接使用训练例解释时使 用的规则。 9.7 基于知识块的 SOAR 系统 50 年代未,对神经元的模拟中发明了用一种符号来标记另一些符号的存储结构模型,这 是早期的记忆块(chunks)概念。在象棋大师的头脑中就保存着在各种情况下对奕经验的存储 块。80 年代初,Newell 和 Rosenbloom 认为,通过获取任务环境中关于模型问题的知识,可 以改进系统的性能,记忆块可以作为对人类行为进行模拟的模型基础。通过观察问题求解过 程,获取经验记忆块,用其代替各个子目标中的复杂过程,可以明显提高系统求解的速度。 由此奠定了经验学习的基础。 1987 年,斯坦福大学 Andrew Golding 和 Paul S. Rosenbloom 与密西根大学的 John E. Laird 开发了 SOAR 系统。它的学习机制是由外部专家的指导来学习一般的搜索控制知识。外 部指导可以是直接劝告,也可以是给出一个直观的简单问题。系统把外部指导给定的高水平 信息转化为内部表示,并学习搜索记忆块。图 9.10 给出了 SOAR 的框图。 www.aibbt.com 让未来触手可及 247 图 9.10 SOAR 的体系结构 产生式存储器和决策过程形成处理结构。产生式存储器中存放产生式规则,它进行搜索 控制决策分为两个阶段。第一阶段是详细推敲阶段,所有规则被并行地用于工作存储器,判 断优先权,决定哪部分语境进行改变,怎样改变。第二阶段是决策阶段,决定语境栈中要改 变的部分和对象。 有时因知识不完善,无法唯一决策而进入困境(impass)。为了解决困境,SOAR 自动建立 子目标和新的语境来解决困境。选择问题空间、状态和操作符,创建子目标。对每个困境都 产生子目标,SOAR 问题求解能力可以排除困境。为了说明 SOAR 的工作过程,现以九宫问题为 例,其初始状态和目标状态如图 9.11 所示。 图 9.11 九宫问题的初始状态和目标状态 该问题求解的过程如图 9.12 所示。 www.aibbt.com 让未来触手可及 248 图 9.12 SOAR 求解九宫问题的过程} 每当问题求解器不能顺利求解时,系统就进入劝告问题空间请求专家指导。专家以两种 方式给以指导。一种是直接指令式,这时系统展开所有的算子以及当时的状态。由专家根据 情况指定一个算子。指定的算子要经过评估,即由系统建立一个子目标,用专家指定的算子 求解。如果有解,则评估确认该算子是可行的,系统便接受该指令,并返回去求证用此算子 求解的过程为何是正确的。总结求证过程,从而学到使用专家劝告的一般条件,即记忆块。 另一种是间接的简单直观形式,这时系统先把原问题按语法分解成树结构的内部表示, 并附上初始状态。然后请求专家劝告。专家通过外部指令给出一直观的简单音量。它应该与 原问题近似,系统建立一个子目标来求解这个简单问题。求解完后就得到算子序列,学习机 制通过每个子目标求解过程学到记忆块。用记忆块直接求解原问题,不再需要请求指导。 SOAR 系统中的记忆块学习机制是学习的关键。它使用工作存储单元 (working-memory-elements)来收集条件并构造记忆块。当系统为评估专家的劝告,或为求解 简单问题而建立一个子目标时,首先将当时的状态存入工作存储单元 w-m-e。当子目标得到解 以后,系统从 w-m-e 中取出子目标的初始状态,删去与算子或求解简单问题所得出的解算子 作为结论动作。由此生成产生式规则,这就是记忆块。如果子目标与原问题的子目标充分类 似,记忆块就会被直接应用到原问题上,学习策略就把在一个问题上学到的经验用到另一个 问题上。 记忆块形成的过程可以说是依据对于子目标的解释。而请示外部指导,然后将专家指令 或直观的简单问题转化为机器可执行的形式,这运用了传授学习的方法。最后,求解直观的 简单问题得到的经验(即记忆块)被用到原问题,这涉及到类比学习的某些思想。因此可以说, SOAR 系统中的学习是几种学习方法的综合应用。 www.aibbt.com 让未来触手可及 249 9.8 可操作性标准 可操作性标准(operationality criterion)是 EBG 的一个输入要求。关于可操作性标准, Mitchell,Keller 和 Kedar-Cabelli 指出:“概念描述应该表示为描述训练例的那些谓词或其 他从领域理论中挑选出来的易于估值的谓词。”显然,这种处理很直观、简单,只需在领域知 识中增加一个谓词 operational(pid)说明哪些谓词是可操作的即可。但是,这种处理是静 态的,远远不能满足实用学习系统的要求。所以,如何把可操作性标准处理成动态的,已经 越来越为研究人员重视。比如可以引入定理证明机制,从而动态地确定可操作性标准,甚至 可以用 EBG 技术动态地改变可操作性标准。这样动态地处理,要求引入推理机制,而不再只 是列出可操作的谓词而已。既然要推理,就需一些规则、事实(前提),这就涉及到元级 (meta-level)程序设计的一些技术,要求系统能处理元规则。但 Turbo Prolog 不直接支持元 程序设计,如果把可操作性标准做成动态的,首先要在系统中实现一些元级谓词,使系统支 持元级知识才行。所以,我们暂时把可操作性标准处理为静态的,用数据库谓词,把事先规 定好的一些谓词名,存在内部数据库中。 提出可操作性问题的目的是希望学到的概念描述有利于提高系统运行效率。一种观点认 为:如果一个概念描述能有效地用于识别相应概念的例子,则它是可操作的。但是概念描述 不只用于识别例子,还有空间指标等。因此,上述观点不完善。 Keller 将可操作性定义如下: 如果给定: (1)一个概念描述。 (2)一个执行系统,它利用概念描述改善执行情况。 (3)改善执行系统的各种要求,应明确各要求的类型和程度。 那么若满足下列二条件则该概念描述是可操作的: (1)可用性:执行系统可以使用该概念描述。 (2)效用性:执行系统使用概念描述时,系统的运行得到要求的改善。 例如对 Safe-to-Stack(x,y)的一个泛化解释结构如图 9.13 所示。 图 9.13 可操作性修剪 解释结构中的叶节点都是可操作的,如 Made-of(x,m)和 Spec-Grav(m,d)。某些中间节点 也可能是可操作的,在图中的 Density(x,d)是可操作的。于是得到图中的可操作性界限,图 中虚线以下各节点是可操作的。对于可操作的中间节点,可以从解释结构中删掉它的子解释。 如图中可删去 Made-of(x,m)和 Spec-Grav(m,d)。这称为“可操作性修剪”。图9.13 的解释 经过修剪后得到下列规则: Volume(x,v)∧ Density(x,d)∧ X(v,d,w) www.aibbt.com 让未来触手可及 250 ∧ Isa(y,rect-solid)∧ Made-of(y,lucite) ∧< (w,10) → Safe-to-Stack(x,y) 关于可操作性标准的处理,是一个较复杂的问题,仅可操作性标准的确定就可能涉及多 方面的问题。这个问题处理的好坏又将直接影响学习系统的好坏,所以它在学习系统中是一 个相当重要的问题。 多数系统对可操作性标准没有精确的定义。许多系统认为可操作性标准是独立的、静态 的。DeJong \& Mooney 等人则提出静态标准是不能满足需要的,并且用例子说明可操作性应 该是证明结构的函数,也就是说,可操作性标准应该是动态的。比如,可以定义一般化的解 释结构的终结结点的谓词是可操作的;也可以应用一个定理证明机制来决定可操作性。进一 步讲,甚至可以运用 EBG 来决定可操作性。不管怎样,系统的可操作性标准应该反映计算的 代价及学习的得益,尤其应该确保时间代价不能高于得益。但是,最初的基于解释的学习却 忽略了这一点,常常认为 EBL 的问题求解系统学到的知识必定能改进系统的性能,但这种认 识大概是过于乐观,过于简单化了。一般来说,EBL 实现的是启发式策略,不能保证在所有 环境下都能使性能得到提高。例如 STRIPS MACROPS 的学习实际上降低了效率。如果测试 macro-operator 的前提所需的累积时间超过了使用 macro-operator 减少搜索而节省的时间, 那么总的性能是降低了。所以,认为可操作性完全独立于系统显然是不符合所有情况的。 Mitchell 等提出的 EBG 中用显式的可操作性标准测试解释的可应用性,这当然是很直观 的处理方法。然而,如 Dejong 和 Mooney 所指出的,Mitchell 等提出的可操作性标准只 能 包括一小部分谓词,而且仅保证新知识能够被直接评价,不保证新知识是否有用。如在 EBG 的 例子中,可操作性标准仅仅要求解释必须进行到能直接计算或直接观察到的属性才停止。后 来的 META-LEX 在这个问题上考虑了学习的环境,使测试一个属性的代价随系统的知识发生 变化。于是,可操作性标准就不再是静态的,而成为动态的了。PRODIGY 更进一步改进了可 操作性标准的定义。 9.8.1 PRODIGY 的效用问题 PRODIGY 系统是通过分析经验,与专家交互来获取知识的。该系统学习的是与问题求解 有关的目标概念,比如学习 successful,unsuccessful,preferred 这些目标概念。典型的 问题求解领域是机工车间的调度问题:要求将原材料通过 LATHE,CLAMP,POLISH 等操作,变 成产品。PRODIGY 的学习任务是要总结出在什么情况下使用某个操作是 successful 的或 unsuccessful 的。这个系统的一个特点是纳入了一些控制规则,用以提高搜索效率,改善问 题解的质量,并且能够使某些原来从效率角度考虑不加搜索的路径得到搜索,PRODIGY 在处 理可操作性标准时,要求学到的知识能提高问题求解机制的效率,要求学到的控制知识不仅 只是能用,而且应当是有用的,因此,这里的可操作性就需包括可用性:学到的控制规则不 但要能够执行,而且要能够确实改进系统的性能。具体一点,控制规则的可用性可以定义如 下: Utility=(AvrSavings ApplicFreq) – AvrMatchCost (9.1) 其中: AvrMatchCost = 匹配该规则的平均耗费 AvrSavings = 应用该规则时,平均节约的时间 ApplicFreq = 应用该规则的频度 系统学到一条控制规则之后,PRODIGY 就会在随后处理问题的过程中保留使用该规则的 统计信息,用于决定其可用性。如果规则的可用性是负值,这条规则就要被放弃,从这个角 www.aibbt.com 让未来触手可及 251 度看,在 PRODIGY 系统中可操作性很大程度上是由可用性表示的,由此看来,可操作性能够 被量化,可以不预先确定,而是在系统执行过程中动态地确定其值。 将可用性纳入可操作性标准,有助于建立通用的基于解释的学习系统的研究,使得系统 在估价可操作性的能力上更加成熟。以前的系统,大多从如何有效地识别训练例的角度来定 义可操作性,但是对于通用定义这是远远不够的。一是这种可操作性定义假设概念描述将用 于识别训练例,其实,概念描述还有其他用途,比如训练例的泛化。二是多数系统中使用定 义来有效识别训练例时,是假设用执行时间作为性能好坏的度量来估价可操作性的。实际上, 还有其他方面的效率可以用于估价性能的好坏,如空间效率。常常有这样的情况出现:从时 间效率上看是可操作的,从空间效率上看却不可操作。除了效率以外,还有代价、简单度等 等标准与性能有关,也可能影响可操作性。 9.8.2 SOAR 系统的可操作性 SOAR 系统则采用了不同的处理可操作性标准的方法。SOAR 系统是由 Laird,Newell 和 Rosembloom 研制的。SOAR 并不是作为一个 EBL 系统研制开发的,它只是想通过一种独立的学 习机制 chunking 做成一个通用的认知结构。Chunking 操作就是在处理每个子目标时总结考查 过的信息。这种机制与 EBL 极为相似,而且通过 Chunking 似乎可以在 SOAR 中实现 EBL。 Chunking 要求的输入是操作符的线性序列或树形序列。系统的任务是把这一串操作符转化成 一个宏操作符(或称 Chunk )。SOAR 系统主要是通过 Chunking 来获取知识的,因此就有意忽 略了可用性。一是由于这里假设 Chunking 是自动完成的;二是由于 SOAR 系统的性能是由 完成一项任务所需做的抉择次数来衡量的。既然 Chunking 可能减少所需的抉择次数,按照 性能公式应该很合算。但实际上,每次抉择本身就可能包含复杂的过程,没有考虑这一点, 因而抉择次数并不与实际的主机执行时间成正比。 9.8.3 MRS-EBG 的可操作性 Hirsh 在 MRS 逻辑程序设计系统下实现 EBG 时,由 MRS 的元推理机制想到将可操作性标 准处理为可证明的。在 MRS 中,证明策略能够用元级的理论来说明。举例来说,元规则可以 用来说明这样的规则:选择一条使用了算术谓词的证明路径的可能性更大一些。MRS 本身包含 的谓词就可以说明这种属性,因此很容易说明如下的可操作性规则: Arithmetic_Predicates(pred(arg1,argn))-operational(pred(arg1,arg5)) Hirsh 认为以前的 EBG 算法,都同时产生例子的解释结构和泛化的解释结构。但是,在产 生解释结构时没有进行可操作性的推理,而是在随后的泛化那一步,才决定可操作性并修改 解释结构。泛化这一步使用可操作性来对泛化了的解释结构进行删减,然后使用得到的结构 来形成规则。这样一来,尽管多数泛化的工作是在解释过程中完成的,但解释和泛化仍然没 能结合起来。 在 MRS-EBG 中,可操作性是在解释过程中确定的,一旦某一分支由于没有可操作的定义 而终结,就立即进行回溯,寻找该分支的另一能够产生一可操作的概念定义的证明。这样, 最终一定能得到目标概念的可操作性描述。 www.aibbt.com 让未来触手可及 252 9.8.4 META-LEX 的处理方法 在 Metalex 系统中,可操作性的处理考虑了系统的性能因素。基本想法是通过经验来评 估可操作性:在系统中使用概念描述,然后看系统的行为是否达到了事先提出的系统目标。 Metalex 要学习的,是在向前搜索中有用问题求解步骤的集合,或者说是这个集合的描述。如 果系统的性能没能达到所希望的水平,Metalex 能够估计出该描述差多少就能说是可执行的 了,并且能说明这种搜索方向是否合适。这种估价可操作性的办法是动态的,因为它取决于 当前状态和当前的性能目标;另外,这种估价产生出效率的量度和有效度。但是这种处理的 代价很高,因为每次需要估价可操作性时都必须测试系统。 可操作性对于基于解释的学习系统是至关重要的。但是,目前检测可操作性的方法决定 于能否简化系统的性能假设(这些假设很容易在学习过程中被破坏)。尽管在这方面国内外的 研究人员一直在寻找有效的处理方法,但多数只是处于理论研究阶段,应用于实际系统中的 尚未达到令人满意的程度。因此,这方面的工作仍有待于进一步的研究。 9.9 不完全领域知识下的解释学习 9.9.1 不完全领域知识 解释学习中一个重要的问题是领域知识。领域知识作为解释学习的前提,要求是完整的、 正确的。但是这种要求在现实世界的许多问题中很难得到满足。在实际中往往出现领域知识 不完整、有错误等情况。领域知识不能解释训练例,那么现有的 EBG 算法就将失效。 领域知识的不完善性可有下列三种情况: · 不完整 (incomplete):领域知识中缺少规则、知识,因而无法给出训练例的解释。 · 不正确 (incorrect):领域知识中有些规则不合理,因而可能导致训练例的错误解释。 · 难处理的 (intractable):领域知识过于繁杂,使得建立训练例的解释树所需的资源 超出现有机器的资源。 为了解决不完善领域知识的问题,我们对逆归结、基于深层知识等方法,作了有益的尝 试。 9.9.2 逆归结方法 一阶谓词逻辑中归结原理是机器定理证明的基础,也是目前解释学习中建立解释的主要 途径。 归结原理:设 C1,C2 是两个子句,无公用变量,L1,L2 分别是 C1,C2 中的两个文字,存在 一个最一般的合一者σ,则子句 C=(C1 - {L1})σ ∪ (C2 - {L2})σ (9.2) 称为 C1,C2 的归结子句。 在逆归结 (inverting resolution)中,讨论已知 C 和 C1,如何得到 C2 的问题。在命题 逻辑中,σ=Φ,所以归结子句的式(9.2)可以转换为: C =(C1 ∪ C2) - {L1,L2} (9.3) 由式(9.3)可以得到: www.aibbt.com 让未来触手可及 253 (1) 若 C1 ∩ C2 = ∅,则 C2 = (C-C1) ∪ {L2} (2) 若 C1 ∩ C2 ≠ ∅,C2 需包括 C1 -{L1}的任意子集,因此,一般情况下有: C2i = (C - C1) ∪ {L2} ∪ S1i (9.4) 其中 S1i∈P (C1-{L1},P(x)表示集合 x 的幂集。 显然 如果 C1 中有 n 个文字,C2 就有 2n-1 个解。 在一阶谓词逻辑中,令σ = θ1θ2,其中 θ1,θ2 满足下列条件: (1) θ1,θ2 的变量域分别为 C1 的变量域和 C2 的变量域, (2) 1L θ1 = 2L θ2 则可以得到: C2 = (C-(C1-{L1})θ1)θ2 -1 ∪ { 1L }θ1θ2 -1 = ((C - (C1-{θ1})θ1) ∪ { 1L }θ1))θ2 -1 (9.5) 当C1 是单元子句,即 C1 = {L1}时,可以得到 C2 = (C ∪{ 1L }θ1)θ2 -1 (9.6) 这里 θ2 -1 是逆置换。所谓逆置换,是指给定项或文字 t 及置换 θ,存在唯一的逆置换 θ-1,满 足 tθθ-1 = t。进一步讲,若 θ = {v1/t1,…,vn/tn},那么, θ-1 = {(t1,{P1,1,…P1,m1})/v1,…,(tn,{Pn,1,…,Pn,mn}/vn) (9.7) 其中 Pi,mj 是 t 中变量 vi 的位置。逆归结就是将 t 中{Pi,1,…,Pi,mi}处的所有 ti 都换为 vi。 解释学习是从目标概念的初始描述出发,利用领域知识(以知识库形式存储),建立关于 训练实例的解释树。这个过程通常用目标驱动的推理方式。当解释过程由于缺乏某条规则而 无法继续下去时,学习过程即告失败。这里采用逆归结方法克服这个问题[马海波 1990]。 我们采用产生式规则表示领域知识(知识库),算法需要对知识库进行预处理,产生一个 规则间的依赖表。这样,对算法而言,拥有的领域知识包括一组产生式规则和一个依赖表。 依赖表是知识库中规则、谓词间联系的一种表示形式,它包含着规则,谓词间相关的语 义信息。我们通过一个简单的例子来说明依赖表的结构。 知识库: Rule 1.Sentence (S0,S):- noun-phrase(S0,S1), verb-phrase(S1,S). Rule 2.noun-phrase (S0,S):-determiner(S0,S1), noun(S1,S). Rule 3.noun-phrase(S0,S):-name(S0,S). Rule 4.verb-phrase(S0,S):-intransitive-verb(S0,S). 依赖表如下: www.aibbt.com 让未来触手可及 254 其中基本谓词就是满足可操作性标准的谓词,第一列则全是非可操作的谓词。至于构造 此依赖表的算法,这里不作详细叙述。下面给出两个算法,完成解释学习过程。 算法 9.3 解释树算法生成算法。 (1) 对目标概念开始做逆向推理,逐渐扩展解释树,该解释树是一棵与或树。 (2) 遇到失败结点,调用逆归结算法。 (3) 分析得到的完整解释树,进行泛化,得到目标概念的新描述。 算法 9.4 逆归结算法。 (1) 若当前失败结点 F 是可操作的,回溯;若当前失败结点 F 不可操作,转到(2)。 (2) 与点 F 的父结点 P 对应的谓词符号为 Pred,利用依赖表,检查 Pred 是否有其他路 径(即是否有或结点存在)。没有,转到(4)。 (3) 对依赖表中 Pred 的其他路径(或结点),检查其对应的可操作谓词(基本谓词)是 否被训练实例满足。 · 若存在满足训练例的路径,则选择此路径,完成解释树,结束算法。 · 依赖表中 Pred 的其他路径(或结点)对应的可操作谓词(基本属性)与训练例冲突 或不为训练例具备,转到(4)。 (4) 先对结点 P 除结点 F 以外的子结点进行推理,所有子结点处理完之后,回到结点 F。 (5) 用未使用的训练属性,采用逆归结的方法,得到节点 F 与剩余属性间的一条伪规则, 完成整个解释树的建立 过程,结束算法。 这里描述的算法,能够在领域知识不完全的情况下进行解释学习,但领域知识的不完全 必须是个别规则的缺少,如果领域知识过于零散,未能构成较为完整的知识结构,此算法将 无能为力,而需要求助于建立知识库的方法和工具,或者采用诸如归纳、类比等其他学习方 法。 最后要指出的一点是,算法虽然完成解释学习,但毕竟由于有规则缺少,处理时引入了 不精确因素,因而会不同程度地影响整个解释树的真实性,不能保证解释过程的永真。如果 能对解释树加入可信度,在学习的后一步进行概括时考虑到可信度的取值、传递,就可以区 别那些完全领域的学习。 9.9.3 基于深层知识方法 故障诊断领域的知识经常是不完善的。如何完善故障诊断的知识库是一个急待解决的问 题。因此,我们提出了一种用于精馏系统故障诊断系统中的基于深层知识的学习模型(吕翠英 1994)。该模型分四阶段:实例解释、猜想生成、猜想确立和推广。应用此模型可以发现现有 知识库的知识不能诊断的故障,在获得新知识以后可进行正确的诊断。使用基于深层知识的 学习模型的系统学习过程可概述如下: (1) 由环境提供一实例。 (2) 实例解释阶段:系统使用基于解释的学习方法对该实例进行解释。解释过程有可能 成功,有可能失败。成功是指用系统现有的领域知识就可以说明。失败是指用系统现有的领 www.aibbt.com 让未来触手可及 255 域知识,无论如何,也不可以说明。成功则进入(5)推广。失败则进入(3)猜想生成。解释用 解释树来表示。成功则表示有一棵完整的解释树。失败则表示解释树不完整,树上有断口。 (3) 猜想生成阶段:系统试图确立自身相对于当前实例的知识断口,即确定出在什么地 方缺少知识。当找到知识断口后,建立一个有可能弥补该断口的猜想,该猜想的目标端由断 口的目标端充任,该猜想的数据端由输入实例的数据端充任。然后进入(4)猜想确立。 (4) 猜想确立阶段:调用深层知识库。在深层知识库中寻找猜想的目标端与数据端之间 的某种内部联系,即试图确立猜想的目标端与数据端在深层知识中是否具有共同的属性。确 立可能成功,也可能失败。若失败,退回(3)猜想生成,重新获得新的猜想。若成功,进入(5) 推广。 (5) 推广:将已确立的猜想加以推广。推广的结果是:得到若干具有广泛适应面的猜想。 推广过程分为两个阶段。第一阶段将猜想中的常数最大限度地变量化。第二阶段对猜想执行 概念推广,得到一个或多个不同一般级别的概念。 (6) 将推广的结果交执行单元使用。 习 题 1. 何谓基于解释的学习?与归纳学习相比,解释学习的优点和缺点是什么? 2. 简述解释学习涉及的三个不同的空间,以及三个空间的相互关系。 3. 阐述基于解释的泛化过程,并重点说明目标概念、训练例子、领域理论和可操作准则在 这种学习过程中的作用。 4. 比较解释泛化学习方法和解释特化学习方法的基本思想。 5. 在你选择的一些问题领域建立基于解释的学习的领域理论。对几个训练实例运用这些理 论,说明基于解释的学习程序的行为。 6. 试述可操作性标准的含义,以及将可操作性标准处理成动态的方法。 7. 简述在不完全领域知识下的解释学习解决策略。 8. 假设 C=Son(Bob, Ram), C1=¬Daughter(Bob, Ram),使用归纳逻辑程序设计原理,确定子 句 C2。 www.aibbt.com 让未来触手可及 256 第十章 强化学习 10.1 概 述 人类通常从与外界环境的交互中学习。所谓强化(reinforcement)学习是指从环境状态 到行为映射的学习,以使系统行为从环境中获得的累积奖励值最大。在强化学习中,我们设 计算法来把外界环境转化为最大化奖励量的方式的动作。我们并没有直接告诉主体要做什么 或者要采取哪个动作,而是主体通过看哪个动作得到了最多的奖励来自己发现。主体的动作的 影响不只是立即得到的奖励,而且还影响接下来的动作和最终的奖励。试错搜索(trial-and-error search)和延期强化(delayed reinforcement)这两个特性是强化学习中两个最重要的特性。 强化学习不是通过特殊的学习方法来定义的,而是通过在环境中和响应外界环 境的动作来定义的。任何解决这种交互的学习方法都是一个可接受的强化学习方 法。强化学习也不是监督学习,在我们有关机器学习的部分我们都可以看出来。 在监督学习中,“教师”用实例来直接指导或者训练学习程序。在强化学习中,学 习主体自身通过训练,误差和反馈,学习在环境中完成目标的最佳策略。 强化学习技术是从控制理论、统计学、心理学等相关学科发展而来,最早可以追溯到巴 甫洛夫的条件反射实验。但直到上世纪八十年代末、九十年代初强化学习技术才在人工智能、 机器学习和自动控制等领域中得到广泛研究和应用,并被认为是设计智能系统的核心技术之 一。特别是随着强化学习的数学基础研究取得突破性进展后,对强化学习的研究和应用日益 开展起来,成为目前机器学习领域的研究热点之一。 强化思想最先来源于心理学的研究。1911 年 Thorndike 提出了效果律(Law of Effect): 一定情景下让动物感到舒服的行为,就会与此情景增强联系(强化),当此情景再现时,动 物的这种行为也更易再现;相反,让动物感觉不舒服的行为,会减弱与情景的联系,此情景 再现时,此行为将很难再现。换个说法,哪种行为会“记住”,会与刺激建立联系,取决于 行为产生的效果。 这也称为动物的试错学习(trial-and-error learning),包含两个含义:选择 (selectional)和联系(associative),对应计算上的搜索和记忆。所以,1954 年,Minsky 在他的博士论文中实现了计算上的试错学习。同年,Farley 和 Clark 也在计算上对它进行了 研究。强化学习一词最早出现于科技文献是1961 年 Minsky 的论文“Steps Toward Artificial Intelligence”,此后开始广泛使用。1969 年, Minsky 因在人工智能方面的贡献而获得计 算机图灵奖。 Farley 和 Clark 在 1994 年和 1995 年用试错学习来做泛化和模式识别,从此开始了强化 学习和指导学习的混淆。直到最近,神经网络的书还说它是一个试错学习系统,因为它是通 过输出误差来调整权重,但是他们忽略了试错的一个重要特性:选择。 20 世纪 60、70 年代,指导学习得到了广泛的研究,如神经网络、统计学习等。强化学 习处于低潮期,一是混淆了强化学习和指导学习,以为在研究前者,实际在研究后者;二是 后者相对简单一些,后者有教师──训练例子,而前者没有。 www.aibbt.com 让未来触手可及 257 试错学习的研究不象时间差分和最优控制学习那样突出。时序差分(temporal difference)学习基于时间序列上对同一个量相继两个估计的差,它的起源是心理学上的次 强化物(secondary reinforcer)。原强化物(primary reinforcer):直接满足个体需求 的刺激,如食物等;次强化物:经学习而间接使个体满足的刺激物,如奖状、金钱等。 最早把这个心理学原理引入人工学习系统的还是 1954 年的 Minsky。1959 年,Samuel 在 他著名的跳棋游戏中也应用了时序差分的思想。1972 年,Klopf 把试错学习和时序差分结合 在一起。1978 年开始,Sutton、Barto、 Moore,包括 Klopf 等对这两者结合开始进行深入研 究。 最优控制于 50 年代提出:为动态系统设计一个控制器,在从初态转移到终态时,保证系 统的某个性能指标保持最小值(或最大值)。1953 到 1957 年,Bellman 提出了求解最优控制 问题的一个有效方法:动态规划(dynamic programming),(另一个有效方法是苏联庞特里 雅金等人于 1956-1958 提出的最大值原理)。动态规划在随后的四十年里得到的深入的研究, 特别是在自动控制领域。 Bellman 于 1957 年还提出了最优控制问题的随机离散版本,就是著名的马尔可夫决策过 程(MDP, Markov decision processe),1960 年 Howard 提出马尔可夫决策过程的策略迭代 方法,这些都成为现代强化学习的理论基础。 真正把时序差分和最优控制结合在一起的是 1989 年 Watkins 提出了 Q-学习[Watkins 1989],也把强化学习的三条主线扭在了一起。1992 年,Tesauro 用强化学习成功了应用到西 洋双陆棋(backgammon)中,称为 TD-Gammon[Tesauro 1992]。从此开始了强化学习的深入研 究。 10.2 强化学习模型 强化学习的模型如图 10.1 所示,通过主体与环境的交互进行学习。主体与环境的交互接 口包括行动(Action)、奖励(Reward)和状态(State)。交互过程可以表述为如下形式: 每一步,主体根据策略选择一个行动执行,然后感知下一步的状态和即时奖励,通过经验再 修改自己的策略。主体的目标就是最大化长期奖励。 图 10.1 强化学习模型 强化学习系统接受环境状态的输入 s,根据内部的推理机制,系统输出相应的行为动作 a。 环境在系统动作作用 a 下,变迁到新的状态 s′。系统接受环境新状态的输入,同时得到环境对 于系统的瞬时奖惩反馈 r。对于强化学习系统来讲,其目标是学习一个行为策略 π:S→A,使 系统选择的动作能够获得环境奖励的累计值最大。换言之,系统要最大化 10.1 式,其中 γ 为 折扣因子。在学习过程中,强化学习技术的基本原理是:如果系统某个动作导致环境正的奖 励,那么系统以后产生这个动作的趋势便会加强。反之系统产生这个动作的趋势便减弱。这 和生理学中的条件反射原理是接近的。 www.aibbt.com 让未来触手可及 258 i 0 01tii rγγ∞ += < ≤∑ (10.1) 如果假定环境是马尔可夫型的,则顺序型强化学习问题可以通过马尔可夫决策 过程建模。下面首先给出马尔可夫决策过程的形式化定义。 马尔可夫决策过程 由四元组定义。包含一个环境状态集 S,系统行为集合 A,奖励函数 R:S×A→ℛ 和状态转移函数 P:S×A→PD(S)。记 R(s,a,s′)为系统在状态 s 采用 a 动作使环境状态转移到 s′获得的瞬时奖励值;记 P(s,a,s′)为系统在状态 s 采用 a 动作使环境状态转移到 s′的概率。 马尔可夫决策过程的本质是:当前状态向下一状态转移的概率和奖励值只取决于当前状 态和选择的动作,而与历史状态和历史动作无关。因此在已知状态转移概率函数 P 和奖励函 数 R 的环境模型知识下,可以采用动态规划技术求解最优策略。而强化学习着重研究在 P 函 数和 R 函数未知的情况下,系统如何学习最优行为策略。 图 10.2 强化学习四要素 为解决这个问题,图 10.2 中给出强化学习四个关键要素之间的关系,即策略π,状态值 映射 V, 奖励函数 r,和一个环境的模型(通常情况)。四要素关系自底向上呈金字塔结构。策略 定义在任何给定时刻学习主体的选择和动作的方法。这样,策略可以通过一组产生式规则或 者一个简单的查找表来表示。像刚才指出的,特定情况下的策略可能也是广泛搜索,查询一 个模型或计划过程的结果。它也可以是随机的。策略是学习主体中重要的组成部分,因为它 自身在任何时刻足以产生动作。 奖励函数 Rt 定义了在时刻 t 问题的状态/目标关系。它把每个动作,或更精细的每个状态- 响应对,映射为一个奖励量,以指出那个状态完成目标的愿望的大小。强化学习中的主体有 最大化总的奖励的任务,这个奖励是它在完成任务时所得到的。 赋值函数 V 是环境中每个状态的一个属性,它指出对从这个状态继续下去的动作系统可 以期望的奖励。奖励函数度量状态-响应对的立即的期望值,而赋值函数指出环境中一个状态 的长期的期望值。一个状态从它自己内在的品质和可能紧接着它的状态的品质来得到值,也 就是在这些状态下的奖励。例如,一个状态/动作可能有一个低的立即的奖励,但有一个较高 的值,因为通常紧跟它的状态产生一个较高的奖励。一个低的值可能同样意味着状态不与成 功的解路径相联系。 如果没有奖励函数,就没有值,估计值的惟一目的是为了获取更多的奖励。但是,在作 决定时,是值最使我们感兴趣,因为值指出带来最高的回报的状态和状态的综合。但是,确 定值比确定奖励困难。奖励由环境直接给定,而值是估计得到的,然后随着时间推移根据成 功和失败重新估计值。事实上,强化学习中最重要也是最难的方面是创建一个有效的确定值 www.aibbt.com 让未来触手可及 259 的方法。 强化学习的环境模型是抓住环境行为的方面的一个机制。模型让我们在没有实际试验它 们的情况下估计未来可能的动作。基于模型的计划是强化学习案例的一个新的补充,因为早 期的系统趋向于基于纯粹的一个主体的试验和误差来产生奖励和值参数。 系统所面临的环境由环境模型定义,但由于模型中 P 函数和 R 函数未知,系统只能够依 赖于每次试错所获得的瞬时奖励来选择策略。但由于在选择行为策略过程中,要考虑到环境 模型的不确定性和目标的长远性,因此在策略和瞬时奖励之间构造值函数(即状态的效用函 数),用于策略的选择。 2 12 3 1 1tt t t t tR rr r rRγγ γ++ + + +=+ + +=+ (10.2) () }{ ( ) }{ ( )()11 , aa tt t t t ssss as Vs ERss Er Vss s saPR Vsπ π ππγπγ′′++ ′ ′⎡⎤===+== +⎣⎦∑ ∑ (10.3) 首先通过(10.2)式构造一个返回函数 Rt,用于反映系统在某个策略 π 指导下的一次学习 循环中,从 st 状态往后所获得的所有奖励的累计折扣和。由于环境是不确定的,系统在某个策 略 π 指导下的每一次学习循环中所得到的 Rt 有可能是不同的。因此在 s 状态下的值函数要考 虑不同学习循环中所有返回函数的数学期望。因此在 π 策略下,系统在 s 状态下的值函数由 (10.3)式定义,其反映了如果系统遵循 π 策略,所能获得的期望的累计奖励折扣和。 根据 Bellman 最优策略公式,在最优策略 π*下,系统在 s 状态下的值函数由(10.4)式定 义。 () () () }{ () ()** * 11max , max aa t t t t ss ssaAs aAs s Vs Er Vs s saa PR Vsγγ′′++∈∈′ ′⎡ ⎤=+ ===+⎣ ⎦∑ (10.4) 在动态规划技术中,在已知状态转移概率函数 P 和奖励函数 R 的环境模型知识前提下, 从任意设定的策略 π0 出发,可以采用策略迭代的方法(式 10.5 和式 10.6)逼近最优的 V*和 π*。 式 10.5 和式 10.6 中的 k 为迭代步数。 () ( )1arg max kaa kssssa s sPRVsππγ− ′′ ′ ′⎡⎤=+⎣⎦∑ (10.5) () ( ) ( )1 1 ,k kaa kssss as Vs saPR V sπππγ− ′′− ′ ⎡ ′⎤←+⎣ ⎦∑∑ (10.6) 但由于强化学习中,P 函数和 R 函数未知,系统无法直接通过(10.5)式、(10.6)式进 行值函数计算。因而实际中常采用逼近的方法进行值函数的估计,其中最主要的方法之一是 蒙特卡罗(Monte Carlo)采样,如(10.7)式。其中 Rt 是指当系统采用某种策略 π,从 st 状态出 发获得的真实的累计折扣奖励值。保持 π 策略不变,在每次学习循环中重复地使用(10.7)式 , 下式将逼近(10.3)式。 () () ()ttttVs Vs R Vsα←+−⎡⎤⎣⎦ (10.7) 结合蒙特卡罗方法和动态规划技术,式(10.8)给出强化学习中时间差分学习(TD,Temporal difference)的值函数迭代公式。 () () ( ) ( )11tttttVs Vs r Vs Vsαγ++←++ −⎡⎤⎣⎦ (10.8) www.aibbt.com 让未来触手可及 260 10.3 动态规划 动态规划(dynamic programming)的方法通过从后继状态回溯到前驱状态来计算赋值函数。 动态规划的方法基于下一个状态分布的模型来接连的更新状态。强化学习的动态规划的方法 是基于这样一个事实:对任何策略π和任何状态 s,有(10.9)式迭代的一致的等式成立: ))(()(()|()|()( ''' ' sVssRasssasV a a s ππ γππ +→×→×= ∑∑ (10.9) π(a|s)是给定在随机策略π下状态 s 时动作 a 的概率。π(s→s'|a)是在动作 a 下状 态 s 转到状态 s'的概率。这就是对 Vπ的 Bellman(1957)等式。它表示了一个状态的值和它的 后继状态迭代计算的值之间的关系。在图 10.3 中,我们给出第一步计算,从状态 s 我们向前 看三个可能的后继。对策略π,动作 a 出现的概率为π(a|s)。从这三个状态中的每个状态, 环境可能响应其中的一个状态,我们说 s'有奖励 r。Bellman 等式对这些概率取平均值,不采 用每个出现的可能性进行加权。它指出起始状态的值必须期待的下一个状态的折扣值,γ, 加上从这一路径产生的奖励。在动态规划中, 如果 n 和 m 表示状态和动作的数目,虽然确定 性策略的总数目为 nm,一个动态规划方法能保证在多项式时间找到最优策略。在这个意义上, 动态规划比任何策略空间中的直接搜索指数级的快,关于状态数和行动数的多项式时间。但 如果状态数是根据某些变量指数增长的,当然也会出现维度灾难了 图 10.3 动态规划方法 在动态规划中,由(10.4)式可以得到(10.10)式的迭代公式: )]([MAX)( ' a1 ' ' ' sVPsV t a ss s a sst γ+ℜ← ∑+ (10.10) 当 t→∞时,Vt(s)→V*(s),重复对每个状态 s 进行迭代, 直到|∆V|小于一个小正数,得到对每 个状态长远奖励的评价。 典型的动态规划模型作用有限,很多问题很难给出环境的完整模型。仿真机器人足球就 是这样的问题,可以采用实时动态规划方法解决这个问题。在实时动态规划中不需要事先给 出环境模型,而是在真实的环境中不断测试,得到环境模型。可以采用反传神经网络实现对 状态泛化,网络的输入单元是环境的状态 s, 网络的输出是对该状态的评价 V(s)。 10.4 蒙特卡罗方法 蒙特卡罗方法不需要一个完整的模型。而是它们对状态的整个轨道进行抽样,基于抽样 www.aibbt.com 让未来触手可及 261 点的最终结果来更新赋值函数。蒙特卡罗方法不需要经验,即从与环境联机的或者模拟的交 互中抽样状态、动作和奖励的序列。联机的经验是令人感兴趣的,因为它不需要环境的先验 知识,却仍然可以是最优的。从模拟的经验中学习功能也很强大。它需要一个模型,但它可 以是生成的而不是分析的,即一个模型可以生成轨道却不能计算明确的概率。于是,它不需 要产生在动态规划中要求的所有可能转变的完整的概率分布。 于是,蒙特卡罗方法通过对抽样返回值取平均的方法来解决强化学习问题。为了确保良 好定义的返回值,蒙特卡罗方法定义为完全抽样,即所有的抽样点必须最终终止。而且,只 有当一个抽样点结束,估计值和策略才会改变。这样,在抽样点意义上说,蒙特卡罗方法在 一个抽样点上是增加的,而不是逐步的。图 10.4 中,蒙特卡罗方法采样一次学习循环所获得 的奖惩返回值。然后通过多次学习,用实际获得的奖惩返回值去逼近真实的状态值函数。 图 10.4 蒙特卡罗方法 蒙特卡罗方法没有环境模型,根据经验学习。只考虑最终任务,任务结束后对所有的回 报进行平均。给定策略 ,计算 。方法:根据策略 产生从开始到任务完成的一个状态 序列;对序列中第一次(或每次)出现的状态 ,获得它的长期奖励 ;把 加 入列表 , 。 列表可以改成增量实现(Incremental Implementation), (10.11) 策略在线蒙特卡罗控制时, 策略评估和改进时使用相同的随机策略,如 (10.12) 假定主体与环境交互学习过程中,发现某些动作的效果较好,那么主体在下一次决策中 该选择什么样的动作呢?一种考虑是充分利用现有的知识,选择当前认为最好的动作,但这 样有一个缺点:也许还有更好的动作没有发现;反之,如果主体每次都测试新的动作,将导 致有学习没进步,显然不是我们希望的。在利用现有知识和探索新行动之间应做出适当的权 衡,称为权衡探索和利用。主要有两种方法,一个是前面用到的 -贪心法;另一种是模拟退 火,每个动作的选择概率和主体对它的评价有关: (10.13) www.aibbt.com 让未来触手可及 262 10.5 时序差分学习 时序差分学习中没有环境模型,根据经验学习。每步进行迭代,不需要等任务完成。预 测模型的控制算法,根据历史信息判断将来的输入和输出,强调模型的函数而非模型的结构。 时序差分方法和蒙特卡罗方法类似,仍然采样一次学习循环中获得的瞬时奖惩反馈,但同时 类似与动态规划方法采用自举方法估计状态的值函数。然后通过多次迭代学习,去逼近真实 的状态值函数。 时序差分学习技术中经典的 TD(0)学习算法如下。 算法 10.1 TD(0)学习算法 Initialize V(s) arbitrarily, π to the policy to be evaluated Repeat (for each episode) Initialize s Repeat (for each step of episode) Choose a from s using policy πderived from V(e.g., ε-greedy) Take action a, observer r, s′ () () ( ) ()Vs Vs r Vs Vs ss αγ′←+⎡+−⎤⎣⎦ ′← Until s is terminal TD(0)学习算法事实上包含了两个步骤,其一是从当前学习循环的值函数确定新的行为策 略;其二是在新的行为策略指导下,通过所获得的瞬时奖惩值对该策略进行评估。学习循环 过程为: *** 0112vv vvππ π→→→→→→→ 直到值函数和策略收敛。在时序差分学习中, 计算值函数方法如图 10.5 所示。 图 10. 5 时序差分计算值函数方法 用九宫游戏来说明强化学习算法。首先,必须建立一个数的表,每个数表示一个游戏可 能的状态。这些状态值的数反映从这个状态获胜可能性的当前估计。这会支持一个必须赢的 策略,也就是说,或者对手赢,或者平局算我们输。这种平算输的方法允许我们建立聚焦于 赢的策略。要抓住一个实际选手的技巧,而不是一些理想化选手的完美信息。这样,我们初 始化表,用 1 表示我们能赢的每个位置,用 0 表示平或输的位置,用 0.5 表示其余位置,它反 映了我们初始时估计从这些状态有 50%的可能性赢。 我们现在与这个对手玩这个游戏。为简单起见,假定我们是◇,我们的对手是 O。图 10.6 www.aibbt.com 让未来触手可及 263 反映了游戏中一种可能的移动序列,既有考虑到的又有选择的移动。为了产生一步移动,首 先考虑从当前状态一步合法移动到的每个状态,即任何◇可能移动的开放状态。我们查找表 中保存的那个状态的当前值。在大多数时刻,我们可以做一步贪婪的移动,即取有最佳赋值 函数的状态。偶尔,我们会做一步探测的移动,从其他状态中随机选取一个状态。这些探测 的移动是为了考虑在游戏情形中可能看不到的一些选择,来扩大可能值的最优化。 图 10.6 九宫游戏的一个移动序列。向下指向棋盘的虚箭头表示可能的移动选择,向上的实箭 头表示当奖励函数改变状态值时的奖励 在我们玩游戏时,我们改变选择的每个状态的赋值函数。我们试图使它们的最新值反映 它们在成功路径上的可能性。在前面我们把这个称为一个状态的奖励函数。为了做到这一点, 我们退回到我们已经选择的一个状态的值,把它作为我们下一个要选择的状态的值的函数。 如图 10.6 中“向上指”的箭头所示,这个退回的动作越过我们对手的选择,但它确实反映了 指导我们选择下一个状态的值的集合。这样,我们选择的前一个状态的当前值就被修正,给 予奖励来更好反映后来状态的值(并且最终,当然是反映赢或输的值)。我们通常是通过移动 前一个状态一部分差分值来完成这个任务,这个差分值是前一个状态自身与我们选择的新状 态之间的差异值。这个部分度量,称为步长参数,它通过等式中的乘数 c 来反映: V(sn)=S(sn)+c(V(sn+1)-V(sn)) (10.14) 在这个等式中,sn 表示在时刻 n 选择的状态,sn+1 表示在时刻 n+1 选择的状态。这个更新的等 式是时序差分学习规则的一个例子,因为改变是在两个不同时刻 n 和 n+1 估计值的差分 V(sn+1)-V(sn)的一个方程。在下一节,进一步讨论这些学习规则。 时序差分方程对九宫游戏执行得非常好。我们想随着时间来减小步长参数,目的是为了 伴随着系统的学习,对状态值进行连续减小的调整。给定我们的对手,这能保证每个状态的 赋值函数收敛于赢的概率。还有,除了周期性的探索式的移动,做出的选择实际上是最佳的 移动,即对这个对手最佳的策略。但是,更令人感兴趣的是这样一个事实:如果步长从未真 正减到 0,则这个策略会持续改变来反映对手玩时的任何改变/改进。 我们的九宫游戏解释了强化学习的很多重要特征。首先,有在与环境交互时的学习,这 www.aibbt.com 让未来触手可及 264 里的环境是我们的对手。第二,有(反映在很多目标状态上的)清晰的目标和最佳行为,这需要 计划和预做准备,以便为特定移动的延期效应保留余地。例如,强化学习算法有效地建立对 低级对手的多步移动的计策。这是强化学习的一个重要特征,在没有对手的清晰模型或不进 行扩展搜索的情况下,预做准备和计划的效果可以在实际中完成。 在我们的九宫游戏的例子中,学习初始时除了游戏规则没有其他先验知识(我们只是把 所有的非终态的状态初始化为 0.5)。强化学习不需要这种“新的开始”的观点。任何能用的 先验知识可以使它成为初始状态值的组成部分。处理没有可用信息的状态也是可能的。最后, 如果一个情况的模型是可用的,则结果模型所依据的信息可以用于状态的值。但是,重要的 是要记住强化学习可以用于以下任一种情况:不需要模型,但如果模型能用或者模型可以被 学习到,则可以使用模型。 在九宫游戏的例子中,奖励是随着每个状态-动作的决定分期付给的。我们的主体是近视 的,它只考虑最大化立即的奖励。实际上,如果我们使用强化学习进行更深入的预先准备, 我们将需要度量最终奖励的折扣回报(discounted return)。我们令折扣率γ表示一个未来奖励的 当前值:未来 k 个时刻步得到的奖励的价值是立即得到的奖励的价值的γk-1 倍。 九宫游戏是两人游戏的一个例子。强化学习还可以用于没有对手,而只是从环境得到反 馈的情形。九宫游戏的例子的状态空间还是有限的(实际上相当小)。强化学习还可以用于 当状态空间很大,或者甚至是无限的时候。 10.6 Q 学习 在 Q 学习中,Q 是状态-动作对到学习到的值的一个函数。对所有的状态和动作: Q: (state x action) → value 对 Q 学习中的一步: )],(),(MAX[),()1(),( 11 tttattttt asQasQrcasQcasQ −+×+×−← ++ γ (10.15) 其中 c 和γ都≤1,rt+1 是状态 st+1 的奖励。我们可以在图 10.7b 中看到 Q 学习的方法,它与图 10.7a 不同,它的开始结点是一个状态-动作对。这个回溯规则更新每个状态-动作对,为了使 图 10.7b 的顶部的状态,回溯的根结点,为一个动作结点与产生它的状态为一对。 在 Q 学习中,回溯从动作结点开始,最大化下一个状态的所有可能动作和它们的奖励。 在完全递归定义的 Q 学习中,回溯树的底部结点一个从根结点开始的动作和它们的后继动作 的奖励的序列可以到达的所有终端结点。联机的 Q 学习,从可能的动作向前扩展,不需要建 立一个完全的世界模型。Q 学习还可以脱机执行。我们可以看到,Q 学习是一种时序差分的方 法。 图 10.7 对 a)V*和 b)Q*的回溯图 www.aibbt.com 让未来触手可及 265 Monte Carlo 方法采用一次学习循环所获得的整个返回函数去逼近实际的值函数,而强化 学习方法使用下一状态的值函数(即 Bootstrapping 方法)和当前获得的瞬时奖励来估计当前 状态值函数。显然,强化学习方法将需要更多次学习循环才能逼近实际的值函数。因此可以 修改(10.8)式, 构造一个新的 λ-返回函数 Rt′,如式(10.16),其中假定系统在此次学习循环 中第 T 步后进入终结状态。λ-返回函数 Rt′的物理意义如图 10.8 所示。那么值函数迭代即遵循 式(10.17)。 st st+1 rt+1 st+2 λrt+1 st+3 λ2rt+2 …… st+T λT-1rt+T 图 10.8 λ-返回函数 21 12 3 T tt t t tTR rr r rλλ λ− ++ + +′ =+ + ++ (10.16) () () ()ttttVs Vs R Vsα ′←+−⎡⎤⎣⎦ (10.17) 由于强化学习算法中值函数的更新是在每一学习步(即每次获得经验后)进行 的,因此为使学习算法能在一次学习循环中值函数满足(10.17)式,设计新的 TD(λ)算法。在 TD(λ)算法中通过构造 e(s)函数,即可以保证在一次学习循环中值函数以(10.17)式更新。 算法 10.2 TD(λ)算法 Initialize V(s) arbitrarily and e(s)=0 for all s∈S Repeat (for each episode) Initialize s Repeat (for each step of episode) a ← action given by π for s(e.g., ε-greedy) Take action a, observer r, s′ ( ) ( ) () () 1 rVsVs es es δγ′←+ − ←+ for all s ( ) ( ) ( ) () () Vs Vs es es es αδ γλ ←+ ← s ← s′ Until s is terminal 我们可以将值函数的估计和策略评估两步骤合二为一。在算法中构造状态-动作对值函数, www.aibbt.com 让未来触手可及 266 即 Q 函数。Q 函数定义如(10.18)式。理论证明,当学习率 α 满足一定条件, Q 学习算法必然收 敛于最优状态-动作对值函数[Tsitsiklis 1994]。Q 学习算法是目前最普遍使用的强化学习算法之 一。 (, ) ()aa ss ss s Qsa P R Vsππγ′′ ′ ′⎡⎤=+⎣⎦∑ (10.18) 算法 10.3 Q学习算法 Initialize Q(s,a) arbitrarily Repeat (for each episode) Initialize s Repeat (for each step of episode) Choose a from s using policy derived from Q (e.g., ε-greedy) Take action a, observer r, s′ () ( ) ( ) ( ),, max,,aQsa Qsa r Qsa Qsa ss αγ ′ ′′←++ −⎡⎤⎣⎦ ′← Until s is terminal 10.7 强化学习中的函数估计 对于大规模 MDP 或连续空间 MDP 问题中,强化学习不可能遍历所有状态。因此要求强 化学习的值函数具有一定泛化能力。强化学习中的映射关系包括:S→A、S→R、S×A→R、S×A→S 等等。强化学习中的函数估计本质就是用参数化的函数逼近这些映射。 用算子 Г 来表示(10.8)式。假设初始的值函数记为 V0,则学习过程产生的值函数逼近 序列为: () ()( ) ()( )( )00 0 0,, , ,VV V VΓ ΓΓ ΓΓΓ …… 在经典的强化学习算法中,值函数采用查找表(lookup-table)方式保存。而在函数估计 中,采用参数化的拟合函数替代查找表。此时,强化学习基本结构如图 10.9 所示。记函数估 计中V 为目标函数,V′为估计函数,则 M : V→V′为函数估计算子。假设值函数初值为 V0,则 学习过程中产生的值函数序列为: () ()() ()( )( ) ()( )( )( )00 0 0 0,, , , ,VMV MV M MV M MVΓΓΓΓ…… 图 10.9 有函数估计的强化学习结构 因此,类似与 Q 学习算法,使用函数估计的强化学习算法迭代公式做以下修改。 ()( )() ( ) ( )( ),1 , ,,max, a Qsa V sa rsas V saαα ′ ′′′′′←− + + (10.19) www.aibbt.com 让未来触手可及 267 () ()(),,Vsa MQsa′ = (10.20) 在函数估计强化学习中,同时并行两个迭代过程:一是值函数迭代过程 Г,另一是值函数 逼近过程 M。因此 M 过程逼近的正确性和速度都将对强化学习产生根本的影响。目前函数估 计的方法通常采用有导师监督学习方法:如状态聚类[Singh 1995][ Moore 1994]、函数插值 [Davies 1997]和人工神经网络[Sutton 1996]等方法。 状态聚类将整个状态空间分成若干区域,在同一区域的状态认为其值函数相等。于是一 个连续或较大规模的 MDP 问题被离散化为规模较小的 MDP 问题。状态聚类最简单的方法是 区格法,它将状态空间的每一维等分为若干区间,而将整个状态空间划分为若干相同大小的 区间,对二维来说就是区格划分。更复杂的划分方法是变步长划分和三角划分,采用状态聚 类方法的函数估计强化学习已经被证明是收敛的。需要指明的是:尽管状态聚类强化学习是 收敛的,但其并不一定收敛到原问题的最优解上。要使收敛的值函数达到一定的精度,状态 聚类的步长不能太大。因此对于大规模 MDP 问题,它仍然面临着维数灾难的困难。 目前函数估计强化学习研究的热点是采用神经网络等方法进行函数估计。但尽管这些新 方法可以大幅度提高强化学习的学习速度,但并不能够保证收敛性。因此研究既能保证收敛 性,又能提高收敛速度的新型函数估计方法,仍然是目前函数估计强化学习研究的重点之一。 10.8 强化学习的应用 在马尔科夫决策过程中,主体可感知到其环境的不同状态集合,并且有它可执行的动作 集合。在每个离散时间步 t,主体感知到当前状态 ts ,选择当前动作 ta 并执行它。环境响应给 出奖励 (, )tttrQsa= ,并产生一个后继状态 st+1 = P(st,at)。在马尔科夫决策过程中,其中函数 (, )ttQs a 称之为动作评估函数(价值函数),P(st,at)称之为状态转换函数;其中 (, )ttQs a 和 P(st,at)只依赖于当前状态和动作,而不依赖于以前的状态和动作;而强化学习正是处理 MDP 的一种重要方法。强化学习通过学习动作评估函数 (, )ttQs a 或状态转换函数 P(st,at)来达到学 习的目的。而 Q 学习主要是通过学习 (, )ttQs a 获得最大的奖励。 这里应用 Q 学习算法进行仿真机器人足球 2 对 1 训练,训练的目的是试图使主体学习获 得到一种战略上的意识,能够在进攻中进行配合[宋志伟, 2003]。如图 10.10,前锋 A 控球,并 且在可射门的区域内,但是 A 已经没有射门角度了;队友 B 也处于射门区域,并且 B 具有良 好的射门角度。A 传球给 B,射门由 B 来完成,那么这次进攻配合就会很成功。通过 Q 学习 的方法来进行 2 对 1 的射门训练,让 A 掌握在这种状态情况下传球给 B 的动作是最优的策略; 主体通过大量的学习训练(大数量级的状态量和重复相同状态)来获得策略,因此更具有适 应性 。 www.aibbt.com 让未来触手可及 268 图 10.10 仿真机器人足球 2 对 1 训练 图 10.11 给出状态描述,将进攻禁区划分为 820× 个小区域,每个小区域是边长为 2m 的 正方形,一个二维数组 jiA , (019,07ij≤≤ ≤ ≤)便可描述这个区域。使用三个 Agent 的位置 来描述 2 对 1进攻时的环境状态,利用图 10.11 所示的划分来泛化状态。可认为主体位于同 一战略区域为相似状态,这样对状态的描述虽然不精确,但设计所需的是一种战略层次的描 述,可认为 Agent 在战略区域内是积极跑动的,这种方法满足了需求。如此, GBASSS,, 便 描述了一个特定的状态;其中, AS 是进攻队员 A 的区域编号, BS 是进攻队员 B 的区域编号, GS 是守门员的区域编号。区域编号计算公式为: jiS +×= 8 。相应的,所保存的状态值为 三个区域编号组成的对。 可选动作集确定为 }{Shoot,Pass,Dribble 。 Shoot 的策略通过基于概率的射门训练的学习来得到。 Dribble 的策略是,始终向受到威胁小,并且射门成功率高的区域带球。为了实现这一 策略目标,可划分进攻区域为多个战略区,在每个战略区进行射门评价,记录每个区域的射 门成功率。 Pass 策略很简单,只需在两个 Agent 间进行传球,即不需要选择球传送的对象,也不需要 判断传球路径。如果传球失败的话,则认为在这种状态下执行 Pass 策略是不成功的;经过此 训练后,不可能的传球路径也不会被执行了。 训练中的所有状态包含了四个吸收状态。假设进攻方在左半场,按照标准的 Soccer server 规范,这四个状态的比赛模式为 play_on、goal_left、goal_kick_right 和 free_kick_right。当达 到吸收状态时,给与主体最终奖励 r。促使到达吸收状态的上一步动作获得的立即回报值为最 19 图 10.11 进攻禁区内的位置划分 0 7 www.aibbt.com 让未来触手可及 269 终奖励值 r,其他未直接促使到达吸收状态的动作均获得过程奖励值作为立即奖励;其中 goal_left 的 r 最大为 1 表示进球,其他状态下 r 为不同大小的负数。 主体在经过一定的状态和执行多个动作后获得了终态奖励(到达了吸收状态),这时就会 对这个状态-动作序列分配奖励。Q 学习算法的核心就是每一个状态和动作的组合都拥有一个 Q 值,每次获得最终回报后通过更新等式更新这个 Q 值。由于 Robocup 仿真平台在设计的时 候在状态转换的时候加入了一个较小的随机噪音,所以该模型为非确定 MDP, 确定 Q 更新等 式为: )( )( ( )( )( 11),1 , max,ttsaQsa Qsa r Qααγ++=− + + (10.21) 规定α =0.1,γ =0.95。 在实际的训练中,初始 Q 表各项的值为 1。经过大约 2 万次的训练(到达吸收状态为一次), Agent 的 Q 表中的决大部分项发生了变化,并且已经区分开来。表 10.1 是某场景下的训练次 数和动作选择的变化示意表。 表 10.1 Q 值变化表 强化学习的应用主要可为制造过程控制、各种任务调度、机器人设计和游戏等。在过去 的二十年中,强化学习研究取得了突破性进展,但目前仍然存在许多有待解决的问题。,强化 学习的一个主要缺点是收敛慢。其根本原因在于学习过程仅仅从经验获得的奖励中进行策略 的改进,而忽略了大量其他有用的领域信息。因此,如何结合其他机器学习技术,如神经网 络、符号学习等技术,来帮助系统加快学习速度是强化学习研究和应用的重要方向。目前, 结合技术研究的主要难点在于:如何从理论上证明和保证学习算法的收敛性。在更复杂马氏 决策模型中发展有效的强化学习算法也将是未来重要的研究方向之一。 习 题 1 简述强化学习的主要分支和研究历程。 2 试解释强化学习模型及其与其他机器学习方法的异同。 3 试解释马尔可夫决策过程和及其本质。 4 简述蒙特卡罗方法的基本思想及其在强化学习中的应用。 5 说明时序差分学习的基本思想并以九宫游戏为例说明时序差分学习方法的执行过程。 6 考虑下图显示的一个确定性格子世界,其中含有吸收目标 G(目标状态)。图中做了标记的 为立即回报,而其他没有做标记的转换都为 0。给出格子世界的每个状态的最大折算累积 www.aibbt.com 让未来触手可及 270 回报 *V ,给出每个转换的最大折算累积回报 (, )Qsa 的值。并写出一个最优策略,使用 0.8γ = 。 www.aibbt.com 让未来触手可及 271 第十一章 粗糙集 11.1 概 述 在经典逻辑中﹐只有真、假值之分。但在现实生活中有许多含糊现象并不能简单地用真、 假值来表示﹐如何表示和处理这些现象就成为一个研究领域。长期以来许多逻辑学家和哲学 家就致力于研究含糊概念。早在 1904 年谓词逻辑的创始人 G. Frege 就提出了含糊(Vague)一词, 他把它归结到边界线上,也就是说在全域上存在一些个体既不能在其某个子集上分类,也不 能在该子集的补集上分类。 1965 年,Zadeh 提出了模糊集,不少理论计算机科学家和逻辑学家试图通过这一理论解 决 G. Frege 的含糊概念,但遗憾的是模糊集是不可计算的,即没有给出数学公式描述这一含糊 概念,故无法计算出它的具体的含糊元素数目,如模糊集中的隶属函数μ和模糊逻辑中的算 子λ都是如此。时隔 20 年后的 80 年代初,波兰的 Pawlak 针对 G. Frege 的边界线区域思想提 出了粗糙集(Rough Set)[Pawlak 82]﹐他把那些无法确认的个体都归属于边界线区域,而这 种边界线区域被定义为上近似集和下近似集之差集。由于它有确定的数学公式描述,所以含 糊元素数目是可以计算的,即在真假二值之间的含糊度是可以计算的。粗糙集理论主要兴趣 在于它恰好反映了人们用粗糙集方法处理不分明问题的常规性,即以不完全信息或知识去处 理一些不分明现象的能力,或依据观察、度量到的某些不精确的结果而进行分类数据的能力。 八十年代以来经过许多计算机科学家和数学家的不懈研究,已经从理论上日趋完善,特别是 由于八十年代末和九十年代初在知识发现等领域得到了成功的应用而越来越受到国际上的广 泛关注。相对于其他处理不确定性和模糊性的理论工具而言,粗糙集理论有着许多不可替代 的优越性。经过近几年的研究和发展﹐它已经在信息系统分析、人工智能及应用、决策支持 系统、知识与数据发现、模式识别与分类、故障检测等方面取得了较为成功的应用。 粗糙集概念在某种程度上与许多其它为处理含糊和不精确性问题而研制的数学工具有相 似之处,特别是和 Dempster-Shafer 证据理论[Shafer 76] 。两者之间主要区别在于 Dempster-Shafer 理论利用信度函数作为主要工具,而粗糙集理论利用集合:下近似集和上近 似集。另一种关系存在于模糊集理论和粗糙集理论之间。粗糙集理论与模糊集理论多方面对 照,不是和模糊集竞争,而是补充它。总之,粗糙理论和模糊集理论对于不完全的知识来说 它们是各自独立的方法。此外,有一些关系存在于粗糙理论与辨别式分析之间,与 Boolean 推 理方法之间、与决策分析之间。 粗糙理论的主要优势之一是它不需要任何预备的或额外的有关数据信息,比如统计学中 的概率分布,Dempster-Shafer 理论中的基本概率赋值,或者模糊集理论中的隶属度或概率值。 八十年代,许多波兰学者对粗糙集理论及其应用进行了坚持不懈的深入研究,其中对粗 糙集理论的数学性质与逻辑系统进行了广泛的分析。当时大多数研究成果发表在“Bulletin of The Polish Academic of Science: Mathematics”或“Bulletin of The Polish Academic of Science: Technical Science”上;同时,他们也开发了一些应用系统。 1991 年波兰 Z. Pawlak 教授的第一本关于粗糙集的专著和 1992 年 R. Slowinski 主编的关于粗糙 集应用及其与相关方法比较研究的论文集的出版,推动了国际上对粗糙集理论与应用的深入 研究。1992 年在波兰 Kiekrz 召开了第 1 届国际粗糙集讨论会。这次会议着重讨论了集合近似 定义的基本思想及其应用,其中粗糙集环境下机器学习的基础研究是这次会议的四个专题之 www.aibbt.com 让未来触手可及 272 一。但是,参加这次会议的研究者较少,范围也不太广泛。这次会议选出 15 篇论文刊登在 “Foundation of Computing and Decision Sciences”1993 年第 18 卷上。从此每年召开一次与粗 糙集理论为主题的国际研讨会。 1993 年在加拿大 Banff 召开了第二届国际粗糙集与知识发现(RSD’93)研讨会。这次会议极大地 推动了国际上对粗糙集理论与应用的研究,其主题是粗糙集、Fuzzy 集与知识发现。由于此时 正值 KDD 成为研究的热门话题,一些著名 KDD 学者参加这次会议,并且介绍了许多基于扩 展的粗糙集理论的知识发现方法与系统。1994 年在美国的 San Jose 召开了第 3 届国际粗糙集 与软计算研讨会,这次会议广泛地探讨了粗糙集与模糊逻辑、神经网络、进化理论等的融合 问题。 粗糙集理论及应用的几位主要倡导者,在 1995 年第 11 期 ACM 通讯上撰文,概括性地介 绍了目前人工智能应用新技术之一的粗糙集理论的基本概念,及其在知识获取和机器学习、 决策分析、知识发现等领域的具体研究项目和进展。1995 年在美国 Willmington 召开了粗糙集 研讨会。特别值得一提的是 1995 年召开的第 4 届模糊理论与技术国际研讨会(Fuzzy Theory & Technology’95),在这次会议上,针对粗糙集与模糊集合的基本观点与相互关系展开了激烈的 讨论,较大地促进了粗糙集的研究。1996 年底在日本东京召开了第 5 届国际粗糙集研讨会, 这是第一次在亚洲地区召开的范围广泛的粗糙集研讨会。1998 年 6 月在波兰华沙召开了“第 一届粗糙集和计算的当前趋势”学术会议。1999 年 11 月 9-11 日在日本召开了“第七届粗糙 集、Fuzzy 集、数据挖掘和粒度-软计算的国际学术研讨会”(The Seventh International Workshop on Rough Sets, Fuzzy Sets, Data Mining and Granular-Soft Computing (RSFDGRC’99)),阐述了当 前粗糙集、模糊集的研究现状和发展趋势,指出将着重在软计算、数据库、AI 和近似推理等 理论和应用方面发展。 2000 年 10 月在加拿大又召开了“第二届粗糙集和计算的当前趋势”学术会议。目前,在许多 关于人工智能、模糊理论、信息管理与知识发现等国际学术会议上经常可以看到许多涉及粗 糙集的论文。 必须指出,粗糙理论也不是万能的,对建模而言,尽管粗糙理论对知识不完全的处理是 有效的,但是,由于这个理论未包含处理不精确或不确定原始数据的机制。因此,单纯地使 用这个理论不一定能有效地描述不精确或不确定地实际问题,这意味着,需要其它方法补充。 一般地说,由于证据理论与模糊集理论等具有处理不精确和不确定数据的方法(尽管在描述 上不一定方便),因此,将它们与粗糙理论构成互补是自然的考虑。 为了能更好地理解粗糙集理论的本质和特点,这里介绍粗糙集理论的一些基本定义,目 的在于阐明粗糙集的思想本质,以及与其他处理不确定性和模糊性数学工具的不同之处。 11.1.1 知识的分类观点 基本粗糙集理论认为知识就是人类和其他物种所固有的分类能力。例如,在现实世界中 关于环境的知识主要表明了生物根据其生存观来对各种各样的情形进行分类区别的能力。每 种生物根据其传感器信号形成复杂的分类模式,就是这种生物的基本机制。分类是推理、学 习与决策中的关键问题。因此,粗糙集理论假定知识是一种对对象进行分类的能力。这里的 “对象”是指我们所能言及的任何事物,比如实物、状态、抽象概念、过程和时刻等等。即 知识必须与具体或抽象世界的特定部分相关的各种分类模式联系在一起,这种特定部分称之 为所讨论的全域或论域(universe)。对于全域及知识的特性并没有任何特别假设。事实上,知 识构成了某一感兴趣领域中各种分类模式的一个族集(family),这个族集提供了关于现实的显 事实,以及能够从这些显事实中推导出隐事实的推理能力。 为数学处理方便起见,在下面的定义中用等价关系来代替分类。 www.aibbt.com 让未来触手可及 273 定义 11.1 一个近似空间(approximate space)(或知识库)定义为一个关系系统(或二元组) K=(U, R), (11.1) 其中 U≠ ∅ ( ∅ 为空集)是一个被称为全域或论域(universe)的所有要讨论的个体的集合, R 是 U 上等价关系的一个族集。 定义 11.2 设 P⊆R,且 P≠∅,P 中所有等价关系的交集称为 P 上的一种不分明关系 (indiscernbility relation)(或称不可区分关系),记作 IND(P),即 ∩ PP ∈ = R R][][)( xx IND (11.2) 注意,IND(P)也是等价关系且是唯一的。 定义 11.3 给定近似空间 K=(U, R),子集 X⊆U 称为 U 上的一个概念(concept),形式上, 空集 ∅ 也视为一个概念;非空子族集 P⊆R 所产生的不分明关系 IND(P)的所有等价类关系的集 合即 U/IND(P),称为基本知识(basic knowledge),相应的等价类称为基本概念(basic concept); 特别地,若关系 Q∈R,则关系 Q 就称为初等知识(elementary knowledge),相应的等价类就称 为初等概念(elementary concept)。 一般用大写字母 P,Q,R 等表示一个关系,用大写黑体字母 P,Q,R 等表示关系的族集;[x]R 或 R(x)表示关系 R 中包含元素 x∈U 的概念或等价类。为了简便起见,有时用 P 代替 IND(P)。 根据上述定义可知,概念即对象的集合,概念的族集(分类)就是 U 上的知识,U 上分类的 族集可以认为是 U 上的一个知识库,或说知识库即是分类方法的集合。 11.1.2 新型的隶属关系 粗糙集理论与传统的集合理论有着相似之处,但是它们的出发点完全不同。传统集合论认为, 一个集合完全是由其元素所决定,一个元素要么属于这个集合,要么不属于这个集合,即它 的隶属函数µX(x)∈{0,1}。模糊集合对此做了拓广,它给成员赋予一个隶属度,即µX(x)∈[0,1], 使得模糊集合能够处理一定的模糊和不确定数据,但是其模糊隶属度的确定往往具有人为因 素,这给其应用带来了一定的不便。而且,传统集合论和模糊集合论都是把隶属关系作为原 始概念来处理,集合的并和交就建立在其元素的隶属度 max 和 min 操作上,因此其隶属度必 须事先给定(传统集合默认隶属度为 1 或 0)。在粗糙集中,隶属关系不再是一个原始概念, 因此无需人为给元素指定一个隶属度,从而避免了主观因素的影响。而且认为不确定与隶属 关系有关,而模糊性则表现在集合本身。为描述不确定性,定义隶属关系如下。 定义 11.4 设 X⊆U 且 x∈U,集合 X 的隶属函数(membership function)(或称为粗糙隶属函数 (rough membership function))定义为 ))(( ))(()( xRcard xRXcardxR X ∩=µ (11.3) 其中 R 是不可区分关系,R(x)=[x]R={y:(y∈U)∧(yRx)}。 在本文中我们用 card 表示集合的基数。 根据上面的定义,可以得到以下性质: 1) µ X R (x)=1 当且仅当[x]R⊆X; 2) R Xµ (x)>0 当且仅当[x]R∩X≠ ∅ ; www.aibbt.com 让未来触手可及 274 3) µ X R (x)=0 当且仅当[x]R∩X= ∅ 。 显然有 µ X R (x)∈[0,1]。我们可以看到,这里的隶属关系是根据已有的分类知识客观计算出来的, 可以被解释为一种条件概率,能够从全域上的个体加以计算,而不是主观给定的。 11.1.3 概念的边界观点 知识的粒度性是造成使用已有知识不能精确地表示某些概念的原因。这就产生了所谓的关 于不精确的“边界”思想。著名哲学家 Frege 认为“概念必须有明确的边界。没有明确边界的 概念,将对应于一个在周围没有明确界线的区域”。粗糙集理论中的模糊性就是一种基于边界 的概念,即一个不精确的概念具有模糊的不可被明确划分的边界。为刻画模糊性,每个不精 确概念由一对称为上近似与下近似的精确概念来表示,它们可用隶属函数定义如下。 定义 11.5 设集合 X⊆U,我们称 R*(X)={x:(x∈U)∧( µ X R (x)=1)}为 X 的下近似(lower approximation) , R*(X)={x:(x∈U)∧( µ X R (x)>0)} 为 X 的 上近似(upper approximation) , BNR(X)=R*(X)–R*(X)为 X 的边界或边界区域(boundary)。 显然,若 BNR(X)≠ ∅ 或 R*(X)≠R*(X),则集合 X 就是一个粗糙概念。下近似包含了所有使 用知识 R 可确切分类到 X 的元素,上近似则包含了所有那些可能是属于 X 的元素。上近似与 下近似的差就是此概念的边界区域,它由不能肯定分类到这个概念或其补集中的所有元素组 成。在粗糙集中也采用下面的说法,POSR(X)=R*(X)称为集合 X 的 R-正区域(R-positive region), NEGR(X)=U–R*(X)称为集合 X 的 R-反区域(R-negative region)。 我们可以看到,模糊性和不确定性在此有了联系,即模糊性是由不确定性来定义的。一般 地,在给定近似空间中,并非所有的对象子集都可用给定的知识来表示成概念,这样的子集 就认为是粗糙概念(即不精确的或近似的概念)。但是,粗糙概念可以通过两个精确概念(上 近似和下近似)来粗糙地定义,这就使我们可以精确地讲述不精确的概念。另外,用隶属函 数、上近似和下近似还可以定义粗糙集的包含关系与相等关系等。 11.2 知识的约简 本节着重叙述粗糙集理论的两个最基本问题:知识约简与知识的依赖性。知识约简是研究 近似空间中每个等价关系是否都是必要的,以及如何删去不必要的知识。知识约简在信息系 统分析与数据挖掘等领域都具有重要的应用意义。知识之间的依赖性决定知识是否可以进行 约简,根据依赖性所定义的知识的重要性往往是知识约简的重要启发式信息。 11.2.1 一般约简 在粗糙集理论应用中,约简与核是两个最重要的基本概念。直观的,所谓知识的约简是指 知识的本质部分,它足以定义所考虑的知识中遇到的所有基本概念,而核是其最重要的部分。 定义 11.6 设 R 是等价关系的一个族集,且设 R∈R。若 IND(R)=IND(R–R),则称关系 R 在族集 R 之中是可省的(dispensable)﹐否则就是不可省的。若族集 R 中的每个关系 R 都是不可 省的﹐则称族集 R 是独立的(independent)﹐否则就是依赖的或非独立的。 定义 11.7 若 Q⊆P 是独立的﹐并且 IND(Q)=IND(P)﹐则称 Q 是关系族集 P 的一个约简 www.aibbt.com 让未来触手可及 275 (reduct) 。在族集 P 中所有不可省的关系的集合称为 P 的核(core) ﹐以 CORE(P)来表示。 显然,族集 P 有多个约简(约简的不唯一性)。 下面 的定理是建立核与约简之间联系的重要性质。 定理 11.1 族集 P 的核等于 P 的所有约简的交集。即 CORE(P)=∩RED(P) (11.4) 其中 RED(P)是 P 的所有约简的族集。 从上面定理可看出,核的概念具有两方面意义。首先,可作为计算所有约简的基础,因为 核包含于每一个约简之中,并且其计算是直接的。其次,核可以解释为知识最重要部分的集 合,进行知识约简时不能够删除它。 一般产生约简的方法是逐个向核中添加可省的关系,并进行检查。注意,可省的关系集合的 幂集的基数是多少,就有多少种添加的方式。最好的情况是所有不可省的关系集合本身就是 约简,此时的约简是唯一的。所以,计算所有约简与计算一个最佳约简(比如定义为关系最 少)都是 NP 难题。 11.2.2 相对约简 本节推广约简与核的概念。为此,首先需要定义一个分类关于另一个分类的正区域概念。 定义 11.8 设 P 和 Q 是全域 U 上的等价关系的族集,所谓族集 Q 的 P-正区域(P-positive region of Q),记作 POSP(Q),定义为 POSP(Q)= ∪ Q/UX∈ P*(X) (11.5) 族集 Q 的 P-正区域是全域 U 的所有那些使用分类 U/P 所表达的知识,能够正确地分类于 U/Q 的等价类之中的对象的集合。一个集合 X 相对于一个等价关系 P 的正区域就是这个集合的下 近似 P*(X);而一个等价关系 Q 相对于另一个等价关系 P 的正区域的概念是解决分类 Q 的等 价类(一般视为决策类)之中的那些对象可由分类 P 的等价类(一般视为条件类)来分类的问题。 定义 11.9 设 P 和 Q 是全域 U 上的等价关系的族集,R∈P。若 POSIND(P)(IND(Q))=POSIND(P-{R})(IND(Q)) (11.6) 则称关系 R 在族集 P 中是 Q-可省的﹐否则称为 Q-不可省的﹔如果在族集 P 中的每个关 系 R 都是 Q-不可省的﹐则称 P 关于 Q 是独立的﹐否则就称为是依赖的。 定义 11.10 S⊆P 称为 P 的 Q-约简(Q-reduct)﹐当且仅当 S 是 P 的 Q-独立的子族集﹐且 POSS(Q)=POSP(Q);族集 P 中的所有 Q-不可省的初等关系的集合﹐称为族集 P 的 Q-核(Q-core) ﹐记作 COREQ(P) 。 容易看出,当 P=Q 时,上述定义就是 11.2.1 节所引入的定义。 下面的定理是定理 11.1 的拓广。 定理 11.2 族集 P 的 Q-核等于族集 P 的所有 Q-约简的交集。即 COREQ(P)=∩REDQ(P) (11.7) 其中 REDQ(P)是族集 P 的所有 Q-约简的族集。 假设 P 与 Q 是全域 U 上的等价关系的族集(知识),族集 Q 的族集 P-正区域 POSP(Q)是使用 知识 P 能够分类于知识 Q 的概念之中的所有对象的集合。如果整个知识 P 对于将对象分类于 知识 Q 的概念中都是必要的,那么知识 P 就是 Q-独立的,知识 P 的 Q-核知识是知识 P 的本 质部分,在不影响将对象分类于 Q 的概念之中的能力的前提之下,Q-核知识是不能被删除的。 即删除它们的任何部分都将会影响知识 P 把对象分类于 Q 的概念之中的能力。知识 P 的 Q- 约简是知识 P 的某种最小子集,它具有与整个知识 P 相同的把对象分类于知识 Q 的概念之中 的能力。注意,知识 P 可能有多个约简。在某种意义上,如果知识 P 仅仅只有一个 Q-约简, www.aibbt.com 让未来触手可及 276 则知识 P 就是确定的,即把对象分类于知识 Q 的概念之中时,仅仅只有一种使用知识 P 的方 式。当知识 P 为不确定的即知识 P 有多个 Q-约简,将对象分类于 Q 的概念时,一般就有多种 使用知识 P 的方式。若核为空,则这种不确定性就尤其严重。 11.2.3 知识的依赖性 知识的依赖性可形式定义如下: 定义 11.11 设 K=(U, R)是一个近似空间,P, Q⊆R。 1) 知识 Q 依赖于知识 P 或知识 P 可推导出知识 Q,当且仅当 IND(P)⊆IND(Q)﹐记作 P⇒Q; 2) 知识 P 和知识 Q 是等价的﹐当且仅当 P⇒Q 且 Q⇒P﹐即 IND(P)=IND(Q)﹐记作 P= Q,明 显地,P=Q 当且仅当 IND(P)=IND(Q); 3) 知识 P 和知识 Q 是独立的,当且仅当 P⇒Q 且 Q⇒P 均不成立,记作 P≠Q。 依赖性也可以是部分成立的﹐也就是从知识 P 能推导出知识 Q 的一部分知识,或者说知 识 Q 只有一部分依赖于知识 P 的。部分依赖性(部分可推导性)可以由知识的正区域来定义。 现在我们形式地定义部分依赖性。 定义 11.12 设 K=(U, R)是一个知识库﹐P, Q⊂R﹐我们称知识 Q 以依赖度 k(0≤ k≤ 1)依赖 于知识 P﹐记作 P⇒kQ﹐当且仅当 k=γP(Q)=card(POSP(Q))/card(U) (11.8) (1) 若 k=1﹐则称知识 Q 完全依赖于知识 P,P⇒1Q 也记成 P⇒Q; (2) 若 00, C(X, Y)=0 当 card(x)=0。 www.aibbt.com 让未来触手可及 291 C(X, Y)表示把集合 X 归类于集合 Y 的误分类度,即有 C(X, Y)×100%的元素归类错误。显 然,C(X, Y)=0 时有 X⊆Y。如此,可事先给定一错误分类率β(0≤β<0.5),基于上述定义,我们 有 X⊆βY,当且仅当 C(X, Y)≤β。 在此基础上,设 U 为论域且 R 为 U 上的等价关系,U/R=A={X1, X2, …, Xk },这样,可 定义集合 X 的β-下近似为 RβX=∪Xi (Xi⊆βX, i=1, 2, …, k) 或 RβX=∪Xi (C(Xi, X)≤β, i=1, 2, …, k), 并且 RβX 称为集合 X 的β-正区域,集合 X 的β-上近似为 RβX=∪Xi (C(Xi, X)<1–β, i=1, 2, …, k), 这样,β-边界区域就定义为 BNRβX=∪Xi (β∈ kGkA 下面讨论广义模糊关联规则的计算方法。设 T={t1,t2,…,tn}是一个数据库,ti 表示 T 的第 i 个元组,I=(i1,i2,…,in)表示属性集,tj[ik]表示属性 ik 在第 j 个元组上的值。设 X={x1,x2,…,xp}, Y={y1,y2,…,yq}是 I 的子集,且 X∩Y=Φ,D={fx1,fx2,…,fxp},E={fy1,fy2,…,fyq},其中 fxi(i=1,2,…,p) 和 fyj(j=1,2,…,q)分别是定义在属性 xi 和 yj 的论域上的模糊集,这些模糊集中元素的隶属度取 为语言值,语言值用有界闭的正模糊数和零模糊数表示。给定阀值ε′ ,最小支持率α′ ,最小 信任度 β′ ,这里 α',β′,ε′都是有界闭的正模糊数。所要讨论的广义模糊关联规则的形式为“如 果 X 是 D 则 Y 是 E”。下面将分两步来讨论此规则。 1) 令 fxj(ti[xj])=x′ y,i=1,2,…,n;j=1,2,…,p;fyj(ti[yj])=y′ ij,i=1,2,…,n;j=1,2,…,q;这里 x′ ij 与 y′ ij 都是有界闭的正模糊数或零模糊数。取 }1)(|max{ =′∈=′ xxRxx ijij pjni ,2,1;,,2,1 == ; }1)(|max{ =′∈=′ xyRxy ijij qjni ,2,1;,,2,1 == ; }1)(|max{ =′∈=′ xRx αα }1)(|max{ =′∈=′ xRx ββ }1)(|max{ =′∈=′ xRx εε },,,,max{ εβα ′′′′′= ijij yxM pjniM xx ij ij ,2,1;,,2,1, == ′ = qjniM yy ij ij ,2,1;,,2,1, == ′ = MMM γγββαα ′=′=′= ,, 易知 Xij,Yij,α,β,ε 仍都是有界闭的正模糊数或零模糊数,且它们的正则点都落在[0,1]区间 上。 2) 首先给出两个定义。 定义 12.6 广义模糊关联规则“如果 X 是 D 则 Y 是 E”的广义支持率记为 S,这里 n yaxa S n i q j ij p j ij∑ ∏∏ = == × = 1 11 ])()([ , ⎩ ⎨ ⎧ ′≥= 其它, ,)( θ εxxxa www.aibbt.com 让未来触手可及 303 定义 12.7 广义模糊关联规则“如果 X 是 D 则 Y 是 E”的广义信任度记为 C,这里 ∑ ∏ = = = n i p j ijxan SC 1 1 )]([1 , ⎩ ⎨ ⎧ ′≥= 其它, ,)( θ εijij ij xxxa 当 θ=∑ ∏ = = n i p j ijxan 1 1 )]([1 时,易知 θ=S , 故规则肯定不会被采用。不妨设 θ≠∑ ∏ = = n i p j ijxan 1 1 )]([1 ,此时易知定义 12.6 中的 S 和定义 12.7 中的 C 都属于G~ 。同 时 ,由第一步 知 Xij 的正则点都落在[0,1]区间上,故 ∑ ∏ = = n i p j ijxan 1 1 )]([1 的正则点也落在[0,1]区间上,即 C 的最大正则点不会小于 S 的最大正则点,也就是说 C 不会小于 S。由于 S,C,α,β 都属于G~ , 故 S 和 α,C 和 β 都可以比较,当 S≥α且 S≥β时,则认为规则“若 X 是 D 则 Y 是 E”可被采 用。 12.3 挖掘关联规则的数组方法 文献[马洪文 00]提出了一个新的计算候选项集出现频率的方法,即效率较高的数组方法。 扫描 DB,求出频率 1-项集的集合 F1=(a1,a2,…,an),称 n 维数组(b1,b2,…,bn),bi F∈ 1 为最大 空间,再扫描 DB,求出最大空间上的支持度。最多扫描 DB 两遍。算法定义如下: 算法 12.2 数组方法。 Input: DB,minsup. Output: Result=所有的频繁项集,和它们的支持度。 方法: /* 第一遍整个扫描 DB*/ 求出频繁 1-项集的集合 F1={a1,a2,…an}; 求出最大空间 V; if(V 能完全装入内存) /*第二遍整个扫描 DB*/ 求出最大空间上的支持度 else V 分为若干能完全装入内存的子块 /*第二遍整个扫描 DB*/ for(V 的每一块) www.aibbt.com 让未来触手可及 304 求出最大空间子块上的支持度; endif Result: =V 上的支持度大于 minsup 的项集; 首先对比一下该算法与抽样算法。由于抽样算法为了保证基本上扫描一遍成功,所以选 取的 lowsup 比 minsup 小很多,产生的 S 元素个数一般情况下比 Lk 、Ck 元素个数大很多,有 时是几倍。这大大降低了它的效率,而减小 I/O 时间带来的益处也消耗没了。 其次对比一下该算法与 DIC 算法。由于 DIC 算法实质上类似于新算法。它在抽样时选取 前 K 块做为子样,所以其产生的频繁项集的超集 S,一定不如随机抽样时产生的频繁项集的超 集 S 更接近实际数据。如果数据分布不均匀时,DIC 算法将比 Apriori 算法还要费时。 而且计算 S 支持度采取数组计算的方法,它的效率是很高的。例如,假设有一个 8 个元 素的顶层,有一条记录含有顶层项集中的 4 项。当扫描 DB 时,对于 Apriori 算法,用 hash 树 计算至少要检验=15 次,计数 15 次。而采用数组计算的方法,则只需检验 8 次,效率提高 50%。 12.4 任意多表间关联规则的并行挖掘 目前数据挖掘基本是在单个表(关系)内进行的, 文献[74]首次将 AQ 学习算法用于多表 间关联规则的提取, 但由于 AQ 算法本身的制约, 表间的联系仅能通过关键字表达, 数据必须 全部放入内存, 因而局限性较大。由于表间连接时空开销较大,而且多个表可能属于不同的 数据库, 甚至不同的机构, 因安全性等因素不能将其在物理上连接起来, 因此产生从多个表 中直接提取关联规则的问题。 文献[左万利 99]考虑任意多表(关系)间以语义相关属性所表示的一般联系。相关属性 可以是关键字或其它对等属性。算法面向大数据集, 不受内存容量的制约。数据限定为布尔 属性, 类别属性数据转换为布尔属性数据后也可用此方法。数据挖掘首先在多表内并行进行, 然后根据相关属性推算多关系间的规则, 得到满足给定支持度和置信度的所有跨表间的关联 规则。 12.4.1 问题的形式描述 设表(关系)为ψ1, ψ2,…, ψn, Attr(ψi)表示ψi (i=1,2,…,n)的属性集, Aci=Attr(ψi)∩Attr(ψ i+1)为ψi 与ψi+1 (i=1,2,…,n-1)的公共属性集。令 A1=Attr(ψ1)-Ac1, Ai=Attr(ψi)-Aci-1-Aci(i=2, 3, …,n-1),An=Attr(ψn)-Acn-1,将 Ai 的所有属性编号为 1,2,…,ri。为处理方便,将表(关系) 转换为事物形式,若ψ={t1,t2,…,tl}是元组的集合, 则δ={t′ 1,t′ 2,…,t′ l}是对应事物的集合, 其中 t′ k={i|tk[i]=True, tk∈ψ}。令δi={t′ i1,t′ i2,…}是由ψi={ti1,ti2,…}得到的事物集合。任意多表间 关联规则数据挖掘就是寻找所有满足给定支持度 minsup 和置信度 minconf 的蕴含式: X⇒Y, ∪ i iAYX ⊂, ,且 X∩Y= ∅ ,X∪Y ⊄ Ai,i=1,2,…,n 其中 X,Y 是属性(编号)的集合, 称为项集。这种规则的直观含义:在ψ1, ψ2,…, ψn 按公 共属性 i ∪ Aci=1 连接得到的表(关系)中, 包含 X 的元组通常也包含 Y。令 m1 表示ψ1 中包含 公共属性(Ac1=1)的元组的个数, mn 表示ψn 中包含公共属性(Acn-1=1)的元组的个数, mi 表示ψi 中包含公共属性(Aci-1=1 且 Aci=1, i=2,…,n-1)的元组的个数, 则ψ1, ψ2,…, ψn 按公共 www.aibbt.com 让未来触手可及 305 属性 i ∪ Aci=1 连接后所得表中元组的个数 joinsize=m1×m2×…×mn。令 X=X1 X∪ 2 …X∪∪n,其 中 Xi A∈ i。若 count(Xi)表示δi 中包含 Xi 且 Attr(ψi)-Ai=1 的元组的个数(如 Xi= ∅ , 则 count(Xi)=mi), 并设 ∏ = = n i ii YXcounte 1 )( ∪ , 则 X Y 的支持度为 joinsize eXYYX =⇒=⇒ )sup()sup( 置信度为 n i iXcount eYXconf 1 )( )( = =⇒ , n i iYcount eXYconf 1 )( )( = =⇒ 12.4.2 单表内大项集的并行计算 假定事物及项集中的项按字典排序,含有 k 个项的项集称为 k 项集,k 项集 c 的 k 个项表 记为 c[1],c[2],…,c[k]。设 u 是关于 Ai 的一个项集, 由于只对多表间关联规则感兴趣, 仅 当存在一个关于 Aj(j≠i)的项集 v,使得 count(u)×count(v)/joinsize≥minsup 时,u 才称为大项集。 反之,若对任意关于 Aj(j≠i)的项集 v,有 count(u)×count(v)/joinsize1,所有的全局大的 k-数 据集 L(k)是 CG(k)= n i 1=∪ CGi(k)的子集。 证明:设 X∈L(k),根据引理 12.1,存在一个地点 Si(1≤i≤n),X 的所有大小为 k-1 的 子集在地点 Si 是全局大的,因此,X∈CGi(k)。所以, L(k)⊆ CG(k)= n i 1=∪ CGi(k)= n i 1=∪ Ariori_gen(GL(k-1))。 定理 12.1 表明:CG(k)是 CA(k)的一个子集,并且有可能比 CA(k)的数据量小很多,于 是就可以作为大小为 k 的数据集的候选集。两个数据集 CG(k)和 CA(k)有多大差别取决于数 据集的分布程度。这个定理奠定了 FDM 算法中生成候选数据集部分的基础。首先,候选数据 集 CGi(k) 可以在每个地点 Si 经过 k 次迭代在本地生成。经过数次支持集的交换,全局数据集 GLi(k)就可以通过对 CGi(k)迭代得到,在 GLi(k)的基础上,又可以生成经过 k+1 次迭代的候 选数据集。根据第 5 节的性能研究,利用这种方式,候选数据集的数据量可以减少到 CD 算法 www.aibbt.com 让未来触手可及 310 生成的数据量的 10-25%。 例 12.1 证明了利用定理一对减少数据量的有效性 例 12.1 假设某个系统中有三个分布地点将一个数据库系统 DB 分为 DB1,DB2,DB3。并假设 大的 1-数据集(经过一层迭代计算所得)L(1)={A,B,C,D,E,F,G,H},其中,A、B 和 C 在地点 S1 是局部大的,B、C 和 D 在地点 S2 是局部大的,E、F、G 和 H 在地点 S3 是局 部大的,所以,GL1(1)={A,B,C},GL2(1)={B,C,D},GL3(1)={E,F,G,H},根据定 理 12.1,在 地 点 S1 的大小为 2 的候选数据集为 CG1(2),CG1(2)=Apriori_gen(GL1(2))={AB, BC,AC}。类似的,CG2(2)={BC,CD,BD},CG3(2)={EF,EG,EH,FG,FH,GH},因 此,大的 2-数据集的候选数据集 CG2= CG1(2)∪CG2(2)∪CG3(2),共有 11 个候选元,但是, 如果对 L(1)直接进行 Apriori_gen 变换,那么候选数据集 CA(2)=Apriori_gen(L1)将包含 28 个元素。这说明利用定理 12.1 对减少候选数据集中的数据量是很有效的。 12.5.2 候选数据集的本地剪枝 根据定理 12.1,通常可以在分布式环境中选择生成一个比直接应用 Apriori 算法生成的数 据集数据量小得多的候选数据集。 当候选数据集 CG(k)生成成功后,为了得到全局大的数据集,就必须在所有地点之间交 换支持元合计数的信息,注意到 CG(k)中的某些候选数据集在进行合计数交换之前就可利用 局部的剪枝技术进行剪枝。总的思想是:在每一个地点 Si,如果一个数据集 X∈CGi(k)在地点 Si 并不是局部大的,也就没有必要来算出它的全局大的支持元合计数来决定它是否是全局大 的,这个结论是基于如下原因:如果 X 是小的(也就是说不是全局大的),或者它可能在别的 地点是局部大的,那么,只有 X 为局部大的那些地点才有必要计算 X 的全局支持合计数。所 以,为了计算所有的大的 k-数据集,在每一个地点 Si,侯选数据集就可以只限定在数据集 X ∈CGi(k),并且在地点 Si 是局部大的。为了简略起见, LLi(k)用来表示那些在 CGi(k)中的侯 选集并且在地点 Si 是局部大的。根据以上的讨论,在每一层迭代(共有 k 次迭代)的过程中, 可以按照以下步骤计算出在地点 Si 全局大的 k-数据集: 1. 侯选集的生成:根据在地点 Si 经过 k-1 次迭代生成的全局大的数据集的基础上,利用公 式 CGi(k) = Ariori_gen(GL(k-1))生成 CGi(k)。 2. 本地剪枝:对于每一个数据集 X∈CGi(k),扫描每一个局部数据库 DBi 以计算本地支持合 计数 X.supi。如 果 X 在地点 Si 不是局部大的,那么将其从侯选数据集 LLi(k)中删除。(注: 这种剪枝只是将 X 从地点 Si 的侯选数据集中删除,X 还可能出现在别的地点的侯选数据 集中。 3. 支持合计数交换:将 LLi(k)中的侯选元向其他地点广播,以收集支持合计数。计算全局 的支持合计数,并得出在地点 Si 所有全局大的 k-数据集。 4. 广播挖掘结果:将计算所得的全局大的 k-数据集向其他地点广播。 为了便于理解,表 12.2 中列出了目前用到的所有符号。 www.aibbt.com 让未来触手可及 311 为了举例说明以上步骤,继续对例 1 进行如下操作: 例 12.2:假设例 12.1 中的数据库包含 150 个事务,3 个局部数据库各包含 50 个事务,同 时假设最小支持度 s=10%。然后,根据例 12.1,经过第二次迭代,在地点 S1 生成的侯选数据 集为 CG1(2)={AB,BC,AC};在地点 S2 生成的侯选数据集为 CG2(2)={BC,AD,CD};在 地点 S3 生成的侯选数据集为 CG3(2)={EF,EG,EH,FG,FH,GH}。为了计算全局大的 2- 数据集,必须首先计算局部的支持合计数,表 12.3 列出了所得计算结果。 从表 12.3 中可以看出,AC.sup1=2 s*D = 15,AB.sup = 13 < s*D = 15。因此,在地点 S1 的全局大的 2-数据集为:GL1(2) = {BC}。类似的,GL2(2) = {BC,CD}; GL3(2) = {EF}。经过向其它地点广播全局大的数据集以后, 每一个地点都返回了全局大的 2-数据集 L(2) = {BC,CD,EF}。 表 12.2 符号表 D S L(k) CA(k) X.sup DI GLi(k) CGi(k) LLi(k) X.supi DB 中的事务数 最小支持度 minsup 全局大的 k-数据集 从 L(k) 中生成的侯选数据集 关于 X 的全局支持合计数 DBi 中的事务数 在地点 Si 全局大的 k-数据集 由 GLi(k-1)生成的侯选数据集 在 CGi(k)中局部大的 k-数据集 在地点 SI 的局部支持合计数 表 12.3 局部大的数据集 X.sup1 X.sup2 X.sup3 AB BC AC - - - 5 10 2 - - - BC CD BD - - - 10 8 4 - - - EF EG EH FG FH GH 8 3 4 3 4 6 www.aibbt.com 让未来触手可及 312 注意到某些候选元,如本例中的 BC,可能在不止一个地点上是局部大的。在以上处理中, 所有 BC 为局部大的地点都向其它地点广播有关 BC 的信息。这是不必要的,因为对每一个地 点来说,相同的信息只要被广播一次就足够了,所以可以用一种优化技术以便消除这样的冗 余。 在以上给出的寻找全局大的候选数据集的四个步骤的执行过程中,还有一个细微之处值 得关注:为了支持步骤 2“局部剪枝”和步骤 3“支持合计数交换”,每个地点 Si 都应有两个 支持合计数集合。为了进行局部剪枝,Si 必须基于它的本地候选集 CGi(k)找出局部支持合计数; 为了进行支持合计数交换,Si 必须要找到那些与其它地点的全局支持合计数集合中元素不同的 局部支持合计数。一个简单的步骤就需要对 DB i扫描两次,一次是为了找到基于它的本地候 选集 CGi(k)的局部支持合计数,另一次是为了响应其它地点对该地点支持合计数的请求,但是, 这必定会明显地降低整个系统性能。 事实上,对数据库进行两次扫描并不是必要的,在地点 Si,在第 k 次迭代开始之前,不仅 集合 CGi(k) 已经得到,一些其它的相关集合如 CGj(k)(j=1,…,n,j≠i)也可以得到,因为在 k-1 次 迭代结束后,所有的 GLi(k-1)(i=1,…,n)都被广播至每一个地点,候选数据集 CGi(k)(i=1,…,n) 就可以从相应的 GLi(k-1)中计算得出。也就是说,在每一次迭代的开始,因为前一次迭代产生 的所有全局大的数据集都被广播至所有地点,每一个地点都可以计算出其它地点的候选数据 集。那么,所有候选数据集的局部支持合计数都可以在一遍扫描中获得,并且可以被存储在 一个类似于 Apriori 算法中的哈希树结构中,在局部剪枝和支持合计数交换中所需要的两套不 同的支持合计数集合都可以在这个数据结构中检索得到。 12.5.3 候选数据集的全局剪枝 在地点 Si 的局部剪枝中,只用到了在 DB i中得到的局部支持合计数对候选集进行剪枝, 事实上,在其它地点得到的局部支持合计数也同样可以被用来剪枝,利用一种全局的剪枝技 术来实施这样的剪枝,这种技术的要点如下:在每一次迭代结束时,可以得到候选数据集 X 的所有局部支持合计数和全局支持合计数,在一个候选数据集被确认为是全局大的以后,这 些局部支持合计数和全局支持合计数都可以向所有地点进行广播,利用这一信息,就可以在 以后的迭代中对候选数据集进行一些全局剪枝。 假设在每一次迭代结束后,如果发现某一候选数据集是全局大的,系统自动将每一个候选 元的局部支持合计数向其它地点广播。假设 X 是一个在 k 次迭代结束后大小为 k 的候选数据 集。因此,在每一个地点都已收到所有 X 的大小为 k-1 的子集的局部支持合计数。对于一个 表 3.4 全局大的数据集 局部大的 候选元 广播 来源 X.sup1 X.sup2 X.sup3 AB BC CD EF GH S1 S1,S2 S2 S3 S3 5 10 4 4 4 4 10 8 3 4 4 2 4 8 6 www.aibbt.com 让未来触手可及 313 分支数据库 DBi(1≤i≤n)来说,用 maxsupi(X)来表示 X 的所有大小为 k-1 的子集的最小的局部 支持合计数,也就是说,maxsupi(X)=min{Y.supi|Y⊂X 且 |Y|=k-1}。根据父集和子集之间的关 系,maxsupi(X)就是局部支持合计数 X.supi 的上界函数。因此,所有分支数据库中这类上界函 数的和,用 maxsup(X)来表示,就是 X.sup 的上界。换句话说,X.sup≤maxsup(X)= n i 1=Σ maxsupi(X)。要注意的是:maxsup(X)可以在每一次迭代的开始时在每一个地点计算出。因为 maxsup(X)是它的全局支持合计数的上界,它就可以被用来进行全局剪枝。也就是说,如果 maxsup(X)s*D. 因为该上界要大于最小支持度。所以不应将 AB 从候选数据集中删去,并在地点 S1 仍然 作为一个候选元。 全局剪枝对减少候选元素的个数方面是一个有效的技术,它的有效性取决于局部支持合 计数的分布状况。 表 3.5 局部支持合计数 在地点 S1 的局部支持合计数 大的 1-数据集 X.sup1 X.sup2 X.sup3 A B C 6 4 4 10 10 5 4 12 5 www.aibbt.com 让未来触手可及 314 12.5.4 合计数轮流检测 在 CD 算法中,每一个候选数据集的局部支持合计数被从一个地点向所有其它的地点进行 广播,如果设 n 为数据库分支数,那么对于每一个候选数据集需要进行合计数交换的数量级 为 O(n2)。 如果一个候选数据集 X 在地点 Si 是局部大的话,那么 Si 需要 O(n)数量级的信息来得到 X 的支持合计数,通常来说,在所有地点都是局部大的候选数据集时非常少的。所以,FDM 算 法通常只需要少于 O(n2)数量级的信息就可以计算出每一个候选元,为了确保 FDM 在任何情 况下只需要 O(n)数量级的信息就可以计算出每一个候选元,可以引入一种合计数轮流检测的 技术。 对于每一个候选数据集 X,该技术用到了一个指派函数,假设该函数为作用于 X 上的哈 希函数,将 X 映射为一个轮询地址(假设该函数在任何一个地点都是可引用的。),对应于 X 的轮询地址与 X 为局部大的那些地点是毫无关系的,对于每一个候选数据集 X,它的轮询地 址是用来计算是否 X 为全局大的。为了达到这个目的,对应于 X 的轮询地址必须向所有其它 地点广播 X 的轮询请求,收集局部支持合计数,计算全局支持合计数。因为对应于每一个候 选数据集 X ,有且仅有一个轮询地址,所以 X 需要的合计数交换信息数就可以被减少到 O(n) 数量级。 在进行 k 次迭代的过程中,当剪枝阶段(包括局部剪枝和全局剪枝)结束后,FDM 在每 一个地点 Si 按照如下步骤进行合计数轮流检测。 1、将候选元送往各轮询地点:假设在地点 Si,对于每一个轮询地址 Sj,找到所有属于集合 LLi (k)而且其轮询地址为 Sj 的候选元,并将它们存储在集合 LLi,j(k)中(也就是说,将候选元按 照它们的轮询地址分组存放),各候选数据集的局部支持合计数也同样存储在相应的集合 LLi,j(k)中。然后将 LLi,j(k)送往各自相应的轮询地址 Sj。 2、轮流检测并收集支持合计数:如果 Si 是一个轮询地址,那么 Si 将接收所有来自其他地点的 集合 LLi,j(k)。对于每一个接收到的候选数据集 X,Si 首先找到送出 X 的原始地点列表,然 后对每一个不再列表上的地点广播轮询请求,以便收集支持合计数。 3、计算全局大的数据集:Si 从别的地点接收支持合计数,并为它的每一个候选元计算全局支 持合计数,然后找到全局大的数据集。最后,Si 向其他地点广播它找到的全局大的数据集 和它们的全局支持合计数。 例 12.4:在例 12.2 中,假设 S1 被指定为 AB 和 BC 的轮询地址,S2 被指定为 CD 的轮询地址, S3 被指定为 EF 和 GH 的轮询地址。 根据以上指派,S1 负责进行 AB 和 BC 的轮流检测,以 AB 为例,S1 将轮询请求送往 S2 和 S3 以便收集支持合计数,对于 BC 来说,因为它在 S1 和 S2 都是局部大的,二元组=将被从 S2 送往 S1。当 S1 收到这个信息以后,它将发送一个轮询请求给剩 下的地点 S3 ,一旦它收到来自 S3 的支持合计数 BC.sup3=2 以后,S1 计算出 BC.sup=10+10+2=22>15,所以 BC 在地点 S1 是全局大的。在本例中,由于引入了一个轮询地 址,就避免了重复对各地点进行信息检测。 12.5.5 分布式挖掘关联规则的算法 在本节中,首先给出 FDM 算法的基础版本,即 FDM-LP(带局部剪枝的 FDM)算法, 它包含了两项技术:精简候选数据集和局部剪枝技术,根据性能的分析,FDM-LP 的效率大大 www.aibbt.com 让未来触手可及 315 优于 CD 算法。 算法 12.6 FDM-LP 算法:带局部剪枝的 FDM 输入:DBi(i=1,…,n),在地点 Si 的分支数据库。 输出:L:所有全局大的数据集。 步骤: 在每一个地点 Si 分别反复执行以下程序片断(针对第 k 次迭代),一旦 L(k)=∅或候选数据集 CG(k) =∅,算法将终止。 1. if k = 1 then 2. Ti(1) = get_local_count(DBi,∅,1) 3. else { 4. CG(k) = n i 1=∪ CGi(k) = n i 1=∪ Apriori_gen(GLi(k-1)); 5. Ti(k) = get_local_count(DBi,CG(k),i);} 6. For_all X∈Ti(k) do 7. If X.supi ≥ s*Di then 8. for j = 1 to n do 9. if polling site(X) = Sj then insert into LLi,j(k); 10. for j = 1,…,n do send LLi,j(k) to site Sj; 11. for j = 1,…,n do { 12. receive LLj,i(k) ; 13. for_all X∈LLj,i(k) do { 14. if X∉LPi(k) then insert X into LPi(k) ; 15. update X.large_sites; }} 16. for_all X∈LPi(k) do 17. send_polling_request(X); 18. reply_polling_request(Ti(k)); 19. for_all X∈LPi(k) do { 20. receive X.supj from the sites Sj, where Sj ∉ X.large_sites; 21. X.sup = n i 1=Σ X.supi ; 22. if X.sup≧s*D then insert X into Gi(k) ; } 23. broadcast Gi(k) ; 24. receive Gj(k) from all other sites Sj , (j≠i); 25. L (k) = n i 1=∪ Gi(k) . 26. divide L(k) into GLi(k) , (i = 1,…,n); 27. return L(k). www.aibbt.com 让未来触手可及 316 在算法 FDM-LP 中,每一个 Si 最开始是作为它所生成的候选数据集的“宿主地点”,然后 成为了一个轮询地址来响应来自其他地点的请求,最后,它又被转换成了一个远程地点用以 给其他轮询地址提供局部支持合计数。按照每一个 Si 在算法 FDM-LP 中所起的不同作用的那 些对应的行取出作专门讨论,如下所示: 1、宿主地点:生成候选数据集并将它们提交给其他地点(第 1-10 行) 在第一次迭代时,地点 Si 调用函数 get_local_count 来扫描分支数据库 DBi 一遍,并将所 得到的基于所有的 1-数据集的局部支持合计数存储在数组 Ti(1)中。在进行 k(k>1)次迭代时, 地点 Si 首先计算候选数据集 CG(k),然后构造一棵包含 CG(k)中所有元素的局部支持合计数的 哈希树 Ti(k)。通过遍历 Ti(k),Si 便可以找到所有局部大的 k-数据集,并将它们按照轮询地址 分组,最终,它将候选数据集连同它们的局部支持合计数一并送往其对应的轮询地址。 2、轮询地址:接收候选数据集并发送轮询请求(第 11-17 行) 作为一个轮询地址,地点 Si 从其他地点接收候选数据集并将它们插入到 LPi(k)中,对于 LPi(k)中的每一个候选元 X,Si 将它的“宿主”地址存储在 X.large_sites 中,它包含所有将 X 送往 Si 轮询的那些地点,为了对 X 进行合计数交换,Si 调用函数 send_polling_request 来将 X 送往那些不在 X.large_sites 中的地点以便收集余下的支持合计数。 3、远程地点:向轮询地点返回支持合计数(第 18 行) 当地点 Si 从其他地点接收到轮询请求,它就已经作为一个远程地点了。对于每一个从其 他地点接收到的候选集 Y,Si 从哈希树 Ti(k)中寻找 Y. s u p i,并将它返回给轮询地点。 4、轮询地址:接收支持合计数并找到大的数据集(第 19-23 行) 作为一个轮询地址,Si 接收所有属于集合 LPi(k)的候选数据集的局部支持合计数。然后, 它再计算所有这些候选元的全局支持合计数并找出它们中间的全局大的数据集。这些全局大 的 k-数据集将被存储在集合 Gi(k)中,最后,Si 将集合 Gi(k)向所有其它地点广播。 5、宿主地点;接收大的数据集(第 24-27 行) 作为一个“宿主”地点,Si 接收所有来自其他地点的全局大的 k-数据集 Gi(k),经过对 Gi (k)(i=1,…,n)作并集运算,Si 便可以得到所有大小为 k 的大数据集所组成的集合 Lk。更进一 步的操作是:利用 X.large_sites 中的地点列表,Si 便可以从 Lk 中得到对应于每一个地点的全 局大数据集 GLi(k),而 GLi(k)将在下一次迭代时用于候选数据集的生成。 在以下的讨论中,通过应用两种不同的全局剪枝技术,给出了 FDM-LP 算法的两种更精炼 的版本。 算法 12.7 FDM-LUP:带有局部和上界剪枝的 FDM 算法。 方法:FDM-LUP 算法的主程序是在算法 FDM-LP 的第 7 行后加入如下条件(第 7.1 行)得到 的。 7.1 if g_upper_bound(X)≥s*D then FDM-LUP 算法的唯一一个更新是加入了上界剪枝(第 7.1 行)。函数 g_upper_bound 为每 一个候选数据集 X 计算上界。换句话说,g_upper_bound 以如下公式给出 X 的上界: X.supi+ n ijj ≠= Σ ,1 maxsupj(X) X.supi 在局部剪枝阶段就已经计算过,而且 maxsupj(X)(j=1,…,n,j≠i)的数值可以在 k-1 次迭代结束后得到的局部支持合计数计算出。如果得出的上界要小于全局的最小支持度, 那么它就可用来对 X 进行剪枝。FDM-LUP 算法与 FDM-LP 算法比较起来,通常得到的候选 www.aibbt.com 让未来触手可及 317 元数量比较小。 算法 12.8 FDM-LPP:带有局部和轮询地址剪枝的 FDM 算法。 方法:FDM-LUP 算法的主程序是将算法 FDM-LP 的第 17 行替换为如下两行得到的。 16.1 if p_upper_bound(X)≥s*D then 17 end_polling_request(X); FDM-LPP 算法中加入的一个新步骤是轮询地址剪枝(第 16.1 行),在该阶段,是一个轮询 地址,Si 接收来自其它地点的请求,并且进行轮询。每一个请求包含一个局部大的数据集 X 和它的局部支持合计数 X.supj,Sj 是那些向 Si 发送数据集 X 的地点,注意到 X.large_sites 是将 包含 X 的轮询请求发往轮询地址的那些源地址的集合(见第 15 行)。对于每一个地点 Sj∈X.large_sites ,它的局部支持合计数 X.supj 已经被送往地点 Si 。对于每一个地点 Sq∉X.large_sites,因为 X 在 Sq 不是局部大的,它的局部支持合计数 X.supq 必定小于局部最小 支持度 s*Dq。X.supq 应该小于或等于 min(maxsupq(X),s*Dq-1)。所以,X.supq 的上界可以由下 式计算出: ∑∑ ∈≠= −+ SiteselXj n siteselXqq qaj DsXX _arg._arg.,1 )1*),(supmin(maxsup. 在 FDM-LPP 算法中,Si 调用 p_upper_bound 函数利用以上公式来为 X.sup 计算出一个上 界。这个上界在小于全局支持合计数时被用来对 X 剪枝。 正如以前讨论的那样,FDM-LUP 和 FDM-LPP 算法都可能得到比 FDM-LP 算法小的候选 数据集。但是,它们需要对局部支持合计数准备更多的存储空间和交换信息。它们相对于 FDM-LP 算法的效率主要取决于数据的分布性。 12.6 词性标注规则的挖掘算法与应用 12.6.1 汉语词性标注 汉语词性自动标注问题是中文信息处理领域的基础性研究课题。它是进一步进行汉语句 法分析的前提,也可用于信息检索领域,因此,其研究具有非常重要的意义。从目前的研究 上看,基本上采用了基于概率统计和基于规则两种技术路线。其中,CLAWS 算法是基于概率 统计的方法[Leech 94]。具体做法是:首先对部分英文语料手工标注词性标记,然后对标注好 的语料进行统计,得到标记与标记同现的频率,最终产生一个同现概率矩阵。在词性标注时, 先取一个两端为非兼类词而中间为若干兼类词的片断(SPAN)。在 SPAN 中,词对应的词性标 记的组合可以被视为多条路径。根据概率矩阵计算每条路径的概率,并选择概率最大的路径 上的词性标记作为兼类词的标记,从而实现了对兼类词的标注。 对于汉语词性标注问题采用了 CLAWS 算法的思想,同时结合了每个词的各个词性标记具 有不同概率的特点,可以取得较好的标注效果。这种统计方法在训练语料规模足够大的情况 下(所要求的训练集规模应该与词性标记集的大小有关),限于计算量成指数增长,一般采用 bi-gram(二元语法,即仅计算相邻标记的概率),这使其正确率受到一定的影响。基于规则的 方法通过考虑上下文中的词及标记对兼类词的影响决定兼类词的词性,常常作为基于概率统 计方法的补充。将统计方法和规则方法相结合被认为是解决词性标注问题的最佳手段[李晓黎 www.aibbt.com 让未来触手可及 318 00]。 目前,规则的获得一般靠人工整理集成。但这存在以下两个方面的问题。一是从规则的 应用范围上看,靠人工的方法只可能产生一些共性规则,不可能产生数量较多的针对个别情 况的个性规则。而个性规则尽管应用范围小,但也是保证正确率的重要手段。二是人工方法 产生规则的准确率有待验证。因此,在统计方法正确率不易再提高的前提下,能否自动高效 地获取规则是实现汉语词性标注中的关键问题。 从人工已标注好的汉语文本语料中,利用文本挖掘来研究词及词性的模式序列对词性的 影响是非常有新意的研究,这在国内外尚未见到有关报道。可以认为这与人在根据上下文对 词性的判断方法是一致的,即不但根据上下文中的词性、词而且可根据二者的组合来判断某 词的词性。在统计语料规模较大的情况下,给定最小支持度及最小可信度后,首先挖掘大于 最小支持度常用模式集,然后生成关联规则。而若此规则的可信度大于最小可信度,则得到 词性规则。只要最小可信度定义的足够高,获得的规则就可以用于处理兼类词的情况。这样 获得的规则能够真正作为概率方法的补充,从而较好地解决汉语词性标注问题。但由于这种 规则的条件依赖于词与词性的各种组合,同时又在文本数据中进行挖掘, 这使得其挖掘过程 比一般在数据库中的数据挖掘过程复杂得多。 12.6.2 问题的描述 为了在文本数据中挖掘词性标注规则,先给出如下的定义。 定义 12.8 词集 DICT={WORDi|i=1,2,...,n},词性标记集 TSET={TAGi|i=1,2,...m},项 集 I=DICT∪TSET,其中 WORDi、TAGi 分别为某个汉语词或词性标记。 定义 12.9 已标记的文本 T={( WORDi,TAGi)| WORDi∈DICT,TAGi∈TSET, TAGi 是词 WORDi 在该标 记文本中对应的词性标记}。例如:{(试析,VGN),(科技,NG),......} 定义 12.10 训练集 E={(e1,e2,...,eK)|ei∈T,且在文本中存在句子 SENTENCE=e1e2...eK, i=1,2,..., K,K∈N}。这里 N 为自然数集合;集合 E 中的每个元素为一个已标记的句子。例 如 : {(( 试 析 ,VGN ) ,( 科 技 ,NG),( 情 报 ,NG),( 体 制 ,NG),( 改 革 ,NG),( 的 ,USDE),( 热 点 ,NG),( 与 ,CW),( 难 点 ,NG)), (( 本 文 ,NG),( 试 图 ,VG),( 运 用 ,VGN),( 统 计 ,NG),( 热 力 学,NG),(的,USDE),(观点,NG)),......) 定义 12.11 模式集 D={d|d∈I+},表示由词与词性标记组合构成的串。 定义 12.12 若 X∈D,且其长度 LEN(X)=K,则模式 X 为 K 模式。 定义 12.13 )( )(.)},()(,|{, Ftotal XfreqSUPXYLENXLENDYYFDX ==∈=∈ 则且若 为 模式 X 的支持度,它反映了该模式在同长度模式中所占的比例。其中,freq(X)表示模式 X 出现的频率;Total(F)表示长度为 LEN(X)的模式出现的总频率。 定义 12.14 令 MINSUP 为用户规定的最小支持度。则集合 C={X|X∈D,X.SUP≥MINSUP}称 为常用模式集。集合中的元素称为大模式。 定义 12.15 若 X,Y 为大模式,则 X,Y 之间的关联,记为规则 X⇒Y,该规则的可信度 (X⇒Y).CON 定义为 freq(X) )freq(XYPROB(Y/X) = ,该规则的支持度定义为(X∪Y).SUP。 www.aibbt.com 让未来触手可及 319 它表示了在模式集 D 中,包含 X 的模式中有多少同时包含了 Y, 其中 freq(XY)表示模式 X、 Y 同现的频率。 定义 12.16 令 MINCON 为用户规定的最小可信度。若(X⇒Y).CON≥MINCON,则规则 X⇒Y 是值得该用户信赖的产生式规则。 定义 12.17 取 k 模式 Ii= a1a2…ak-1ak∈I,并 且 ak∈TSET,ak 是词 k 的词性标记,则采取的 规则形式为: 。词 )a,k(a kj 1k 1j ⇒∧ − = 它表明若前 k-1 个词、标记构成的模式等于 a1a2…ak-1,则第 k 个词(词 k)的词性标记应该为 ak。 定义 12.18 设 ε 是一个给定正数,且 ε >MINSUP。 若规则 X⇒Y 的支持度 MINSUP<(X∪Y).SUP< ε ,则该规则为个性规则。 若规则 X⇒Y 是个性规则,且(X⇒Y).CON>MINCON,则该规则为个性可靠规则。 若规则 X⇒Y 的支持度(X∪Y).SUP> ε ,则该规则为共性规则。 若规则 X⇒Y 为共性规则,且(X⇒Y).CON>MINCON,则该规则为共性可靠规则。 12.6.3 挖掘算法 词性标注规则的挖掘任务可以视为:给定训练集 E,根据 E 中的 WORD 和 TAG 两层结构对 词的词性的影响,求出所有满足最小支持度和最小可信度的产生式规则,即个性可靠规则和共 性可靠规则。 该问题可以分解为两个子问题:一是求出 T 中满足最小支持度的常用模式集;二是利用 常用模式集生成满足最小可信度的关联规则。第二个问题的解决较为简单,对每个常用模式, 可按照定义 12.17 的形式构造规则(还可有其它形式,但不在此中讨论)。如果(a1a2…ak-1⇒ ak).CON> MINCON,则将其加入规则集。关键技术是如何高效地求出常用模式集。 容易知道,与数据库中的数据挖掘不同, 一个句子中长为 i 的子串中,词与词性的组合 数(仅 i 模式)为 2i。 即随模式长度的增加, 该长度模式的总数 total 剧增, 所以最小支持度 不应该是一成不变的。它们应随模式长度的增加而减少,因而定义支持度向量为递减向量。 但对最小可信度的要求不但不因模式长度的增加而减少,而且由于长模式适用范围较小,必 须保证其可信度比短模式的可信度高,否则将得不偿失,因而,可信度向量为递增向量。 由于挖掘工作是在文本数据中进行, 因此,为了提高效率,算法仅进行一遍扫描。 设最小支持度向量 minsup[]={a1a2…an},最小可信度向量 minconf[]={b1b2…bn},total[i] 表示 i 模式总数(初值为 0),MaxPatternSize=W 表示用户规定的最长模式大小,pattern 为 一个模式并且 pattern.count 存放该模式出现的次数,CandPatternSet 表示候选模式集(初 值为空集{}),largePatternSet={}表示最终形成的大模式集(初值为空集{}),训练集为 E={(e1,e2,...,eK) |ei∈T,i=1,2,...k,}。则挖掘算法可描述为: 算法 12.9 词性标注规则的挖掘算法。 1. 若 E= φ ,则转 STEP7。 2. 取(e1,e2,...,eK)∈E,移动指针 L=1,E ←E-{(e1,e2,...,eK)}。 3. 若 K-L+1=0 ,则表示(e1,e2,...,eK)已处理完毕,转 STEP1。 4. 若 K-L+1>W 则取(WORDL,TAGL)、......、(WORDL+W-1,TAGL+W-1),LEN ←W, 否则取(WORDL,TAGL)、......、(WORDK,TAGK),LEN ←K-L+1。 5. 循环 j=2 TO LEN 执行 www.aibbt.com 让未来触手可及 320 构成包含(WORDL,TAGL)的长度 j 的模式串 pattern, pattern.count ← pattern.count+1, CandPatternSet ← CandPatternSet ∪ {pattern}, Total[j] ←total[j]+1。 6. L ←L+1,转 STEP3。 7. 若 CandPatternSet = φ ,则转 STEP11。 8. 取 pattern∈CandPatternSet,CandPatternSet ← CandPatternSet-{pattern}。 9. 若 pattern.count/total[i]>minsup[i] 则 LargePatternSet ← LargePatternSet∪{pattern} 10. 转 STEP7。 11. 若 LargePatternSet= φ ,则算法结束。 12. 取 pattern= a1a2…ak∈LargePatternSet, LargePatternSet ← LargePatternSet –{pattern}。 13. 若 ak∈Tag and (a1a2…ak-1⇒ ak).CON>MINCON[k],则 将规则"if a1a2…ak-1⇒ (词 k,ak)"加入规则库, 14. 转 STEP11。 算法的前 6 步是获取训练集 E 中每个例子的各长度的模式,并放入候选模式集 CandPatternSet。7 至 10 步计算大模式集 LargePatternSet。11 步到 14 步从大模式集中产生 规则并加入到规则库。 在规则库产生后,先按规则长度从大到小的顺序排序,以便在应用规则时利用较多的上 下文信息,提高词性排歧的准确率。对同长度的规则,按支持度从大到小的顺序排列,使共 性规则排在前面,从而提高规则的匹配效率。 为提高标注正确率,将统计方法与规则方法相结合。对于兼类词的标注,先看能否用规 则处理。若能则直接标注词性,从而利用了规则方法的高效性和高准确率。否则再利用概率 统计方法标注。其标注过程如下述算法所示: 算法 12.10 统计方法与规则方法相结合算法。 1. 对待标注的文本(已分词),首先查非兼类词典和兼类词典标上所有可能的词性。 2. 取片断 SECTION(注意与 CLAWS 算法的 SPAN 不同)。它包括了一个兼类词序列以及序 列前的若干非兼类词与序列后的一个非兼类词,如下图所示: Word1 Word2 Word3 ...... Wordi-1 Wordi Wordi+1 ...... Wordj Wordj+1 Tag1 Tag2 Tag3 ...... Tagi-1 Tagi,1 Tagi+1,1 ...... Tagj,1 Tagj+1 Tagi,2 Tagi+1,2 ...... Tagj,2 Tagi,3 Tagj,3 其中 Wordi、Wordi+1、......、Wordj 为兼类词,其余词为非兼类词。并且考虑到用户规定的 最大模式长度为 w,所以最多只取第一个兼类此前的 w-1 个非兼类词(i ≤ w)。 3. 若不存在 SECTION,则算法结束。 4. L ←1。 5. 从(WORDL,TAGL)、......、(WORDi-1,TAGi-1)中构造模式,并用之匹配规则。 若匹配成功,则按规则给 Wordi 标注词性 Tag* i,1 。此时认为 Wordi 已是非兼类词。 转 STEP2,重新选取 SECTION。 6. 若 L 1i −≤ 则 L ←L +1,转 STEP5。 7. 取有两个非兼类词所夹将类词序列作为 SPAN,如下图所示: www.aibbt.com 让未来触手可及 321 Wordi-1 Wordi Wordi+1 ...... Wordj Wordj+1 Tagi-1 Tagi,1 Tagi+1,1 ...... Tagj,1 Tagj+1 Tagi,2 Tagi+1,2 ...... Tagj,2 Tagi,3 Tagj,3 计算由词性标记组成的各路径的概率。按最大路径中的标记给 Wordi ......Wordj 标注 词性。 8. 转 2。 另外, 挖掘系统具有一定的开放性,新语料加入后可随时进行累计挖掘,以生成新的模式 及规则。由于新语料加入后,原来的规则可能因降低可信度和支持度而失效,而一些原来因 支持度或可信度低而被修剪的模式可能变成最终的规则,因而,必须用规则库的管理模块对 规则进行有效的管理,(增删规则,修改规则的可信度和支持度)。 12.6.4 试验结果 词性标记集以《“八五”汉语语料库的词性标记集》(1990 年 6 月第二稿)与《汉语语料 库语法标记》(1991 年 6 月第三稿)为基础经部分调整而成。 在二十一万词的人工已标注词性语料的基础上,将其划分为训练集和测试集。训练集包 括二十万语料;测试集含一万语料。 利用词性规则的挖掘算法,分别对各长度的模式进行挖掘。从挖掘出的规则中,可以看 出词或词性及其组合对当前词的词性的影响。同时支持度表示规则的适用范围;可信度表示 规则的可靠程度。分别以各长度的模式进行说明。 一模式表示单个词或词性的出现次数。其中出现次数前十位的为:NG(34534)、VGN(8340)、 VG(7898)、的(6900)、USDE(6742)、D(4934)、A(4378)、MX(3870)、RN(3260)、P(2992)。 由于一模式中未利用上下文信息,因而不构成规则。 二模式表示前一词或前一词性对当前词的词性的影响。可以注意到,在所获得支持度大 于 0.05 同时可信度大于 0.7 的 6659 条模式中,有 6638 条说明前一词对当前词的词性的影响, 而剩余的 21 条是受前一词性的影响。仅可信度为 100%的规则就有 5183 条(可信度小于 100% 的模式在括号中列出可信度),下面仅举几例。 受前一词影响的如:副 NG;分之 MX;炼成 NG;即刻 VGO;难于 VG;久而久之 D;乘机 VGO; 太 A;晋绥 NG;文职 NG;袭占 NPL;阻击 NG。 受前一词性影响的如:USSU VG、USSI NG、VNF NG、HM MX(0.974),NPFF NPFS(0.905)、 VGA A(0.828)、HN NG(0.8),MF MX(0727)、B NG(0.711)。 获取的标注规则为: if (词 1,"副") then (词 2,NG),它表示若前一词为"副",则后一词的标记为名词。 三模式表示前二词或词性的组合对当前词的词性的影响。可以注意到,在所获得支持度 大于 0.005 同时可信度大于 0.7 的 81921 条模式中,仅可信度为 100%的规则就有 80647 条。下 面仅举几例。如:百 MF MX、的 固有 NG、MX QNI NPU、新华社 NPL T、A 物理 NG、 个人 不 VA、个体 工商 NG、NPL 至 NPL、贷款 MX MW、NG 业 NOV、NG 越来越 A、上级 主管 NG、 NG 兼 NG、主任 NPFF NPFS、T 到 T、T 占领 NPL、S RN MG、QNI 本 NG、这 QNG NG(0.958)、 RN 级 NG(0.952)、VGJ VGN NG(0.929)。 获取的标注规则为: if (词性 1,T) AND (词 2,"占领") then (词 3,NPL) 限于篇幅,四、五、六模式各举三例说明。四模式有:可观 USDE 经济 NG、领取 营业 NG www.aibbt.com 让未来触手可及 322 FS、RN 已经 VGV VGN;五模式有:P 通过 试验 NG VG、FS NG USDE D FS、NG 以来 被 NG VGN; 六模式有:RN 以 NPU 运河 VI、NG P NPL S 北 VGO、P NG 上 克服 了 NG。 经过对不同长度模式的比较可以清楚地看出:词在模式中的限制作用。在二模式中 NPFF NPFS 的可信度为(0.905),而在三模式中,主任 NPFF NPFS、政委 NPFF NPFS、管理员 NPFF NPFS 的可信度均为 100%。这显然是用了较多的上下文关系的缘故。注:NPFF 表示姓氏,NPFS 表示 人名。 从试验数据上可以看出:随长度的增加,每种模式的组合可能性增多,模式的绝对数量 增加。模式的支持度要减低。但由于受到较多的上下文的限制,一般可信度反而会增加。例 如四模式共 394744 个可信度为一的有 275083 个。比例很高,即说明受到较多的制约后,词 性被唯一确定的可能性增加了。 不难看出:模式中词对词性的影响更大,即词作为上下文因素之一,较词性具有更精确 的限制作用(强限制)。这是因为,一个词性对应的词数远远多于一个词对应的词性个数。用 词性做制约对应的上下文情况更多,不利于对兼类词进行排歧。但一般说来含词的模式的支 持度要更小一些,获得的规则更倾向于个性规则。 从模式到规则可以有多种方式,只讨论由前面的词或词性来确定最后一词的词性的情况, 即前制约的情况。上下文制约规则同样可以取得。 为了进行试验比较,先用纯统计方法对一万测试语料进行标注测试,准确性达 91.8%。之 后,在获得标注规则的基础上,通过统计方法与规则方法的结合算法进行标注,正确率达到 96.2%。优于现有的词性标注系统。 根据汉语的特点,采用数据挖掘方法对汉语词性规则的自动获取进行了有益的尝试。这 是一种从语料库中以规则的形式获取知识的新方式,较适用于大规模语料库的特点。在概率 统计方法的基础上,将所获得的规则应用于词性标注,会提高标注的准确率。 附录:本节中用到的一些词性标记及含义 (参见“八五”汉语语料库的词性标记集,1990 年 6 月第二稿) A 形容词 B 区别词 D 副词 FS 单纯方位词 HM 数词前缀 HN 名词前缀 MF 分数词 MG 概数词 MW 位数词 MX 系数词 P 介词 NG 普通名词 NPFF 姓氏 NPFS 人名 NPL 处所名词 NPU 机构和组织名 QNG 名量词 QNI 个体量词 S 处所词 T 时间词 USDE 结构助词“的” USSU 结构助词“所” USSI结构助词“似的” VA 助动词 VG 一般动词 VGA 动词(带形容词宾语) VGN(带名词宾语) VGJ(带兼语宾语) VGV (带动词宾语) VI 系动词 习 题 1. 举例说明什么是支持度、可信度、最小支持度、最小可信度和大项集。 2. 下表给出 4 个事务,最小支持度为 60%,请找出 1 项频繁项集。 TID Date Items_bought 1 01/05/2005 I1, I2, I4, I6 2 02/05/2005 I1, I2, I3, I4, I5 3 03/05/2005 I1, I2, I3, I5 4 04/05/2005 I1, I2, I4 www.aibbt.com 让未来触手可及 323 3. 试述经典的 Apriori 算法。 4. 试述基于分布式系统的关联规则挖掘算法。 5. 什么是正相关,什么是负相关,举例说明强关联规则是负相关的情况。 6. 简述如何有效的挖掘如下规则,“一件免费商品可能触发在同一事务中 200 元的总购物” (约定每种商品的价格是非负的)。 7. 下表包括 9个事务。假设最小支持度为 20%,请给出频繁项集。 表 事务项表 TID Items 1 I1,I2,I5 2 I2,I4 3 I2,I3,I6 4 I1,I2,I4 5 I1,I3 6 I2,I3 7 I1,I3 8 I1,I2,I3,I5 9 I1,I2,I3 8. 如何进行增量式关联规则挖掘? www.aibbt.com 让未来触手可及 324 第十三章 知识发现 13.1 概述 知识发现是从数据集中抽取和精化新的模式。 知识发现的范围非常广泛, 可以是经济、 工业、农业、军事、社会、商业、科学的数据或卫星观测得到的数据。数据的形态有数字、 符号、图形、图象、声音等。数据组织方式也各不相同, 可以是有结构、半结构、非结构的。 知识发现的结果可以表示成各种形式, 包括规则、法则、科学规律、方程或概念网。 目前, 关系型数据库应用广泛, 并且具有统一的组织结构, 一体化的查询语言, 关系之 间及属性之间具有平等性等优点。因此, 数据库知识发现(Knowledge Discovery in Databases,KDD)的研究非常活跃。该术语于 1989 年出现,Fayyad 定义为“KDD 是从数据集 中识别出有效的、新颖的、潜在有用的,以及最终可理解的模式的非平凡过程” [Fayyad 1996a]。在上面的定义中,涉及几个需要进一步解释的概念:“数据集”、“模式”、“过程”、“有 效性”、“新颖性”、“潜在有用性”和“最终可理解性”。数据集是一组事实 F(如关系数据库 中的记录)。模式是一个用语言 L 来表示的一个表达式 E,它可用来描述数据集 F 的某个子集 FE,E 作为一个模式要求它比对数据子集 FE 的枚举要简单(所用的描述信息量要少)。过程 在 KDD 中通常指多阶段的一个过程,涉及数据准备、模式搜索、知识评价,以及反复的修改求精; 该过程要求是非平凡的,意思是要有一定程度的智能性、自动性(仅仅给出所有数据的总和 不能算作是一个发现过程)。有效性 是指发现的模式对于新的数据仍保持有一定的可信度。 新颖性 要求发现的模式应该是新的。潜在有用性 是指发现的知识将来有实际效用,如用于 决策支持系统里可提高经济效益。最终可理解性 要求发现的模式能被用户理解,目前它主要 是体现在简洁性上。有效性、新颖性、潜在有用性和最终可理解性综合在一起可称之为兴趣 性。 由于知识发现是一门受到来自各种不同领域的研究者关注的交叉性学科,因此导致了很 多不同的术语名称。除了KDD 称呼外,主要还有如下若干种称法:“数据挖掘”(data mining), “知识抽取”(information extraction)、“信息发现”(information discovery)、“智能数 据分析”(intelligent data analysis)、“探索式数据分析”(exploratory data analysis)、 “信息收获”(information harvesting)和“数据考古”(data archeology)等等。其中, 最常用的术语是“知识发现”和“数据挖掘”。相对来讲,数据挖掘主要流行于统计界(最早 出现于统计文献中)、数据分析、数据库和管理信息系统界;而知识发现则主要流行于人工智 能和机器学习界。 知识发现过程可粗略地理解为三部曲:数据准备(data preparation)、数据开采,以及结果 的解释评估(interpretation and evaluation)(见图 13.1)。 www.aibbt.com 让未来触手可及 325 可视化 数据集 目标 预处理 变换后 抽取的 有用 数据 数据 数据 信息 知识 选取抽样 预处理 变换 数据开采 解释评价 图13.1 知识发现过程示意图 13.1.1. 数据准备 数据准备又可分为三个子步骤:数据选取(data selection)、数据预处理(data preprocessing) 和数据变换(data transformation)。数据选取的目的是确定发现任务的操作对象,即目标数据 (target data),它是根据用户的需要从原始数据库中抽取的一组数据。数据预处理一般可能包 括消除噪声、推导计算缺值数据、消除重复记录、完成数据类型转换(如把连续值数据转换 为离散型的数据,以便于符号归纳,或是把离散型的转换为连续值型的,以便于神经网络归 纳)等。当数据开采的对象是数据仓库时,一般来说,数据预处理已经在生成数据仓库时完 成了。数据变换的主要目的是消减数据维数或降维(dimension reduction),即从初始特征中找 出真正有用的特征以减少数据开采时要考虑的特征或变量个数。 13.1.2. 数据挖掘阶段 数据挖掘阶段首先要确定开采的任务或目的是什么,如数据总结、分类、聚类、关联规 则发现或序列模式发现等。确定了开采任务后,就要决定使用什么样的开采算法。同样的任 务可以用不同的算法来实现,选择实现算法有两个考虑因素:一是不同的数据有不同的特点, 因此需要用与之相关的算法来开采;二是用户或实际运行系统的要求,有的用户可能希望获 取描述型的(descriptive)、容易理解的知识(采用规则表示的开采方法显然要好于神经网络之 类的方法),而有的用户或系统的目的是获取预测准确度尽可能高的预测型(predictive)知识。 完成了上述准备工作后,就可以实施数据挖掘操作了。具体的数据挖掘方法将在后面章 节中作较为详细的论述。需要指出的是,尽管数据挖掘算法是知识发现的核心,也是目前研 究人员主要努力的方向,但要获得好的采掘效果,必须对各种采掘算法的要求或前提假设有 充分的理解。 13.1.3. 结果解释和评估 数据挖掘阶段发现出来的模式,经过用户或机器的评估,可能存在冗余或无关的模式, www.aibbt.com 让未来触手可及 326 这时需要将其剔除;也有可能模式不满足用户要求,这时则需要整个发现过程退回到发现阶 段之前,如重新选取数据、采用新的数据变换方法、设定新的数据挖掘参数值,甚至换一种 采掘算法(如当发现任务是分类时,有多种分类方法,不同的方法对不同的数据有不同的效 果)。另外,KDD 由于最终是面向人类用户的,因此可能要对发现的模式进行可视化,或者把 结果转换为用户易懂的另一种表示,如把分类决策树转换为“if…then…”规则。 知识发现过程中要注意: (1)数据挖掘仅仅是整个过程中的一个步骤。数据挖掘质量的好坏有两个影响要素:一是所 采用的数据挖掘技术的有效性,二是用于采掘的数据的质量和数量(数据量的大小)。如果选 择了错误的数据或不适当的属性,或对数据进行了不适当的转换,则采掘的结果不会好的。 (2)整个采掘过程是一个不断反馈的过程。比如,用户在采掘途中发现选择的数据不太好, 或使用的采掘技术产生不了期望的结果;这时,用户需要重复先前的过程,甚至从头重新开 始。 (3)可视化在数据挖掘的各个阶段都扮演着重要的作用。特别是,在数据准备阶段,用户可 能要使用散点图、直方图等统计可视化技术来显示有关数据,以期对数据有一个初步的理解, 从而为更好地选取数据打下基础。在开采阶段,用户则要使用与领域问题有关的可视化工具。 在表示结果阶段,则可能要用到可视化技术。 13.2 知识发现的任务 13.2.1 数据总结 数据总结目的是对数据进行浓缩,给出它的紧凑描述。传统的也是最简单的数据总结方法 是计算出数据库的各个字段上的求和值、平均值、方差值等统计值,或者用直方图、饼状图等 图形方式表示。数据挖掘主要关心从数据泛化的角度来讨论数据总结。数据泛化是一种把数 据库中的有关数据从低层次抽象到高层次上的过程。由于数据库上的数据或对象所包含的信 息总是最原始、基本的信息(这是为了不遗漏任何可能有用的数据信息 )。人们有时希望能从 较高层次的视图上处理或浏览数据,因此需要对数据进行不同层次上的泛化以适应各种查询要 求。数据泛化目前主要有两种技术:多维数据分析方法和面向属性的归纳方法。 多维数据分析方法是一种数据仓库技术,也称作联机分析处理(OLAP)。数据仓库是面向决 策支持的、集成的、稳定的、不同时间的历史数据集合。决策的前提是数据分析。在数据分 析中经常要用到诸如求和、总计、平均、最大、最小等汇集操作,这类操作的计算量特别大。 因此一种很自然的想法是,把汇集操作结果预先计算并存储起来,以便于决策支持系统使用。存 储汇集操作结果的地方称作多维数据库。多维数据分析技术已经在决策支持系统中获得了成 功的应用,如著名的 SAS 数据分析软件包、Business Object 公司的决策支持系统 Business Object, 以及 IBM 公司的决策分析工具都使用了多维数据分析技术。 采用多维数据分析方法进行数据总结,它针对的是数据仓库,数据仓库存储的是脱机的历 史数据。为了处理联机数据,研究人员提出了一种面向属性的归纳方法。它的思路是 ,直接对 用户感兴趣的数据视图(用一般的 SQL 查询语言即可获得)进行泛化,而不是像多维数据分析方 法那样预先就存储好了泛化数据。方法的提出者对这种数据泛化技术称之为面向属性的归纳 方法。原始关系经过泛化操作后得到的是一个泛化关系,它从较高的层次上总结了在低层次上 的原始关系。有了泛化关系后,就可以对它进行各种深入的操作而生成满足用户需要的知识,如 在泛化关系基础上生成特性规则、判别规则、分类规则,以及关联规则等。 www.aibbt.com 让未来触手可及 327 13.2.2 概念描述 用户常常需要抽象的有意义的描述。经过归纳的抽象描述能概括大量的关于类的信息。 有两种典型的描述: 特征描述和判别描述。从与学习任务相关的一组数据中提取出关于这些 数据的特征式。这些特征式表达了该数据集的总体特征。而判别描述则描述了两个或更多个 类之间有何差异。 13.2.3 分类 分类在数据挖掘中是一项非常重要的任务,目前在商业上应用最多。分类的目的是学会一 个分类函数或分类模型(也常常称作分类器),该模型能把数据库中的数据项映射到给定类别中 的某一个。分类和回归都可用于预测。预测的目的是从利用历史数据纪录中自动推导出对给 定数据的推广描述,从而能对未来数据进行预测。和回归方法不同的是,分类的输出是离散的类 别值,而回归的输出则是连续数值。这里我们将不讨论回归方法。 要构造分类器,需要有一个训练样本数据集作为输入。训练集由一组数据库记录或元组构 成,每个元组是一个由有关字段(又称属性或特征)值组成的特征向量,此外,训练样本还有一个类 别标记。一个具体样本的形式可为:( v1, v2, ..., vn; c );其中 vi 表示字段值,c 表示类别。 分类器的构造方法有统计方法、机器学习方法、神经网络方法等等。统计方法包括贝叶 斯法和非参数法(近邻学习或基于范例的学习),对应的知识表示则为判别函数和原型事例。机器 学习方法包括决策树法和规则归纳法,前者对应的表示为决策树或判别树,后者则一般为产生 式规则。神经网络方法主要是 BP 算法,它的模型表示是前向反馈神经网络模型(由代表神经元 的节点和代表联接权值的边组成的一种体系结构),BP 算法本质上是一种非线性判别函数。另 外,最近又兴起了一种新的方法:粗糙集(rough set),其知识表示是产生式规则。 不同的分类器有不同的特点。有三种分类器评价或比较尺度:1 预测准确度;2 计算复杂 度;3 模型描述的简洁度。预测准确度是用得最多的一种比较尺度,特别是对于预测型分类任务, 目前公认的方法是 10 番分层交叉验证法。计算复杂度依赖于具体的实现细节和硬件环境,在数 据挖掘中,由于操作对象是巨量的数据库,因此空间和时间的复杂度问题将是非常重要的一个 环节。对于描述型的分类任务,模型描述越简洁越受欢迎;例如,采用规则表示的分类器构造法就 更有用,而神经网络方法产生的结果就难以理解。 另外要注意的是,分类的效果一般和数据的特点有关,有的数据噪声大,有的有缺值, 有的 分布稀疏,有的字段或属性间相关性强,有的属性是离散的而有的是连续值或混合式的。目前普 遍认为不存在某种方法能适合于各种特点的数据。 13.2.4 聚类 根据数据的不同特征,将其划分为不同的数据类。它的目的是使得属于同一类别的个体 之间的距离尽可能的小,而不同类别上的个体间的距离尽可能的大。聚类方法包括统计方法、 机器学习方法、神经网络方法和面向数据库的方法。 在统计方法中,聚类称聚类分析,它是多元数据分析的三大方法之一(其它两种是回归分析 和判别分析)。它主要研究基于几何距离的聚类,如欧式距离、明考斯基距离等。传统的统计聚 类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和 www.aibbt.com 让未来触手可及 328 模糊聚类等。这种聚类方法是一种基于全局比较的聚类,它需要考察所有的个体才能决定类的 划分;因此它要求所有的数据必须预先给定,而不能动态增加新的数据对象。聚类分析方法不具 有线性的计算复杂度,难以适用于数据库非常大的情况。 在机器学习中聚类称作无监督或无教师归纳;因为和分类学习相比,分类学习的例子或数 据对象有类别标记,而要聚类的例子则没有标记,需要由聚类学习算法来自动确定。很多人工智 能文献中,聚类也称概念聚类;因为这里的距离不再是统计方法中的几何距离 ,而是根据概念的 描述来确定的。当聚类对象可以动态增加时,概念聚类则称是概念形成。 在神经网络中,有一类无监督学习方法:自组织神经网络方法;如 Kohonen 自组织特征映 射网络、竞争学习网络等等。在数据挖掘领域里,见报道的神经网络聚类方法主要是自组织特 征映射方法,IBM 在其发布的数据挖掘白皮书中就特别提到了使用此方法进行数据库聚类分 割。 13.2.5 相关性分析 发现特征之间或数据之间的相互依赖关系。数据相关性关系代表一类重要的可发现的知 识。一个依赖关系存在于两个元素之间。如果从一个元素 A 的值可以推出另一个元素 B 的值 (A→B), 则称 B 依赖于 A。这里所谓元素可以是字段, 也可以是字段间的关系。数据依赖关系 有广泛的应用。 依赖关系分析的结果有时可以直接提供给终端用户。然而, 通常强的依赖关系反映的是 固有的领域结构而不是什么新的或有兴趣的事物。 自动地查找依赖关系可能是一种有用的方 法。这类知识可被其它模式抽取算法使用。常用技术有回归分析、关联规则、信念网络等。 13.2.6 偏差分析 如分类中的反常实例、例外模式、观测结果对期望值的偏离以及量值随时间的变化等。 其基本思想是寻找观察结果与参照量之间的有意义的差别。通过发现异常, 可以引起人们对 特殊情况的加倍注意。异常包括如下几种可能引起人们兴趣的模式:不满足常规类的异常例子; 出现在其它模式边缘的奇异点; 与父类或兄弟类不同的类;在不同时刻发生了显著变化的某 个元素或集合; 观察值与模型推测出的期望值之间有显著差异的事例等。偏差分析的一个重 要特征就是它可以有效地过滤大量的不感兴趣的模式。 13.2.7 建模 通过数据挖掘,构造描述一种活动或状态的数学模型。机器学习中的知识发现,实际上 就是对一些自然现象进行建模,重新发现科学定律,如 BACON[Shi 1992]。Langley, Simon, 和 Bradshaw 等 于 1976 到 1983 年 研制了六个版本的 BACON 系统。它们具有如下共同特点: 采 用数据驱动, 通过启发式约束搜索, 依赖于理论数据项, 递归应用一些通用的发现方法。程 序反复检查数据,并用改进操作来产生新的“项”,直到发现一个项总是常量, 这时就可以把 概念表示为“项=常量”的形式。 www.aibbt.com 让未来触手可及 329 13.3 知识发现工具 随着大规模的数据库迅速地增长,人们对数据库的应用已不满足于仅对数据库进行查询 和检索。仅用查询检索不能提取数据中蕴藏的丰富知识,将信息变为知识,必须通过数据挖掘, 从海量数据中发现富有意义的知识。另一方面, 从人工智能来看,专家系统的研究虽然取得了 一定的进展。但是,知识获取仍然是专家系统研究中的瓶颈。知识工程师从领域专家处获取知 识是非常复杂的个人到个人之间的交互过程。具有很强的个性和随机性, 没有统一的办法。 因此,人们开始考虑以数据库作为新的知识源。知识发现能自动地处理数据库中大量的原始数 据, 抽取出具有必然性的、富有意义的模式, 作为有助于人们实现其目标的知识, 找出人们 对所需问题的解答。 这里列出一些具有代表性的知识发现工具或平台: 1. SAS Enterprise Miner 美国 SAS 公司的 SAS Enterprise Miner 是一种通用的数据挖掘工具, 以其强大的数据管 理能力、全面的统计方法、高精度的计算以及独特的多平台自适应技术,使其成为统计软件 包的标准,被国内外许多学者誉为最权威的优秀统计软件包 。在 80 年代进入中国后,占据 了许多大型部门的统计室。目前 SAS 对 Windows 和 Unix 两种平台都提供支持。SAS 提供“数 据步”和“过程步”两种处理数据的方式 ,可进行复杂而灵活的统计分析。通过收集分析各 种统计资料和客户购买模式,SAS Enterprise Miner 可以帮助您发现业务的趋势,解释已知 的事实,预测未来的结果,并识别出完成任务所需的关键因素,以实现增加收入、降低成本。 SAS Enterprise Miner 提供"抽样-探索-转换-建模-评估"(SEMMA)的处理流程。数据挖掘 算法有: ·聚类分析,SOM/KOHONEN 神经网络分类算法 ·关联模式/序列模式分析 ·多元回归模型 ·决策树模型(C45, CHAID, CART) ·神经网络模型(MLP, RBF) ·SAS/STAT,SAS/ETS 等模块提供的统计分析模型和时间序列分析模型也可嵌入其中。 2.Intelligent Miner IBM 公司的 Intelligent Miner 具有典型数据集自动生成、关联发现、序列规律发现、概 念性分类和可视化显示等功能。它可以自动实现数据选择、数据转换、数据发掘和结果显示。 若有必要,对结果数据集还可以重复这一过程,直至得到满意结果为止。 IBM 的 Intelligent Miner 已形成系列,它帮助用户从企业 数据资产中识别和提炼有价 值的信息。它包括分析软件工具 ----Intelligent Miner for Data 和 IBM Intelligent Miner for Text。Intelligent Miner for Data 可以寻找包含于传统文件、数据 库、数据仓库和数 据中心中的隐含信息。IBM Intelligent Miner for Text 允许企业从文本信息中获取有价值 的客户信息。文本数据源可以是 Web 页面、在线服务、传真、电子邮件、Lotus Notes 数据 库、协定和专利库。 www.aibbt.com 让未来触手可及 330 3.Clementine Solution 公司的 Clementine 提供了一个可视化的快速建立模型的环境。它由数据获取 (Data Access)、探查(Investigate)、整理(Manipulation)、建模(Modeling)和报告 (Reporting)等部分组成。都使用一些有效、易用的按钮表示,用户只需用鼠标将这些组件 连接起来建立一个数据流,可视化的界面使得数据挖掘更加直观交互,从而可以将用户的商 业知识在每一步中更好的利用。该系统具有下列特色: ·可以用图分析探测数据:直方图、分布图可以清楚展现数据的内部结构,并且可以从 图形中直接生成新的变量或者对数据进行平衡处理;散点图、网状图可以检测不同变量间的 关系的强弱,形象地加以刻画,并生成新的变量或者对数据进行筛选; ·可以从多种建模技术中选择合适的模型: ①规则归纳模型:C5.0 和 BuildRule 可以生成决策树,生成易懂的模型,并进行预测; GRI 和 Apriori 可以自动检测出复杂的关系,建立预测模型。 ②神经网络模型:MLP、RBFN 和 Kohonen 网络可以从训练数据中进行自学习,解读复杂 的关系,建立预测模型,Kohonen 网络可以将数据按照相似程度加以分类,比如客户、订单。 ③K-means 是一种快速高效的聚类算法; ④回归可以用于预测等。 ·可以将多种模型技术组合起来或者建立大型模型(meta-models) ·将 SPSS 集成在 Clementine 中 ·可以直接读写 SPSS 数据文件,可以使用 SPSS 进行数据准备、报告、深度数据分析、 作图等,可以调用 SPSS 所有分析方法,可以在 SPSS 或者 Clementine 中显示结果 ·开放型的数据挖掘平台,可以通过外部模块接口添加更多的算法,可以以批处理的模 式运行。 4. Cognos Scenario 加拿大 Cognos 公司创立于 1969 年,总部设在首都渥太华,推出一系列商务智能软件。 Cognos Scenario 是基于树的高度视图化的数据挖掘工具,它将信息挖掘自动化。决策树的基 本功能是创立一系列标准,预测记录中目标市场的价值。Scenario 的分类树分阶展现各种因 素;最终用户通过挖掘或展开树的分支来探察数据。Scenario 可以帮助企业经理指导分析, 并用一套严格的标准测量信息。由于有时数据集庞大而笨重,Scenario 的抽样技术可以用最 少的处理开销和最短的响应时间得出最精确的结果。 为与 Cognos 的“分析 然后 查询” 和“查询 然后 导航”的方法相一致,Scenario 与 PowerPlay 和 Impromptu 相集成,允许 用户发现分析查询。 人们可以利用 Scenario 的统计方法,深入挖掘影响商务趋势的因素的潜在含义,根据风 险特性将个体与群体客户归类;将商务因素分门别类,辨清商务目标所受的主要影响;探察 与通常数据模式不符的异常情况等。 5.MSMiner www.aibbt.com 让未来触手可及 331 中科院计算技术研究所智能信息处理开放实验室开发的 MSMiner 是一种多策略知识发现 平台,能够提供快捷有效的数据挖掘解决方案,提供多种知识发现方法。MSMiner 具有下列特 点: ·提出了一种面向对象的元数据结构,将经过良好封装的元数据对象以层次结构组织起 来,形成一种元数据对象模型,并通过这种元数据对象模型统一存取和管理元数据,使系统 具有良好的一致性和可维护性。 ·设计实现了一种简单但有效的数据仓库平台,按主题组织数据,以星型模式建模,提 供了有效的数据抽取和集成功能,为数据挖掘任务提供经过良好处理的数据来源。 ·提出了一种面向对象的数据挖掘任务模型。数据挖掘任务的每个步骤都用对象来表示, 每个对象包含多种属性以及 DML 方法脚本,各个步骤对象通过有向图模型组织起来。通过这 种任务模型能够有效表达各种数据挖掘任务。MSMiner 系统实现了可视化的任务编辑环境,以 及功能强大的任务处理引擎,能够快捷有效地实现各种数据挖掘任务。 ·设计了一种可扩展算法库,以动态链接库 DLL 的方式集成了各种数据挖掘算法,并设 计了开放的接口,能够灵活扩展用户自定义算法。 一些研究单位提供了知识发现公用系统,例如斯坦福大学的 MLC++、华盛顿大学的 Brute 等,读者可以通过 Internet 网免费下载。 美国 MathWorks 公司于 1982 年推出的一套高性能的数值计算和可视化数学软件,被称为 MATLAB。MATLAB 的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其 基本元素是无须定义维数的矩阵。它集数值分析、矩阵运算、信号处理和图形显示于一体, 构成了一个方便的、界面友好的用户环境。在这个环境下,对所要求解的问题,用户只需简 单地列出数学表达式,其结果便以数值或图形方式显示出来。MATLAB 中包括了被称作工具箱 (TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对 MATLAB 进行扩展应用的一系列 MATLAB 函数(称为 M 文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控 制系统辨识、神经网络等。随着 MATLAB 版本的不断升级,其所含的工具箱的功能也越来越丰 富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。MATLAB 中的模块也可以用来快速开发知识发现工具。 下面我们将以知识发现平台 MSMiner 为例[Shi 2000],介绍知识发现的关键技术。 13.4 MSMiner 的体系结构 中科院计算技术研究所智能信息处理开放实验室开发的知识发现平台 MSMiner 采用任务 驱动模型组织挖掘过程,元数据作为系统的管理和调度中心,实现了数据仓库与数据挖掘的 有机集成和数据挖掘算法与采掘任务的无缝连接。 13.4.1 数据挖掘模型 我们为 MSMiner 定义了包含三个逻辑层次的数据挖掘系统模型,如图 13.2 所示。 决策分析需要大量经过良好组织和综合的数据,数据挖掘尤其依赖于经过一定预处理的 www.aibbt.com 让未来触手可及 332 清洁的数据,这些数据来源于外部各种数据源,需要经过复杂的抽取和整合,集成到数据仓 库中去,这些工作都由数据获取层来完成。因此数据获取层在整个系统中占有非常重要的地 位。 ·数据获取层 MSMiner 的数据获取层主要包括一个数据抽取模块,通过这个模块可从各种关系型数据 库、数据文件以及 Web 数据等外部数据源中抽取合适的数据,并进行各种清洗、整合和转换 处理,将数据集成到数据仓库中的各个主题中去。 ·数据存储层 数据存储层就是数据仓库本身,包括一个或多个数据库,以一定的组织结构存储各种集 成的数据。 MSMiner 的数据存储层以多个 SQL Server 数据库实现。MSMiner 数据仓库包含多个主题, 每个主题存储在一个数据库中,包括多个综合表,这些综合表主要有以下三种:事实表、维 表和为数据挖掘生成的中间表。 ·数据挖掘层 数据挖掘层是数据挖掘系统模型中的最高层,也往往是用户最关心的一层。数据仓库中 的大量集成数据要为用户所用,所用的基于数据仓库的数据分析和数据挖掘功能就在这一层 通过集成各种分析和采掘工具来实现。 MSMiner 的数据挖掘层是系统功能实现的重点,主要包括一个功能强大的数据挖掘集成工 具,集成了各种数据挖掘算法,并提供灵活有效的任务模型组织形式,可以支持各种数据挖 掘任务。 MSMiner 的数据挖掘层还包括一个 OLAP 工具,通过建立数据立方体实现各种多维数据分 析处理操作;以及各种集成的可视化工具,以多种方式直观有效地表示数据和数据挖掘以及 OLAP 操作的结果。 图 13.2 MSMiner 数据挖掘模型 数据仓库 数据抽取和集成 各类外部数据源 数据存储层 数据挖掘层 数据获取层 数据挖掘 OLAP 可视化 www.aibbt.com 让未来触手可及 333 13.4.2 系统功能 MSMiner 致力于提供一个功能强大的数据分析和数据挖掘集成环境。包括一个数据仓库平 台,提供基于数据仓库的数据管理和面向决策的数据分析处理功能;和一个建立在数据仓库 基础之上的数据挖掘工具,提供各种数据挖掘算法以及灵活开放的任务组织形式,能够有效 完成各种数据挖掘任务。 MSMiner 的最终设计目标旨在为各种科学研究和决策支持应用提供快捷有效的数据挖掘 解决方案。MSMiner 提供的功能包括: ·从多种操作数据源抽取数据的能力、以及跨数据源的数据集成能力; ·集中管理和维护数据仓库中数据的功能,包括数据存储优化、数据增量维护的能力; ·集成 OLAP 多维综合和分析,通过内置 OLAP 引擎,提供高效 OLAP 分析的能力; ·集成各种数据挖掘算法,通过灵活的任务模型组织方式,提供处理各种数据挖掘任务 的能力;并提供开放的接口,提供扩展用户自定义算法的能力。 ·提供多种可视化方法显示和分析各种数据和数据挖掘结果的能力。 MSMiner 提供对数据的开放性,这对任何一个数据仓库的解决方案都是十分关键的。企业 的数据库系统可能是多种多样的,MSMiner 的数据抽取引擎提供访问其它任意支持 ODBC(开 放数据库连接)的数据库的能力。系统为数据挖掘任务提供了可扩展的数据挖掘算法库,用 户可以根据自己的需要,通过系统提供的开放接口,加入自定义的算法,使系统适用于各种 不同的数据挖掘任务。在提供向外部数据源的开放性的同时,MSMiner 特别注意了元数据的设 计、数据仓库的建模、OLAP 引擎的集成以及数据挖掘任务处理引擎的设计,以达到最优化的 性能。MSMiner 提供便捷有效的数据挖掘实现方案,因此必须为用户提供简便易行的处理各种 数据挖掘任务的手段。MSMiner 系统以向导方式实现各个功能模块,并提供了各种可视化处理 界面,使用户能够直观便捷地描述和完成各种数据分析和数据挖掘任务。 13.4.3 体系结构 为实现上述设计目标,MSMiner 采用客户/服务器方式构建。服务器端为实现数据仓库的 SQL Server 7.0 数据库服务器。客户端为 MSMiner 前端系统,主要包括三个部分:数据仓库 管理器、数据挖掘集成工具和面向对象的元数据模块。整个系统的结构如图 13.3 所示。 图 13.3 MSMiner 体系结构示意图 客户端 服务器端 元数据模块 执行数据挖掘任务 编辑数据挖掘任务 数据挖掘集成工具 数据抽取和集成 主题组织 OLAP 可视化 数据仓库管理器 数据仓库 www.aibbt.com 让未来触手可及 334 数据仓库管理器包含了数据仓库各种主要功能的实现,包括数据抽取和集成、数据仓库 主题的组织、OLAP 和各种可视化功能的实现等。数据仓库管理器负责管理数据仓库中的数据, 为整个系统提供数据平台,为各种数据分析处理以及更高层的数据挖掘提供统一的数据环境。 数据挖掘集成工具建立在数据仓库平台之上,完成数据挖掘任务的组织、任务的规划和 解释执行以及结果的解释和评价等数据挖掘高级功能。 数据仓库管理器为数据挖掘集成工具提供经过清洗和整合的数据,是整个系统的数据平 台;数据挖掘集成工具为数据仓库提供高层次的数据分析处理和信息采掘功能,是系统的实 现重点。 MSMiner 系统的各个部分都由元数据统一管理和监控。从数据的抽取和管理到数据挖掘任 务的建立和执行,整个流程都在元数据的控制之下。元数据在 MSMiner 系统中居于核心地位, 是整个系统的灵魂和中枢。系统采用面向对象的方式,建立了一种元数据对象模型,通过各 种元数据对象实现对元数据的存取和管理,以保证系统的一致性和可操作性。 小结:本节介绍了 MSMiner 的体系结构。我们认为,将 MSMiner 定位于为各种决策支持 和科学研究提供快捷有效的数据挖掘解决方案,以数据仓库作为数据平台为数据挖掘提供数 据来源,以数据挖掘工具作为系统重心,面向任务组织数据挖掘流程,这种方案是可行的并 且具有良好的应用价值。 同时,我们在设计时充分考虑了开放性和可伸缩性,使系统能够适用于各种不同的情况。 并且,我们设计了一整套面向对象的元数据,以这些元数据为核心控制管理整个系统,充分 保证了系统的一致性、灵活性和可维护性。 13. 5 元数据管理 元数据就是关于数据的数据。在数据仓库中,元数据具有重要的地位,对数据仓库的设 计、开发、维护和管理,对数据的组织、信息的查询和结果的理解都有重大作用。根据元数 据在数据仓库周期中的作用,可以将其分为技术级元数据和商业级元数据。技术级元数据主 要服务于信息技术环境的开发、维护和管理过程中的设计者、开发者和管理者。企业级元数 据服务于企业的运作环境,使它更有益于终端用户的理解。 在 MSMiner 中,我们拓展了元数据的作用范围,用元数据描述和管理整个系统的数据和 环境,不仅包括数据仓库平台中的数据,并且包括数据挖掘工具中的任务模型。这样,元数 据居于整个系统的核心地位,统一管理数据仓库和数据挖掘工具,并控制整个数据挖掘流程, 包括数据准备、采掘、表述以及评价,使数据和数据挖掘任务有机地结合在一起。 同时,MSMiner 采用了一种面向对象的方法对复杂的元数据进行管理和维护,保证了元数 据的一致性和系统的健壮性。 13.5.1 MSMiner 元数据的内容 MSMiner 系统的元数据主要包括以下几方面内容: 1. 外部数据源描述。包括数据源连接及环境信息,数据源内容的注册和描述,包括外部 数据库及其表、字段等的描述。 www.aibbt.com 让未来触手可及 335 2. 数据仓库描述。包括数据仓库本身的存储位置、数据库结构、描述信息等。 3. 用户信息。包括用户的基本信息、权限、操作历史等。 4. 事实表、维表和中间表的描述。包括表的基本信息(表名、表结构、数据表来源,数 据抽取和转换规则等),各个字段的基本信息(字段名、类型、长度、精度、数据来 源等)以及有关描述信息。 5. 主题描述。包括主题名,主题内容,数据抽取和更新历史,数据更新周期,存储位置、 有关描述信息等。 6. 数据立方体描述。包括数据立方体中维和度量的选取、星型模型的构造(事实表和维 表的星型关联)等。 7. 数据挖掘任务描述。包括任务的组织、步骤,数据来源,数据挖掘算法的选取,参数 设定,结果的评估和输出方式,以及任务建立和执行历史等。 8. 数据挖掘算法库的管理。注册和管理各种采掘算法,记录算法参数、数据格式、算法 库存储位置和连接信息等。 13.5.2 MSMiner 元数据库 MSMiner 数据仓库由多个 SQL Server 数据库构成,元数据库是其中一个数据库。元数据 库中包含多个元数据表,分别存储各类元数据的详细信息,是 MSMiner 数据仓库中的核心数 据库。 为了保证元数据的一致性,这些元数据表互相关联,遵循一定的约束关系。例如, metaDatabase 和 metaTable 这两个元数据表通过 databaseID 互相关联,当修改或删除 metaDatabase 表中的一条记录时,metaTable 中的相关记录必须做相应改动。图 13.4 显示了几 个主要的元数据表之间的约束关系: 图 13.4 元数据表约束关系 www.aibbt.com 让未来触手可及 336 附加约束关系的元数据表只是元数据内容的存储方式,用户并未直接与这些表打交道, 而是通过一种面向对象的元数据模型来操纵这些数据。 13.5.3 MSMiner 元数据对象模型 MSMiner 的元数据数量庞大并且关系复杂,很自然的想法是,通过一种相对独立的模块 专门负责对元数据的存取管理,这个模块应该符合以下设计要求: „ 一致性。 对元数据的操作应保证元数据的一致性和完整性。对某一元数据进行修改时,必须 使其他相关元数据同步更新。 „ 完备性。 能够对所有元数据进行统一管理,满足任何元数据操作的需要。 „ 易维护性。 通过该模块对元数据的操作管理应逻辑清晰、简便易行。 根据以上设计要求,我们设计了一种面向对象的元数据结构。即将各种元数据封装在相 应的元数据类中,将这些元数据类的对象实例通过层次结构有机地组织起来,构成一种层次 型对象模型。系统通过这些对象对各元数据表进行操作管理。 系统通过这种对象模型访问元数据,而不需要直接接触元数据库。在经过良好封装的元 数据类中包含各种属性和方法,属性表达了相应的元数据值,而方法定义了对相关元数据的 各种操作,并负责维护元数据之间的一致性。元数据的存取、更新和管理通过访问这些属性 和方法来实现。 MSMiner 的元数据对象模型的设计不仅保证了元数据的一致性,并且使系统建立和维护 工作的难度大大降低,增强了系统的健壮性和可操作性。 MSMiner 的元数据类在实现上分为两种:个体类和集合类。 个体类主要包含对应相关元数据表中各个元数据值的各种属性,负责存取和更新相关元 数据表中的单条记录。 集合类包含了相关个体类对象的集合,负责对整个元数据表进行存取和更新以及维护各 类元数据之间的一致性。 集合类和个体类的各个对象实例按照一定的逻辑关系互相包含,构成了如图 13.5 所示的 树形结构对象模型。 www.aibbt.com 让未来触手可及 337 对元数据进行更新时,直接更新相应个体类对象中的相关属性,然后调用该对象的 Update() 方法完成对元数据表的操作,同时触发对其他相关元数据对象的更新。 对元数据进行增删操作时,通过调用相应集合类对象中的 Add()或 Remove()方法,增加或 删除集合中的个体对象并更新元数据表,同时触发对其他相关元数据对象的更新。 通过这种方式,不仅逻辑清晰地表达了整个元数据的结构,并且有效地保证了元数据的 一致性。 各个集合类中的属性和方法基本类似,主要有以下几种: Item(index) 获得个体对象集合中的一个对象 Count 个体对象集合中的对象总数 Add(object) 新增一个个体对象 Remove(index) 删除一个个体对象 GetCollection() 初始化时,从元数据表中读取得到个体对象集合 各个个体类中的属性和方法与相关元数据的内容有关,以下将具体说明一些主要的元数 据个体类的设计。 MSMiner 元数据的所有内容的描述,都包含在一个主元数据类 CMeta 之中。CMeta 类的 定义如下: CMeta { 图 13.5 元数据对象模型 www.aibbt.com 让未来触手可及 338 Algorithms 算法集合类 CAlgorithmS 的对象实例 Databases 数据库集合类 CDatabaseS 的对象实例 Tables 表集合类 CTableS 的对象实例 Users 用户集合类 CUserS 的对象实例 Warehouses 数据仓库集合类 CWarehouseS 的对象实例 } 其中,Algorithms 包含了算法个体类 CAlgorithm 的对象实例集合,注册了各种数据挖掘 算法的详细信息。 Databases 包含了数据库个体类 CDatabase 的对象实例集合,描述各个外部数据库的详细 信息。 Tables 包含了数据表个体类 CTable 的对象实例集合,描述所有注册外部数据表和数据仓 库内部数据表的详细信息。 Users 包含了用户个体类 CUser 的对象实例集合,登记各用户的详细信息。 Warehouses 包含了数据仓库个体类 CWarehouse 的对象实例集合,描述数据仓库中各种内 容的详细信息。 这五个元数据集合对象基本包含了所有元数据的内容,其他各种元数据对象都按照一定 的关系包含在五个对象之中。系统运行时生成 CMeta 的一个对象实例,在这个对象中就包含 了其他所有元数据对象的实现。通过这个对象逐层深入,就可对所有元数据进行分类存取和 管理。 以下是数据仓库类 CWarehouse 的定义: CWarehouse { WarehouseID 数据仓库 ID WarehouseName 数据仓库名称 Subjects 主题集合类 CSubjectS 的对象实例 Tasks 数据挖掘任务集合类 CTableS 的对象实例 WareDatabases 数据库集合类 CDatabaseS 的对象实例 ... ... } 其中,Subjects 包含了主题个体类 CSubject 的对象实例集合,描述各个主题及其所包含的 事实表、维表、中间表和数据立方体的详细信息。 Tasks 包含了数据挖掘任务个体类 CTask 的对象实例集合,描述各个数据挖掘任务及其各 步骤的详细信息。 WareDatabases 包含了数据库个体类 CDatabase 的对象实例集合,描述数据仓库中各个内 部数据库的详细信息。 元数据类 CWarehouse 的结构反映了 MSMiner 系统的设计思路:数据仓库作为数据挖掘的 数据平台,按主题组织数据,为数据挖掘任务提供数据来源。整个系统的结构即按照 CWarehouse 类的结构来组织。 MSMiner 元数据的管理是在各功能模块的管理维护中实现的。在通过 MSMiner 各个功能 模块对数据仓库各部分和数据挖掘任务进行建立、修改和日常维护时,元数据中的相应内容 也同时得到新增、修改和维护。用户在管理数据仓库和数据挖掘任务的同时,也就是在管理 元数据。实际上,用户就是通过在各个功能模块中对后台元数据进行维护来实现对整个系统 的管理。 对元数据各部分内容的管理,分布在系统中的数据抽取和集成模块、主题组织模块、OLAP 模块、数据挖掘任务编辑模块及算法管理模块等各个模块之中。 www.aibbt.com 让未来触手可及 339 元数据在数据仓库中占有极其重要的地位,而 MSMiner 进一步拓展了元数据的范围,使 它对从数据抽取、数据管理到数据挖掘的整个过程进行统一的管理和控制,元数据成为整个 系统的核心和灵魂。 为了保证对复杂元数据的有效管理和元数据的一致性,我们设计了一种元数据对象模型, 将元数据的存取和管理封装在多个元数据类中,通过互相关联的多个元数据对象对元数据进 行操作,保证了整个系统的一致性和可维护性。 13.6 数据仓库 13.6.1 数据仓库含义 到八十年代,计算机技术的迅猛发展已使大部分企业在他们的数据库中积累了大量的数 据,人们已不再满足于简单的数据操作,产生了进一步使用现有数据的需求,也就是利用现 有的数据,进行分析和推理,从而为决策提供依据。这种需求既要求联机服务,又涉及大量 用于决策的数据,而传统的数据库系统已无法满足这种需求。其具体体现在三个方面:①决 策所需历史数据量很大,而传统数据库一般只存储短期数据。②辅助决策信息涉及许多部门 的数据,而不同系统的数据难以集成。③由于访问数据的能力不足,它对大量数据的访问性 能明显下降。 随着 C/S(客户/服务器)技术的成熟和并行数据库的发展,信息处理技术的发展趋势是: 从大量的事务型数据库中抽取数据,并将其清理、转换为新的存储格式,即为决策目标把数 据聚合在一种特殊的格式中。随着此过程的发展和完善,这种九十年代初出现的支持决策的、 特殊的数据存储即被称为数据仓库(Data Warehouse)。 目前,人们对数据仓库有很多不同的理解,但都有共同之处, Inmon 将数据仓库明确定 义如下[Inmon 1992]: 数据仓库(Data Warehouse)是面向主题的、集成的、内容相对稳定的、不同时间的数据 集合,用以支持经营管理中的决策制定过程。 数据仓库收集存于不同数据源中的数据,将这些分散的数据集中到一个更大的库中,最 终用户从数据仓库中进行查询和数据分析。数据仓库中的数据应是良好定义的、一致的、不 变的,数据量也应足够支持数据分析、查询、报表生成和与长期积累的历史数据的对比。数 据仓库是一个决策支持环境,通过数据的组织给决策支持者提供分布的、跨平台的数据,使 用过程中可忽略许多技术细节。 在数据仓库的基础之上,可建立多种分析决策工具,如 OLAP(在线分析处理)和数据挖 掘工具等,以提供各种决策支持服务。 数据仓库有四个基本特征:数据仓库的数据是面向主题的;数据仓库的数据是集成的; 数据仓库的数据是不可更新的;数据仓库的数据是随时间不断变化的。 (1) 数据仓库中的数据是面向主题的。 这是与传统数据库面向应用相对应的。主题是一个在较高层次将数据归类的标准,每一 个主题基本对应一个宏观的分析领域。比如,一个保险公司的数据仓库所组织的主题可能为: 客户,政策,保险金,索赔。而按应用来组织则可能是:汽车保险,生命保险,健康保险, 伤亡保险。基于主题组织的数据被划分为各自独立的领域,每个领域有自己的逻辑内涵互不 交叉。主题域是独立和完备的,适用于分析型的应用。而基于应用的数据组织则完全不同, 它的数据只是为处理具体应用而组织在一起的。应用是客观世界既定的,它对于数据内容的 www.aibbt.com 让未来触手可及 340 划分未必适用于分析所需。 (2) 数据仓库的数据是集成的。 在数据进入数据仓库之前,必然要经过加工与集成。这一步实际上是数据仓库建设中最 关键、最复杂的一步。首先,要统一原始数据中的所有矛盾之处,如字段的同名异义、异名 同义、单位不统一、字长不一致等等,还要进行数据综合和计算,总之要将原始数据结构做 一个从面向应用到面向主题的转变。 (3) 数据仓库的数据是稳定的。 数据仓库的数据主要供决策分析之用,所涉及的操作主要是数据查询,一般不进行修改 操作。数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时间点的数据 库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数 据。 (4)数据仓库的数据又是随时间不断变化的。 数据仓库的数据不是实时更新的,但并不是永远不变的,也要随着时间的变化不断地更 新、增删和重新综合。它表现在以下几个方面:首先,数据仓库内的数据时限要远远长于操 作型环境中的数据时限。数据仓库保存数据时限较长是为了适应 DSS 进行趋势分析的要求。 其次,操作型环境包含当前数据,即在存取一刹那是正确、有效的数据;而数据仓库中的数 据都是历史数据。最后,数据仓库数据的码键都包含时间项,从而标明了该数据的历史时期。 从信息技术的观点来看,数据仓库关心的是在一个组织机构中将适当的信息传送到适当 的个人手中。这是一个正在进行的过程,而不是以前的解决方案,并且需要不同的方法以满 足面向事务系统开发工作的需求。 数据仓库是数据的集合,以对那些面向主题的、集成的、时间不同的、非易失性的决策 的管理工作给以支持。数据仓库关注的是概念(如销售),而不是过程(如提供发票)。它包 括从多种处理系统收集到的有关某一概念的所有相关信息。信息进行定期收集和存储,并且 是相对稳定的。 通过一致命名约定、测量、物理属性和语义,数据仓库对操作数据进行集成。在数据仓 库物理设计的第一步是确定应包括哪些主题领域,并开发一套意见一致的定义集。这需要约 见最终用户、分析员、高级管理人员,以了解所需信息的范围,并给出相应文档。在将逻辑 处理转化成物理数据仓库之前,必须对相关问题有彻底的了解。 MSMiner 中通过数据仓库管理器为数据挖掘工具提供数据平台,其主要目标是通过建立 和维护数据仓库,为数据挖掘提供经过清洗、整合、转换的数据来源,完成数据挖掘过程中 数据预处理的部分任务。 MSMiner 数据仓库中的数据按主题组织,主题中包含多个事实表、维表、中间表以及数 据立方体。数据仓库主题按星型模式建模,在此基础之上实现多维数据立方体和各种 OLAP 操作,并为数据挖掘任务提供经过适当预处理和良好组织的数据源,最后结果可由可视化工 具显示,或以报表的形式输出。整个数据仓库,包括数据的抽取及主题的组织等,均通过元 数据来管理和维护。 13.6.2 MSMiner 数据仓库的基本结构 MSMiner 数据仓库主要包括以下四个功能模块:数据抽取和集成模块、主题组织模块、 OLAP 及可视化模块。 数据抽取和集成模块是 MSMiner 数据仓库中的一个非常重要的组成部分,负责从外部数 据源中抽取数据,并集成到主题的各种综合数据表中。模块通过 OLE DB for ODBC 接口与各 www.aibbt.com 让未来触手可及 341 种关系型数据库连接。抽取数据时选取合适的数据源,指定它所在的数据库和表,经过一定 的清洗、聚集、转换处理后,将数据集成到数据仓库中的各种目标表中。 主题组织模块负责星型模型的组织和对事实表、维表和中间表的管理。 OLAP 模块负责在星型模式的基础上建立数据立方体,实现各种多维数据分析和查询操 作。 可视化模块提供多种可视化手段,通过各种三维及二维图表等直观地显示数据;并专门 针对各种数据挖掘算法,提供相应的可视化手段表示数据挖掘的结果。 MSMiner 数据仓库的结构示意图如图 13.6 所示。 目前多数数据仓库都在传统的关系型数据库管理系统 RDBMS 上实现。建立在关系型数 据库上可利用各种已有的成熟的数据库技术,使数据仓库的构建更加便捷有效。但传统的 RDBMS 实现往往是为事务型数据处理做优化的,数据仓库的很多特性,例如处理大规模历史 性和综合性数据,灵活的多维数据查询等,会因此受到限制。现在已经出现了多种不同的技 术途径,以改进数据仓库的数据库解决方案,例如: „ 基于并行计算平台的并行关系型数据库。 „ 使用新的索引技术提高传统 RDBMS 的性能。 „ 基于专门的数据库技术或已熟知的 RDBMS 的多维数据库 MDDB。这种解决方案往 往与 OLAP 技术紧密集成。 根据 MSMiner 的设计目标,我们更注重实现数据仓库的易用性和集成性,所以 MSMiner 数据仓库的构建仍是基于传统的关系型数据库管理系统,其核心数据库由 Microsoft SQL Server 7.0 DBMS 实现。 Microsoft SQL Server 7.0 提供了许多支持数据仓库的特性,例如功能强大的 OLAP 服务器 等。即将发布的 SQL Server 2000 更是增加了许多先进的功能,包括一套完全的数据库和数据 分析解决方案,一个新的集成的数据挖掘引擎等。MSMiner 的进一步工作将充分利用这些有 图 13.6 MSMiner 数据仓库结构示意图 外部数据 数据仓库 元 数 据 数据抽取、清洗、聚集、转换 主题 2 主题 1 主题 n OLAP 及可视化工具 数据采掘集成工具 ... www.aibbt.com 让未来触手可及 342 用的特性,增强系统功能。 MSMiner 数据仓库的具体实现包含多个数据库,这些数据库分为两类:其中一个数据库 为元数据库,专门存储各种元数据表;其他数据库为主题数据库,分别存储各个主题中的各 种综合数据表。 MSMiner 的外部数据源也主要是各种关系型数据库。MSMiner 通过 OLE DB for ODBC 接口, 可与各种流行的数据库产品连接,包括 Oracle、Sybase、Microsoft 等众多厂商的大型数据 库系统和小型的桌面数据库产品,保证了系统的开放性。OLE DB定义了一个 COM 接口的集合, 它封装了各种数据库管理系统服务。这些接口允许创建实现这些服务的软件组件。OLE DB 组 件包括数据提供者(它们存储和发布数据)、数据用户(它们使用数据)和服务组件(它们处 理和传输数据)。OLE DB 接口用来平滑地集成组件,以便供货商能迅速地将高质量的 OLE DB 组件推向市场。另外, OLE DB 包括连接 ODBC 的桥梁,这使得对现在大量的 ODBC 关系数据库 提供持续支持成为可能。 MSMiner 也可从多种数据文件中获取数据,并将实现 Web 数据的获取。本文以下所指的 外部数据源将主要指各种关系型数据库。 13.6.3 主题 MSMiner 数据仓库以主题(Subject)为基本组成单位。一个主题存储在一个 SQL Server 数据库中。每个主题包含多个事实表、维表、中间表以及数据立方体,它们在本质上都是一 些综合数据表。用户根据需要,通过数据抽取模块,从外部数据源中抽取数据,并经过各种 清洗、聚集和转换处理后,将数据集成到数据仓库主题的各个表中。 事实表(Fact)存储用户需要查询分析的数据,主题的主要内容就在事实表中体现。事实 表中一般包含多个维(Dimension)和度量(Measurement)。 维代表了用户观察数据的特定视角,如:时间维、地区维、产品维等。每一个维可划分 为不同的层次来取值,如时间维的值可按年份、季度、月份来划分,描述了不同的查询层次。 度量是数据的实际意义,描述数据“是什么”,即一个数值的测量指标,如:人数、单价、 销售量等。 度量的实际数据存放在事实表中。维的详细信息,如不同的层次划分和相应数据等在维 表中存储,事实表中存放各个维的标识码键。事实表和维表将通过这些键关联起来,构成一 种星型模型,在此基础上构成数据立方体并实现 OLAP 操作。 中间表是一种面向数据挖掘任务的综合数据表。特定的数据挖掘任务往往需要特定的、 经过一定预处理的整合数据,这些数据存放在中间表中,供数据挖掘任务使用。数据挖掘的 结果也可存放在中间表中。 数据立方体(Data Cube)是一个多维的数据阵列结构,是组织多维 OLAP 操作的基础。 在 MSMiner 的实现中,数据立方体实际上是一种逻辑概念结构,它的实现是基于事实表和维 表关联的星型模型,具体体现为主题中的一张表。通过在主题中选取所需的数据维和度量, 生成描述星型模型关联信息的元数据表,数据立方体就是该表的逻辑抽象。 13.6.4 数据抽取和集成 数据仓库中的数据是集成的,是从原有的分散的数据库中抽取出来的。在各个源数据库 中的操作型数据和数据仓库中的分析型数据有很大差别,数据仓库中的数据不能从原有的数 www.aibbt.com 让未来触手可及 343 据库系统中直接得到,必须要经过清洗、聚集和转换。这是建设数据仓库过程中非常关键而 复杂的一步。所要完成的工作有: „ 在各个分散的数据库系统中的源数据往往有很多重复或不一致的地方,要统一源数 据中的所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致等。 „ 得到数据仓库中的综合数据,需要将原始数据结构做一个从面向应用到面向主题的 转化,进行必要的数据综合和计算。 MSMiner 提供专门的数据抽取和集成模块来完成上述工作。数据抽取和集成工作在建立 主题后进行,主要为事实表、维表和数据挖掘中间表的生成提供整合数据。 模块主要提供三个层次的功能:数据的简单抽取和集成,数据的复杂处理和面向数据挖 掘的数据预处理。 13.6.4.1 数据的简单抽取和集成 在进行数据抽取工作之前,必须先注册外部数据源。这里的外部数据源主要是各种关系 型数据库,系统通过 OLE DB for ODBC 接口与这些数据源连接,并将数据源的详细信息注册 在元数据中。这些信息包括外部数据库的 ODBC 连接参数,数据表信息以及各个表中的字段 信息等。 抽取数据时,以数据表为基本存储单位,抽取步骤如下: 1. 指定数据源表及目标表。数据源表可以是不同的多个表,目标表根据用户命名在指定 主题中新建,表的结构根据以下字段定义步骤决定。 2. 定义目标表中的字段及数据来源。具体包括以下几个步骤: (a) 从数据源表中选取一个或多个源字段。 (b) 为源字段指定简单数据集成操作,包括各种数学运算、日期运算、字符串操作等。 (c) 指定目标字段名。目标字段的类型、精度、长度等由源字段及集成操作决定。 3. 重复步骤 2,直至所需的字段选取和定义完毕。 4. 指定数据源表之间的关联,设置 OrderBy 和 GroupBy 等参数,加入其他抽取条件等。 5. 根据以上定义,动态生成数据抽取 SQL 语句,从源数据库中将数据抽取到数据仓库 指定主题的目标表中。 例如,位于外部服务器 Billy 上的 SQL Server 数据库 TaxData 为已注册外部数据库,我们 从其中的数据表 Tax 和 TaxDate 中抽取数据,在数据仓库中生成事实表 Fact1,如图 13.7 所示。 www.aibbt.com 让未来触手可及 344 定义四个目标字段分别为: 度量: 加成率 [TAX.加成率 AS 加成率] 度量: 负担率 [TAX.负担率 AS 负担率] 维: yearofdate [Year(TAXDate.date) AS yearofdate] 维: monthofdate [Month(TAXDate.date) AS monthofdate] 设置数据源表之间的关联为: TAX.taxID=TaxDate.dateID 加入抽取条件: TAX.class = 'Y' 最后系统将生成如下 SQL 语句,生成新的事实表并完成数据抽取: SELECT DISTINCT TAX.加成率 AS 加成率, TAX.负担率 AS 负担率, Year(TAXDate.date) AS yearofdate, Month(TAXDate.date) AS monthofdate INTO Fact1 FROM Billy.TaxData.dbo.TAX AS TAX JOIN Billy.TaxData.dbo.TAXDate AS TAXDate ON TAX.dateID=TaxDate.dateID 图 13.7 数据抽取和集成 www.aibbt.com 让未来触手可及 345 WHERE TAX.class = 'Y' 目前的系统实现要求对于每次数据抽取,各源数据表必须在同一个数据库中。如果要求 跨数据源抽取数据,可以先为不同的数据源生成若干个临时表或视图,再将这些临时表或视 图整合为一张目标表。 12.5.3.2 数据的复杂处理 数据的简单抽取和集成功能已基本能满足系统大部分需要,但对于各种不一致数据、错 误数据以及复杂的数据集成,往往无法用一句 SQL 语句完成,需要更进一步的工作。所以系 统提供复杂数据处理功能,以完成各种数据清洗、转换和复杂集成工作。 在数据抽取和集成模块中,用户定义并进行简单数据抽取后,可对生成的数据表进行进 一步处理。系统提供专门接口,由用户针对特殊的转换处理编写专门的 SQL 语句,这种处理 语句可以有一句或多句,由系统自动控制顺序执行,经一系列视图或临时表的转换之后,完 成复杂数据处理任务。 上述所有数据抽取和集成处理操作都将存入元数据统一管理。当需要重新抽取数据,或 进行数据更新时,系统将根据元数据中记录的数据抽取和集成操作步骤,依次完成数据的抽 取和集成工作。 需要指出的是,上述各种数据抽取和处理步骤的顺序并不是一定的,各个步骤所要完成 的具体工作以及各个步骤的处理顺序依赖于所抽取和处理的数据的特性。 经过上述的处理工作,基本上已经能够满足绝大部分数据处理需求,但我们面临的数据 将是非常复杂和多样的,数据抽取和集成工作也会出现多种多样的复杂情况,对于有些情况 通过上述的步骤可能仍然难以处理。这时,我们将提供对数据表的直接编辑界面,由用户手 动地直接对表的格式和数据进行更进一步的处理工作。这种对数据表的直接修改将不在元数 据中体现。 12.5.3.3 面向数据挖掘的数据预处理 MSMiner 数据仓库的一个主要的设计目标是为数据挖掘提供适当数据。很多数据挖掘任 务需要符合某种格式,并且经过适当预处理的数据。为此数据抽取和集成模块提供了专门的 数据预处理功能。 如果经过前面的数据抽取和集成得到的数据仍不能满足数据挖掘的需要,需进一步做某 些特殊的预处理,那么可以在数据挖掘算法库中选择适当的算法,对数据进行深层次的处理, 得到所需的数据。如利用粗糙集算法对属性集进行约简等。数据预处理所用的算法同样作为 一种数据抽取和集成规则存入元数据中。 这里的数据预处理功能相当于数据挖掘任务中一个简化的步骤。实际上,用户也可以不 在数据抽取和集成的过程中,而在数据挖掘任务的步骤之中进行数据预处理工作。具体视数 据预处理的复杂程度和情况的需要而定。 13.6.5 数据抽取和集成的元数据 数据的清洗、转换和整合工作,需通过建立完备的元数据来进行管理。建立数据仓库, 进行数据抽取和集成时,生成各种数据抽取和处理规则,并存储在元数据中,数据仓库的数 www.aibbt.com 让未来触手可及 346 据抽取和更新都将在这些元数据的指导下进行,并根据决策需求的变化及时维护和更新这些 元数据。 这些数据抽取和处理规则分布在描述数据仓库各个表及其字段信息的元数据中,主要由 元数据类 CTable 和 CField 来管理。这两个元数据类的定义如下: CTable { Attributes: TableID 表的标识 ID TableName 表名 TableType 表的类别(事实表、维表、中间表或 外部数据源表) DatabaseID 所属数据库 ID Fileds 该表所包含的字段集合 SQLSentence 数据抽取 SQL 语句 AlgorithmID 用于数据预处理的算法 ID Remark 表的说明 ... ... Methods: Update() ... ... } 元数据类 CTable 中的 Fields 是元数据集合类 CFieldS 的对象实例,其中包含元数据个体 类 CField 的对象实例的集合,记录所描述数据表包含的字段的详细信息。 From、Join、Where、OrderBy、GroupBy 等分别记录了定义数据抽取规则时,用以生成 SQL 抽取语句的各有关部分的定义。SQLSentence 记录了完整的 SQL 抽取语句,由以上各部 分定义结合各字段的数据来源定义共同拼合生成。对于复杂数据抽取,SQLSentence 可能包含 多个 SQL 语句,此时上面各个子部分的定义无效。 AlgorithmID 记录了进行面向数据挖掘的数据预处理时所用算法的 ID,算法存储在数据挖 掘算法库中,并在元数据中详细注册。 CField { Attributes: FieldID 字段 ID FieldName 字段名 TableID 所属表 ID FieldType 字段数据类型 Source 字段的数据来源定义 Remark 字段的说明 ... ... Methods: GetTableInfo() 获得所属表的详细信息 Update() ... ... } www.aibbt.com 让未来触手可及 347 元数据类 CField 中的 Source 属性记录了该字段的详细定义,包含了数据来源字段及其简 单集成操作定义。 通过 CTable 和 CField 元数据类,可以详细注册数据仓库中各个表及其字段的定义,以及 详细的数据抽取信息。数据的抽取和更新主要通过这两个元数据类来维护。 13.6.6 数据仓库建模及 OLAP 的实现 13.6.6.1 星型模型 MSMiner 数据仓库按照星型模型(Star Schema)建模。每个主题中包含多个事实表和维 表。以一个事实表为中心,关联多个维表,构成一个星型结构。多个星型结构共同组成了一 个主题。图 13.8 显示了星型模型。 MSMiner 数据仓库中创建主题并建立星型模型的步骤如下: 1. 用户指定主题名称和其他说明信息,系统生成一个空主题及相应的数据库,此时主题 中没有任何内容,即主题对应数据库中不含任何数据表。用户按以下步骤逐步生成维 表和事实表,并建立星型模型。 2. 选择适当的数据源,调用数据抽取和集成模块,生成多个维表。维表中包含维的层次 和取值等信息。每个维表中必须包含一个标识码键作为主键。 3. 在生成多个维表之后,再调用数据抽取和集成模块,从适当的数据源中抽取数据生成 事实表。每个事实表中包含多个维字段和度量字段。度量字段包含将要实际分析使用 的数据。每个维字段与一个维表中的标识码键相关联,从而使多个维表与事实表关联 构成一个星型模型。 13.6.6.2 数据立方体 数据立方体(Data Cube)是将数据按多个维度组织形成的一种多维结构。用户可以灵活 产品号 产品名称 产品目录 产品表 订单号 订货日期 订货表 客户号 客户名称 客户地址 客户表 产品号 客户号 订单号 时间标识 地区名称 产品数量 总价 事实表 时间标识 月 季度 年 时间表 地区名称 省别 地区表 图 13.8 星型模型 www.aibbt.com 让未来触手可及 348 地从各个角度进行切片、旋转等操作,获得所需的数据。如图 12.8 所示。 MSMiner 的 OLAP 在关系型数据表上实现,即采用 ROLAP 方式。在主题中事实表关联 多个维表的星型结构之上模拟多维数据立方体,然后在数据立方体之上实现 OLAP 操作。各 种 OLAP 操作请求将通过一个 ROLAP 引擎动态翻译成 SQL 语句,在数据仓库中的综合数据 表(事实表)中进行查询得到结果。 由于数据立方体在表现上缺乏直观性,尤其当维度超出三维后,数据的采集和表示都比 较困难,因此我们采用一种二维表的结构来表示整个数据立方体,并在此之上进行 OLAP 操 作。数据立方体中的维都被划分到行维或列维两种维度中去,在行维和列维交织成的二维表 中显示相应的度量数据,实现以二维表格反映多维特征,提供数据立方体的可视化表示。 数据立方体的建立步骤如下: 1. 从指定主题中选择一个事实表。 2. 从事实表中选择若干个维和度量。 维必须被指定为行维或者列维。如果有的维包含多个层次,它的各个层次也可作为多 个子维选入,以实现向上综合和向下钻取功能。 用户的兴趣往往不仅在于获得已有的数据,还希望能够得到综合数据。因此对度量需 指定某种运算操作,如求和、均值、极值等。 3. 生成数据立方体。 表 13.1 是一个赢利额关于时间维、产品类型维和销售地区维的简单 OLAP 示例。时间维 包括两个细节项:(1995, 1996),产品类型维包括三个细节项:(Software, Hardware),而销售地 点维包括四个细节项:(East, West, North, South)。整合后的关系型数据表有如下信息: 表 13.1 赢利额 Time Division Region Revenue 1995 Hardware East 120 1995 Hardware West 150 1995 Hardware North 195 1995 Hardware South 165 1996 Hardware East 180 1996 Hardware West 152 产品 时间 地区 图 13.9 数据立方体 www.aibbt.com 让未来触手可及 349 1996 Hardware North 215 1996 Hardware South 190 1995 Software East 200 1995 Software West 185 1995 Software North 130 1995 Software South 134 1996 Software East 250 1996 Software West 204 1996 Software North 154 1996 Software South 146 从上表中选取时间维、产品类型维和销售地区维作为三个维,选取赢利额作为度量并对 赢利额求和,建立数据立方体,并以二维表形式表示如表 13.2。 表 13.2 二维表 East West North South Total Hardware 120 150 195 165 630 1995 Software 200 185 130 134 649 Hardware 180 152 215 190 737 1996 Software 250 204 154 146 754 Total 750 691 694 635 2770 在这种以二维表形式表示的数据立方体上,可以方便地进行各种多维数据分析查询操作。 如用户可以展开产品维,查看各个销售地区 1995 年各类产品的赢利额(向下钻取);也可以 合并产品维,查看各个销售地区 1995 年所有产品的总赢利额(向上综合);或改变查询角度, 查看各类产品 1995 年在所有地区的总赢利额(旋转)等等。 MSMiner 提供了一个良好的用户界面以二维表形式显示数据立方体,用户只需通过点击 (Click)、拖放(Drag and Drop)等简单动作就可以进行各种可视化的多维分析操作,并通过 多种三维或二维图表的可视化方式显示结果。如图 13.10 所示。 www.aibbt.com 让未来触手可及 350 13.6.6.3 多维数据分析 多维分析是指对以多维形式组织起来的数据采取切片、切块、旋转、钻取等各种分析动 作,以求分析数据,使用户能从多个角度、多侧面地观察数据库中的数据,从而深入了解包 含在数据中的信息、内涵。多维分析的基本操作有: „ 切片(Slice)。在多维数组的某一维上选定一维成员或选定多维数组的一个二维子集的动 作叫作切片。 „ 切块(Dice)。选定多维数组的一个三维子集的动作称为切块。 „ 旋转(Pivot)。旋转就是改变数据立方体的维方向。例如,交换两个行维的位置,或是把 某一个行维移到列维中去,或是把页面显示中的一个维和页面外的维进行交换(令其成 为新的行或列中的一个)。 „ 向上综合(Roll Up)。将数据综合到较高的维层次。 „ 相下钻取(Drill Down)。将数据细化至较低的维层次。 用户在数据立方体的二维表界面上进行多维数据分析操作时,各种操作信息通过 OLAP 图 13.10 MSMiner 数据立方体及 OLAP www.aibbt.com 让未来触手可及 351 引擎动态转化为 SQL 数据查询请求,在数据仓库中查询获得结果数据。具体实现步骤如下: 根据用户操作,确定所涉及的维(分组指标)和度量(统计指标)。 ROLAP 引擎将用户查询和报表请求翻译成一个或多个 SQL 语句。 系统首先在多维立方体的元数据中查询有关统计指标和分组指标的内容,生成相关 SQL 语句。在元数据中查询有关统计指标和分组指标的内容时,先找统计指标,分组指标如没有 找到,找到比它层次低的分组指标亦可。但这时需再作相关汇总和计算。 对于无法用一个 SQL 语句生成的查询,采用多级数据缓冲(临时表或视图)的方法解决。 ROLAP 引擎将 SQL 语句提交数据库或数据仓库,提取数据后进行相应处理和计算,然 后再将结果集返回给前台显示。 小结: MSMiner 数据仓库以主题为基本构成单位,主题中包含事实表、维表和各种中间表。 MSMiner 数据仓库作为数据挖掘任务的数据平台,提供有效手段从各种外部数据源中抽取和 集成数据,完成数据挖掘过程中前期数据准备阶段的部分工作。 MSMiner 数据仓库同时提供了直观简便的 OLAP 工具,以构建数据立方体,完成各种多 维数据分析操作。数据的抽取和集成、数据的组织及 OLAP 的实现等均由元数据统一管理。 13.7 算法库管理 算法是数据挖掘的核心部件,数据挖掘任务是通过有机组织的算法库来实现的。首先这 些算法是可操作的,系统通过元数据来记录算法的存储位置,输入输出参数及规则的表示形 式;其次算法应该与系统平滑集成,我们采用动态链接库(Dynamical Link Library)的形式嵌 入算法,这一方面增强了系统的可移植性,另一方面,也为系统节省了部分内存的开销(DLL 的动态装入与卸载);最后算法的接口应该具有统一的标准,以便不同的采掘步骤能一致地调 用算法。 13.7.1 数据挖掘算法的元数据 在 MSMiner 元数据中,各种数据挖掘算法的详细信息主要通过元数据类 CAlgorithm 来描 述: CAlgorithm { Attributes: AlgorithmID 算法 ID AlgorithmName 算法名称 AlgorithmType 算法类别(分类、预测、聚类等等) AlgorithmFile 算法库 DLL 的路径 AlgorithmFunction 算法函数定义 AlgorithmParas 算法参数声明 Remark 算法的说明信息 SourceTableFormat 源数据表格式 TargetTableFormat 目标数据表格式 Evaluation 对算法结果的评价方法 www.aibbt.com 让未来触手可及 352 ... ... Methods: Update() ... ... } 其中,AlgorithmParas 是元数据集合类 CAlgorithmParaS 的对象实例,其中包含了元数据 个体类 CAlgorithmPara 的对象实例的集合。 类 CAlgorithmPara 的定义如下: CAlgorithmPara { Attributes: AlgorithmID 所属的算法 ID ParaID 参数 ID ParaName 参数名 ParaType 参数数据类型 ParaNo 参数序号 DefaultValue 缺省值 MaxValue 最大值 MinValue 最小值 ... Methods: Update() ... ... } 各个算法的元数据中包含对算法的功能、用途及使用方法等信息的详细说明。在建立数 据挖掘任务模型时,任务向导将根据这些信息引导用户逐步选择合适的算法、设置各种参数, 将算法的存储位置、函数接口定义、参数设置以及数据源设置等信息传递给外部调用函数, 从而实现算法的调用。 13.7.2 可扩展性的实现 MSMiner 系统中各种数据挖掘核心算法以动态链接库 DLL 的形式实现,并在元数据中登 记注册。采用 DLL 方式实现各数据挖掘算法有两个主要的优点: ·以 DLL 可执行代码实现的算法在系统运行时动态载入,保证了算法的执行效率。 ·DLL 算法库独立于 MSMiner 系统而存在,便于维护、升级和扩展,同时具有良好的通 用性。 MSMiner 系统提供专门的算法管理模块来查看和维护各种算法的有关信息。用户还可以 按照一定的规范,开发自己的算法 DLL,并在算法管理模块中进行注册,使数据挖掘任务能 够使用新的算法,从而实现算法库的可扩展性,使整个数据挖掘系统具有很强的灵活性和通 用性。 用户可在算法注册向导的指导下,逐步完成对新算法的动态加载。加载过程包括算法一 般信息的注册和算法参数的注册。其流程图如图 13.11 所示: www.aibbt.com 让未来触手可及 353 图 13.11 流程图 13.7.3 采掘算法的接口规范 为了提供尽可能全面的数据挖掘解决方案,我们将集成适用于不同任务的多种数据挖掘 算法,但对于有些特定的数据挖掘任务,系统提供的算法将可能难以胜任,此时用户往往希 望能够加入自己的处理方案。因此,系统必须提供一个开放的、灵活通用的接口,使用户能 够加入新的算法。 这里我们给出约定,用户编写自己的算法,生成动态链接库 DLL 文件时,必须符合以下 的规范: 1.挖掘算法调用参数的格式 每个数据挖掘任务由一个或几个采掘步骤组成,这些采掘步骤构成有向图。数据挖掘引擎 负责拓扑排序,按顺序方向执行每一步骤。执行每一采掘步骤时,数据挖掘引擎分配相应的 参数给采掘算法,由采掘算法执行相应的任务并返回相应的结果。采掘算法调用参数的格式 统一定为(functionName 为调用函数名称): functionName(string MetadataCn, Variant stepID) 说明:metadataCn 是系统元数据的连接串,stepID 是该算法对应的采掘步骤的标示号。算 法 functionName 通过这两个参数,访问元数据表 metaStepPara 获得他需要的参数。 2.MetaAlgorithmPara 的格式及记录组织。 ParaID (参数的标 示号) ParaName (参数名称) FlagofPara (参数类别 标示) ParaType (参数的数 据类型) Para(int,float,s tring )Value (参数值) StepID (参数对应的 步骤标示号) SourceCN 001 String SourceRS 011 String 新算法加入 算法一般信息: 算法名称、算法函数名称及其位 置……所需源表个数(iSourceTable) 产生结果表个数(iResultTable) 算法参数注册 输入 参数 输出 参数 If (iResultTable>0) 设置结果表格式 结束 www.aibbt.com 让未来触手可及 354 SourceCN2 002 String 其它数据源链 接参数 SourceRS2 012 String 其它数据源 。。。 。。。 。。。 。。。 ResultCN 101 String 可以缺省,缺 省时与 001 SourceCN 相 同 ResultRS 111 String 输出结果表表 名 FormatOfResult 121 String 输出结果样本 表的表名 。。。 。。。 。。。 inputPara 201 不定 outputPara 301 不定 说明: 参数类别编号说明:第一位是特征位: “0”----源数据信息, “1”----结论数据信息(规则等) “2”---精度参数(算法开始前设定) “3”---评估参数(算法执行返回前设定) 第二位是关联位: “0”--- 连接串 “1”---结果表表名 (第一位是“2,3”此位无意义) “2”---输出结果样本表的表名 第三位是序号位: 表示此类别参数的个数 3.算法需提供以下信息,以便在系统中注册其参数信息。 ·算法文件名称(FileName): 算法所在的 DLL 文件的全称(含路径名) ·采掘算法调用参数的格式函数名称(FunctionName):执行采掘算法的函数名称。 ·函数序号(FunctionNo):函数在 DLL 输出函数中的序号。 ·函数功能说明(Remark): ·所需源表个数(NumberOfSourceData):需要几个表作为数据源。 ·结果表个数(NumberOfResult):算法的结果放在几个表中。 ·结果表的样式/样板(FormatOfResult):预先定义的一种空表,用来生成用来存放结 果表的结构。 ·输入参数(inputPara):采掘算法所要求的参数,如可信度,支持度,误差等; ·输出参数(outputPara):采掘算法所返回的简单结果,采用输出参数的方式予以保 存。例如,在决策树的测试算法中,评估的结果,如预测精度,决策树包括的节点数等简 单的结果。 采掘算法通过传递的参数,访问元数据的算法参数信息表,获得所需要的输入参数和数 据,算法运行完毕后将输出的评价参数和规则写到相应的表中。通过这个接口系统可以方便 的注册算法的参数信息,使采掘算法与采掘任务有机结合起来。 MSMiner 通过元数据记录采掘算法的描述信息,使得采掘算法像数据库中的数据一样易 www.aibbt.com 让未来触手可及 355 于操作;采用动态链接库的形式嵌入采掘算法,采用统一的算法接口规范算法,实现了采掘 算法的动态加载。目前 MSMiner 算法库中包含决策树、BP 及 SOM 神经网络、多元回归分析 及关联规则发现算法、粗糙集属性约简算法、支持向量机算法、模糊据类算法等,可用于分 类、预测、关联规则发现等数据挖掘任务。 习 题 1. 解释知识发现的概念。 2. 知识发现过程主要包括那几部分内容,它们之间的关系是什么。 3. 简述知识发现中包括哪些任务。 4. 什么是分类,什么是聚类,简述二者的区别和联系。 5. 简述数据仓库的定义,讨论数据仓库与传统意义上的关系型数据库之间的异同。 6. 假设数据仓库由 4 维构成,即时间、项、部门、地点, 并有两个测度:即销售总额 (dollars_sold)、 销售单位(units_sold)。 请画出销售的数据仓库星型模式。 7. 简述元数据的概念,以及数据仓库中元数据管理策略。 8. 描述 ETL 任务的具体内容,为什么数据仓库中需要 ETL 工作。 9. 解释维度、数据立方体、度量的概念,以及 OLAP 中的星型模型和雪花模型。 10. 比较 OLAP、OLTP 的概念,以及 ROLAP 和 MOLAP 的概念。 11. 解释 OLAP 术语中的渐变维度(Slowly Changing Dimension)概念。 www.aibbt.com 让未来触手可及 356 第十四章 分布智能 分布智能主要研究在逻辑上或物理上分散的智能系统如何并行地、相互协作地实现问题 求解。主体计算(agent computing)不仅是分布智能的研究热点,而且可能成为下一代软件开 发的重要突破点。 14.1 概述 人类活动大部分都涉及社会群体,大型复杂问题的求解需要多个专业人员或组织协作完 成。自 20 世纪 70 年代后期以来,随着计算机网络、计算机通信和并行程序设计技术的发展, 分布智能的研究逐渐成为一个新的研究热点。20 世纪 90 年代以来,互联网的迅速发展为新的 信息系统、决策系统和知识系统的发展提供极好的条件,他们在规模、范围和复杂程度上增加 极快,分布智能技术的开发与应用越来越成为这些系统成功的关键。分布智能系统具有下列 特色: (1) 系统中的数据、知识, 以及控制不但在逻辑上, 而且在物理上是分布的, 既没有全 局控制, 也没有全局的数据存储。 (2) 各个求解机构由计算机网络互连, 在问题求解过程中, 通信代价要比求解问题的代 价低得多。 (3) 系统中诸机构能够相互协作, 来求解单个机构难以解决, 甚至不能解决的任务。 分布式人工智能系统的实现可以克服原有专家系统、学习系统等的弱点,极大地提高知 识系统的性能, 其主要优点表现为: (1) 提高问题求解能力。由于分布的特点, 分布智能系统的问题求解能力大大提高。首 先可靠性高,通信路径、处理结点、以及知识的冗余使得出现故障时, 整个系统仅仅降低响 应时间或求解精度, 而不至于完全瘫痪;其次,系统容易扩展,增加处理单元可以扩大系统的 规模并且提高问题求解能力;再者就是系统的模块性, 将使整个系统设计十分灵活。 (2) 提高问题求解效率。由于分布智能系统中各结点可以并行地求解问题, 所以可以开 发问题求解中的并行性, 提高求解效率。 (3) 扩大应用范围。分布智能技术可以打破目前知识工程领域的一个限制,即仅仅使用一 个专家。在分布智能系统中, 不同领域、甚至同一领域的不同专家可以协作求解某一专家不 能解决或不能很好解决的问题。同时, 许多领域中若干非专家有机地结合起来, 也可能达到 或超过一个专家的水平。 (4) 降低软件的复杂性。分布智能系统将整个求解任务分解成若干相对独立的专门的子 任务, 其结果是降低了各个处理结点问题求解的复杂性。 分布智能的研究可以追溯到 70 年代末期。早期分布智能的研究主要是分布式问题求解, 其目标是要创建大粒度的协作群体,它们之间共同工作以对某一问题进行求解。在一个纯粹 的 DPS 系统中,问题被分解成任务,并且为求解这些任务,需要仅为该问题设计一些专用的 任务执行系统。所有的交互策略都被集成为系统设计的整体部分。这是一种自顶向下设计的 系统,因为处理系统是为满足在顶部所给定的需求而设计的。Hewitt 和他的同事们研制了基 于 ACTOR 模型的并发程序设计系统[Hewitt 1983]。ACTOR 模型提供了分布式系统中并行计算 理论和一组专家或 ACTOR 获得智能行为的能力。在 1991 年 Hewitt 提出开放信息系统语义 www.aibbt.com 让未来触手可及 357 [Hewitt 1991], 指出竞争、承诺、协作、协商等性质应作为分布式人工智能的科学基础,试 图为分布式人工智能的理论研究提供新的基础。1980 年 Davis 和 Smith 提出了合同网 (CNET)[Smith 1980]。CNET 使用投标—合同方式实现任务在多个节点上的分配。合同网系统 的重要贡献在于提出了通过相互选择和达成协议的协商过程实现分布式任务分配和控制的思 想。分布式车辆监控测试系统 DVMT 也是分布式人工智能领域最早和最有影响的研究课题之 一,由麻萨诸塞大学的 Lesser, Corkill 和 Durfee 等人主持研制[Lesser 1980]。该系统对 市区内行驶的车辆轨迹进行监控, 并以此环境为基础, 对分布式问题求解系统中许多技术问 题进行研究[Durfee 1987]。DVMT 是以分布式传感网络数据解释为背景,对复杂的黑板问题求 解系统之间的相互作用进行了研究,提供了抽象和模型化分布式系统行为的方法。Gasser 等 人于 1987 年研制了 MACE 系统,是一个实验型的分布式人工智能系统开发环境[Gasser 1987]。 MACE 中每一个计算单元都称作主体,它们具有知识表示和推理能力,主体之件通过消息传送 进行通信。MACE 是一个类面向对象环境,但避开了并发对象系统中难于理解和实现的继承问 题。MACE 的各个机构并行计算, 并提供了描述机构的描述语言,具有跟踪的 demons 机制。 该 课题研究的重点是在实际并行环境下运行分布智能系统,保持概念的清晰性。中国科学院计 算技术研究所史忠植等研究了分布式知识处理系统 DKPS[朱建立 1990]。该系统采用逻辑—— 对象知识模型,研究了知识共享和协作求解等问题。基于ACTOR 计算模型,Ferber 等人于 1991 年研制了 Mering IV 反射 ACTOR 语言[Ferber 1991]。在这个模型中 actor 是可以并发执行的 活动对象,通过异步消息传送实现相互作用。Mering IV是反射语言,可以在结构上和操作上 表示自身。系统利用反射性使得不同大小和粒度的智能主体能够以统一的方式相互作用。 90 年代,多主体系统(multiagent system, MAS)的研究成为分布智能研究的热点。多主 体系统主要研究自主的智能主体之间智能行为的协调,为了一个共同的全局目标,也可能是 关于各自的不同目标,共享有关问题和求解方法的知识,协作进行问题求解。基于主体的概 念,人们提出了一种新的人工智能定义:“人工智能是计算机科学的一个分支,它的目标是 构造能表现出一定智能行为的主体”。所以,智能主体的研究应该是人工智能的核心问题。 斯坦福大学计算机科学系的 Hayes-Roth 在 IJCAI'95 的特邀报告中谈到:“智能的计算机主 体既是人工智能最初的目标,也是人工智能最终的目标。” 现在,关于主体的研究不仅受到 了人工智能研究人员的关注,也吸引了数据通信、人机界面设计、机器人、并行工程等各领 域的研究人员的兴趣。 14.2 分布式问题求解 分布式问题求解是分布智能研究的一个分支, 由于人们认识到解决一类复杂问题和综合 性问题时集中式解题系统的局限性, 加之网络技术、通信技术和并行程序设计技术取得了重 要进展, 这方面的研究逐渐受到重视。 在分布式问题求解系统中, 数据、知识、控制均分布在系统的各结点上, 既无全局控制, 也无全局数据和知识存贮。由于系统中没有一个结点拥有足够的数据和知识来求解整个问题, 因此各结点需要交换部分数据、知识、问题求解状态等信息, 相互协作来进行复杂问题的协 作求解。 分布式问题求解系统有两种协作方式, 即任务分担(task sharing)和结果共享 (results sharing)。 Smith 和 Davis 提出了任务分担方式。在任务分担系统中, 结点之间 通过分担执行整个任务的子任务而相互协作, 系统中的控制以目标为指导, 各结点的处理目 标是为了求解整个任务的一部分。Lesser 和 Corkill 提出了结果共享方式。在结果共享 方式的系统中,各结点通过共享部分结果相互协作,系统中的控制以数据为指导,各结点在任 www.aibbt.com 让未来触手可及 358 何时刻进行的求解取决于当时它本身拥有或从其它结点收到的数据和知识。 任务分担的问题求解方式适合于求解具有层次结构的任务,如工厂联合体生产规划、数字 逻辑电路设计、医疗诊断。结果共享的求解方式适合于求解与任务有关的各子任务的结果相 互影响,并且部分结果需要综合才能得出问题解的领域。如分布式运输调度系统、分布式车辆 监控实验系统 DVMT。事实上,任务分担与结果共享两种求解方式, 只是强调问题求解的阶段不 同,它们本质上并非是不相容的。Smith 从任务分担的角度研究了两种方式结合的方法, Hayes-Roth 从结果共享的角度研究了两种方式的结合方法。 14.2.1 分布式问题求解系统分类 分布式求解系统中的组织结构是指结点之间的信息与控制关系以及问题求解能力在结点 中的分布模式, 它说明了各结点的作用和结点间的关系。这种组织结构必须有利于减少有关 协作的不确定性。 根据组织结构, 分布式问题求解系统可以分为三类,即层次结构类、平行结构类、混合结 构类, 其特点分别简述如下: (1) 层次结构类 · 从组成结构上看,任务是分层的。每个任务由若干个子任务组成,每个子任务又由若干 个下层子任务组成, 以此类推, 形成层次结构。 · 各个子任务在逻辑上或物理上是分布的。 层次结构类任务可采用任务分担模型进行求解, 每个处理结点求解一个或几个任务。如 分布式运输调度系统、分布式车辆监控实验系统 DVMT 等, 均属于这种类型。 (2) 平行结构类 · 从组成结构上看, 任务是平行的。每个任务由若干子任务组成, 各子任务性质相同, 具有平行关系。 · 整个任务的完成依赖于与之有关的各个子任务, 各子任务的部分解往往是不完全的, 需要综合成整个任务的解。 · 各个子任务在时间或空间上往往是分布的。 平行结构类任务可采用结果共享模型进行求解, 每个处理结点求解一个或几个任务。 Kornfeld 和 Hewitt 根据“科学团体是高度并行的系统”的观点, 提出了名为“科学团体 例子”的平行结构。 (3) 混合结构类 · 从组成结构上看, 任务是分层次, 而每层中的任务是并行的。 · 各个子任务是分布的。 混合结构类任务可以采用任务分担与结果共享相结合的问题求解模型。 14.2.2 分布式问题求解过程 分布式问题求解系统的求解过程可以分为四步:任务分解,任务分配, 子问题求解, 以及 结果综合。系统首先从用户接口接收用户提出的任务, 判断是否可以接受。若可以接受, 则 交给任务分解器, 否则通知用户该系统不能完成此任务。任务分解器将接收的任务, 按一定 的算法分解为若干相对独立、但又相互联系的子任务。若有多个分解方案, 则选出一个最佳 方案交给任务分配器。任务分配器将接受的任务, 按一定的任务分配算法, 将各子任务分配 到合适的结点。若有多个分布方案, 则选出最佳方案。各求解器在接受到子任务后, 与通信 www.aibbt.com 让未来触手可及 359 系统密切配合进行协作求解, 并将局部解通知协作求解系统, 之后该系统将局部解综合成一 个统一的解并提交用户。若用户对结果满意, 则输出结果, 否则再将任务交给系统重新求解。 事实上, 实际系统中的问题求解要比上述过程复杂得多。 下面简单介绍几种典型的任务分解和任务分配的方法: (1) 合同网络。Davis 和 Smith 提出的“合同网络”本质上是一种适合任务分担求解 系统的任务分配算法。在此方法中, 合同就是产生任务的结点与愿意执行此任务的结点之间 达成的一种协议, 建立合同的思想与“工业招标”类似。 Davis 和 Smith 以分布式感应系 统为背景实现了合同网络。 (2) 动态层次控制。 Findler 等在合同网络的基础上,提出动态层次控制的任务分解与 任务分配方法。按此方法, 系统在任务分解之后, 首先对各结点的处理能力进行分析, 综合 问题求解环境数据, 建立结点问题控制关系框架与全局性冲突监控关系网络, 然后按控制关 系框架分布任务进行协作求解。求解过程中出现的条件资源冲突分别通过商议、启发式知识, 以及全局性冲突监控网络来解决。Findler 等在工厂联合体生产规划系统中对上述思想做了模 拟实验。 (3) 自然分解, 固定分配。Lesser 和 Corkill 等在分布式车辆监控实验系统 DVMT 中采用 了“自然分解, 固定分配”的任务分解与任务分布算法。据此方法, 预先将被监控区域划分 为若干相互重叠的子区域, 各子区域内的传感器将收到的数据送至邻近结点进行处理。 (4) 部分全局规划。 Durfee 和 Lesser 提出了一种灵活的协调方式, 即部分全局规 划。一个部分全局规划包括目标信息、规划活动图、解结果构造图, 以及状态信息四部分。 目标信息包括部分全局规划的最终目标和重要性等信息;规划活动图表示结点的工作, 如结 点目前正进行的主要规划步骤及其成本、期望结果等;解结果构造图中的信息说明结点之间 的交互关系;状态信息记录自其它结点收到的有关信息的指针、收到时间等。通过交换部分 全局规划, 可以进行动态的任务分解与任务分布。 以上四种方法中, 前两种适合于任务分担方式求解的系统, 后两种适合于结果共享方式 求解的系统。 协作是分布式问题求解研究的重要方面。根据结点间协作量的多少, 将分布式问题求解 系统中的协作分为三类: (1) 全协作系统。在这类系统中, 结点可以为了系统目标或其它结点的目标而对本身的 求解目标进行修改, 从而能处理相互依赖的子问题, 协作量大, 且通信成本高。 (2) 无协作系统。各结点根本不协作, 无通信成本。 (3) 半协作系统。在一定程度上进行协作的系统。 在分布式问题求解系统中, 保持全局一致性意味着各结点的问题求解朝着有利于实现系 统目标的方向进行。Corkill, Lesser 和 Durfee 研究了分布式问题求解系统中通过组织结 构实现元级控制的方法。Naseem 和 Pamesh 研究了基于知识的分布式系统中不确定处理的 问题, 并给出了一个结果综合模型。 在分布式问题求解中, 常用的通信方式有共享全局存贮器、信息传递, 以及二者的结合。 黑板模型是分布式问题求解系统中使用较多的框架结构。Lesser 等人在 DVMT 系统的黑板模型 中,增加了目标黑板、抽象级黑板以及复杂的规划机制。系统中聚合器根据数据黑板上的信 息产生规划所用的抽象数据,并将其存放在抽象级黑板上。目标处理器负责目标的分解,并 产生知识源例示队列。规划程序结合抽象级数据、知识源例示队列以及网络系统的组织结构 信息进行处理,产生规划队列。系统运行时根据本体黑板信息的变化状态以及网络中其它求 解器的状态,对规划的实施进行动态调整。 主体结构需要解决的问题是主体由哪些模块组成,它们之间如何交互信息,主体感知到 的信息如何影响它的行为和内部状态,以及如何将这些模块用软件或硬件的方式组合起来形 www.aibbt.com 让未来触手可及 360 成一个有机的整体,真正实现主体。 14.3 主体基础 多主体系统主要研究在逻辑上或物理上分离的多个主体协调其智能行为,即知识、目标、 意图及规划等,实现问题求解。多主体系统可看作是一种由底向上设计的系统,因为在原理 上,分散自主的主体首先被定义,然后研究怎样完成单个或几个主体的任务求解。多主体系 统不仅可以处理单一目标, 也可以处理不同的多个目标。 主体相应的英文词是“Agent”。在英文中“Agent”这个词主要有三种涵义:一是指能 对其行为负责的人;二是指能够产生某种效果的,在物理、化学或生物意义上活跃的东西; 三是指代理,即接收某人的委托并代表他执行某种功能,因此有人称为代理。在计算机和人工 智能领域中, 主体可以看作是一个实体,它通过传感器感知环境,通过效应器作用于环境。 若主体是人,则传感器有眼睛、耳朵和其它器官,手、腿、嘴和身体的其它部分是效应器。 若主体是机器人,摄像机等是传感器,各种运动部件是效应器。一般主体可以用图 14.1 表示。 图 14.1 主体与环境交互作用 通常认为一个主体需要具有下述部分或全部特性: (1) 自治性。这是一个主体的基本特性,即可以控制它自身的行为。主体的自治性体现 在:主体的行为应该是主动的、自发的;主体应该有它自己的目标或意图(intention);根 据目标、环境等的要求,主体应该对自己的短期行为作出计划。 (2) 交互性,即对环境的感知和影响。无论主体生存在现实的世界中(如机器人、Internet 上的服务主体等)还是虚拟的世界中(如虚拟商场中的主体等),它们都应该可以感知它们 所处的环境,并通过行为改变环境。一个不能对环境作出影响的物体不能被称为主体。 (3) 协作性。通常主体不是单独地存在,而是生存在一个有很多个主体的世界中。主体 之间的良好有效的协作可以大大提高整个多主体系统的性能。 (4) 可通信性。这也是一个主体的基本特性。所谓通信,指主体之间可以进行信息交换。 更进一步,主体应该可以和人进行一定意义下的“会话”。任务的承接、多主体的协作、协 商等都以通信为基础。 (5) 长寿性(或时间连贯性)。传统程序由用户在需要时激活,不需要时或者运算结束 后停止。主体与之不同,它应该至少在“相当长”的时间内连续地运行。这虽然不是主体的 必须特性,但目前一般认为它是主体的重要性质。 另外,有些学者还提出主体应该具有自适应性、个性等特性。在实际的应用中,主体经 常需要在时间和资源受到一定限制的情况下作出行动。所以,对于现实世界中的主体,除了 应该具有主体的一般性质外,还应该具有实时性。 目前,多主体系统的研究非常活跃。多主体系统试图用主体来模拟人的理性行为,主要 应用在对现实世界和社会的模拟、机器人和智能机械等领域。而在现实世界中生存、工作的 主体,要面对的是一个不断变化的环境。在这样的环境中,主体不仅要保持对紧急情况的及 www.aibbt.com 让未来触手可及 361 时反应,还要使用一定的策略对中短期的行为作出规划,进而通过对世界和其它主体的建模 分析来预测未来的状态,以及通过通讯语言实现和其他主体的协作或协商。 14.4 主体理论 14.4.1 理性主体 1987 年 Bratman 从哲学上对行为意图(intention)的研究对人工智能产生了广泛的影响。 他认为只有保持信念(belief)、愿望(desire)和意图(intention)的理性平衡,才能有效地解 决问题。在开放世界中,理性主体(rational agent)的行为不能直接由信念、愿望, 以及由 两者组成的规划驱动,在愿望与规划之间应有一个基于信念的意图存在。其原因是: (1) 主体的行为受有限资源的约束,一旦主体决定做什么,就建立了一个承诺 (committment)的有限形式。 (2) 在多主体环境中,需要由承诺来协调各主体的行为。若无承诺,则无从谈行为。意 图正是一种承诺的选择。 在开放和分布的环境中,一个理性主体的行为受制于意图。意图又表现为: (1) 一个主体要改变自己已有的意图必须要有理由; (2) 一个主体不能无视环境的变化而坚持不符合实际或已不重要的意图。 理性平衡的目的在于使理性主体的行为符合环境的特性。所谓环境特性不仅仅指环境的 客观条件,同时包含环境中的社会团体因素,如社会团体关于理性行为的判断法则。Bratman 给出了意图—行为原则:如果主体 A 有进行行为 B 的当前行为意图是合理的,那么 A 把意图 转化为行为,有意地进行行为 B 就是合理的。 在给定时间里,主体理性表现为: (1) 性能测度规定成功的程度。 (2) 主体感知所有事情,我们将把这个完整的感知历史称为感知序列。 (3) 主体知道环境是什么。 (4) 主体可以执行的动作。 一种理想的理性主体可以定义为:对于每种可能的感知序列,理想的理性主体,在感知 序列所提供的证据和主体内部知识的基础上,应该做的所期望的动作是使它的性能测度为最 大。 14.4.2 BDI 主体模型 BDI 主体模型可以通过下列要素描述: (1) 一组关于世界的信念; (2) 主体当前打算达到的一组目标; (3) 一个规划库,描述怎样达到目标和怎样改变信念; (4) 一个意图结构,描述主体当前怎样达到它的目标和改变信念。 Rao 和 Georgeff 提出了一个简单的 BDI 解释器(Rao and Georgeff 1992): BDI-Interpreter initialize-state(); do www.aibbt.com 让未来触手可及 362 options := option-generator(event-queue, B, G, I); selected-options := deliberate(options, B, G, I); update-intentions(selected-options, I); execute(I); get-new-external-events(); drop-successful-attitudes(B,G,I); drop-impossible-attitudes(B,G,I); until quit 14.4 主体结构 14.4.1 主体基本结构 主体可以看成一个黑箱,通过传感器感知环境,通过效应器作用环境。人主体的传感器 有眼、耳、鼻、以及其它器官,而手、腿、嘴、身体可以看成效应器。机器人主体有摄像机 等作为传感器,而各种马达是效应器。软件主体通过字符串编码作为感知和作用(见图 14.2)。 图 14.2 黑箱软件主体 图 14.3 智能主体的工作过程 大多数主体不仅要与环境交互作用,更主要的是处理和解释接收的信息,达到自己的目 的。图 14.3 给出了智能主体的工作过程。主体接收到的信息首先要以适当的方式进行融合, www.aibbt.com 让未来触手可及 363 并能为主体知识库所接受。信息融合特别重要,不同交互模块得到的结果可能不同,表达方 式也不一样。例如,对于同一件事,人提供的信息与智能主体得到的内容和形式不相同。信 息融合要识别和正确区分这种不一致性。 一旦主体接收外部信息,信息处理过程成为主体的核心,因为它反应主体的真正功能。信息 处理的目的是解释可用的数据,形成具体规划。因为每个主体都有具体的目标,内部目标的 影响必须作为影响的一部分考虑。如果影响弄清楚了就要采取行动,使之达到或接近目标。 形成规划时主体可以规定知识,包括对新情况反应的具体处理步骤。但是,这不是本质的东 西,因为主体执行可以不要规划。当要求对环境对象交互时,动作模块将使用合适的交互模 块。控制执行也是动作模块的任务。 由此可见,主体可以定义