關於BP演算法和梯度下降

2021-09-01 05:04:15 字數 871 閱讀 2226

最開始學習神經網路,感觸最深的就是bp演算法,當時只用到卻沒有好好體會它背後的深意,在rnn中也會用到乙個類似的演算法(bptt下面會具體講)。對神經網路有些了解,就會熟悉bp演算法由兩個部分組成,向前傳播和反向傳播。

向前傳播從輸入層經過隱藏層到輸出層,給出**結果,在第一次傳輸過程中,使用到的權重(或者說引數)都是最開始隨機初始化的,可想而知這樣隨機初始化的權重,最後得到的結果,與真實值的誤差一定是很大的。

那麼神經網路要做的一件事其實就是得到與真實值相近甚至一樣的**值,那麼就把問題指向了如何修正這些權重值,才能使得**值接近真實值。這就有了代價函式,計算真實值和**值之間的誤差,以這個誤差為基準,進行bp的第二個部分,反向傳播。這個過程的核心就是梯度下降法,求每個權重對應誤差的偏導數值,以此作為修正權重的依據。不知道大家有沒有思考過,為什麼反向傳播要求l對w的導數呢?(l值代價,w是權重)

反向傳播的意義是,修正權重並且縮小cost值,權重更新公式是 w = w - learning_rate * dw

求導就保證了,引數的更新是朝著正確的方向,也就是使cost縮小的方向進行的,

這個圖是過於簡單了,但只是為了說明問題,就不用計較這些細節了。圖一如果cost函式隨w的變化趨勢是向上的,在某個值對w求導得到的導數是正值,為了使l減少,w也需要減少,那麼w = w-learning_rate*dw 就是減少w的值,可以達到效果

如果cost函式隨著w的變化趨勢是向下的,那麼他的導數是負值,為了讓l減少,w反而要增大,w = w-learning_rate*dw ,減去乙個負值就等於增加乙個正值,w增大了,也可以達到效果。

注意learning_rate一定是正的。

梯度下降及BP演算法詳細推導

隨著深度學習的火熱,人們在驚呼其效果之外,對其表現出如此效果的內在原理卻知之甚少,為此,本文基於自己在之前課堂上學習到的知識對其內部工作情況做乙個較為詳細的介紹,考慮到目前主流深度學習還是基於隨機梯度下降及bp演算法進行網路引數的調整,為此本章將對bp演算法進行詳細的推導,希望能對剛入門的讀者有所幫...

梯度下降演算法 梯度下降演算法為何叫梯度下降?

首先,我們知道乙個演算法的名字可以很好地去解釋乙個演算法,那麼梯度下降演算法是什麼呢?很明顯的,就是用梯度這個工具來解決問題的一種演算法。解決什麼問題呢?如何在乙個函式曲面的某一點,找到乙個函式值變化最大的方向。比如 我們站在山上的某一點,我們想要以最快的速度上山,但是我們的步子大小是一定的,那麼最...

關於梯度下降

關於何為梯度下降 批量梯度下降 bgd 用所有資料計算梯度 隨機梯度下降 sgd 用單個資料計算梯度 小批量梯度下降 mbgd 用小部分資料計算梯度 動量梯度下降 momentum 通過結合之前的梯度動量來計算當前的梯度動量,其計算公式的實質為為前n個梯度向量的平均。常用公式如圖,其中 指代平均前1...