反向傳播演算法,簡稱bp演算法,適合於多層神經元網路的一種學習演算法,它建立在梯度下降法的基礎上。bp網路的輸入輸出關係實質上是一種對映關係:乙個n輸入m輸出的bp神經網路所完成的功能是從n維歐氏空間向m維歐氏空間中一有限域的連續對映,這一對映具有高度非線性。它的資訊處理能力**於簡單非線性函式的多次復合,因此具有很強的函式復現能力。這是bp演算法得以應用的基礎。
反向傳播演算法主要由兩個環節(激勵傳播、權重更新)反覆迴圈迭代,直到網路的對輸入的響應達到預定的目標範圍為止。
bp演算法的學習過程由正向傳播過程和反向傳播過程組成。在正向傳播過程中,輸入資訊通過輸入層經隱含層,逐層處理並傳向輸出層。如果在輸出層得不到期望的輸出值,則取輸出與期望的誤差的平方和作為目標函式,轉入反向傳播,逐層求出目標函式對各神經元權值的偏導數,構成目標函式對權值向量的梯量,作為修改權值的依據,網路的學習在權值修改過程中完成。誤差達到所期望值時,網路學習結束。
反向傳播是神經網路學習的核心演算法。
相關符號
梯度向量每一項的大小實在告訴大家,代價函式對於每個引數有多敏感
每乙個訓練樣本會對權重偏置的調整造成怎樣的影響?
因為代價函式牽扯到,對成千萬個訓練樣本的代價取平均值,所以我們調整每一步梯度下降用的權重偏置,也會基於所有的訓練樣本,原理上是這麼說,但為了計算效率,從而不必每一步都非得要計算所有的訓練樣本,還要說明一點,
這個訓練樣本會對調整權重和偏置造成怎樣的影響呢?
假設網路還沒有完全訓練好,那麼輸出層的啟用值看起來就很隨機,也許就會出現0.5等,並不能直接改動這些啟用值,只能改變權重和偏置值,但記住想要輸出層出現怎樣的變動,還是很有用的,因為得到最終的分類結果是2,希望第三個輸出值變大,其他數值變小
增加啟用值,有三種方法:1.增加偏置2.增加權重3.改變上一層的啟用值
如何調整權重:
各個權重的影響力各不相同,連線前一層最亮的神經元的權重,影響力也最大,因為這些權重會與大的啟用值相乘,所以至少對於這乙個訓練樣本而言,增大權重值,對最終代價函式造成的影響,就比增大連線暗淡神經元的權重所造成的影響,要大很多倍
反向傳播演算法算的是, 單個訓練樣本想怎樣修改權重與偏置,不僅是說每個引數應該變大還是變小,還包括了這些變化的比例是多大,才能最快地降低代價,真正的梯度下降,得對好幾萬個訓練範例都這麼操作,然後對變化值取平均,這樣算會很慢。
可以先把所有的樣本分到各個的minibatch中去,計算乙個minibatch來作為梯度下降的一步,計算每個minibatch的梯度,調整引數,不斷迴圈,最終會收斂到代價函式的乙個區域性最小值上。
例子:每層只有乙個神經元,由3個權重和3個偏置決定的
目標是理解代價函式對於這些變數有多敏感,這樣就知道怎麼調整這些變數,才可以使得代價降低的最快
反向傳播演算法
首先我們對數學符號做一些約定。我們首先考慮簡單的情況 前饋神經網路,如圖 所示。我們先假設任意兩層之間沒有權值共享。方向傳播演算法本質上就是梯度下降演算法,所以我們要對損失函式關於每個引數求導。設單個輸入例項 x 損失函式為 j x 那麼我們要求解 j wi 和 j bi i 1,2,n 對 j 關...
反向傳播演算法
反向傳播演算法的工作機制為對 錯誤的神經元施以懲罰。從輸出層開始,向上層次查詢 錯誤的神經元,微調這些神經元輸入值的權重,以達到修復輸出錯誤的目的。神經元之所以給出錯誤的 原因在於它前面為其提供輸入的神經元,更確切地說是由兩個神經元之間的權重及輸入值決定的。我們可以嘗試對權重進行微調。每次調整的幅度...
反向傳播演算法
看了很多有關神經網路的資料,一直對於反向傳播演算法總是不理解,對於其過程也是覺得很複雜,讓人想放棄,寫一篇部落格來從頭到尾來擼一遍反向傳播,讓這個黑盒子變透明。主要涉及到的數學方法,就是求偏導數,鏈式法則,沒有其他的複雜的數學公式了 當然求偏導的原理,是利用梯度下降法 因為是要將誤差減小,那麼就需要...