产生式系统的教学实践研究
2015-08-22郑波尽钟凯瑞
郑波尽 钟凯瑞
摘要:产生式系统是人工智能教学中的重点和难点。本文进行了七个学期的教学实践,通过设置对照组,定性地研究了在不同教学方法下学生的表现。结果发现:1)在教学环节中,强调实践、要求学生自行编制出程序是重要的,这能有效地促进学生理解;2)在开放式教学情形下,学生的创造性会得到发挥;3)激发学生的兴趣,则能有效地提高学生参与编程的积极性。通过总结教学经验,凝练出在产生式系统教学中需遵循的“兴趣导向、实践优先、开放活泼”的教学思路。
关键词:产生式系统;人工智能;教学实践
中图分类号:TP3-05 文献标识码:A DOI:10.3969/j.issn.1003-6970.2015.05.007
0 引言
产生式系统是人工智能中的一个经典部分。产生式系统的教学在人工智能的教学具有承上启下的作用。首先,学生需要理解知识表中的逻辑表示方法之后才能更容易地学习该部分,这里,产生式系统表现出承接作用;其次,理解了产生式系统,才能更容易地学习人工智能中其他相关知识。正是因为产生式系统具有承上启下的作用,该部分的教学对于学生的融合贯通起着关键作用。此外,编写产生式系统可以训练学生的逻辑能力,也可以作为计算机语言教学的良好实例。
对于产生式系统部分的教学,主要目的在于:让学生理解产生式系统的基本构造,并能利用产生式系统求解问题。在我们的教学中,要求学生能够使用产生式系统解决一些有趣的智力题,从而真正体现机器求解智力问题的能力。
为了达到该目的,我们在七个学期的课程上进行了各种探索。本文通过总结这七个学期的经验,提出产生式系统教学中需遵循的“兴趣导向,实践优先,开发活泼”的教学思路。
1 教学实践案例
在本教学实践案例中,共选择了2006—2007学年两个学期、2007—2008学年第一个学期、2010—2011学年两个学期,2011—2012学年两个学期作为考察对象。在授课中,分为《人工智能A》和《人工智能B》两种教学形式。选择《人工智能B》的班级不进行上机实验操作,而选择《人工智能A》的班级需要在计算机上完成相应的实验。
为了达到形象化教学的目标,在产生式系统的教学中,选择了一个智力题作为算法求解目标。该题目常称为量水问题,可简单描述如下:
有两个无刻度标志的空水壶,分别可装4升和3升的水。设另有一个10升的水壶装满了水。各个水壶之间仅可以相互倾灌。问如何通过倒水或灌水操作,量出2升的水来。
该问题是一个典型的智力问题。对于大学生来讲,该问题并不困难。但是,用计算机来求解确实一个具有挑战性的问题,因为,学生们不仅仅是自己会求解该问题,还要让机器也能做到。
1.1 教学情况说明
为了考察实践编程环境的影响,对于《人工智能B》的班级,仅进行理论教学。教学步骤为:1)简单介绍产生式系统的构成:数据库、规则库、推理机;2)讲授水壶之间倾倒的所有规则;3)给出程序,将程序中的各条语句与理论一一对应说明。
对程序部分,则教授由教师所编写的程序。具体教学内容如下:
1)首先定义数据库中的变量,即水壶中已存水的数量。定义了三个变量,并赋予初值。程序用C语言可以写作如下语句:
1.2 教学效果说明
对于所有班级的学生,都组织书面考试。考试的题目就是默写整个程序。由于选课学生的专业不同,因此,卷面成绩的波动较大。数学专业的学生选择的是《人工智能B》,从卷面上看,小错漏较多,说明多数是靠背诵过关。自动化专业和计算机科学与技术专业的学生选择的是《人工智能A》,多数情形下表现略好。然而,在前五个学期的教学实践中,教师先行给出了程序,相反地,学生错漏的出现率较高,说明学生的依赖心理较重,靠背诵过关;在后两个学期中,教师没有先行给出程序,卷面成绩反而上升,小错漏减少,说明学生理解的程度较高。这部分的结果表明:实践环节对教学效果的影响很大,加入实践环节能显著提高教学效果。
除开书面考试成绩的比较,当没有先行给出程序时,学生们最主要的进步是在实验环节。由于没有程序,学生们开动脑筋,对于量水问题给出了很多其他的方案。在2010—2011学年,学生提出了用宽度优先、深度优先等搜索策略来改进随机推理机制,以获得最简单的倒水方案,并给出了正确的源程序。在2011—2012学年第二个学期,学生们又提出了一个意想不到的新策略。
学生提出的策略是:每次将4升壶的水倒入3升壶,3升壶的水倒入10升壶,而10升壶的水倒满4升壶。由于从数学上看,数字4和3互质,且相差仅仅为1,因此,这一个循环倾倒的策略总能获得2升水。即使是换成要量出5升水等形式,也很容易地能得到。
学生所提出的策略从编程上看,更为简单,也能达到以前程序的效果,充分说明了大学生的创新能力。
从以上两次学生提出的创新思路,尤其是后一次的思路来看,教学效果要远远好于以前的固定刻板的教学模式,说明在开放式情形下,学生的创造性能够得到发挥。
因为实践环节对教学效果非常重要,在后面两个学期的教学中,我们着重强调了提升学生兴趣的教学环节,增加了学生编写程序的积极性。
2 经验总结
从这个教学案例中,可以总结出这么几方面的经验:
1)在产生式系统的教学中,切忌只是从理论到理论。从理论到理论的方式会使得学生失去基本的兴趣。当失去基本的兴趣以后,学生将不再配合学习,从而使得后续的教学更为艰难。
2)最好采用案例教学的方式。采用案例教学的方式会使得学生更容易理解,更容易接受。对于案例的选择,可以选择传教士过河问题、量水问题、八皇后问题等学生喜闻乐见的智力题,要求学生用计算机程序的方式解决。在案例的选择上,要坚持简单原则,太复杂的程序学生会不太喜欢。从实践上看,量水问题比传教士过河问题要简单,因此,建议多选择这样的案例。
3)相信学生,从而给学生表现的机会。大学生处于创造力的高峰时期,如果能够激发学生的兴趣,则学生自然会在兴趣的指引下发挥其创造力,给出更简单更有效的方案。
4)实践优先。由于长期的应试教育的熏陶,大学生普遍具有“等、靠、要”的思想。如果不给予实践的机会,多数大学生们通常不会去尝试求解难度较大的问题。在实践中,要避免将学生看作机器,不能要求学生完全按照实验操作规程进行操作。这样的标准化、刻板化的实践的确从表面上看实验报告更漂亮,但实际上,学生多数情况下是知其然,不知其所以然。从教学的本质上讲,这样做是违背教学规律的。
5)理论升华。在实践完成以后,教师一定要抓住机会,将程序中的各个部分与理论中的各个部分对应起来。这样学生才能够融会贯通,真正理解产生式系统。
总而言之,对于产生式系统这样的知识点,在实践中采用“兴趣导向,实践优先,开放活泼”的教学思路是可行的。
3 结束语
对于《人工智能》课程中产生式系统这一知识点,本文讨论了教学中的一点心得体会,总结出“兴趣导向,实践优先,开放活泼”的教学思路。目前,在《人工智能》的教学中,对于产生式系统这部分的教学,我们坚持使用本文提到的思路,效果良好。从学生的反应来看,加深了对于机器求解问题的理解,加深了对人工智能的理解。