反向傳播

 

一、與梯度的關係:

如:y=x**2

Y.backward()

X.grad==d(y)/d(x),則說明x的梯度是反向傳播函數關於x的導數,即哪個函數backward,用哪個函數進行求導。

二、與損失函數的關係:

參考資料:https://www.jianshu.com/p/964345dddb70

反向傳播旨在優化權重參數,從而得到最優的全局參數矩陣,進而將多層神經網絡應用到分類(前向傳播)或者回歸任務(權重或參數求取)中去,主要應用在包含隱藏層的情況。反向傳播工作原理,當輸出值與真實值不一致時,損失函數會提出一個變量的修改方向與多少,由於隱藏層的存在,無法直接根據損失函數進行輸入在隱藏層中權重矩陣或參數的修改,使用反響傳播可以使隱藏層間接獲得修改指示。具體傳播過程如下所示:

接着對輸入層的w11進行參數更新,更新之前我們依然從後往前推導,直到預見第一層的w11爲止(只不過這次需要往前推的更久一些):

 

因此誤差對輸入層的w11求偏導如下:

求導得如下公式(有點長(ฅ́˘ฅ̀)):

同理,輸入層的其他三個參數按照同樣的方法即可求出各自的偏導,在這不再贅述。在每個參數偏導數明確的情況下,帶入梯度下降公式即可(不在重點介紹):

 

至此,需要更新的權重已經獲得,其實就是原始權重加上損失函數對某一權重的偏導數乘以學習率。

Y.backward()==d

詳情參考:https://gitee.com/ski133/PytorchTest/blob/master/PyTorchTest/%E4%BA%A4%E5%8F%89%E7%86%B5%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0.docx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章