閱讀設定(推薦配合 快捷鍵[F11] 進入全屏沉浸式閱讀)

設定X

49-54 (1 / 2)

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

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

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

在採用了深度學習的思路和卷積網路(convolutional networks之後,最終達到了99.67%的正確識別率。而針對MNIST資料集達到的歷史最佳成績是99.79%的識別率,是由Li Wan, Matter, 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的函式。

總結來說,C(w,b表徵了網路的實際輸出值和期望輸出值的接近程度。越接近,C(w,b的值就越小。因此,學習的過程就是想辦法降低C(w,b的過程,而不管C(w,b的表達形式如何,它是w和b的函式,這就變成了一個求函式最小值的最最佳化問題。

由於C(w,b的形式比較複雜,引數也非常多,所以直接進行數學上的求解,非常困難。

為了利用計算機演算法解決這一問題,電腦科學家們提出了梯度下降演算法(gradient descent。

這個演算法本質上是在多維空間中沿著各個維度的切線貢獻的方向,每次向下邁出微小的一步,從而最終抵達最小值。

由於多維空間在視覺上無法體現,所以人們通常會退到三維空間進行類比。當C(w,b只有兩個引數的時候,它的函式影象可以在三維空間裡呈現。

就好像一個小球在山谷的斜坡上向下不停地滾動,最終就有可能到達谷底。這個理解重新推廣到多維空間內也基本成立。

而由於訓練樣本的數量很大(上萬,幾十萬,甚至更多),直接根據前面的C(w,b進行計算,計算量會很大,導致學習過程很慢。

、於是就出現了隨機梯度下降(stochastic gradient descent演算法,是對於梯度下降的一個近似。

上一章 目錄 +書籤 下一頁