傳統上如果我們想讓計算機工作,我們給它一串指令,然后它遵照這個指令一步步執行下去。有因有果,非常明確。

機器學習與人類思考的類比
但機器學習則是完全不同的過程,比如要教會計算機做加法。我們不告訴計算機1+1=2。而是先在計算機中搭建好類似人類大腦的神經網絡,然后通過輸入大量算式(5000組),并告訴計算機算出結果是對還是錯,而且只告訴計算機對錯而不告訴正確答案,經過大量反復訓練(5000道題目做100次),計算機會得到某種正確率最高的模型,計算機可能重新發現了1+1=2但也可能和加法規則毫無關系。最后我們會利用這個模型去處理新的數據。
由于經過機器學習得出的模型能夠以近似于人的方式解決很多靈活復雜的問題,所以在模式識別、統計學習、數據挖掘、計算機視覺、語音識別、自然語言處理等領域有著很廣泛的應用。

一般來說機器學習是相當高深的領域,但是在慧編程中有機器學習加法訓練的擴展模塊,無需高深的編程知識就可以方便使用了,我們就用這個功能來體驗一下機器學習吧。
在www.mblock.cc下載并安裝慧編程,這是基于Scratch 3.0開發的兒童編程軟件,除了基本的積木式編程和Python代碼編程外,它特別融入了AI(人工智能)和 IoT(物聯網)等前沿技術。
對角色添加擴展,在第二頁找到“機器學習之加法訓練”并添加。
這個模塊是使用上千組數據對機器進行加法訓練,得出輸入和輸出之間的對應關系即訓練模型。可以通過調整不同的訓練參數,了解各種機器學習的相關概念和作用。

1) 加數和被加數的位數2
提供的數據都是兩位數以下的加法。
2) 樣本數據數5000
給機器學習的數據數量,5000道加法題。
3) 選擇RNN的網絡類型
這里提供了三種使用非常廣泛的循環神經網絡模型。循環神經網絡是當前深度學習熱潮中最重要和最核心的技術之一。這里我們無需了解它的運算過程直接使用就可以了。
Simple RNN 簡單循環神經網絡,GRN 門控循環單元網絡,LSTM 長短期記憶網絡。
4) 隱藏層數量
一個神經網絡包括有多個神經元層,輸入層、隱藏層及輸出層。輸入層負責接收輸入及分發到隱藏層(因為用戶看不見這些層,所以叫做隱藏層)。這些隱藏層負責所需的計算及輸出結果給輸出層,而用戶則可以看到最終結果。
隱藏層就是把輸入數據的特征,抽象到另一個維度空間,來展現其更抽象化的特征,這些特征能更好地進行線性劃分。多個隱藏層其實是對輸入特征多層次的抽象,最終的目的就是為了更好的線性劃分不同類型的數據。
5) 每個隱藏層的神經元數量
神經元是處理數據的節點。每個神經元會對前一個神經元傳來的數據,按照自己擁有的一個權重系數進行加工。確定合適的神經元數量是一項很專業的技能,我們直接使用默認數據即可。
6) 迭代次數
使用訓練集的全部數據對模型進行一次完整訓練稱之為“一代訓練”,迭代次數100就表示用全部數據對模型訓練100次。
理論上,隱藏層越多神經元數量越多迭代次數越多,結果的準確率就會越高甚至達到100%,但是增加這些參數一方面計算量會急劇增大,訓練時間會非常長。另外某些參數設置過高除了效果提升效果不明顯以外可能還會產生過擬合。


開始訓練,計算機準備數據時會卡一會兒,等一會兒后點一下打開數據看板,可以看到訓練集和測試集曲線。隨著不斷迭代loss損失越來越低,accuracy準確率越來越高,當準確率接近100%說明訓練的效果已經達到,模型對于樣本庫的數據可以做到全部判斷正確了,我們判斷模型訓練成功了。你可以通過變動各種參數,自己觀察訓練時間和訓練效果。
根據訓練曲線,模型已經獲得很高的正確率。用50組數據進行測試。點擊“打開數據面板”可以看到模型預測結果和正確結果的對比。如果數據少迭代次數不夠模型訓練不好正確率就不會高。
這個加法訓練可以讓你更好地理解機器學習。慧編程中還有更實用的機器學習模塊就需要你花不少功夫去學習相關知識才能使用了。