陳凱
當我們說到“教學中構筑真實情境”這句話的時候,需要進一步剖析究竟何為“真實”。即便在教學場景的創(chuàng)設中涉及真實事件和真實的問題,為契合特定教學目標的達成,這些真實事件或問題大多進行了簡化和改造,或只是強調了其中的某一個側面。用比喻的方式來說,課堂教學場景中出現的所謂的真實事件和問題是激發(fā)探索興趣的芳香蜜源,是可以掛載知識點的結構框架,是可被投注情感的戲劇片段。而“真實”這個詞語本身的意義也并不牢固,學習者所能感受到的該詞的范疇,隨學段的增長而變得越來越廣泛,但其確定性卻似乎在下降:水果數量的相加和計價是真實的、光所兼具的粒子和波的特性是真實的、事物存在本身是真實的……對于一個教學者來說,便會面臨這樣的問題,如果他所要闡述的詞語的概念是高度概括的或是抽象的(越是到高學段就越是會遇見這樣的概念),那么完全有這種可能,這個概念離現實的情境非常遙遠,雖然說用來承載概念的詞語本身在文本中隨處可見,或者說,這個詞語本身也常被應用到多種現實的生活情境中,但在那種情境下對于詞語的進一步詮釋卻是困難的。不妨考慮“利用機器學習對圖像進行識別”這句話,雖然教師可以輕松構造出對應這句話的那些還原生活具體場景的所謂真實情境,如用手機拍攝照片智能判別植物,或者將人臉從各種物體的圖像中區(qū)分出來,等等。但這樣的生活具體場景,卻很難成為一個良好的教學情境,因為無論是詮釋機器學習的不同的特性,還是具體講解某幾類機器學習的算法,學習越是深入,離開最初那個由具體需求而來的生活情境就越是遙遠。這個情境既失去了吸引學生興趣的芳香蜜源的作用,也不太能成為連接不同知識的結構框架,在教學過程結束的時候,教師和學生大概會重新想到最初那個帶著具體需求的情境,然后假裝愉快地宣稱已經解決了圖像識別的問題。但此處情感的投入,僅僅是對應著一個現成的產品或函數的某一功能的實現,而不對應著問題的解決,顯然,在解決問題的路徑上存在著太多不明所以的地方。
這里不妨重新審視關于真實情境中的“真實”一詞,當情境被用于課堂中的那一刻起,其實就開始偏離其現實上的真實性,教師采用種種計謀將學習者放置到創(chuàng)設出來的情境中,希望他們通過代入的方法假設性地解決現實中的問題。盡管這樣,教師們仍然稱自己所創(chuàng)設的情境為真實情境,卻少有人會對其中的“真實”一詞提出質疑,何以如此?對于虛構文藝作品的所謂真實性的考察可以帶給我們答案:讀者情感上的共鳴是真實的,矛盾產生或矛盾解決的邏輯思維過程是真實的,作品中所涉及的日常經驗細節(jié)也是真實的,如此等等。這樣就給出了一個啟示,要把現實和真實兩者加以區(qū)分。在教學情境中,哪一種真實才是最需要被把握住的?筆者在對計算機的模擬和仿真的行為進行考察后,得到了一種可能的答案:想象一下,人們可以利用計算機模擬大氣行為,計算機中的氣候環(huán)境是虛擬的,但其模擬的氣候變化和現實世界的現象是有所對應的。人們可以利用計算機去模擬制造一臺虛擬的計算的機器,那個機器當然不是真實的,但它解決某問題所做的計算本身卻是真實的。可以看出,模擬計算行為實際上可以等價于計算行為本身,計算過程本身無疑是真實的,如果能夠圍繞計算行為的需求、計算過程的設計、計算效果的評估來構建教學情境,那么,即便是一個看上去虛擬的情境,也是具有真實性的,如能將真實和現實區(qū)分開來,就不必非要回溯到產生出這個計算需求的具體事件并將那個事件作為教學的情境。
下面用一個和簡單的遺傳算法有關的教學案例來說明問題。如圖1所示,這是一個“機器人獲取能量”小游戲,正中間的“R1”表示1號機器人,另外還有5個機器人編號從“R2”到“R6”,機器人每一步行走,都是橫向移動50個單位,而縱向移動的距離,是根據文本框中設定的數值來決定的,規(guī)定機器人開始行走后,這個數值就不能再改變了。顯然,文本框中數字越小,機器人行走的角度就越傾斜。當機器人碰撞到墻壁時,其橫向的方向會翻轉。機器人的目標是界面最上方的小能量塊,小能量塊是靜止不動的,機器人行走時可能會和小能量塊重疊,重疊時間越長,則機器人獲取到的能量就越多。為了增加挑戰(zhàn)性,機器人每多走一步,其自身占地面積就減少一點,相對就更不容易碰到能量塊。圖1中,筆者派出了第一個機器人,根據設定測試值,每橫向移動50個單位,它就縱向移動15個單位,從圖上看,它差一點就能獲取到能量了。圖1中用直線標出了機器人的行進軌跡。
那么,怎么才能快速找出能獲取到高能量的最佳縱向移動距離呢?這就是一個和策劃具體計算過程有關的真實的問題。例如,用枚舉所有數字一個一個嘗試的方法,當然最終是可以找到最佳答案的,但若在課堂中組織一場比賽,看誰先找出最佳答案,恐怕不會有人真的采用枚舉的方法。從三個角度看,機器人獲取能量小游戲可以成為構建教學情境的不錯的素材:其一,懸疑的存在和帶有競爭性游戲能激發(fā)出探索熱情;其二,玩家在游戲時自然而然就運用到了日常生活中的經驗,而這些經驗本身又可能對應著多項計算機科學方面的概念,如枚舉、隨機、反饋、迭代等;其三,游戲運行本身就能引出遺傳算法的幾個要素,對這一點下面重點加以說明。
在游戲過程中,可以利用“隨機取值”“登記和顯示分數”“生成新數據”這三個按鈕,以半自動的方式尋找到最佳的答案(如圖2)。操作過程如下:先點“隨機取值”,這個按鈕的功能是隨機獲得0到100之間的整數值;然后就按隨機確定的移動距離派出機器人,在完成行進路線后通過“登記和顯示分數”來記錄總共6個機器人的成績,可以看出,6個機器人的成績分別是4、0、17、16、0、0;接著點擊“生成新數據”,這時,游戲自動選出導致機器人獲取能量值最多的兩個縱向移動距離,并在這2個數據附近區(qū)域選取出4個數據,合并由隨機函數產生的另2個數據,產生出新的一組共6個數據,供玩家再次測試。事實上,對于圖示中的例子,只要再玩上一輪,就能夠找出最佳答案33了。(為了便于說明問題,筆者選取了一組可快速找到答案的隨機數,玩家真正操作時一般需要3到4輪“生成新數據”后的測試過程,但大多數情況下速度要快于一一枚舉)
關于用何種策略,根據已有機器人的成績來生成新的測試數據,可以是課堂中討論的重點問題。例如,是否需要將某一輪測試中成績最好的距離值按原樣保留下來?如果要對機器人競賽中獲得優(yōu)秀成績的距離值做一點微調,用來探測是否有更好的結果,那么調整的幅度如何決定?如果有多個導致優(yōu)秀成績的距離值,有沒有可能結合兩個或兩個以上的距離值進行計算,加快尋找到最佳答案的速度?為什么還有必要獲取幾個完全隨機的數值參與競爭測試?以上問題,都和如何采用不同遺傳變異策略達成較優(yōu)或最優(yōu)的結果的討論有關,顯然都是十分真實的問題。如果要根據特定策略來實現或修改相關代碼,主要涉及的技能是數組數據的存取調用、搜索和排序,實現難度在可控范圍之內。將游戲場景作為教學情境的另一個好處是,并不需要將所有的操作都做成自動化過程,由人參與其中的半自動化的算法實施過程,降低了程序的代碼實現的難度,還意外地增強了學習的自主性和體驗性。
如果將不同測試數據和測試結果的情況全部列出圖表(為此筆者自己不厭其煩地“玩”了幾十次游戲),就能夠用以顯現遺傳算法在解決問題上的普遍性,圖3中,直線代表的是由小到大設定的縱向距離測試值,曲線則是該值對應的獲取能量值的多少。可見,遺傳算法在其中的作用,主要是獲取一定范圍內函數的極值。在本欄目上一期的文章《從模型到現實——木星衛(wèi)星軌道數據的分析和智能預測》中,為了更好地獲得正弦函數角速度的擬合值,就使用到了遺傳算法,這便使得這方面的教學內容體現出了現實的應用價值。當然,這也同時為深入探索給出了方向,那就是如何借助專業(yè)的遺傳算法工具,對更大量和更高維度的數據進行分析。
筆者文中的機器人游戲當然是由計算機模擬的,但若單純從技術方面考慮,將這個游戲裝置實體化,難度應該也不會很大,如果市場上有一套允許教師進行定制,并能在游戲過程中呈現出機器學習算法運作過程的裝置,那將會是構建人工智能教學情境的重要工具和素材。當然,憑教師個人力量很難做到這一點,可惜目前市場上有許多自稱可用于人工智能教學的機器人教具,往往只不過是一個無法深入展開剖析的黑箱而已。