傳統(tǒng)上如果我們想讓計算機工作,我們給它一串指令,然后它遵照這個指令一步步執(zhí)行下去。有因有果,非常明確。
機器學(xué)習(xí)與人類思考的類比
但機器學(xué)習(xí)則是完全不同的過程,比如要教會計算機做加法。我們不告訴計算機1+1=2。而是先在計算機中搭建好類似人類大腦的神經(jīng)網(wǎng)絡(luò),然后通過輸入大量算式(5000組),并告訴計算機算出結(jié)果是對還是錯,而且只告訴計算機對錯而不告訴正確答案,經(jīng)過大量反復(fù)訓(xùn)練(5000道題目做100次),計算機會得到某種正確率最高的模型,計算機可能重新發(fā)現(xiàn)了1+1=2但也可能和加法規(guī)則毫無關(guān)系。最后我們會利用這個模型去處理新的數(shù)據(jù)。
由于經(jīng)過機器學(xué)習(xí)得出的模型能夠以近似于人的方式解決很多靈活復(fù)雜的問題,所以在模式識別、統(tǒng)計學(xué)習(xí)、數(shù)據(jù)挖掘、計算機視覺、語音識別、自然語言處理等領(lǐng)域有著很廣泛的應(yīng)用。
一般來說機器學(xué)習(xí)是相當(dāng)高深的領(lǐng)域,但是在慧編程中有機器學(xué)習(xí)加法訓(xùn)練的擴(kuò)展模塊,無需高深的編程知識就可以方便使用了,我們就用這個功能來體驗一下機器學(xué)習(xí)吧。
在www.mblock.cc下載并安裝慧編程,這是基于Scratch 3.0開發(fā)的兒童編程軟件,除了基本的積木式編程和Python代碼編程外,它特別融入了AI(人工智能)和 IoT(物聯(lián)網(wǎng))等前沿技術(shù)。
對角色添加擴(kuò)展,在第二頁找到“機器學(xué)習(xí)之加法訓(xùn)練”并添加。
這個模塊是使用上千組數(shù)據(jù)對機器進(jìn)行加法訓(xùn)練,得出輸入和輸出之間的對應(yīng)關(guān)系即訓(xùn)練模型??梢酝ㄟ^調(diào)整不同的訓(xùn)練參數(shù),了解各種機器學(xué)習(xí)的相關(guān)概念和作用。
1) 加數(shù)和被加數(shù)的位數(shù)2
提供的數(shù)據(jù)都是兩位數(shù)以下的加法。
2) 樣本數(shù)據(jù)數(shù)5000
給機器學(xué)習(xí)的數(shù)據(jù)數(shù)量,5000道加法題。
3) 選擇RNN的網(wǎng)絡(luò)類型
這里提供了三種使用非常廣泛的循環(huán)神經(jīng)網(wǎng)絡(luò)模型。循環(huán)神經(jīng)網(wǎng)絡(luò)是當(dāng)前深度學(xué)習(xí)熱潮中最重要和最核心的技術(shù)之一。這里我們無需了解它的運算過程直接使用就可以了。
Simple RNN 簡單循環(huán)神經(jīng)網(wǎng)絡(luò),GRN 門控循環(huán)單元網(wǎng)絡(luò),LSTM 長短期記憶網(wǎng)絡(luò)。
4) 隱藏層數(shù)量
一個神經(jīng)網(wǎng)絡(luò)包括有多個神經(jīng)元層,輸入層、隱藏層及輸出層。輸入層負(fù)責(zé)接收輸入及分發(fā)到隱藏層(因為用戶看不見這些層,所以叫做隱藏層)。這些隱藏層負(fù)責(zé)所需的計算及輸出結(jié)果給輸出層,而用戶則可以看到最終結(jié)果。
隱藏層就是把輸入數(shù)據(jù)的特征,抽象到另一個維度空間,來展現(xiàn)其更抽象化的特征,這些特征能更好地進(jìn)行線性劃分。多個隱藏層其實是對輸入特征多層次的抽象,最終的目的就是為了更好的線性劃分不同類型的數(shù)據(jù)。
5) 每個隱藏層的神經(jīng)元數(shù)量
神經(jīng)元是處理數(shù)據(jù)的節(jié)點。每個神經(jīng)元會對前一個神經(jīng)元傳來的數(shù)據(jù),按照自己擁有的一個權(quán)重系數(shù)進(jìn)行加工。確定合適的神經(jīng)元數(shù)量是一項很專業(yè)的技能,我們直接使用默認(rèn)數(shù)據(jù)即可。
6) 迭代次數(shù)
使用訓(xùn)練集的全部數(shù)據(jù)對模型進(jìn)行一次完整訓(xùn)練稱之為“一代訓(xùn)練”,迭代次數(shù)100就表示用全部數(shù)據(jù)對模型訓(xùn)練100次。
理論上,隱藏層越多神經(jīng)元數(shù)量越多迭代次數(shù)越多,結(jié)果的準(zhǔn)確率就會越高甚至達(dá)到100%,但是增加這些參數(shù)一方面計算量會急劇增大,訓(xùn)練時間會非常長。另外某些參數(shù)設(shè)置過高除了效果提升效果不明顯以外可能還會產(chǎn)生過擬合。
開始訓(xùn)練,計算機準(zhǔn)備數(shù)據(jù)時會卡一會兒,等一會兒后點一下打開數(shù)據(jù)看板,可以看到訓(xùn)練集和測試集曲線。隨著不斷迭代loss損失越來越低,accuracy準(zhǔn)確率越來越高,當(dāng)準(zhǔn)確率接近100%說明訓(xùn)練的效果已經(jīng)達(dá)到,模型對于樣本庫的數(shù)據(jù)可以做到全部判斷正確了,我們判斷模型訓(xùn)練成功了。你可以通過變動各種參數(shù),自己觀察訓(xùn)練時間和訓(xùn)練效果。
根據(jù)訓(xùn)練曲線,模型已經(jīng)獲得很高的正確率。用50組數(shù)據(jù)進(jìn)行測試。點擊“打開數(shù)據(jù)面板”可以看到模型預(yù)測結(jié)果和正確結(jié)果的對比。如果數(shù)據(jù)少迭代次數(shù)不夠模型訓(xùn)練不好正確率就不會高。
這個加法訓(xùn)練可以讓你更好地理解機器學(xué)習(xí)?;劬幊讨羞€有更實用的機器學(xué)習(xí)模塊就需要你花不少功夫去學(xué)習(xí)相關(guān)知識才能使用了。