[整理] BP神經(jīng)網(wǎng)絡(luò)講解——最好的版本

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í)算法-算法思想

  1. 學(xué)習(xí)的類型: 有導(dǎo)師學(xué)習(xí)

  2. 核心思想將輸出誤差以某種形式通過隱層向輸入層逐層反傳(即,將誤差分攤給各層的所有單元——各層單元的誤差信號,以此來修正各單元權(quán)值)
    個人理解 : ** 就如同之前的梯度下降函數(shù)每次更新Θ值一樣,每次來一個樣本,就更新Θ值,使得代價函數(shù)變得越來越小。這個類似,先給他們的權(quán)值賦個隨機初值,然后計算到最后一層(輸出層),若輸出結(jié)果與實際值有誤差(這個正常情況下是肯定有的),那么就進行誤差的反向傳播算法,來優(yōu)化各層的Θ值(權(quán)重值)**

  3. 學(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ù)


可以列出如下等式:

  1. 最下面那個方框是’=‘號

第六步,利用輸出層各神經(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)整,使得實際輸出與期望輸出的差減少。


情況1直觀表達

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

情況二直觀表達
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 章節(jié)主要內(nèi)容 今天讓我們來好好理解一下機器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)算法吧,其中多隱含層的神經(jīng)網(wǎng)絡(luò)算法就是目前最熱的深...
    閃電隨筆閱讀 3,093評論 1 7
  • 楔子 再次見到他時,那個臉上總是掛著暖暖的笑的男孩已經(jīng)不是當年那個青澀稚嫩的少年了。如今,他的手心里牽著的那個人已...
    落梔青檸子閱讀 245評論 0 0
  • 周末總是忙忙碌碌的,早上九點多才出門,帶著軒軒和姥姥姥爺去醫(yī)院,然后取眼鏡,看課程。等吃完午飯回家已經(jīng)累的人仰馬翻...
    KellyWei閱讀 189評論 0 0
  • 目標:種出理想的伴侶 感恩冥想: 1、感恩今天有很多喜鵲給我打招呼。 2、感恩今天在單位與同事協(xié)同工作效率上的提高...
    小兔兔姐姐愛吃胡蘿卜閱讀 273評論 0 0

友情鏈接更多精彩內(nèi)容