?

圍繞機器學習整合信息技術教學內容

2020-11-28 07:53陳凱
中國信息技術教育 2020年21期
關鍵詞:咖啡色編碼兔子

陳凱

課程整合是課程改革中的一項重要研究項目,從文字上看,所謂“整合”,就是聯系不同的部分使之成為整體,或者是將原來分散的部件納入到某個具有特定主題的系統框架中。查閱當前文獻資料可知,在多種與信息技術學科有關的課程整合的探索中,利用信息技術手段促進其他學科教學的研究和實踐案例可謂是汗牛充棟,而將重點落在信息技術本學科核心素養培養方面的課程整合案例頗為稀少,本文嘗試以K近鄰算法為例,談一談在信息技術學科內實施課程整合以提高教學效率的策略。

● 虛擬情境:一只尷尬的兔子

這里先介紹一下情境故事里的主角——一只尷尬的兔子。關心本欄目往期文章的讀者可能會發現,筆者常常編寫和兔子有關的故事來幫助教學,這是因為在實際的教學中,筆者傾向于創設虛擬的、背景連貫的、問題純粹的情境,但在這個具有整體性特點的教學情境中發生的事件,與現實世界有著遙相對應的同構關系。

故事是這樣的:假設有若干只兔子,有些是黃色的,有些是灰色的,它們被隨機安置在了n×n大小的正方形的區域內,總共有n的平方個單位空間,每一只兔子占用一個單位空間中的兔子洞,當然,也有相當多的單位空間內是沒有兔子的。然而,有一只介于黃色和灰色之間的咖啡色兔子,它有些尷尬,不知道應該加入黃兔子的團隊,還是灰兔子的團隊,最后它這樣決定,自己周圍哪一種顏色的兔子多,就加入哪個團隊??赏米觽內级阍诙蠢?,看不清其中底細。聰明的咖啡色兔子找來不少白菜,將它們扔到不同的洞口,好引誘洞里的兔子出來一窺究竟,然而,它不僅力氣不大,投擲白菜的準頭又十分差勁……

● 教學需求1:體現抽象和編碼的思想

建議在教學進程剛開始的時候,先將目光投向未來的教學內容,看看是否有可能在不同的教學內容之間建立聯系,而是否能體現出學科核心素養的培育,就成為如何建立聯系的主要依據。

將故事場景抽象和編碼為數據,這就需要一定的計算思維,如將空的兔子洞編碼為0,有黃兔子的洞編碼為1,有灰兔子的洞編碼為2,咖啡色兔子編碼為3。在一般的K近鄰算法中,大多使用標簽加特征值的做法來存儲數據,以兔子的故事為例,存儲結構大致如左表所示。

而本文的例子中,是用二維空間列表的數值,代表每個空間的狀態:0表示沒有兔子,1表示黃兔子,2表示灰兔子,3表示咖啡色兔子。下面是建立這個列表的Python代碼:

bunny=[[0 for col in range(25)] for row in range(25)]

bunny[6][10]=1

bunny[7][8]=1

bunny[10][8]=2

bunny[10][16]=2

#這里略過更多兔子分布情況

這樣做的用意是,能比較直觀地在抽象符號和空間形象之間保留聯系,有助于學習者逐漸熟悉如何組織數據使之成為反映某種“現實”的模型。這里的“現實”打上了引號,是因為例子中這些數據所反映的兔子世界是一個簡單純粹的虛擬世界。盡管如此,虛擬的兔子世界其實可以直接與多種現實需求建立起密切的聯系,如圖像處理、數據分析等;一個虛擬世界還可以作為抽取自然客觀世界特征的一個中介,如機器學習中常將某觀察對象的特征值的關系投射到幾何空間中。另外值得注意的是,為“現實”建立數據模型,計算機科學的方法與傳統數學方法相比較有其獨特性,可以看成是數學方法的一個子集。

可以將列表中所有數據打印出來觀察,兔子如何分布可以由用戶自行通過改變列表數據來決定。例如,某兔子世界分布情況如圖1所示,為清晰起見,數據0打印為空格,生成此圖的程序代碼非常簡單,這里就不列出了。

在信息技術教學的許多階段,都可以借助與兔子世界有類似場景的例子來展開教學,體現抽象和編碼的思想。例如,在信息數字化的教學內容中,可以用兔子顏色狀態的組合來作為圖像存儲的數據;在數據壓縮的教學內容中,可以用兔子顏色狀態的變化來實現壓縮;在程序算法模塊中,可以用這個例子來講解數據結構和循環結構的使用;在人工智能的學習中,可以用這個例子來講解K近鄰算法,加以變化后還可以用來講解決策樹、K均值等算法等。

● 教學需求2:體現模擬與仿真的思想

常用的K近鄰算法的思路很簡單,對于等待判定類別的對象來說,需要在已有(訓練)數據集中找到與該對象最鄰近的K個實例,如果這K個實例的多數屬于某個類,就把該判別對象歸到這個類。相關詳細過程和代碼很容易在網絡上找到,這里不再贅述。

但兔子世界的情境設定有其特殊性,對咖啡色兔子來說,除非將其他兔子洞里的兔子引出洞口,不然它是無法知曉每個單位空間中兔子的狀況的,也就是說,它沒有如圖1所示的那樣的全局視角。這只咖啡色兔子只是隨意拋擲白菜,假設兔子力氣有限,那么越是接近自己的空間,被投擲到的次數越多,越是距離遠的空間,被投擲到的次數越少,為了控制投擲距離,可以利用呈正態分布的隨機函數。這里其實用到了蒙特卡洛法,投擲次數越多,結果也越準確。程序代碼如下頁圖2所示。

從程序代碼中可以看出,咖啡色兔子一共投擲了500次,由于隨機函數的作用,每次結果數據都不一樣,但灰兔子更多的結果是顯然的。其實,即便將投擲次數減少為50次,在大部分情況下,也能得到應當歸類為灰色兔子的結果。

所以說,程序代碼結合了K近鄰算法和蒙特卡洛法兩者的特征。一方面,程序執行過程和行為密切相關,很大程度上降低了理解上的難度;另一方面,代碼中提供了不少供學習者調整變化的地方,如改變兔子的分布情況、改變循環次數、改變正態分布的標準差等。這其實就是一個通過模擬和仿真來進行研究并獲得結果的過程。

● 教學需求3:體現迭代和自動化的思想

這個情境稍作修改,就可以用在K均值算法的教學上,K均值算法的思路和一般解決方法,也很容易在網絡上找到,這里不再贅述。

假設兔子世界里所有的兔子都是咖啡色的,但它們自己想要根據如圖3所示的空間分布情況分成黃兔子組和灰兔子組,而在缺少全局視角的情況下,兔子自己是不知道該怎么分類的,那么根據K均值算法的思路,同樣可以采用隨意扔白菜的方法來進行歸類,而先前任務中的大部分程序代碼可以直接應用到新的任務中。限于篇幅,這里不列出相關程序代碼,如有需要可向作者發送郵件索取。初始時,所有咖啡色兔子在空間上的分布情況如圖3所示。雖然人眼一望便知分類結果,但兔子自己是不知道的。

解決問題的思路很簡單,先在任意位置添加兩只兔子,它們分別是可以四處活動的黃兔子隊長(用字母a表示)和灰兔子隊長(用字母b表示),兩位隊長輪流扔白菜若干次,被黃兔子隊長砸中的兔子歸黃兔子組,被灰兔子隊長砸中的兔子歸灰兔子組。在第一輪投擲結束后,黃兔子組的成員和灰兔子組的成員可以初步確定下來,但仍然有部分兔子沒有被歸類,由于隨機函數的作用,黃兔子偶爾也可能拉攏到較遠的兔子,灰兔子也是這樣。第一輪投擲結束后情況如圖4所示。

根據K均值算法,接下來,兩位隊長應該盡量站到自己組員中間的位置,然后再進一步收服周邊兔子歸入己方隊伍,這樣反復迭代后,每只兔子所屬團隊就越來越清晰了。很顯然,將同樣方法反復應用于數據并由逐步迭代得出結果的做法體現出計算思維中形式化和自動化的思想。程序執行變化情況如圖5所示。

在程序運行中,迭代的過程頗有趣味性,因為隨機函數的存在,難免會有極個別的兔子臨時“叛變”到對方的團隊中,要解決這個問題,可以逐漸收縮隨機函數正態分布的標準差,這樣就可以提高分類效果了,這也就使得算法有進一步改進的潛力,可供學習者深入探索。

本文所介紹任務情境,形式上將多個處于不同階段的信息技術教學內容整合在了一起,同時,也始終將如何落實計算思維培養作為教學設計的主要需求,希望能對大家有所啟發,從而設計出更多更好的教學情境和活動任務。

猜你喜歡
咖啡色編碼兔子
住院病案首頁ICD編碼質量在DRG付費中的應用
溫 習
小兔可可
兔子
雙眼皮不明顯?只要混色雙眼皮就會跑出來了
高效視頻編碼幀內快速深度決策算法
守株待兔
想飛的兔子
窗外
可愛的兔子
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合