第五章机器学习机器学习是继专家系统之后人工智能应用的又一重要研究领域,也是人工智能和神经计算的核心研究课题之一。现有的计算机系统和人工智能系统没有什么学习能力,至多也只有非常有限的学习能力,因而不能满足科技和生产提出的新要求。本章将首先介绍机器学习的定义、意义和简史,然后讨论机器学习的主要策略和基本结构,最后逐一研究各种机器学习的方法与技术,包括机械学习、基于解释的学习、基于事例的学习、基于概念的学习、类比学习和基于训练神经网络的学习等。对机器学习的讨论和机器学习研究的进展,必将促使人工智能和整个科学技术的进一步发展。现在,我们先来讨论第五章的第一节,机器学习的研究意义与发展历史……5.1机器学习的研究意义与发展史5.1.1机器学习的定义和研究意义学习是人类具有的一种重要智能行为,但究竟什么是学习,长期以来却众说纷纭。社会学家、逻辑学家和心理学家都各有其不同的看法。按照人工智能大师西蒙的观点,学习就是系统在不断重复的工作中对本身能力的增强或者改进,使得系统在下一次执行同样任务或类似任务时,会比现在做得更好或效率更高。西蒙对学习给出的定义本身,就说明了学习的重要作用。机器能否象人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对奕中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。机器的能力是否能超过人的,很多持否定意见的人的一个主要论据是:机器是人造的,其性能和动作完全是由设计者规定的,因此无论如何其能力也不会超过设计者本人。这种意见对不具备学习能力的机器来说的确是对的,可是对具备学习能力的机器就值得考虑了,因为这种机器的能力在应用中不断地提高,过一段时间之后,设计者本人也不知它的能力到了何种水平。什么叫做机器学习(machinelearning)?至今,还没有统一的“机器学习”定义,而且也很难给出一个公认的和准确的定义。为了便于进行讨论和估计学科的进展,有必要对机器学习给出定义,即使这种定义是不完全的和不充分的。顾名思义,机器学习是研究如何使用机器来模拟人类学习活动的一门学科。稍为严格的提法是:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。这里所说的“机器”,指的就是计算机;现在是电子计算机,以后还可能是中子计算机、光子计算机或神经计算机等等。5.1.2机器学习的发展史机器学习是人工智能研究较为年轻的分支,它的发展过程大体上可分为4个时期。第一阶段是在50年代中叶到60年代中叶,属于热烈时期。…第二阶段是在60年代中叶至70年代中叶,被称为机器学习的冷静时期。…第三阶段是从70年代中叶至80年代中叶,称为复兴时期。…机器学习的最新阶段始于1986年。…机器学习进入新阶段的重要表现在下列诸方面:(1)机器学习已成为新的边缘学科并在高校形成一门课程。它综合应用心理学、生物学和神经生理学以及数学、自动化和计算机科学形成机器学习理论基础。(2)结合各种学习方法,取长补短的多种形式的集成学习系统研究正在兴起。特别是连接学习符号学习的耦合可以更好地解决连续性信号处理中知识与技能的获取与求精问题而受到重视。(3)机器学习与人工智能各种基础问题的统一性观点正在形成。例如学习与问题求解结合进行、知识表达便于学习的观点产生了通用智能系统SOAR的组块学习。类比学习与问题求解结合的基于案例方法已成为经验学习的重要方向。(4)各种学习方法的应用范围不断扩大,一部分已形成商品。归纳学习的知识获取工具已在诊断分类型专家系统中广泛使用。连接学习在声图文识别中占优势。分析学习已用于设计综合型专家系统。遗传算法与强化学习在工程控制中有较好的应用前景。与符号系统耦合的神经网络连接学习将在企业的智能管理与智能机器人运动规划中发挥作用。(5)与机器学习有关的学术活动空前活跃。国际上除每年一次的机器学习研讨会外,还有计算机学习理论会议以及遗传算法会议。5.2机器学习的主要策略与基本结构5.2.1机器学习的主要策略学习是一项复杂的智能活动,学习过程与推理过程是紧密相连的,按照学习中使用推理的多少,机器学习所采用的策略大体上可分为4种——机械学习、通过传授学习、类比学习和通过事例学习。学习中所用的推理越多,系统的能力越强。…5.2.2机器学习系统的基本结构我们以西蒙的学习定义做为出发点,建立起下图5.1所示的简单的学习模型,然后通过对这个简单模型的讨论,总结出设计学习系统应当注意的某些总的原则。图5.1学习系统的基本结构上图表示学习系统的基本结构。环境向系统的学习部分提供某些信息,学习部分利用这些信息修改知识库,以增进系统执行部分完成任务的效能,执行部分根据知识库完成任务,同时把获得的信息反馈给学习部分。在具体的应用中,环境,知识库和执行部分决定了具体的工作内容,学习部分所需要解决的问题完全由上述3部分确定。下面我们分别叙述这3部分对设计学习系统的影响。影响学习系统设计的最重要的因素是环境向系统提供的信息。或者更具体地说是信息的质量。知识库里存放的是指导执行部分动作的一般原则,但环境向学习系统提供的信息却是各种各样的。如果信息的质量比较高,与一般原则的差别比较小,则学习部分比较容易处理。如果向学习系统提供的是杂乱无章的指导执行具体动作的具体信息,则学习系统需要在获得足够数据之后,删除不必要的细节,进行总结推广,形成指导动作的一般原则,放入知识库,这样学习部分的任务就比较繁重,设计起来也较为困难。因为学习系统获得的信息往往是不完全的,所以学习系统所进行的推理并不完全是可靠的,它总结出来的规则可能正确,也可能不正确。这要通过执行效果加以检验。正确的规则能使系统的效能提高,应予保留;不正确的规则应予修改或从数据库中删除。知识库是影响学习系统设计的第二个因素。知识的表示有多种形式,比如特征向量、一阶逻辑语句、产生式规则、语义网络和框架等等。这些表示方式各有其特点,在选择表示方式时要兼顾以下4个方面:(1)表达能力强。(2)易于推理。(3)容易修改知识库。(4)知识表示易于扩展。对于知识库最后需要说明的一个问题是学习系统不能在全然没有任何知识的情况下凭空获取知识,每一个学习系统都要求具有某些知识理解环境提供的信息,分析比较,做出假设,检验并修改这些假设。因此,更确切地说,学习系统是对现有知识的扩展和改进。执行部分是整个学习系统的核心,因为执行部分的动作就是学习部分力求改进的动作。同执行部分有关的问题有3个:复杂性、反馈和透明性。…5.3几种常用的学习方法5.3.1机械学习1.机械学习的模式及主要问题(1)机械学习模式机械学习是最简单的机器学习方法。机械学习就是记忆,即把新的知识存储起来,供需要时检索调用,而不需要计算和推理。机械学习又是最基本的学习过程。任何学习系统都必须记住它们获取的知识。在机械学习系统中,知识的获取是以较为稳定和直接的方式进行的,不需要系统进行过多的加工。而对于其它学习系统,需要对各种建议和训练例子等信息进行加工处理后,才能存储起来。当机械学习系统的执行部分解决好问题之后,系统就记住该问题及其解。我们可把学习系统的执行部分抽象地看成某个函数,该函数在得到自变量输入值(X1,X2,…,Xn)之后,计算并输出函数值(Y1,Y2,…,Yp)。机械学习在存储器中简单地记忆存储对((X1,X2,…,Xn),(Y1,Y2,…,Yp))。当需要f(X1,X2,…,Xn)时,执行部分就从存储器中把(Y1,Y2,…,Yp)简单地检索出来而不是重新计算它。这种简单的学习模式如下:作为例子,让我们考虑一个决定受损汽车修理费用的汽车保险程序Lenat,HayesRoth,和Klahr等人于1979年关于机械学习提出一种有趣的观点。他们指出,可以把机械学习看成是数据化简分级中的第一级。数据化简与计算机语言编译类似;其目的是把原始信息变成可执行的信息。在机械学习中我们只记忆计算的输入输出,忽略了计算过程,这样就把计算问题化简成存取问题,见图5.2。正像计算问题可以简化成存取问题一样,其它的推理过程也可以简化成较为简单的任务。例如推导可以简化成计算。比方说第一次要我们解一个一元二次方程的时候,我们必须使用很长的一段推导才能得出解方程的求根公式。但是一旦有了求根公式,以后再解一元二次方程时,就不必重复以前的推导过程,可以直接使用求根公式计算出根,这样就把推导问题简化成计算问题。同样地,归纳过程可以简化成推导过程。图5.2数据化简级别图例如我们可以在大量病例的基础上归纳总结出治疗的一般规律,形成规则,当遇见一个新病例时,我们就使用规则去处理它,而不必参照以前的众多病例推断解决办法。化简的目的,主要是为了提高工作效率。(2)机械学习的主要问题对于机械学习,需要注意3个重要的问题:存储组织,稳定性和存储与计算之间的权衡。(a)存储组织信息。显然,只有当检索一个项目的时间比重新计算一个项目的时间短时,机械学习才有意义,检索的越快,其意义也就越大。因此,采用适当的存储方式,使检索速度尽可能地快,是机械学习中的重要问题。在数据结构与数据库领域,为提高检索速度,人们研究了许多卓有成效的数据存储方式,如索引、排序、杂凑等等,在机械学习中我们可以充分利用这些成果来实现我们的要求。(b)环境的稳定性与存储信息的适用性问题。在急剧变化的环境下机械学习策略是不适用的。做为机械学习基础的一个重要假定是在某一时刻存储的信息必须适用于后来的情况。然而如果信息变换得特别频繁,这个假定就被破坏了。(c)存储与计算之间的权衡。因为机械学习的根本目的是改进系统的执行能力,因此对于机械学习来说很重要的一点是它不能降低系统的效率。比方说,如果检索一个数据比重新计算一个数据所花的时间还要多,那么机械学习就失去了意义。这种存储与计算之间的权衡问题的解决方法有两种。一种方法是估算一下存储信息所要花费的存储空间以及检索信息时所花费的时间,然后将其代价与重新计算所花的代价比较,再决定存储信息是否有利。另一种方法是把信息先存储起来,但为了保证有足够的检索速度,限制了存储信息的量,系统只保留那些最常使用的信息,“忘记”那些不常使用的信息。这种方法也叫“选择忘却”技术。2.机械学习应用举例虽然机械学习是机器学习中最简单的策略,但是正确使用这种策略却能对提高应用软件系统的质量起着重要作用。下面介绍吉林大学开发的建筑工程预算软件系统中采用的机械学习策略。这种方法成功地解决了工程预算中较难处理的图集问题。建筑工程预算是建筑工程中一项困难而又重要的任务,工作量大,要求高。过去用手工编制,要花费很多时间。一份3000m2的民用建筑,一个技术人员手工编制预算需要15天至20天,加上工料分析,取费计算等等,需要近一个月时间,而且容易出错,影响预算的质量,造成资金、人员和材料的浪费与损失。近年来,随着电子计算机的普及应用,许多单位研制了建筑预算系统,减轻了建筑工程预算人员的繁重的脑力劳动,提高了工程预算的速度与准确性。但是,建筑预算中的关键问题——工程量计算问题,却始终没有得到很好地解决。这个问题的困难之一在于现行使用的建筑工程设计图纸上的数据与计算机要求的初始输入数据之间存在着很大的差距,只有靠建筑工程人员分析观察图纸,形成计算机可接受的初始输入,才能开始计算。造成工程量计算困难的第二个原因是设计图纸中出现的大量的门窗及预制件型号。预算中,工程技术人员需要不断查阅有关资料,决定这些预制件所需工时及材料。所采用的机械学习方法主要用来解决这一困难。建筑工程中使用的门窗,大都采用国家或省市的标准设计,如JGMC—1—16—3是建工部规定的标准木窗,窗宽1米,高1.6米,此外还确定了窗的式样,如该窗是亮子的,3开扇,中间固定,有小汽窗,根据这种标准设计图纸,人们预先计算出建造一个这种窗子所需的木料,玻璃,油漆,合页,铁角,拉手,所需木工量,油工量等等。在建筑工程图纸上,并不画出具体的窗子和门,只标明窗子和门的型号,预