全文共1674字,預計學習時長5分鐘
全文共1674字,預計學習時長5分鐘
圖源:zhihu
約翰,不可忽視直覺。因為直覺表示處理過快的數(shù)據(jù),這讓有意識的人根本無法理解?!猄herlock Holmes 神經(jīng)網(wǎng)絡龐大且復雜,對初學者非常不友好。 所以小芯帶來了本期文章——致力于為初學者創(chuàng)建最小的神經(jīng)網(wǎng)絡。 而比起神經(jīng)網(wǎng)絡背后的復雜數(shù)學和算法,通過創(chuàng)建最小的神經(jīng)網(wǎng)絡并訓練它來完成一個簡單的任務,更能讓你對神經(jīng)網(wǎng)絡如何工作有一個直觀的印象。 下面,我們開始吧~
圖源:blog.sina
神經(jīng)網(wǎng)絡背后的想法
神經(jīng)網(wǎng)絡是權重的集合。我們可以在一組輸入和輸出值(目標或標簽)上訓練神經(jīng)網(wǎng)絡。神經(jīng)網(wǎng)絡內(nèi)部的權重與輸入相連并輸出結果。在訓練網(wǎng)絡時,權重會更新,這樣網(wǎng)絡就能嘗試匹配輸出值與目標值。簡而言之,神經(jīng)網(wǎng)絡就是學習輸入和輸出之間的映射。現(xiàn)在,讓我們一起來看看所有這些是什么意思。
最小的神經(jīng)網(wǎng)絡
以下是只有一個權重(w)的最小神經(jīng)網(wǎng)絡。輸入一個值(x),乘以權重,結果就是網(wǎng)絡的輸出值。
由于這個神經(jīng)網(wǎng)絡非常小,我們將在一個非常簡單的任務上對其進行訓練。我們的任務是向其提供任何數(shù)字,網(wǎng)絡應更改該數(shù)字的符號。例如,如果輸入3,則網(wǎng)絡應輸出-3。
利用Keras創(chuàng)建神經(jīng)網(wǎng)絡
現(xiàn)在,我將在Keras中構建并訓練最小的神經(jīng)網(wǎng)絡,這是一個深度學習庫。現(xiàn)在不需要深入了解語法,這只是為了有個直觀印象。
- import kerasfrom keras.layers import Densemodel = keras.models.Sequential()model.add(Dense(1, input_shape=(1,)))modelpile(loss='mse', optimizer='adam')
- view rawsmallest_nn.py hostedwith ? by GitHub
- 創(chuàng)建一個神經(jīng)網(wǎng)絡 太棒了!我們創(chuàng)建了只有一個權重的神經(jīng)網(wǎng)絡?,F(xiàn)在,我們來創(chuàng)建用于訓練神經(jīng)網(wǎng)絡的訓練數(shù)據(jù)。
創(chuàng)建數(shù)據(jù)
- import numpy as npdata_input = np.random.normal(size=100000)data_label =-(data_input)
- view rawsmallest_nn_data.py hostedwith ? by GitHub
- 創(chuàng)建訓練數(shù)據(jù) 我們也創(chuàng)建了訓練數(shù)據(jù)。數(shù)據(jù)包含10萬個隨機數(shù),標簽為該數(shù)字的負數(shù)。用剛剛創(chuàng)建的數(shù)據(jù)來訓練網(wǎng)絡。
訓練網(wǎng)絡
首先,隨機初始化神經(jīng)網(wǎng)絡的權重。隨著不斷訓練網(wǎng)絡,權重也會隨之更新。開始訓練之前,請先檢查權重。
訓練之前的權重
現(xiàn)在把數(shù)據(jù)放入網(wǎng)絡中進行擬合。擬合只不過是訓練的另一個名稱。
訓練網(wǎng)絡
我們已經(jīng)訓練完了網(wǎng)絡。正如你在進度條中看到的一樣,網(wǎng)絡是在10萬個樣本上訓練的?,F(xiàn)在向網(wǎng)絡輸入一個值并觀察反應。
觀察反應
網(wǎng)絡幾乎完成了任務。輸出值與輸入數(shù)字非常接近,而且符號相反。因為我們將在更多的數(shù)據(jù)上訓練這個網(wǎng)絡,所以輸出結果會越來越接近目標值??匆幌卢F(xiàn)在的權值。
訓練后的權重 當我們對網(wǎng)絡進行數(shù)據(jù)訓練時,權重從0.42變?yōu)?1左右。很顯然,一個數(shù)字只有乘以-1才能改變該數(shù)字的符號。
圖源:ofoto.cc
作為一個函數(shù)逼近器,基本上神經(jīng)網(wǎng)絡可以通過調(diào)整它的權值來學習任何輸入值和輸出值之間的映射。一旦它學會了這種映射,它就可以給任何一個輸入值生成一個近似的輸出值。 所以,即使你是初學者,也不要怕,從創(chuàng)建最小的神經(jīng)網(wǎng)絡開始吧~
留言 點贊 關注
我們一起分享AI學習與發(fā)展的干貨如需轉載,請后臺留言,遵守轉載規(guī)范


