正常使用的反向傳播演算法有兩個缺點待解決,其一為學習過程中學習率的選擇較難,一旦學習率選擇不當會造成學習效果不好;其二為反向傳播演算法的梯度瀰散作用,即距離輸出層越遠的神經元學習的速度越慢。
martin riedmiller也因此提出了彈性反向傳播演算法(rprop)
反向傳播演算法中的學習率為使用者提前設定的固定的η,並在整個網路中使用單一的η,因此就會出現學習率選擇的問題,而在rprop中,每乙個可優化的權重都對應著乙個單獨的η,不同的權重的學習率不同,並且這些學習率並不是由使用者指定,而是由程式自動的設定,這些學習率在程式執行過程中也並不是靜態不變的,而是每乙個學習時間點學習率都在不斷地更新,即
在一般的反向傳播演算法中,學習過程中權重的改變量是由誤差函式對該權重的偏導(即梯度)所決定,直觀上很有道理,however,we incorporate every jagged feature of the error su***ce,it is at least questionable.這句看不懂,總之有問題就是了啦啦啦
而在rprop中,權重的變化量,因此誤差函式的梯度並不影響權重的變化值,在rprop中梯度僅僅影響權重變化值的符號,即影響權重變化的方向。
綜上,我們已經知道了訓練過程中權重的改變量直接等於每個權重對應的學習率,而權重的改變量的符號則取決於誤差函式的梯度的符號,誤差函式得梯度只決定權值更新的方向,不決定權值更新的強度,如果誤差函式的梯度為正,則我們就需要降低相應的權重,可以使,如果梯度為負數,則就應該增大相應的權重來使誤差函式逼近最小值,如下式所示:
至此已經明確了權重如何更新,接下來說明一下學習率如何更新。
此時首先應當考慮一下如何t和(t-1)兩個時間點的梯度的符號會如何變化,總共有兩種情況。
如果(t-1)和t兩個時間點誤差函式的梯度符號不同,說明在t時我們已經越過了最小值,說明上一次權值的更新步跨太大,則就應當比
如下式所示:
反向傳播演算法
首先我們對數學符號做一些約定。我們首先考慮簡單的情況 前饋神經網路,如圖 所示。我們先假設任意兩層之間沒有權值共享。方向傳播演算法本質上就是梯度下降演算法,所以我們要對損失函式關於每個引數求導。設單個輸入例項 x 損失函式為 j x 那麼我們要求解 j wi 和 j bi i 1,2,n 對 j 關...
反向傳播演算法
反向傳播演算法的工作機制為對 錯誤的神經元施以懲罰。從輸出層開始,向上層次查詢 錯誤的神經元,微調這些神經元輸入值的權重,以達到修復輸出錯誤的目的。神經元之所以給出錯誤的 原因在於它前面為其提供輸入的神經元,更確切地說是由兩個神經元之間的權重及輸入值決定的。我們可以嘗試對權重進行微調。每次調整的幅度...
反向傳播演算法
看了很多有關神經網路的資料,一直對於反向傳播演算法總是不理解,對於其過程也是覺得很複雜,讓人想放棄,寫一篇部落格來從頭到尾來擼一遍反向傳播,讓這個黑盒子變透明。主要涉及到的數學方法,就是求偏導數,鏈式法則,沒有其他的複雜的數學公式了 當然求偏導的原理,是利用梯度下降法 因為是要將誤差減小,那麼就需要...