【零基礎】看懂神經網絡中的反向傳播


一、序言

  反向傳播在神經網絡中用於優化權重w和閾值b,是神經網絡優化的核心算法。經過數日的學習終於看明白了一點反向傳播的原理,這里作文記錄心得。

  本文先介紹一下基本的數學計算方法,然后根據“損失計算公式”推導出優化參數的反向傳播方法。

二、基本數學原理

  神經網絡中優化參數w、b的方法稱為反向傳播,反向傳播的具體實施方法稱為“梯度下降”,梯度下降涉及兩個基本的數學知識:求導、鏈式法則。

  1)求導

  假設有以下式:

  

  上式對x求導:

  

 

   實例:

  

 

   2)鏈式法則

  

 

   鏈式法則的意義在於將z對x的求導轉化為z對y的求導和y對x的求導,示例如下:

  

 

   

 

  求y對z的導數

   

 

   已知:

  

 

  所以:

  

 

  3)求導的數學意義

  

 

  如上圖所示,y對於x的導數本質上是求得x0處的斜率,若我們將x0增大一點點Δx,就可求得y軸上增大了多少Δy:

  Δy = Δx*(x0處的斜率)

  若我們想讓y值趨向於最小,可以用y減去Δy:

  y = y0-Δy = y0-Δx*(x0處的斜率)

  其中y0、Δx、x0處的斜率都是已知的,我們就可以逐步趨近最小的y值。需要注意的是Δy只是一個近似的y軸增大量,不是實際的,但我們可以通過這個方法不斷“逼近”y 的最小值。

三、損失計算

  考慮一個簡單的傳播函數:

  y = wx + b

  其中w是權重、b是閾值、x是輸入、y是預測輸出,我們可以用預測輸出減去實際輸出得到損失(預測與實際之間的差異):

 

   實際操作中我們會取誤差的平方,因為平方差使得導出回歸線更容易。只是為了降低運算難度,使用誤差或誤差的平方來衡量損失本質上沒有區別。

 

  實際使用時,Y其實是個常數(label值),引入傳播函數(Y撇)=wx+b

  Cost = (wx+b - Y)^2

 

四、梯度下降

  看上面的損失計算公式,會發現其實它是個拋物線,可以簡化為y = x^2:

 

  讓預測結果趨向於實際結果,本質上就是要找到一個最小的cost,也就是使上圖中y趨向於0。有一點需要注意的是,在下式中:

  Cost = (wx+b - Y)^2

  我們期望的是找到一個最佳的w和b來求得最小的Cost,其中x和Y其實都是已知的。所以我們是對w和b求導求得Δw和Δb。為便於計算,我們可以做以下變化:

  Cost = (Error)^2

  Error = wx+b-Y

  

 

   

 

   根據鏈式法則,我們就可以得到:

  

 

  所以Δw = 2*error*x

  類似地可以推導出Δb=2*error

  在實際使用時,error值、x值都是已知的所以我們可以求得Δw和Δb

 

   上述反向傳播的實現代碼中,img即是x,Y-label即是error,除以m是因為實際操作時是一次對m個圖片進行處理,這里求dw、db時需要取平均值所以除以m。其次實際代碼中我們把Δw = 2*error*x的常數2忽略了,對實際操作沒有影響。

五、總結

  最后在優化參數時,我們會用Δw和Δb乘以一個非常小的浮點數如0.001稱為步幅(learning rate),再用w-Δw、b-Δb。所以本質上來說Δw和Δb只是指明了梯度下降的方向,比如在下面的函數圖形中,在x軸左側應當增大x值,在x軸右側則應該減小x值,我們通過斜率就可以知道具體應該減少還是增大了。

請關注公眾號“零基礎愛學習”一起AI學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM