鄭波盡 鐘凱瑞

摘要:產生式系統是人工智能教學中的重點和難點。本文進行了七個學期的教學實踐,通過設置對照組,定性地研究了在不同教學方法下學生的表現。結果發現: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 結束語
對于《人工智能》課程中產生式系統這一知識點,本文討論了教學中的一點心得體會,總結出“興趣導向,實踐優先,開放活潑”的教學思路。目前,在《人工智能》的教學中,對于產生式系統這部分的教學,我們堅持使用本文提到的思路,效果良好。從學生的反應來看,加深了對于機器求解問題的理解,加深了對人工智能的理解。