丁偉 孫凱
神經網絡學習是人工智能教學中的算法層面的重要組成部分,而手寫數字識別可以作為神經網絡學習的入門課,即通過讓計算機辨認大量標定好的手寫數字對它進行訓練,就可以識別0~9的手寫數字,是一種典型的有監(jiān)督學習。那么,在中小學如何進行這種入門教學,并在以體驗為主的前提下,讓學生在現有知識基礎上能夠了解神經網絡學習的基本原理呢?筆者在教學過程中利用虛谷號控制硬件引導學生通過學習基于MNIST訓練集的手寫數字識別,初步建立對神經網絡的基本認識。
用虛谷號進行Python和人工智能的教學,則可以結合硬件制作出包含人工智能元素的作品。本實例用Python語言,首先編寫一個三層神經網絡,用MNIST訓練集完成模型訓練,并用畫圖軟件kolourpaint完成手寫數字,實現手寫數字識別,最后用虛谷號控制的LED燈閃爍次數來呈現對應的數字。
● 配置環(huán)境
要讓虛谷號實現手寫數字的識別,就需要安裝一些必要的庫和繪圖軟件,虛谷號已經預裝了Python3.5和部分庫,下面只要補充、升級相關庫即可,如圖1所示。
● 了解神經網絡
一個完整的人工神經網絡至少由輸入層、輸出層和隱藏層三部分構成。神經網絡的每一層都可以用若干個節(jié)點來表示某個元素的特征屬性(如圖2)。
● 手寫數字的csv格式
當在28×28的區(qū)域寫下一個數字時,這個區(qū)域中就會留下顏色深淺不一的筆跡,接著將這28×28=784個像素點的顏色轉換成0~255之間對應的灰度值并以csv文件格式存儲到一個數據表中(如下頁圖3)。同樣我們可以從網上(網址:https://pjreddie.com/projects/mnist-in-csv/)下載到這個有60000條數據的這個數據集。打開表格就會發(fā)現里面確實有60000行數據,而且每行數據有785列,其中第一列是這個數字的標簽即我們標定的數字,后面的784列就是28×28個像素點對應的灰度值。
學生有了以上的知識做基礎,對后面的代碼理解就相對要容易一些了,當然并不要求學生對每句代碼都理解,因為在教學中是要以模塊化的代碼來講解手寫數字識別這個案例的,即讓學生理解程序中每個模塊的作用,并通過修改模塊中的關鍵參數知道對程序執(zhí)行效率和結果的影響,進而了解人工神經網絡的基本原理。下面是筆者在教學中對這個實例的解析。
①神經網絡類的建立。神經網絡的搭建是一個復雜的過程也不需要初學者掌握,可以將其放到一個類里面,使用的時候直接用from語句導入即可。
②訓練數據的導入。圖4中的第一行代碼括號內的內容為MNIST手寫數據集的路徑位置,這里使用了數據集中的前100條數據對模型進行了訓練。學生在實操過程中可以通過修改訓練數據集的數據多少來分析其對準確率的影響。
③設定參數搭建實例。模塊中輸入層的節(jié)點數為784,對應的是28×28像素的圖片的784個灰度值;隱藏層節(jié)點為200個;輸出層的10個節(jié)點即0~9這10個手寫數字(如圖5)。
④設定訓練次數(如圖6)。依次判斷輸入數字是0~9的概率,選擇概率最大的那一個為輸出結果。
⑤使用手寫數字檢查訓練結果(如圖7)。使用img_arry =imageio.imread(‘****,as_gray=Ture)語句導入手寫的數字圖片,其中****的內容為圖片在計算機中的保存路徑。
⑥運行實例。使用IDLE3打開上面保存的實例,運行實例,使用不同的訓練集運行時間不同。運行結束后,結果中列出了手寫數字是0~9這10個數字的概率,而計算機會把概率最高的那一項認為是筆者所寫的數字,這里計算機輸出的結果是4,這個結果對不對呢?打開路徑中那張圖片看一下就知道了(如圖8)。
為了解除學生的疑惑筆者讓學生通過修改圖8中的數字后再次運行實例,查看結果。
經過反復修改程序中的參數學生得出了以下幾個結論:第一,訓練集中的數據量越多準確率越高;第二,手寫數字是否規(guī)范對準確率影響很大;第三,訓練集中的數據量越大程序運行時間越長。
該實例也可以在PC機上運行,但是通過虛谷號可以控制硬件,進而讓學生更加直觀地了解人工智能的廣泛應用,創(chuàng)作出有質感的智能作品。虛谷號只要導入虛谷庫就能實現Python環(huán)境下軟硬件的互通。另外,還可以利用上面手寫數字的判斷結果來制作一個識字閃燈的游戲,讓虛谷根據識別到的數字控制LED燈閃爍對應的次數,代碼如圖9所示。
代碼中首先導入了虛谷庫和時間庫,然后使用循環(huán),將識別結果(label)作為循環(huán)次數實現閃燈的效果。此外也可以引導學生使用舵機、馬達、蜂鳴器等設計出獨具特色的智能產品。
利用虛谷號的代碼程序更加貼近程序開發(fā)的原始環(huán)境,適合有一定程序基礎的高年級學生學習,同時高年級的學生,具有一定的項目策劃和動手能力,能夠利用虛谷號軟硬兼容的特點創(chuàng)作出一些技術與藝術完美融合的作品。