1. 程式人生 > 其它 >反向傳播演算法

反向傳播演算法

反向傳播演算法

介紹

  反向傳播演算法,簡稱BP演算法,適合於多層神經元網路的一種學習演算法,它建立在梯度下降法的基礎上。BP網路的輸入輸出關係實質上是一種對映關係:一個n輸入m輸出的BP神經網路所完成的功能是從n維歐氏空間向m維歐氏空間中一有限域的連續對映,這一對映具有高度非線性。它的資訊處理能力來源於簡單非線性函式的多次複合,因此具有很強的函式復現能力。這是BP演算法得以應用的基礎。

  反向傳播演算法主要由兩個環節(激勵傳播、權重更新)反覆迴圈迭代,直到網路的對輸入的響應達到預定的目標範圍為止。
BP演算法的學習過程由正向傳播過程和反向傳播過程組成。在正向傳播過程中,輸入資訊通過輸入層經隱含層,逐層處理並傳向輸出層。如果在輸出層得不到期望的輸出值,則取輸出與期望的誤差的平方和作為目標函式,轉入反向傳播,逐層求出目標函式對各神經元權值的偏導數,構成目標函式對權值向量的梯量,作為修改權值的依據,網路的學習在權值修改過程中完成。誤差達到所期望值時,網路學習結束。

相關學習

  反向傳播是神經網路學習的核心演算法。

  相關符號

  梯度向量每一項的大小實在告訴大家,代價函式對於每個引數有多敏感

  每一個訓練樣本會對權重偏置的調整造成怎樣的影響?
因為代價函式牽扯到,對成千萬個訓練樣本的代價取平均值,所以我們調整每一步梯度下降用的權重偏置,也會基於所有的訓練樣本,原理上是這麼說,但為了計算效率,從而不必每一步都非得要計算所有的訓練樣本,還要說明一點,

這個訓練樣本會對調整權重和偏置造成怎樣的影響呢?
假設網路還沒有完全訓練好,那麼輸出層的啟用值看起來就很隨機,也許就會出現0.5等,並不能直接改動這些啟用值,只能改變權重和偏置值,但記住想要輸出層出現怎樣的變動,還是很有用的,因為得到最終的分類結果是2,希望第三個輸出值變大,其他數值變小

增加啟用值,有三種方法:1.增加偏置2.增加權重3.改變上一層的啟用值

如何調整權重:
各個權重的影響力各不相同,連線前一層最亮的神經元的權重,影響力也最大,因為這些權重會與大的啟用值相乘,所以至少對於這一個訓練樣本而言,增大權重值,對最終代價函式造成的影響,就比增大連線暗淡神經元的權重所造成的影響,要大很多倍

反向傳播演算法算的是, 單個訓練樣本想怎樣修改權重與偏置,不僅是說每個引數應該變大還是變小,還包括了這些變化的比例是多大,才能最快地降低代價,真正的梯度下降,得對好幾萬個訓練範例都這麼操作,然後對變化值取平均,這樣算會很慢。
可以先把所有的樣本分到各個的minibatch中去,計算一個minibatch來作為梯度下降的一步,計算每個minibatch的梯度,調整引數,不斷迴圈,最終會收斂到代價函式的一個區域性最小值上。

反向傳播的微積分原理

例子:
每層只有一個神經元,由3個權重和3個偏置決定的

目標是理解代價函式對於這些變數有多敏感,這樣就知道怎麼調整這些變數,才可以使得代價降低的最快

相關視訊:
https://www.bilibili.com/video/BV16x411V7Qg/?spm_id_from=pageDriver

https://www.bilibili.com/video/BV16x411V7Qg/?spm_id_from=pageDriver