萌主天下無敵 作品

第640章

    對於這個神經網絡的訓練過程,就是要確定這11935個參數。

    訓練的目標可以粗略概括為:對於每一個訓練樣本,對應的輸出無限接近於1,而其它輸出無限接近於0。

    根據michael nielsen給出的實驗結果,以上述網絡結構為基礎,在未經過調優的情況下,可以輕鬆達到95%的正確識別率。而核心代碼只有74行!

    在採用了深度學習的思路和卷積網絡(convolutional networks)之後,最終達到了99.67%的正確識別率。而針對mnist數據集達到的歷史最佳成績是99.79%的識別率,是由li wan, matthew zeiler, sixin zhang, yann lecun,和 rob fergus在2013年做出的。

    考慮到這個數據集裡還有一些類似如下這樣難以辨認的數字,這個結果是相當驚人的!它已經超越了真正人眼的識別了。

    在這個過程中一步步調整權重和偏置參數的值,就必須引入梯度下降算法(gradient descent)。

    在訓練的過程中,我們的神經網絡需要有一個實際可行的學習算法,來逐步調整參數。

    而最終的目的,是讓網絡的實際輸出與期望輸出能夠儘量接近。我們需要找到一個表達式來對這種接近程度進行表徵。這個表達式被稱為代價函數(cost function)

    x表示一個訓練樣本,即網絡的輸入。其實一個x代表784個輸入。

    y(x)表示當輸入為x的時候,期望的輸出值;而a表示當輸入為x的時候,實際的輸出值。y(x)和a都分別代表10個輸出值(以數學上的向量來表示)。而它們的差的平方,就表徵了實際輸出值和期望輸出值的接近程度。越接近,這個差值就越小。

    n是訓練樣本的數量。假設有5萬個訓練樣本,那麼n就是5萬。因為是多次訓練,所以要除以n對所有訓練樣本求平均值。

    c(w,b)的表示法,是把cost function看成是網絡中所有權重w和偏置b的函數。為什麼這樣看呢?進行訓練的時候,輸入x是固定的(訓練樣本),不會變。在認為輸入不變的情況下,這個式子就可以看成是w和b的函數。那麼,式子右邊的w和b在哪呢?實際上,在a裡面。y(x)也是固定值,但a是w和b的函數。