David Rumelhart 和 J.McClelland 于1985年提出了BP網(wǎng)絡(luò)的誤差反向后傳BP(Back propagation)學(xué)習(xí)算法
BP算法基本原理
利用輸出后的誤差來估計輸出層的直接前導(dǎo)層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。
一個三層BP網(wǎng)絡(luò)

激活函數(shù)
- 必須處處可導(dǎo)(一般都使用S型函數(shù))
使用S型激活函數(shù)時,BP網(wǎng)絡(luò)輸入與輸出關(guān)系
輸入:

輸出:

輸出的導(dǎo)數(shù):

使用S型激活函數(shù)時,BP網(wǎng)絡(luò)的輸出及其導(dǎo)數(shù)圖形:

根據(jù)S激活函數(shù)的圖形:
- net在 -5~0 的時候?qū)?shù)的值為正,且導(dǎo)數(shù)的值逐漸增大,說明此時f(x)在逐漸變大 且 變大的速度越來越快
- net在 0~5 的時候?qū)?shù)的值為正,且導(dǎo)數(shù)的值逐漸減小,說明此時f(x)在逐漸變大 但是 變大的速度越來越慢
對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,我們應(yīng)該盡量將net的值盡量控制在收斂比較快的范圍內(nèi)。
BP網(wǎng)絡(luò)的標準學(xué)習(xí)算法
學(xué)習(xí)的過程:
- 神經(jīng)網(wǎng)絡(luò)在外界輸入樣本的刺激下不斷改變網(wǎng)絡(luò)的連接權(quán)值,以使網(wǎng)絡(luò)的輸出不斷地接近期望的輸出。
學(xué)習(xí)的本質(zhì):
- 對各連接權(quán)值的動態(tài)調(diào)整
學(xué)習(xí)規(guī)則:
- 權(quán)值調(diào)整規(guī)則,即在學(xué)習(xí)過程中網(wǎng)絡(luò)各神經(jīng)元的連接權(quán)值變化所依據(jù)的一定的調(diào)整規(guī)則
BP網(wǎng)絡(luò)的標準學(xué)習(xí)算法-算法思想
學(xué)習(xí)的類型: 有導(dǎo)師學(xué)習(xí)
核心思想: 將輸出誤差
以某種形式通過隱層向輸入層逐層反傳(即,將誤差分攤給各層的所有單元——各層單元的誤差信號,以此來修正各單元權(quán)值)
個人理解 : ** 就如同之前的梯度下降函數(shù)每次更新Θ值一樣,每次來一個樣本,就更新Θ值,使得代價函數(shù)變得越來越小。這個類似,先給他們的權(quán)值賦個隨機初值,然后計算到最后一層(輸出層),若輸出結(jié)果與實際值有誤差(這個正常情況下是肯定有的),那么就進行誤差的反向傳播算法,來優(yōu)化各層的Θ值(權(quán)重值)**學(xué)習(xí)的過程: 信號的正向傳播——》誤差的反向傳播
BP網(wǎng)絡(luò)的標準學(xué)習(xí)算法-學(xué)習(xí)過程
正向傳播
輸入樣本-----輸入層------各隱層--------輸出層判斷是否轉(zhuǎn)入反向傳播階段
若輸入層的實際輸出(h(x))與期望的輸出(y)不符。誤差反傳
誤差以某種形式在各層表示-----修正各層單元的權(quán)值(w或者Θ)最終結(jié)果
網(wǎng)絡(luò)輸出的誤差減少到了可以接受的程度(或 進行到預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止)
BP網(wǎng)絡(luò)的標準學(xué)習(xí)算法
網(wǎng)絡(luò)結(jié)構(gòu)
輸入層有n個神經(jīng)元,隱含層有p個神經(jīng)元,輸出層有q個神經(jīng)元-
變量定義
第一步,網(wǎng)絡(luò)初始化
給各連接權(quán)值分別賦一個區(qū)間(-1,1)內(nèi)的隨機數(shù),設(shè)定誤差函數(shù)e,給定計算精度值ε和最大學(xué)習(xí)次數(shù)M。
第二步,隨機選取第k個輸入樣本以及對應(yīng)的期望輸出

第三步,計算隱含層各神經(jīng)元的輸入和輸出

第四步,利用網(wǎng)絡(luò)期望輸出和實際輸出,計算誤差函數(shù)對輸出層的各神經(jīng)元的偏導(dǎo)數(shù)

可以列出如下等式:
第五步,利用隱含層到輸出層的連接權(quán)值、輸出層的
和隱含層的輸出計算誤差函數(shù)對隱含層各神經(jīng)元的偏導(dǎo)數(shù)


可以列出如下等式:
- 最下面那個方框是’=‘號
第六步,利用輸出層各神經(jīng)元的
和隱含層各神經(jīng)元的輸出來修正連接權(quán)值


第七步,利用隱含層各神經(jīng)元的
和輸入層各神經(jīng)元的輸入?yún)?shù)修正連接權(quán)值。



第八步,計算全局誤差

第九步,判斷網(wǎng)絡(luò)誤差是否滿足要求,判斷網(wǎng)絡(luò)誤差是否滿足要求。當誤差達到預(yù)設(shè)精度或?qū)W習(xí)次數(shù)大于設(shè)定的最大次數(shù),則結(jié)束算法。否則,選取下一個學(xué)習(xí)樣本及對應(yīng)的期望輸出,返回到第三步,進入下一輪學(xué)習(xí)。
BP算法直觀解釋
當誤差對權(quán)值的偏導(dǎo)數(shù)大于零時,權(quán)值調(diào)整量為負,實際輸出大于期望輸出,權(quán)值向減少方向調(diào)整,使得實際輸出與期望輸出的差減少。

當誤差對權(quán)值的偏導(dǎo)數(shù)小于零時,權(quán)值調(diào)整量為正,實際輸出少于期望輸出,權(quán)值向增大方向調(diào)整,使得實際輸出與期望輸出的差減少。











