摘 要: 人工智能是一門新興學科,經(jīng)常發(fā)現(xiàn)所用教材存在諸多缺憾。人工智能所包含的問題思維方式抽象,思路復雜,學生在學習時普遍存在困難,尤其是在其核心,符號主義和圖搜索算法上。為了克服這些困難,便于教和學,以多年的教學經(jīng)驗和思考,匯總了該課程難以把握、容易理解錯的關鍵點和難點,揭示了其實質,并進行了深入的解讀和說明,為清晰透徹地理解和掌握開辟了通道。
關鍵詞: 人工智能; 符號主義; 圖搜索; 教學
中圖分類號:TP301 文獻標志碼:A 文章編號:1006-8228(2018)10-87-04
Abstract: 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; teaching
0 引言
當代IT業(yè)經(jīng)歷了兩次大的浪潮,這兩次浪潮都極大地影響和改變了人類的生產(chǎn)和生活。第一次是微軟操作系統(tǒng)的出現(xiàn)及由此所導致的個人計算機的普及;第二次是互聯(lián)網(wǎng)的興起及其蓬勃發(fā)展所帶來的生產(chǎn)規(guī)模和對人類工作生活的影響??梢灶A料,即將到來的下一次浪潮其影響力將更加空前,這就是人工智能的發(fā)展及其無邊的前景。
人工智能的學習和教學,顯得尤為重要。
由于該課程為新興學科,其教材或是直接翻譯外文[1],或由編者編輯整理而成[2],往往存在錯愕之處,而且表達方式也不太符合中國學生的學習習慣,不利于中國學生理解和掌握。
本文以張仰森、黃改娟所著“人工智能教程”[3]為例來說明人工智能這門課的教學。本科生教學主要內(nèi)容是這本書的前六章,也就是其原理篇。筆者認為,這六章的內(nèi)容,有兩章是核心,即第三章符號主義和第五章搜索算法。
按該書的觀點,人工智能發(fā)展至今,有三大主要流派:符號主義、聯(lián)結主義和行為主義。其中最主要的是符號主義,人工智能的大部分研究成果都集中在符號主義領域。人工智能的發(fā)展依賴于兩大方面,一是思維方式的不斷改進和更新,二是搜索算法。搜索算法與人工智能可以說是如影隨形。
人工智能這門課有難度,如符號主義和Herbrand定理,有相當?shù)碾y度。一整套符號主義的方法相當于一個算法,這是一個比較大的算法,難度大而復雜。就其原理、定理方法而論,符號主義的思維方式高度抽象,顯然有別于其他課程,其思路復雜,學生普遍感覺難以掌握。
一個復雜的算法之所以難學,關鍵是它包含有一長串復雜的思路。要掌握一個復雜算法,需要具備沿著一長串思維脈絡深入下去的思維能力[4]。這一長串思維彼此關聯(lián),必須將它們同時印在腦海里并關聯(lián)起來。并且這一長串思路往往還包含一些關鍵步驟和關鍵點,理解難度大。問題是僅僅孤立地理解這些關鍵步驟和關鍵點還遠遠不夠,還必須將其與其他許多地方關聯(lián)起來,綜合理解。一般說來,復雜算法的原創(chuàng)者需要具備強大的想象力和掌控深入的復雜思路的能力,而學習者至少必須具備后者。
為了教好和讓學生學好該門課,筆者總結多年的教學經(jīng)驗。
要讓學生的思維動起來、活躍起來,讓學生自己進入思路,在課堂教學中安排提問和討論,針對關鍵點/要點向學生提問,并給機會讓學生提問,這種提問討論環(huán)節(jié)能活躍課堂氣氛,有助于學生真正學進去。
對于復雜的算法問題,教師進行思維引導很重要,通過提出問題,講解概念、原理和步驟,引導學生進入思考,然后通過提問討論環(huán)節(jié),讓學生自己弄清算法思路,達到能真正透徹掌握之目的。
思維方式和思維能力這兩點推動著計算機科學不斷向前發(fā)展[5],人工智能作為一個新興的專業(yè)領域,恰恰站在思維方式不斷變革更新的前沿。同時人工智能的深入研究,都伴隨著復雜的算法能力也就是思維能力。正是因為這一點,人工智能這門課學習難度大,有別于其他課程。本文試圖針對其學科特點,剖析高效有力的人工智能教學方法。
本文對符號主義的一些關鍵點/難點和容易理解錯的地方進行深入剖析,以簡明的方式揭示其實質,為學生高效正確地掌握該門知識提供引導。
1 深入解析符號主義的本質和學習過程
符號主義有五大步驟:第一大步,寫謂詞;第二大步,將謂詞化為標準范式和子句集;第三大步,置換合一;第四大步,匹配規(guī)則和推理算法;第五大步,那就是透徹理解其完備性,主要是理解和掌握Herbrand定理。
學習符號主義有兩個層面:一是掌握其方法,能正確任用,也就是知道怎么做;二是透徹理解其原理定理,即理解為什么這樣做。就學生而論,第一個層面是最基本要求,必須達到。
其中前四步屬于第一層面,而第五大步是第二層面,也是難度最大的一步。即使第五大步?jīng)]有達到,只要很好地掌握了前四大步,就能運用好符號主義。
第一大步,寫謂詞應該是比較容易的,但初學者亦感到困難。對此筆者總結出三條經(jīng)驗:一是清晰區(qū)分蘊含語句和與語句。關于量詞表達的書寫,屬普通知識,一般無大問題。但要注意全稱量詞與存在量詞的不同對待,不要模糊概念。如,男人都喜歡足球,謂詞是:?x man(x)->like(x,football)。又如,有的男人喜歡足球,謂詞是:?x man(x)like(x,football)。
一般說來,對“只要……就”、“所有的如何如何”這樣的語句,就用蘊含;而對于“存在什么什么”、“有部分如何如何”這樣的句型,就用與語句。有同學提出,從語義的角度,既然對全稱用蘊含,存在時也可用蘊含。這樣說確實有道理,但這個語義是模糊的。在謂詞推理中,A蘊含B有確切清晰的邏輯含義,那就是非A或B。若是用這個含義來考察,存在時用蘊含導致的是邏輯混亂。
然后是大膽設計謂詞,初學者往往覺得困難就是因為不敢大膽設計謂詞。謂詞不過是判定是和否的布爾函數(shù)而已,若問題需要,就大膽設謂詞及其參數(shù),完全無必要有畏難情緒,就像C語言編程中若需要就設一個新的變量一樣。接著針對各種不同句型多練習,這個確實沒有什么深奧之處,多練習,自然就會。
筆者舉兩個具有趣味性和啟發(fā)性的例子,以此來說明著名的數(shù)學難題都可用符號主義來解決。
例1,哥德巴赫猜想:?x E(x)->?y?z D(x,y,z)S(y)S(z),任何一個大于2的偶數(shù)都可以表示為兩個素數(shù)之和。
例2,費馬大定理:~?x?y?z?u D(f(x,u),f(y,u),f(z,u))I(x)I(y)I(z)GE(u)。
第二大步,化標準范式及子句集[3]。這一大步?jīng)]有包含難點和深奧的因素,多練習就能掌握。筆者總是強調兩點。第一點是各步驟的順序非常重要,絕不能將順序搞錯,比如,第1步必須是去蘊含符,第2步是內(nèi)移否定符。若是反過來先內(nèi)移否定符,再去蘊含符,就會導致大錯。第3步是去存在量詞,同樣,這一步只有在前兩步完成后才能做。第二點是強調第3步改變量名非常重要。每一個量詞必須有自己惟一的變量名,其作用范圍的所有變量都必須用這個同樣的名字。同時不同子句之間的變量名不能重復。這一點非常重要,因為以后的置換合一,變量名的異同具有決定性影響。必須在這一步完成變量的改名,以后的置換合一和推理中不允許再改名,否則可能導致混淆和錯誤。教材中這一點沒有講清楚,可能導致混亂。
第三大步,置換合一。這個有難度,學生普遍反映較難。筆者使用過多個不同教材,對此都沒能透徹講解清楚。一些地方容易產(chǎn)生歧義,導致誤讀。其實置換合一,關鍵是必須透徹理解:兩個同名謂詞合一,本質上是找它們參數(shù)也就是自變量定義域或者個體域的公共部分。能從邏輯上透徹理解這個,置換合一問題也就好解決了。講這個問題時,筆者總是提這個問題:最一般合一置換與普通的合一置換,哪個公共部分大?不少學生回答不上。答案是最一般合一置換公共部分大。最一般合一置換就是找兩者的最大公共部分。從公式θ=σ*λ可知,普通合一置換在經(jīng)過了最一般合一置換之后,還要經(jīng)過λ再置換一次,而每次置換,公共部分只可能減少(或不變)。
求最一般合一置換的算法見[3]:
其中第5步是關鍵步驟,關鍵點有兩個:一是對不一致集的兩個項xk、tk,至少有一個必須是變量;二是這句話非常關鍵:xk不在tk中出現(xiàn)。因為只有滿足這兩個條件,才能保證它們的個體域有公共部分。下面舉兩個例子來說明:謂詞P(x,y)與P(y,x),如何合一?若是認為兩者的變元x, y均是不受約束的,它們合一的結果就應該是P(x,y)。按教材中例題的做法,先將p(y,x)改名為p(u,v),然后再合一,結果為p(x,y)。若這兩個謂詞分屬于不同的子句,那當然可以先改名再合一,問題是置換合一既可以在不同子句之間進行,也可能在同一子句之中進行。若是后者,改名就會出錯。故統(tǒng)一規(guī)定:在化標準子句時改名,在置換合一階段不允許再改名。從而,p(x,y)和p(y,x)合一,結果是p(x,x),因為我們假定,改名的工作以前都做過了,此時兩者的x, y是互相約束的(不能排除此情況發(fā)生的可能),故正確的合一結果是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中出現(xiàn)。請注意教科書上并沒有解釋為什么xk不在tk中出現(xiàn),若出現(xiàn)了又該如何處理。這里是,若出現(xiàn)了,就不能合一,算法終止。所以這兩個謂詞是不能合一的。
如前所述,合一的實質是:找出兩個謂詞相應參量的公共部分,若無公共部分,就不能合一。而最一般合一的實質是,找出兩個謂詞相應參量的最大公共部分,類似于最大公約數(shù)。
項有三類:變元x,函數(shù)f(x),常量a。只有變元x才可能與其他項有肯定的公共部分,因為變元的取值范圍是全體個體域,函數(shù)則取其中的部分值,而常量只取其某個特定值。故常量與變元有公共部分,那就是常量本身。函數(shù)f(y)與變元x也有公共部分,就是f(y)。而函數(shù)f(x)與變元x是沒有公共部分的,從而不能合一。當然,f(x)與常量a也沒有公共部分。
講解完這個算法之后,給學生時間,讓他們自己讀通算法,并解答他們的疑問。最后問學生一個問題,若能清楚回答,基本已掌握好。筆者的問題是:第5步在什么條件下轉到步驟6?為什么?答案是在兩種情況下:一種是:不一致集中沒有變元,沒有變元,從而也就沒有公共部分。第二種是:不一致集為f(x)和x,盡管有變元,但x在f(x)中出現(xiàn),同樣不能合一。
第四大步,沖突處理和算法設計。這不是教材的重點,關于沖突處理也就是推理的優(yōu)先級排序,教科書上給出了若干條匹配策略[3]。這些策略只具有啟發(fā)性意義,而不具備系統(tǒng)的實質性價值。正是在這個優(yōu)先級別的確定上,產(chǎn)生了符號主義最難以逾越的瓶頸。若是能高效解決這個問題,則符號主義能快速推理出任何高難度的問題。故匹配策略的教學意義在于:告訴學生這些策略并非系統(tǒng)性知識,不具備決定意義,學生要在領會的基礎上靈活任用,并能根據(jù)工作實際加以發(fā)揮。這里必須理解的概念是,歸結策略具有完備性。
筆者主要給學生講清楚這幾點:①符號主義的推理方法是完備的,只要謂詞寫正確,前提條件表達充分,就必能推出正確的結果;②該問題屬NP難問題,在最壞情況下,推理算法所需時間呈指數(shù)型遞增,迄今沒有普適的好算法使之高效。這也是符號主義的瓶頸;③隨著量子計算機也就是并行計算機的問世,符號主義的前景極其廣闊。
下面談第五大步,也是難度最大最深奧的一步,如何理解Herbrand定理。
第五大步,必須將一個解釋和不可滿足這兩個概念非常清晰地印在腦海里。這一點非常重要。然后必須清晰透徹理解H域、原子集、基例,以及H域上的一個解釋。這幾個概念盡管不能說多復雜,但初學者依然容易模糊。筆者講完這些概念之后,總是提一個問題:假設原子集里面的成員個數(shù)為n,那么在H域上共有多少個不同的解釋?若能回答是2n,表明已經(jīng)完全理解了H域上的一個解釋。
然后就是理解定理了。
必須說明的是,教材中的證明[3]是有問題的,從而也是不成立的。這個證明涉及到的思路相當復雜深邃,而絕不是那么簡單。若學生自己能發(fā)現(xiàn)證明中的這些問題,那就意味著已經(jīng)深入理解了,且算法功力強大。多年還沒有遇到這樣的學生。作為老師,筆者總是給學生點撥如下要點:
邏輯上,證明必須全面關聯(lián)考慮謂詞的結構形式、基例、H域、原子集這些概念的嚴格定義,才可能得證。教材中的證明基本沒有做這樣的考慮。
定理3.4僅證明了它所說的必要性,而它的充分性證明等于什么也沒有說。必須理解H域是一個特殊的域,而并非普通個體域集的一個子集。很明顯,即使將H域去掉一部分,必要性也成立,而按照教材的證明邏輯,充分性是當然成立的。這就意味著H域去掉一部分也行,這當然是荒謬的。
定理3.5的充分性證明只談一個解釋是概念錯誤,而必要性談到至少有一個基例為假同樣也是概念錯誤。多個基例不能同時為真與至少有一個基例為假是不同的。并且,既然你說至少有一個基例為假,后面又加一句證明不可滿足的基例集有限,不是自我矛盾嗎?因為這個證明完全沒必要。
總而言之,要理解和證明Herbrand定理,必須清晰嚴格理解前述各個概念,這些概念的內(nèi)涵外延,并將它們與證明思路嚴格關聯(lián)起來。具體證明可查閱有關資料,此處不贅述。
此外,筆者在講解符號主義這一章時,總是舉個小例子來引導學生自己進入到推理邏輯中去。舉例:已知f(x),求證f(a)。很明顯,此時將結論取反,然后與f(x)歸結,得到空子句nil,得證。問題是:已知f(a),求證f(x)。此時將結論取反得到~f(x),然后與f(a)歸結,同樣得到空子句nil,得證。很明顯,結論是錯的。那么,證明過程問題出在哪里?剛開始學生往往回答不上。因為f(x)實際上是?xf(x),取反后為?x~f(x),用常量置換得~f(b),請注意此時的常量名必須是新的,不能與已有的a相同。經(jīng)解釋理解后,就是收獲。
2 搜索算法教學要點
搜索算法這一章含多個算法,其中最基本最關鍵的是“狀態(tài)空間圖的一般搜索算法”。其他算法均是以此算法為基礎,只有完全掌握好這個算法,這一章的其他算法也就迎刃而解了。應該說,該算法是一個小算法,有一定難度,但難度不太大。筆者教學人工智能這一算法時,學生都是大三年級,已經(jīng)在算法課程里學過這一算法,對其有了大致初步的掌握。但若對他們提深一些的問題,往往回答不上來。真正透徹理解該算法的標志是:能將算法的正確性證明出來?;蛘咄艘徊?,能清晰地讀懂算法的證明。該算法詳見文獻[3]第五章。
此算法的關鍵步驟是第⑹⑺步,其中三類不同的節(jié)點是關鍵點,必須通過舉例講透徹。第⑹步中“生成不是自己祖先的子節(jié)點”也非常重要,必須理解透徹。
筆者講解完了各步之后,給學生以時間,要求學生自己看懂,將它們串起來形成一個整體思路。然后請學生提問,就還有什么疑難點或在哪里思路走不通提問,并予以解答。最后對學生提問:既然你們沒問題了,也就是認為自己已經(jīng)掌握了,那現(xiàn)在我對你們提問:①第⑹步為何要強調“不是n的祖先”,n的祖先以后是否還有可能成為它的后繼節(jié)點;②第⑹步,closed 表中的節(jié)點是否還有可能再回到open表中,若可能,會否產(chǎn)生死循環(huán)?若能清楚回答這幾個問題,就基本透徹理解了該算法。最后,若是能不依賴書中定理,獨立完整證明單調啟發(fā)策略是可采納的,就意味著具有徹底掌握該搜索算法的功力,達到這一步的學生極少見。
3 結束語
人工智能課程抽象深奧,教學難度大,通常灌輸式的講課方式難以滿足要求。本文提出了一種提問-互動-討論模式的教學法。其核心是:給學生時間,讓學生自己進入思考和形成思路;讓學生提問,解答學生在形成思路時遇到的障礙;針對關鍵點/要點向學生提問,學生若能清晰作答,則意味著已經(jīng)掌握了。邏輯和經(jīng)驗表明,對于難度大的概念原理算法,這是使學生能真正掌握的有效途徑。運用本文所論述的方法能顯著提高教與學的效率。
參考文獻(References):
[1] (美)Nils J. Nilsson,鄭扣根,莊越挺譯.人工智能[M].機械工業(yè)出版社,2003.
[2] 高濟,朱淼良,何欽銘.人工智能基礎[M].高等教育出版社,2002.
[3] 張仰森,黃改娟.人工智能教程[M].高等教育出版社,20116.
[4] Sara Baase etc. Computer Algorithms: Introduction to Design and Analysis[M]. New York: Addison Wesley Publishing Company,2000.
[5] 杜立智.論如何考核和提高大學教師的授課水平[J].計算機時代,2012.6.