當前位置:
首頁 > 最新 > 神經網路的傳播

神經網路的傳播

本文重在闡述神經網路里的前向傳播和反向傳播。

上一篇文章構建了一個簡單的網路,可以看出來它對於手寫數字的識別率還是可以高達91%。但我們尚未對神經網路處理的過程做出太多解釋。

數據在網路中的傳播有兩種方式。一種是沿著輸入到輸出的路徑,被稱為前向傳播。一種是從輸出返回到輸入,被成為反向傳播(backprop)。

前文代碼節選

當我們運行最小化loss的時候,為了求出loss的值,我們的數據會沿著我們構建的通道向前流動,逐步的求出每個節點。

求值示意圖

我們知道prediction是一個[1, 10]的矩陣,那麼下標為i(即分類為i)的值是vi通過softmax函數之後得到的。vi為對應矩陣wi(形狀為[784, 1])乘以x,再加上對應bi。

網路前向傳播示意圖

而反向傳播就是為了最小化loss求梯度的過程了。那什麼是梯度?為什麼選擇梯度下降法來更新權重?首先讓我們看下loss=f(w)可能的圖像:

loss函數3D圖

想到了什麼?或許山脈是跟這圖像最相似的實體。那麼如何求得使loss值最小的權重w?我們先聯想一下我們是如何求出一元函數的極小值的。我們可以通過求導得出斜率,當斜率為0時,則為極小值(不是很嚴謹)。

從一元函數進入多元函數,導數變成了偏導數,發生變化的方向不再只是平面上唯一的x軸,而是立體的多軸。而不同方向的變化都有不同的導數,稱作方嚮導數。而梯度的定義:

梯度的本意是一個向量(矢量),表示某一函數在該點處的方嚮導數沿著該方向取得最大值,即函數在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。

假如有一個函數,z=f(x, y),那麼z的梯度為:

梯度的求解

我們需要注意的是,z函數梯度的方向是z增加最快的方向。我們在深度學習里,需要降低loss,因此我們是選擇loss函數梯度的反方向!

我們將loss對Wi(即W權重的某一個值)求導的過程:

!!!但是我們是為了最小化loss,所以我們根據的應該是:

所以,我們有:

其中,α代表學習率。權重某個值的更新等於原來的值減去學習率乘以導數的值。梯度下降法的原理就是如此。可以看出來,如果靠我們自己去計算,那運算量是很大的。

VGG-56 在 CIFAR-10 數據集上構建的損失函數的 3D 架構。

如上圖所示,loss函數是一個很錯綜複雜的結構,很多尖峰也很多低谷。

CS231N(斯坦福公開課)這麼描述過梯度下降。假設我們把loss對w的函數看成一個山谷。那麼我們每次計算導數的操作就是在試探哪裡是下降的方向,然後不斷的往下走,一直走到山底得到最好的w。

那麼一旦試探到下降的方向後,我們該走多遠,這就是學習率所決定的。

學習率其實是很重要的一個參數。假如太小的話會導致訓練時間過長,因為你需要很久才能走到山底。假如太大,那麼你很有可能跳過極小值,無法獲得較好的模型效果。

來自:http://t.cn/RemjNXg

三幅圖形象的說明了小球如果根據不同的學習率容易遇到的場景。中間的小球陷入了極小值,但無法到達最小值。後面會講到我們如何通過優化器來規避這種問題。

所以很多時候我們都是先預設一個學習率,然後根據模型出來的效果如準確率等來調整。

更詳細的內容因為篇幅問題會分別講解。如損失函數的選擇,優化器(雖然都是梯度下降,但是方式不同)的選擇,學習率,權重的初始化。

PS:如果數學公式錯了請指正。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 呆調星 的精彩文章:

TAG:呆調星 |