人工智能教学难点剖析及经验总结 摘 要: 人工智能是一门新兴学科,经常发现所用教材存在诸多缺憾人工智能所包含的问题思维方式抽象,思路复杂,学生在学习时普遍存在困难,尤其是在其核心,符号主义和图搜索算法上为了克服这些困难,便于教和学,以多年的教学经验和思考,汇总了该课程难以把握、容易理解错的关键点和难点,揭示了其实质,并进行了深入的解读和说明,为清晰透彻地理解和掌握开辟了通道关键词: 人工智能; 符号主义; 图搜索; 教学:TP301 文献标志码:A :1006-8228(2018)10-87-04Abstract: Artificial intelligence is a comparatively new discipline, it is often found that there are some defects in textbooks used. Artificial intelligence is very abstract and complicated that most students will feel difficult in studying, especially in its core parts the symbolism and graph search algorithm. In order to overcome these difficulties and facilitate teaching and learning, with the years of teaching experience and thinking, this paper summarizes the key points and difficult points that are difficult to grasp or easy to misunderstand, reveal their essence, and deeply explains them, so as to develop a clear road for students to understand and grasp them.Key words: artificial intelligence; symbolism; graph search; teaching0 引言當代IT业经历了两次大的浪潮,这两次浪潮都极大地影响和改变了人类的生产和生活。
第一次是微软操作系统的出现及由此所导致的个人计算机的普及;第二次是互联网的兴起及其蓬勃发展所带来的生产规模和对人类工作生活的影响可以预料,即将到来的下一次浪潮其影响力将更加空前,这就是人工智能的发展及其无边的前景人工智能的学习和教学,显得尤为重要由于该课程为新兴学科,其教材或是直接翻译外文[1],或由编者编辑整理而成[2],往往存在错愕之处,而且表达方式也不太符合中国学生的学习习惯,不利于中国学生理解和掌握本文以张仰森、黄改娟所著“人工智能教程”[3]为例来说明人工智能这门课的教学本科生教学主要内容是这本书的前六章,也就是其原理篇笔者认为,这六章的内容,有两章是核心,即第三章符号主义和第五章搜索算法按该书的观点,人工智能发展至今,有三大主要流派:符号主义、联结主义和行为主义其中最主要的是符号主义,人工智能的大部分研究成果都集中在符号主义领域人工智能的发展依赖于两大方面,一是思维方式的不断改进和更新,二是搜索算法搜索算法与人工智能可以说是如影随形人工智能这门课有难度,如符号主义和Herbrand定理,有相当的难度一整套符号主义的方法相当于一个算法,这是一个比较大的算法,难度大而复杂就其原理、定理方法而论,符号主义的思维方式高度抽象,显然有别于其他课程,其思路复杂,学生普遍感觉难以掌握。
一个复杂的算法之所以难学,关键是它包含有一长串复杂的思路要掌握一个复杂算法,需要具备沿着一长串思维脉络深入下去的思维能力[4]这一长串思维彼此关联,必须将它们同时印在脑海里并关联起来并且这一长串思路往往还包含一些关键步骤和关键点,理解难度大问题是仅仅孤立地理解这些关键步骤和关键点还远远不够,还必须将其与其他许多地方关联起来,综合理解一般说来,复杂算法的原创者需要具备强大的想象力和掌控深入的复杂思路的能力,而学习者至少必须具备后者为了教好和让学生学好该门课,笔者总结多年的教学经验要让学生的思维动起来、活跃起来,让学生自己进入思路,在课堂教学中安排提问和讨论,针对关键点/要点向学生提问,并给机会让学生提问,这种提问讨论环节能活跃课堂气氛,有助于学生真正学进去对于复杂的算法问题,教师进行思维引导很重要,通过提出问题,讲解概念、原理和步骤,引导学生进入思考,然后通过提问讨论环节,让学生自己弄清算法思路,达到能真正透彻掌握之目的思维方式和思维能力这两点推动着计算机科学不断向前发展[5],人工智能作为一个新兴的专业领域,恰恰站在思维方式不断变革更新的前沿同时人工智能的深入研究,都伴随着复杂的算法能力也就是思维能力。
正是因为这一点,人工智能这门课学习难度大,有别于其他课程本文试图针对其学科特点,剖析高效有力的人工智能教学方法本文对符号主义的一些关键点/难点和容易理解错的地方进行深入剖析,以简明的方式揭示其实质,为学生高效正确地掌握该门知识提供引导1 深入解析符号主义的本质和学习过程符号主义有五大步骤:第一大步,写谓词;第二大步,将谓词化为标准范式和子句集;第三大步,置换合一;第四大步,匹配规则和推理算法;第五大步,那就是透彻理解其完备性,主要是理解和掌握Herbrand定理学习符号主义有两个层面:一是掌握其方法,能正确任用,也就是知道怎么做;二是透彻理解其原理定理,即理解为什么这样做就学生而论,第一个层面是最基本要求,必须达到其中前四步属于第一层面,而第五大步是第二层面,也是难度最大的一步即使第五大步没有达到,只要很好地掌握了前四大步,就能运用好符号主义第一大步,写谓词应该是比较容易的,但初学者亦感到困难对此笔者总结出三条经验:一是清晰区分蕴含语句和与语句关于量词表达的书写,属普通知识,一般无大问题但要注意全称量词与存在量词的不同对待,不要模糊概念如,男人都喜歡足球,谓词是:?x man(x)->like(x,football)。
又如,有的男人喜欢足球,谓词是:?x man(x)like(x,football)一般说来,对“只要……就”、“所有的如何如何”这样的语句,就用蕴含;而对于“存在什么什么”、“有部分如何如何”这样的句型,就用与语句有同学提出,从语义的角度,既然对全称用蕴含,存在时也可用蕴含这样说确实有道理,但这个语义是模糊的在谓词推理中,A蕴含B有确切清晰的逻辑含义,那就是非A或B若是用这个含义来考察,存在时用蕴含导致的是逻辑混乱然后是大胆设计谓词,初学者往往觉得困难就是因为不敢大胆设计谓词谓词不过是判定是和否的布尔函数而已,若问题需要,就大胆设谓词及其参数,完全无必要有畏难情绪,就像C语言编程中若需要就设一个新的变量一样接着针对各种不同句型多练习,这个确实没有什么深奥之处,多练习,自然就会笔者举两个具有趣味性和启发性的例子,以此来说明著名的数学难题都可用符号主义来解决例1,哥德巴赫猜想:?x E(x)->?y?z D(x,y,z)S(y)S(z),任何一个大于2的偶数都可以表示为两个素数之和例2,费马大定理:~?x?y?z?u D(f(x,u),f(y,u),f(z,u))I(x)I(y)I(z)GE(u)。
第二大步,化标准范式及子句集[3]这一大步没有包含难点和深奥的因素,多练习就能掌握笔者总是强调两点第一点是各步骤的顺序非常重要,绝不能将顺序搞错,比如,第1步必须是去蕴含符,第2步是内移否定符若是反过来先内移否定符,再去蕴含符,就会导致大错第3步是去存在量词,同样,这一步只有在前两步完成后才能做第二点是强调第3步改变量名非常重要每一个量词必须有自己惟一的变量名,其作用范围的所有变量都必须用这个同样的名字同时不同子句之间的变量名不能重复这一点非常重要,因为以后的置换合一,变量名的异同具有决定性影响必须在这一步完成变量的改名,以后的置换合一和推理中不允许再改名,否则可能导致混淆和错误教材中这一点没有讲清楚,可能导致混乱第三大步,置换合一这个有难度,学生普遍反映较难笔者使用过多个不同教材,对此都没能透彻讲解清楚一些地方容易产生歧义,导致误读其实置换合一,关键是必须透彻理解:两个同名谓词合一,本质上是找它们参数也就是自变量定义域或者个体域的公共部分能从逻辑上透彻理解这个,置换合一问题也就好解决了讲这个问题时,笔者总是提这个问题:最一般合一置换与普通的合一置换,哪个公共部分大?不少学生回答不上答案是最一般合一置换公共部分大。
最一般合一置换就是找两者的最大公共部分从公式θ=σ*λ可知,普通合一置换在经过了最一般合一置换之后,还要经过λ再置换一次,而每次置换,公共部分只可能减少(或不变)求最一般合一置换的算法见[3]:其中第5步是关键步骤,关键点有两个:一是对不一致集的两个项xk、tk,至少有一个必须是变量;二是这句话非常关键:xk不在tk中出现因为只有满足这两个条件,才能保证它们的个体域有公共部分下面举两个例子来说明:谓词P(x,y)与P(y,x),如何合一?若是认为两者的变元x, y均是不受约束的,它们合一的结果就应该是P(x,y)按教材中例题的做法,先将p(y,x)改名为p(u,v),然后再合一,结果为p(x,y)若这两个谓词分属于不同的子句,那当然可以先改名再合一,问题是置换合一既可以在不同子句之间进行,也可能在同一子句之中进行若是后者,改名就会出错故统一规定:在化标准子句时改名,在置换合一阶段不允许再改名从而,p(x,y)和p(y,x)合一,结果是p(x,x),因为我们假定,改名的工作以前都做过了,此时两者的x, y是互相约束的(不能排除此情况发生的可能),故正确的合一结果是P(x,x)我们再来看另一个合一的例子:P(x,f(x))与P(y,y)。
第1步,找出不一致集(x,y)由x置换y我们得到:P(x,f(x)), P(x,x)第2步,不一致集为:(f(x),x)许多同学在此容易出错,他们用f(x)取代x,最后得到的合一结果是P(f(x),f(x))教科书上求最一般合一的算法,不一致集tk,xk,其中前者是项,后者是变元用项tk置换xk,前提是xk不在tk中出现请注意教科书上并没有解释为什么xk不在tk中出现,若出现了又该如何处理这里是,若出现了,就不能合一,算法终止所以这两个谓词是不能合一的如前所述,合一的实质是:找出两个谓词相应参量的公共部分,若无公共部分,就不能合一而最一般合一的实质是,找出两个谓词相应参量的最大公共部分,类似于最大公约数项有三类:变元x,函数f(x),常量a只有变元x才可能与其他项有肯定的公共部分,因为变元的取值范围是全体个体域,函数则取其中的部分值,而常量只取其某个特定值故常量与变元有公共部分,那就是常量本身函数f(y)与变元x也有公共部分,就是f(y)而函数f(x)与变元x是没有公共部分的,从而不能合一当然,f(x)与常量a也没有公共部分讲解完这个算法之后,给学生时间,让他们自己读通算法,并解答他们的疑问。
最后问学生一个问题,若能清楚回答,基本已掌握好笔者的问题是:第5步在什么条件下转到步骤6?为什么?答案是在两种情况下:一种是:不一致集中没有变元,没有变元,从而也就没有公共部分第二种是:不一致集为f(x)和x,尽管有变元,但x在f(x)中出现,同样不能合一第四大步,冲突处理和算法设计。