“知识表示与知识推理”知识体的教学设计
2011-01-01常亮古天龙董荣胜钟艳如
计算机教育 2011年4期
摘要:知识表示与知识推理是智能信息处理的基础,在计算机科学和人工智能的众多领域有着广泛应用。知识表示与知识推理的教学,在CC2001和CS2008给出的计算机科学知识体中占据了两个知识单元的位置,但在国内尚未得到足够重视。本文首先阐述将知识表示与知识推理作为一门课程进行教学的必要性;接下来以CC2001和CS2008为参照,给出一个32课时的“知识表示与知识推理”教学知识体;最后对教学实践中遇到的主要问题进行分析,并针对这些问题提出相应解决对策。
关键词:知识表示与知识推理;教学设计;教学实践;数理逻辑;人工智能
知识表示与知识推理是智能信息处理的基础。从人工智能的角度看,知识是构成智能的基础,人类的智能行为依赖于利用已有的知识进行分析、猜测、判断和预测等。当人们希望计算机具有智能行为时,首先需要在计算机上表达人类的知识,然后再告诉计算机如何像人一样地利用这些知识。
自从人工智能领域诞生以来,知识表示与知识推理就一直是其中最为重要的子领域。经过五十多年的发展,知识表示与知识推理领域的许多研究内容、研究方法和研究成果已经深深渗入到计算机科学,进而对计算机学科的发展产生了深远的影响。例如,在C++、Java等面向对象程序设计语言中,“继承”这一最为核心的技术就来源于知识表示与知识推理。再如,在软件自动化领域,许多程序规格语言和程序验证技术都借鉴了知识表示与知识推理领域的Prolog语言等研究成果。从工程开发的角度看,专家系统、智能搜索引擎、智能控制系统、智能诊断系统、自动规划系统等具有所谓智能特征的系统都或多或少地依赖于知识表示与知识推理技术。因此,对于计算机专业的学生来说,学习知识表示与知识推理方面的课程,对于今后在相关领域从事系统开发和科学研究都大有裨益。
在ACM与IEEE-CS联合攻关组制订的计算教程CC2001(Computing Curricula 2001)中,知识表示与知识推理得到了高度重视。CC2001给出的计算机科学知识体由14个知识领域组成:在其中的IS(Intelligent Systems)知识领域中,关于知识表示与知识推理的内容占据了10个知识单元中的2个,即知识单元“(Is3)知识表示与推理”以及知识单元“(IS5)高级知识表示与推理”。在ACM和IEEE-CS进一步修订后的计算机科学教程CS2008(Computer Science Curriculum 2008)中,知识表示与知识推理同样得到了高度重视。此外,在我国高等学校计算机科学与技术教学指导委员会制定的计算机专业规范中,上述的IS3和IS5两个知识单元被全部包括到计算机科学专业的核心课程“人工智能”中。然而,据我们了解,由于“人工智能”在许多高校仅仅作为专业任选课开设,使得计算机相关专业的许多学生无法接触到知识表示与知识推理方面的内容。与此同时,由于课时数限制及没有得到重视等因素,实际开设的“人工智能”课程(包括本科生课程和研究生课程)往往难以覆盖CC2001在知识单元IS3和IS5中列出的各个知识点。
实际上,经过五十多年的发展,知识表示与知识推理领域已经沉淀出一系列基本的方法、理论和技术;这些方法、理论和技术在CC2001的知识单元IS3和IS5中基本上都以知识点的形式列举了出来。作为计算机专业的教育工作者,我们有责任将这些体现了几代人智慧结晶的知识介绍给学生。另一方面,从研究者的角度来看,知识表示与知识推理是一个非常活跃的研究领域;尤其是随着Web技术的发展以及Web科学的出现,知识表示与知识推理将在计算机科学中扮演越来越重要的角色。面对万维网这个全球最大的分布式信息库,如何让计算机对其中海量的数据和信息进行分析、推理和管理,进而为人类提供方便的知识服务,是目前信息技术领域面临的一个重大问题。针对这个问题,国内外研究者基本上都是从人工智能的角度寻求解决思路;近年来成为研究热点的语义Web更是完全建立在知识表示与知识推理的基础上。因此,从开拓学生思维以及介绍研究与技术前沿的角度来看,也非常有必要向学生讲授知识表示与知识推理的相关内容。
基于以上认识,我们为计算机软件与理论专业和计算机应用技术专业一年级的硕士研究生开设了一门32课时的选修课程,以CC2001和CS2008列出的知识单元为核心,对知识表示与知识推理的相关内容进行教学。本文对教学设计和教学实践中遇到的主要问题进行分析,针对这些问题给出相应的解决对策,并对我们获得的经验和教训进行总结。
1 “知识表示与知识推理”知识体的教学设计
自上世纪九十年代以来,国内外许多高校就将“知识表示与知识推理”作为一门课程,面向研究生或高年级的本科生开设。其中比较著名的包括加拿大多伦多大学Hector J.Levesque教授开设的知识表示课程,美国斯坦福大学Leom Morgenstem教授开设的知识表示课程,英国曼彻斯特大学Ulrike Sattler教授等讲授的知识表示和推理课程,中山大学刘咏梅教授讲授的知识表示和推理课程等。但是,由于没有统一的课程设置标准,这些课程讲授的知识点都不尽相同。2000年,Leom Morgenstem和Richmond H.Thomason总结了开设知识表示与知识推理课程时面临的挑战,提出了相应的解决思路。其中,针对该课程缺乏统一的教学知识体的情况,他们设计了一个持续14周、每周2次课的教学大纲。在文献[5]中,Leora Morgenstem进一步修订了之前提出的教学大纲,建议在其中增加语义Web及Web本体语言OWL等内容。
尽管目前各高校开设的知识表示与知识推理课程的课程大纲仍然不尽相同,但比较可喜的是,对知识表示与知识推理的教学在CC2001计算教程中得到了高度重视。CC2001分别在“知识表示与推理”和“高级知识表示与推理”两个知识单元中列出了关于知识表示与知识推理的教学内容。知识单元“知识表示与推理”由以下知识点组成:命题逻辑和谓词逻辑回顾,归结原理与定理证明,非单调推理,概率推理,贝叶斯定理。知识单元“高级知识表示与推理”由以下知识点组成:结构化知识表示(包括对象与框架、描述逻辑和继承系统),非单调推理(包括非经典逻辑、缺省推理、信念修正、偏好逻辑、知识源的集成、冲突信念的聚合),对动作和变化的推理(包括情景演算、事件演算和分枝问题),时态和空间推理,非确定性推理(包括概率推理、贝叶斯网络、粗糙集和可能性理论、决策理论),针对诊断的知识表示与定性知识表示。在CC2001的基础上,CS2008在知识单元“知识表示与推理”中增加了合一与提升、前向链接、反向链接以及归结等知识点;在知识单元“高级知识表示与推理”中增加了本体工程和语义网络两个知识点。
以CC2001和CS2008列出的知识点为基础,在综合考察了国内外相关课程的开设情况之后,我们对“知识表示与知识推理”课程的教学内容及相应的学时分配设计如下。
1)概述(2学时)。介绍知识表示与知识推理领域的发展历史、现状和前景:讲授知识表示的基本思路和基本原理;介绍知识表示方法和技术的典型应用:列举典型的采用了知识表示技术的系统,与没有采用知识表示技术的系统进行比较分析。
2)基于一阶谓词逻辑的知识表示和推理(4学时)。讲授一阶谓词逻辑的语法、语义和语用;通过例子讲授如何应用一阶谓词逻辑进行知识表示;讲授如何应用消解原理进行知识推理;讲授如何应用Tableau算法进行知识推理;分析一阶谓词逻辑存在的局限。
3)Horn子句逻辑与产生式系统(2学时)。讲解Horn子句及其过程解释;介绍SLD归结以及分别采用反向链和正向链的推理过程;通过例子讲授如何应用Horn子句逻辑进行知识表示和推理;对Prolog语言进行简单介绍;通过例子介绍如何应用产生式系统进行知识表示和推理。
4)结构化知识表示(6学时)。介绍对象与框架,介绍基本的框架形式系统:介绍语义网络,对推理过程中的继承机制进行介绍。介绍描述逻辑家族的研究历史和发展现状;以逻辑系统ALC为例,讲解描述逻辑的语法和语义;通过例子讲授如何应用描述逻辑进行知识表示;讲授如何应用Tableau算法对描述逻辑刻画的知识进行推理。
5)非单调知识表示和推理(4学时)。介绍非单调性推理的研究历史;讲解封闭世界假设与开放世界假设;讲解缺省推理和限定推理;对自认知逻辑、偏好逻辑和真值维持系统进行介绍;对信念修正、知识源的集成以及冲突信念的聚合进行介绍。
6)非确定知识表示和推理(4学时)。对模糊逻辑进行介绍;讲授概率推理和主观贝叶斯方法;对粗糙集、可能性理论和决策理论进行介绍。
7)解释与诊断(2学时)。讲授反绎推理的基本思路,将其与演绎推理和归纳推理进行比较分析;以一个电路系统为例,讲授如何在知识表示的基础上采用反绎推理进行故障诊断。
8)动作与规划(4学时)。介绍动作与规划领域的研究历史和发展现状;讲授如何在STRIPS系统中对动作进行刻画以及如何进行规划求解:讲授如何应用情景演算和事件演算对动作进行刻画、推理、及规划求解;对框架问题、条件问题和分枝问题进行介绍;对规划语言PDDL进行介绍。
9)时态和空间推理(2学时)。对时间点/时间段、离散/连续、有限/无限、线性/分支等表示时态信息的不同方式进行介绍;对Allen的区间代数理论进行介绍;对线性时态逻辑和分支时态逻辑进行介绍;对基于点/基于区域、离散/连续、有限/无限、同维/混合维等表示空间信息的不同方式进行介绍;对区域连接演算RCC进行介绍;对时态与空间推理的结合进行简单介绍。
10)语义Web和本体工程(2学时)。介绍语义Web的基本思想、技术现状和发展趋势;讲授语义Web的层次模型以及各个层次的目标和功能;对资源描述框架RDF、Web本体语言OWL、Web规则标记语言RIF、Web查询语言SPARQL等进行介绍。对本体的构建、管理和维护进行介绍。
上述教学内容的基本特点是覆盖了CC2001和CS2008列出的关于知识表示与推理的所有知识点。此外,我们将目前作为计算机科学和人工智能领域研究热点的语义Web等内容引入了课堂教学,不仅可以将相关研究前沿展示在学生面前,而且还可以让学生更加深刻地体会学习知识表示与知识推理的价值,进一步激发他们的学习热情。另一方面,上述教学内容存在的一个缺陷是内容过多。由于受到课时数的限制,部分内容在讲授时不能充分展开,留给学生课堂练习和讨论的时间不充裕。
2 教学实践中的主要问题及对策
在围绕“知识表示与知识推理”知识体开展教学实践时,我们遇到的问题主要来自以下几个方面:教师和学生对“人工智能”课程以及其中的“知识表示与知识推理”知识体不重视,缺乏合适的教材,学生缺乏必要的基础知识。下面对这些问题进行逐一分析,对我们采取的对策进行相应介绍。
2.1 师生对“人工智能”课程不重视
许多教师和学生对“人工智能”课程不够重视,甚至存在偏见。我们觉得,这种现状很大程度上是由人工智能自身的发展历程造成的。人工智能领域刚诞生时就被赋予过高的期望;早期的研究者也过于乐观地给出了一些不切实际的承诺。由于不能在短期内实现过高的目标和兑现相应的承诺,使人工智能领域在上世纪80年代末90年代初一度跌入低谷,甚至达到了声名狼藉的地步。这一特殊的发展历程使得一部分对人工智能了解不多的教师和学生产生误解,认为人工智能是一个比较务虚的领域。这种误解甚至影响到“人工智能”课程的开设。目前,在许多高校计算机相关专业的课程设置中,“人工智能”往往只作为选修课程开设,没有得到教师和学生的普遍重视。
实际上,从信息技术发展规律的角度来看,人工智能的上述发展历程是很正常的。根据市场权威研究机构Gartner给出的“技术成熟度曲线”(hype cycle)理论,一项新的IT技术在产生之后,一般先是默默无闻地奋力发展几年,然后会由于被大家寄予很高的期望而迅速火爆起来,接着会因为没能兑现过高的承诺而跌入谷底,最后会再次崛起并由于过硬的成就而被大众普遍接受。人工智能已经经历了从默默无闻到迅速火爆再到跌入谷底的发展过程,目前正处于再次崛起的阶段,并且将通过不断取得的成就而被大众普遍接受。
人工智能的教学在CC2001和CS2008中得到了高度重视。CC2001给出的计算机科学知识体由14个知识领域组成,作为其中的知识领域之一,智能系统(即人工智能)与离散结构、程序设计、操作系统、计算机体系结构等已经得到普遍重视的知识领域具有了相同的地位。在我国高等学校计算机科学与技术教学指导委员会制定的计算机专业规范中,也将“人工智能”作为了计算机科学专业的核心课程。但是,对人工智能相关知识的传播需要一个长期的过程,仍然需要广大科研和教育工作者的不懈努力。
2.2 师生对“知识表示与知识推理”知识体不重视
即便部分教师和学生认识到人工智能知识领域的重要性,但对于其中的“知识表示与知识推理”知识体仍然不够重视,认为没有必要专门通过一门课程进行教学。
针对这个问题,我们可以对人工智能领域的发展历程作进一步考察。我们知道,人工智能领域的诞生就是从知识表示和知识推理开始的。在1956年标志着人工智能诞生的Dartmouth会议上,Herbert Simon和Allen Newell展示的“逻辑理论家”就依赖于知识表示和知识推理。在此之后的五十多年中,知识表示与知识推理就一直是人工智能中最为重要的子领域。相应的一个佐证是,1966年到2009年期间,在获得图灵奖的56名科学家中,Marvin Minsky、John Mccarthy、Herbert Simon、Allen Newell、Edward Feigenbaum和Raj Reddy等6名科学家都在知识表示与知识推理领域取得了开创性的研究成果。
知识表示与知识推理的重要性在CC2001和CS2008中同样得到了体现。CC2001给出的“智能系统”知识领域由以下10个知识单元组成:智能系统中的基本问题、搜索与约束求解、知识表示与推理、高级搜索、高级知识表示与推理、智能主体、自然语言处理、机器学习与神经网络、人工智能规划系统、机器人;C$2008在CC200I的基础上增加了智能感知这个知识单元。其中,关于知识表示和知识推理的教学内容不仅占据了两个知识单元,而且在智能主体、人工智能规划系统、机器人等知识单元中也占据了相应的多个知识点的位置。由于32课时的人工智能选修课程通常只能对上述知识单元作一个概要性的介绍,对于想进一步深入学习的学生,在有条件的情况下,我们完全有必要开设一门关于“知识表示与知识推理”的课程。另外,从上一节给出的教学设计可以看出,如果要覆盖CC2001和CS2008给出的关于知识表示与知识推理的所有知识点,一门32课时的课程在时间上还很不够用。因此,基于以上分析,我们希望“知识表示与知识推理”的教学首先能够得到相关教师的认可和重视,然后通过课程设置等途径逐渐吸引学生的关注,并在教学过程中激发起学生的学习兴趣和热情。
2.3 缺少合适的教材
尽管CC2001和CS2008详细地列出了关于知识表示与知识推理的主要知识点,但是,据我们所知,目前还没有出现完全覆盖这些知识点的合适教材,而中文的相关教材更是缺乏。
在参考了多方面的资料之后,我们选择了Ronald Brachman和Hector Levesque撰写的《Knowledge Representation and Reasoning》作为教材。Ronald Brachman和Hector Levesque都是知识表示与知识推理领域的著名学者。其中,Ronald Brachman于1977年在哈佛大学攻读博士学位时提出了KL-ONE系统,开创了目前成为研究热点的描述逻辑领域,之后于2003年担任了美国人工智能学会的主席,目前是ACM院士、雅虎全球研究运营副总裁。Hector Levesque在知识表示领域也做出了许多开创性的研究成果,曾于2001年担任人工智能顶级会议IJCAI的主席,于2006年当选加拿大皇家学会会士。除了时态和空间推理以及本体工程这两个知识点之外,CC2001和CS2008中列出的其他关于知识表示与知识推理的知识点,在《Knowledge Representation and Reasoning》中都基本上得到了体现。另外,为了在课程中向学生介绍语义Web方面的知识,我们选择了Grigoris Antoniou和Frank van Harmelen撰写的《A Semantic Web Primer》作为参考书目。
2.4 学生缺乏必需的基础知识
知识表示与知识推理的核心思想是采用形式语言(尤其是逻辑语言)对知识进行刻画和推理,因此要求学生在学习该课程前具有扎实的数理逻辑基础知识。
尽管数理逻辑对于整个计算机学科来说具有非常重要的作用,但在目前计算机相关专业的课程设置中,数理逻辑往往只作为离散数学课程的一个部分进行教学,在课时数量上非常有限。此外,从教材的角度来看,大部分离散数学教材的数理逻辑部分主要介绍命题逻辑的相关知识,而且只介绍命题逻辑联结词、范式、等值演算、自然推理系统等最基本的内容;对一阶谓词逻辑以及命题逻辑中更为深入的内容介绍得很少,甚至不介绍。这些内容对于学习知识表示与知识推理知识体来说远远不够。例如,根据我们在讲授“知识表示与知识推理”之前的调查,许多研究生对于一阶谓词逻辑的语法与语义等基本概念都还比较模糊,对于消解原理、Tableau方法、可满足性问题等内容更是没有接触过。
针对上述问题,除了原计划关于一阶谓词逻辑知识表示的4个课时之外,我们临时增加了2个课时的课堂教学,为学生补充命题逻辑的语法和语义、公式可满足性问题、Tableau判定算法、基于消解原理的判定算法等内容。由于受到课时的限制,许多重要的结论及其证明过程无法在课堂上详细阐述。
值得一提的是,由于研究课题的需要,我们组织部分研究生一起学习了John Bell和Moshe Machover撰写的著名教材《A Course in Mathematical Logic》。在学习这本教材时,我们将研究生分为三个小组,让各个小组自学该教材,对其中的引理、定理以及问题(Problem)进行证明或求解,然后在每周一次的学习班上使用黑板讲解他们的证明或求解过程。在3个月的时间里,将这本教材中的第一章和第二章学完后,这些研究生的数理逻辑知识明显上了一个台阶。在之后学习知识表示与知识推理的过程中,这部分研究生的学习效果也明显好得多。在今后的教学中,我们希望计算机相关专业的研究生能够先学习一门数理逻辑方面的课程,然后再学习知识表示与知识推理课程。
3 结语
随着万维网的兴旺以及语义Web逐步成为现实,知识表示与知识推理领域面临着前所未有的机遇和挑战。对于计算机相关专业的研究生来说,在学习并掌握了知识表示与知识推理方面的内容之后,既可以更好地开展研究课题,也可以在今后的工程开发中找到切实的用武之地。
以CC2001和CS2008在计算机科学知识体中列出的知识点为参照,笔者给出了关于“知识表示与知识推理”知识体的教学设计。在此基础上,笔者对教学实践中遇到的主要问题进行了分析,对我们采取的对策及获得的经验和教训进行了总结。本文给出的教学设计和教学实践虽然是针对研究生的,但对于高年级本科生相关课程的教学也具有借鉴意义。
(编辑:张