手算推導BP神經網絡


一、神經元

下圖的藍色區域被稱為一個“感知機”(Perceptron), 感知機是對信息進行編碼、壓縮、集成、融合的計算機智能接口系統。

說白了,就是在輸入端輸入X1~X7這7個輸入值,在感知機中乘以各自的權重矩陣、加上偏置值b后再放入激活函數f,最后輸出結果y.

 

 

圖中黃圈也代表了一個“感知機”,黃圈中進行了1.矩陣點乘后求和,2.加偏置值b,3.經過激活函數變換,這三項操作。

 

 

 常見的三種激活函數是sigmoid函數(又稱S函數)、tanh函數和Relu函數,圖像和公式見下:

 

 

二、輸入層、隱藏層、輸出層

 

先求輸出層的誤差,而后倒推出隱藏層和輸入層的誤差:(d為真實值,O為最終預測值)

 

 

權重虛擬值:

偏置虛擬值:

 

 三、開始手推公式

 

neth1 通過sigmoid激活函數之后,得到outh1,我們先看一下sigmoid函數的長什么樣:(其實上面介紹激活函數時也畫出來了)

同理可得:

 

 

同理:

總損失:  

 

那么到此,結果的總損失已經算出,現在需要反向傳播求偏導,以求出每一個參數對最終總損失的‘貢獻’,為參數更新做准備。

 

 

                                               

同理:

  

從而得到W1更新值:

        

(注:1. 為學習率,即梯度下降中的步長,為超參數。

2.為什么學習率前是負號?因為目標函數一般都是下凹函數,偏導為正就需左移自變量,為負就需右移自變量)                                                                                              

同理可得到每一個W的更新值:

                

 

 順便放在程序上跑一跑,可以發現進行這樣的反向傳播梯度更新的確會使最終結果越來越接近目標值。

(實際O1=0.01,O2=0.09)

 

最初的權重矩陣W0(隨機賦值)是這樣的:        

                      

迭代1000次(也就是更新1000次參數后)的權重矩陣W1000:

 

 


免責聲明!

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



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