陳凱



丫丫貓以為這個網絡游戲的第一個任務是打怪,結果卻發現,最先要做的,是在村莊中尋找和爭奪裝備,簡稱為奪寶任務。裝備包括武器、護具和藥劑三類,其中,武器有寶劍和弓箭兩種,護具有盾牌和盔甲兩種,藥劑有增速和強力兩種。在奪寶任務中,每一類裝備只能在兩個選項中選出一件,如選了寶劍就不能選弓箭,其他類似。丫丫貓感覺有點迷惑,她不知道怎樣的裝備更適合打怪。于是丫丫貓去請教資深玩家凱凱兔,迷糊的凱凱兔說他也并不知道,他只是隨便拿到什么就用什么了,不過,凱凱兔提供了一份他此前十局游戲所選用裝備和打怪結果的清單,如下表所示。
看了這份清單,丫丫貓有點迷惑。對于勝利的結果來說,從護具上看,選用盾牌是兩次,選用盔甲是兩次;從藥劑上看,選用增速是兩次,選用強力是兩次;從武器上看,選用弓箭是兩次,選用寶劍是兩次。乍看上去,這些信息并沒有什么指示作用。
靈光一閃后,丫丫貓忽然想到,還可以換個角度,看選用哪些裝備,更容易導致失敗,這么一查就有線索了。對于失敗的結果來說,從護具上看,選用盾牌是三次,選用盔甲是三次;從藥劑上看,選用強力是三次,選用增速是三次。這些信息似乎都沒啥用處,但從武器上看,選用寶劍是四次,選用弓箭是兩次,這似乎暗示著,選用寶劍更容易輸。所以,在奪寶任務階段,應該優先設法獲取弓箭,接下來再考慮護具和藥劑,應該優先尋找哪一樣。
上面這個例子,可用于闡述決策樹分類算法的實現過程,本文希望通過這個例子,說明如何在人工智能的教學中化繁為簡,形象直觀地展示出機器學習算法的基本原理和過程。另外,本文也想借助這個例子,給出將人工智能教學與日常信息技術教學相融合的一些策略。
● 創設能激發思維過程顯現的真切情境
對于如何創設教學情境的問題,相關討論很多,不再重復,這里主要討論人工智能教學中創設教學情境的策略。筆者選用“真切情境”一詞,用以規避“真實”和“虛擬”語義上可能出現的混亂。圍繞人工智能,確實有許多可供教學使用的真實情境,如展館里的智能機器向導、手機上的智能識別植物程序、小區門口的智能人臉識別系統等,但考慮到中小學生已有的知識技能水平,以及有限的人工智能教學課時,很難對這些真實情境中的人工智能應用做具體的還原拆解。舉例說,就算教師找來人臉識別的程序代碼并在課堂中成功實現識別,但整個程序代碼本身還是一個黑箱,雖然說拆開黑箱,還是能對少部分原理進行講解,但諸多概念理解上的缺失,再加上知識和技能相互關系脈絡的不完整,仍然影響到學生對整體原理的把握和理解。
這里的一個策略,是將目光從終端的人工智能應用,切換到人的思維活動本身,尋找能將人的思維變化過程充分顯現出來的激發事件。例如,游戲就是一個很好的激發事件,游戲是學生在日常生活中能親密接觸并真切體驗的活動,游戲中的場景和概念可以直接使用到教學活動中,從而大大降低應用到某些情境時,在解釋和說明上需要耗費的時間成本。
將思維過程顯現出來的一個很有用的方法,就是繪畫。用隨手可得的畫圖軟件即可,如箭頭代表寶劍武器、星型代表弓箭武器、五邊形是盾牌護具、三角形是盔甲護具、閃電是增速藥劑、五角星是強力藥劑。這里直接使用了現成的圖標,如時間比較充裕,當然也可稍做設計使得圖標更逼真。
那么,如何將裝備的圖標和游戲結果關聯起來呢?這是個開放性的任務,如可以在代表裝備的圖標里進一步做標志,圓圈代表勝利,方塊代表失敗(如圖1)。或者可以使用兩個框,上面的框代表勝利,下面的框代表失敗,根據游戲情況將裝備圖標投入框內,如圖2所示。
這樣的繪畫過程,有助于將表格中的數據抽取出來,轉化為人腦更容易把握的直觀形態,為后續教學做好準備。
● 與信息技術基礎概念相結合
在邊看邊算之前,可以先試著邊看邊感覺。這里可以有效地解釋出,實際上人腦的判斷也正是信息處理的過程,觀察圖1和圖2,就能直觀了解到,使用哪一種武器更有可能導致失敗。如果用不同的圖示做比較,還可以看出“關于使用裝備與勝負關系”的信息量的多少,在圖3的A、B、C三種情況中,C的情況最為鮮明,可以明顯看出弓箭優于寶劍,而A的情況更模糊一些。
接下來,可以使用信息熵公式,在人的直觀和數學抽象計算之間建立起關聯,可以借助簡單的Python代碼,或在線工具幫助實施這些計算,如利用在線工具http://www.endmemo.com/bio/shannonentropy.php,簡單填入勝負比例,就可以算出信息熵。具體的計算信息熵的方法,在本欄目往期文章《手工研磨咖啡的決策》中已有討論,網絡上也很容易找到,這里不再贅述。圖3中,總共有十局游戲的記錄,均是四勝六負,借用下頁圖4信息熵工具計算,僅從勝負情況看,獲得的信息熵是0.970951。
但若將使用武器的區別考慮進來,最終得到的熵值(也稱條件熵)就有所不同了。情況A中,使用寶劍獲得的勝負信息熵是0.918296,使用弓箭獲得的勝負信息熵是1。由于十局游戲中,使用寶劍占十分之六,使用弓箭占十分之四,所以用公式6/10×0.918296+4/10×1得到條件熵為0.9509776。而若是情況C,條件熵計算結果為0。顯然,數值越接近0,則表示信息指示作用越明確。從這里可以看出,這個計算其實就反映了香農所說的“信息是用于消除隨機不確定性的東西”,所以,這部分內容的教學,在信息技術教學的基礎模塊階段,就可以結合“信息”“信息熵”“信息處理”等概念先行實施起來。
● 在實踐操作中體驗自動化過程
游戲中遇到的一個問題是,到底應該優先搜尋武器、裝備還是藥劑?將三種情況圖畫分別畫出,直觀上就很明顯看出應該先確定武器的種類。若不是直觀判斷,而借助信息熵計算工具,也可獲得同樣的結果:若先以護具或藥劑進行選擇,那么獲得勝負的條件熵仍然是0.970951,則選擇結果與勝負結果之間未產生任何指示作用(因單純計算勝負信息熵結果也是0.970951);而如果是先選擇武器,則條件熵是0.9509776,小于單純計算勝負結果的信息熵,選擇結果對于勝負結果存在指示作用。
但選擇工作并非到此為止,在確定了選擇弓箭后,還要進一步考慮護具和藥劑的選擇。從圖5看,在已選擇弓箭作為武器的情況下,藥劑的選擇和勝負之間無法看出明顯指示關系,而從護具的選擇可看出,盔甲要優于盾牌。借助工具的計算結果顯示,若優先按護具進行選擇,條件熵為0.688722,若優先按藥劑進行選擇,條件熵為1,這個計算結果也支持人腦的直觀判斷。
如果游戲中,萬一實在無法獲得弓箭,那就只有選擇寶劍作為武器了,那么在這種情況下,后續選擇的情況又有所不同,如圖6所示,直觀可見應該優先選擇盔甲作為護具。若借助工具計算,則先對護具進行選擇得到條件熵為0.874185,而先對藥劑進行選擇得到的條件熵為0.918296,其結果,也傾向于先按護具進行選擇。
然后,對于做出選擇后新得到的數據,可以用同樣的思路繼續進行分類選擇,其實就是用到了遞歸的思想,限于篇幅,筆者就不繼續將這張圖畫下去了。而繪圖的過程,正是ID3算法生成決策樹的過程。掌握了手工繪制決策圖的技能后,再找一段ID3決策樹算法的代碼,針對特定數據運行逐個比對代碼運行過程中各個條件熵的計算結果,便能更深入地理解算法的原理。如課時充裕,還能對測試數據進行調整,如減少一些樣本,或增加一些可選擇的屬性值(如在藥劑中加入“隱身”),從而發現ID3算法本身可能存在的問題,那就能賦予課程更多的探究味道了。
● 將實踐經驗用于未知事務
將實踐經驗用于未知事務,如圖7所示。