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

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

輸出:

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

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

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

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

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

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


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


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



第八步,計(jì)算全局誤差

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

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











