深度學習基礎--神經網絡--BP反向傳播算法


BP算法:

  1.是一種有監督學習算法,常被用來訓練多層感知機。

   2.要求每個人工神經元(即節點)所使用的激勵函數必須可微。

  (激勵函數:單個神經元的輸入與輸出之間的函數關系叫做激勵函數。)

  (假如不使用激勵函數,神經網絡中的每層都只是做簡單的線性變換,多層輸入疊加后也還是線性變換。因為線性模型的表達能力不夠,激勵函數可以引入非線性因素)

  

  下面兩幅圖分別為:無激勵函數的神經網絡和激勵函數的神經網絡

    

  

  如圖所示,加入非線性激活函數后的差異:上圖為用線性組合逼近平滑曲線來分割平面,下圖為使用平滑的曲線來分割平面。

  

  3.該算法特別適合用來訓練前饋神經網絡。

   前饋神經網絡:人工神經網絡中的一種。在此種神經網絡中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網絡中無反饋,可用一個有向無環圖表示。按照層數划分,可以分為單層前饋神經網絡和多層前饋神經網絡。常見前饋神經網絡有:感知機(perceptions)、BP(Back Propagation 反向傳播)網絡、RBF(Radial Basis Function 徑向基)網絡等。

  一般看到的神經網絡是這樣的:

       

  計算的時候:  信號從輸入---》輸出的過程是向前傳遞的。

  那么反饋從哪里來?

  在我們的網絡沒訓練好的時候,輸出的結果肯定和想象的不一樣,這時候求偏差,並且把偏差一級一級的向前傳遞,逐層得到,這就是反饋。反饋是用來求偏導數的,而偏導數是用來作梯度下降的,梯度下降又是為了求得代價函數的極小值,使得期望和輸出之間的誤差盡可能的減小。(自己也可以定義一個代價函數,沒准就不需要反饋了呢~)

  4.主要由兩個環節(激勵傳播、權重更新)反復循環迭代,直到網絡對輸入的響應達到預定的目標范圍為止。

  激勵傳播:

      在每次迭代中的傳播環節包含兩步:

      1.(前向傳播階段)將訓練輸入送入到網絡中,以獲得激勵響應。

      2.(反向傳播階段)將激勵響應訓練輸入對應的目標輸出求差,從而獲得隱層和輸出層的響應誤差。

      

    權重更新:

      對於每個突觸上的權重,按照以下步驟進行更新:

      1.將輸入激勵和響應誤差相乘,從而獲得權重的梯度。

      2.將這個梯度乘上一個比例(這個比例將會影響到訓練過程的速度和效果,因此稱為‘訓練因子’。梯度的方向指明了誤差擴大的方向,因此在更新權重的時候需要對其取反,從而減小權重引起的誤差)並取反后加到權重上。

 

綜上:

  反向傳播算法的思路如下:給定一個樣例\textstyle (x,y),我們首先進行“前向傳導”運算,計算出網絡中所有的激活值,包括\textstyle h_{W,b}(x)的輸出值。之后,針對第\textstyle l層的每一個節點 \textstyle i,我們計算出其“殘差”\textstyle \delta^{(l)}_i ,該殘差表明了該節點對最終輸出值的殘差產生了多少影像。對於最終的輸出節點,我們可以直接算出網絡產生的激活值與實際值之間的差距,我們將這個差距定義為\textstyle \delta^{(n_l)}_i(第\textstyle n_l層表示輸出層)。對於隱藏單元我們如何處理呢?我們將基於節點(譯者注:第\textstyle l+1層節點)殘差的加權平均值計算\textstyle \delta^{(l)}_i,這些節點以\textstyle a^{(l)}_i作為輸入。

 

重要參考http://www.cnblogs.com/Crysaty/p/6126321.html


免責聲明!

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



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