0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BP神經(jīng)網(wǎng)絡(luò)算法 BP算法之一種直觀的解釋

新機(jī)器視覺 ? 來源:待字閨中 ? 2023-08-07 09:29 ? 次閱讀

0. 前言

之前上模式識別課程的時候,老師也講過 MLP 的 BP 算法, 但是 ppt 過得太快,只有一個大概印象。后來課下自己也嘗試看了一下stanford deep learning的 wiki, 還是感覺似懂非懂,不能形成一個直觀的思路。趁著這個機(jī)會,我再次 revisit 一下。

1. LMS 算法

故事可以從線性 model 說起(順帶復(fù)習(xí)一下)~在線性 model 里面,常見的有感知機(jī)學(xué)習(xí)算法、 LMS 算法等。感知機(jī)算法的損失函數(shù)是誤分類點到 Target 平面的總距離,直觀解釋如下:當(dāng)一個實例點被誤分,則調(diào)整 w, b 的值,使得分離超平面向該誤分類點的一側(cè)移動,以減少該誤分類點與超平面的距離,在 Bishop 的 PRML一書中,有一個非常優(yōu)雅的圖展現(xiàn)了這個過程。但是了解了 MLP 的 BP 算法之后,感覺這個算法與 LMS 有點相通之處。雖然從名字上 MLP 叫做多層感知機(jī),感知機(jī)算法是單層感知機(jī)。

LMS (Least mean squares) 算法介紹比較好的資料是 Andrew Ng cs229 的Lecture Notes。假設(shè)我們的線性 model 是這樣的:

d25e6fd2-34b3-11ee-9e74-dac502259ad0.jpg

在上面這個模型中,用公式可以表達(dá)成:

d2730d52-34b3-11ee-9e74-dac502259ad0.jpg

如何判斷模型的好壞呢?損失函數(shù)定義為輸出值 h(x) 與目標(biāo)值 y 之間的“二乘”:

d287c878-34b3-11ee-9e74-dac502259ad0.jpg

對偏導(dǎo)進(jìn)行求解,可以得到:

d2a1a216-34b3-11ee-9e74-dac502259ad0.jpg

如果要利用 gradient descent 的方法找到一個好的模型,即一個合適的 theta 向量,迭代的公式為:

d2b3cec8-34b3-11ee-9e74-dac502259ad0.jpg

所以,對于一個第 i 個單獨(dú)的訓(xùn)練樣本來說,我們的第 j 個權(quán)重更新公式是:

d2cef1da-34b3-11ee-9e74-dac502259ad0.jpg

這個更新的規(guī)則也叫做 Widrow-Hoff learning rule, 從上到下推導(dǎo)下來只有幾步,沒有什么高深的理論,但是,仔細(xì)觀察上面的公式,就可以發(fā)現(xiàn)幾個 natural and intuitive 的特性。

首先,權(quán)重的更新是跟 y - h(x) 相關(guān)的,如果訓(xùn)練樣本中預(yù)測值與 y 非常接近,表示模型趨于完善,權(quán)重改變小。反之,如果預(yù)測值與 y 距離比較遠(yuǎn),說明模型比較差,這時候權(quán)重變化就比較大了。

權(quán)重的變化還與 xi 也就是輸入節(jié)點的值相關(guān)。也就是說,在同一次 train 中,由于 y - h(x) 相同, 細(xì)線上的變化與相應(yīng)的輸入節(jié)點 x 的大小是成正比的(參考最上面的模型圖)。這中間體現(xiàn)的直觀印象就是:殘差的影響是按照 xi 分配到權(quán)重上去滴,這里的殘差就是 h(x) - y。

LMS 算法暫時先講到這里,后面的什么收斂特性、梯度下降之類的有興趣可以看看 Lecture Notes。

2. MLP 與 BP 算法

前面我們講過logistic regression, logistic regression 本質(zhì)上是線性分類器,只不過是在線性變換后通過 sigmoid 函數(shù)作非線性變換。而神經(jīng)網(wǎng)絡(luò) MLP 還要在這個基礎(chǔ)上加上一個新的nonlinear function, 為了討論方便,這里的 nonlinear function 都用 sigmoid 函數(shù),并且損失函數(shù)忽略 regulization term, 那么, MLP 的結(jié)構(gòu)就可以用下面這個圖來表示:

d2dfb948-34b3-11ee-9e74-dac502259ad0.jpg
z: 非線性變換之前的節(jié)點值,實際上是前一層節(jié)點的線性變換
a: 非線性變換之后的 activation 值

a=f(z): 這里就是 sigmoid function

現(xiàn)在我們要利用 LMS 中的想法來對這個網(wǎng)絡(luò)進(jìn)行訓(xùn)練。

假設(shè)在某一個時刻,輸入節(jié)點接受一個輸入, MLP 將數(shù)據(jù)從左到右處理得到輸出,這時候產(chǎn)生了殘差。在第一小節(jié)中,我們知道, LMS 殘差等于 h(x) - y。MLP 的最后一層和 LMS 線性分類器非常相似,我們不妨先把最后一層的權(quán)重更新問題解決掉。在這里輸出節(jié)點由于增加了一個非線性函數(shù),殘差的值比 LMS 的殘差多了一個求導(dǎo) (實際上是數(shù)學(xué)上 chain rule 的推導(dǎo)):

d30dd0a8-34b3-11ee-9e74-dac502259ad0.jpg

得到殘差,根據(jù)之前猜想出來的規(guī)律( - -!), 殘差的影響是按照左側(cè)輸入節(jié)點的 a 值大小按比例分配到權(quán)重上去的,所以呢,就可以得到:

d32a6d3a-34b3-11ee-9e74-dac502259ad0.jpg

如果乘以一個 learning rate, 這就是最后一層的權(quán)重更新值。

我們在想,要是能得到中間隱層節(jié)點上的殘差,問題就分解成幾個我們剛剛解決的問題。關(guān)鍵是:中間隱層的殘差怎么算?

實際上就是按照權(quán)重與殘差的乘積返回到上一層。完了之后還要乘以非線性函數(shù)的導(dǎo)數(shù)( again it can be explained by chain rule):

d3406446-34b3-11ee-9e74-dac502259ad0.jpg

得到隱層的殘差,我們又可以得到前一層權(quán)重的更新值了。這樣問題就一步一步解決了。

最后我們發(fā)現(xiàn),其實咱們不用逐層將求殘差和權(quán)值更新交替進(jìn)行,可以這樣:

先從右到左把每個節(jié)點的殘差求出來(數(shù)學(xué)上表現(xiàn)為反向傳導(dǎo)過程)

然后再求權(quán)重的更新值

更新權(quán)重

Q:這是在 Ng 教程中的計算過程, 但是在有些資料中,比如參考資料 [2],殘差和權(quán)值更新是逐層交替進(jìn)行的,那么,上一層的殘差等于下一層的殘差乘以更新后的權(quán)重,明顯,Ng 的教程是乘以沒有更新的權(quán)重,我覺得后者有更好的數(shù)學(xué)特性,期待解疑!

用一張粗略的靜態(tài)圖表示殘差的反向傳播:

d354b5d6-34b3-11ee-9e74-dac502259ad0.jpg

紅色的曲線就是對 sigmoid function 的求導(dǎo),和高斯分布非常相似。

用一張動態(tài)圖表示前向(FP)和后向(BP)傳播的全過程:

d36dcd8c-34b3-11ee-9e74-dac502259ad0.gif

OK,現(xiàn)在 BP 算法有了一個直觀的思路,下面,將從反向傳導(dǎo)的角度更加深入地分析一下 BP 算法。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4717

    瀏覽量

    100036
  • 變換器
    +關(guān)注

    關(guān)注

    17

    文章

    2072

    瀏覽量

    108948
  • LMS算法
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    10206
  • 線性分類器
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1421
  • MLP
    MLP
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    4184

原文標(biāo)題:[干貨]BP 算法之一種直觀的解釋

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    求基于labview的BP神經(jīng)網(wǎng)絡(luò)算法的實現(xiàn)過程

    求高手,基于labview的BP神經(jīng)網(wǎng)絡(luò)算法的實現(xiàn)過程,最好有程序哈,謝謝??!
    發(fā)表于 12-10 14:55

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    `BP神經(jīng)網(wǎng)絡(luò)首先給出只包含個隱層的BP神經(jīng)網(wǎng)絡(luò)模型(兩層神經(jīng)網(wǎng)絡(luò)):
    發(fā)表于 07-21 04:00

    如何設(shè)計BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法?

    神經(jīng)網(wǎng)絡(luò)(Neural Networks)是人工神經(jīng)網(wǎng)絡(luò)(Ar-tificial Neural Networks)的簡稱,是當(dāng)前的研究熱點之一。人腦在接受視覺感官傳來的大量圖像信息后,能迅速做出反應(yīng)
    發(fā)表于 08-08 06:11

    一種BP神經(jīng)網(wǎng)絡(luò)改進(jìn)算法的研究及應(yīng)用

    本文首先介紹了傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)BP 算法的優(yōu)缺點,并結(jié)合模擬退火算法局部搜索全局的特點,提出將模擬退火算法和傳統(tǒng)的
    發(fā)表于 01-09 11:57 ?12次下載

    基于差分進(jìn)化的BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法

    提出了一種基于改進(jìn)差分進(jìn)化算法BP神經(jīng)網(wǎng)絡(luò) 的計算機(jī)網(wǎng)絡(luò)流量預(yù)測方法。利用差分進(jìn)化算法的全局
    發(fā)表于 08-10 16:13 ?31次下載
    基于差分進(jìn)化的<b class='flag-5'>BP</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>學(xué)習(xí)<b class='flag-5'>算法</b>

    基于BP神經(jīng)網(wǎng)絡(luò)算法PID控制器的研究與仿真

    文中將BP神經(jīng)網(wǎng)絡(luò)的原理應(yīng)用于參數(shù)辨識過程,結(jié)合傳統(tǒng)的 PID控制算法,形成一種改進(jìn)型BP神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 07-16 15:53 ?51次下載

    基于模擬退火算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法

    基于模擬退火算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法_周愛武
    發(fā)表于 01-03 17:41 ?0次下載

    BP神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法

    BP神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法
    發(fā)表于 09-08 09:42 ?10次下載
    <b class='flag-5'>BP</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>模型與學(xué)習(xí)<b class='flag-5'>算法</b>

    一種改進(jìn)的自適應(yīng)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)計算模型的優(yōu)化,運(yùn)用到汽車加油量計算中,通過比較標(biāo)準(zhǔn)BP網(wǎng)絡(luò)、Srinivas提出的自適應(yīng)遺傳算法優(yōu)化的BP
    發(fā)表于 11-16 10:39 ?13次下載
    <b class='flag-5'>一種</b>改進(jìn)的自適應(yīng)遺傳<b class='flag-5'>算法</b>優(yōu)化<b class='flag-5'>BP</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    基于BP神經(jīng)網(wǎng)絡(luò)的辨識

    基于BP神經(jīng)網(wǎng)絡(luò)的辨識,1986年,Rumelhart等提出了誤差反向傳播神經(jīng)網(wǎng)絡(luò),簡稱BP網(wǎng)絡(luò)(Back Propagation),該
    發(fā)表于 12-06 15:11 ?0次下載

    BP神經(jīng)網(wǎng)絡(luò)概述

    BP 神經(jīng)網(wǎng)絡(luò)類基于誤差逆向傳播 (BackPropagation, 簡稱 BP) 算法的多層前饋
    的頭像 發(fā)表于 06-19 15:17 ?4.4w次閱讀
    <b class='flag-5'>BP</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>概述

    BP神經(jīng)網(wǎng)絡(luò)算法的基本流程包括

    BP神經(jīng)網(wǎng)絡(luò)算法,即反向傳播(Backpropagation)神經(jīng)網(wǎng)絡(luò)算法,是一種多層前饋
    的頭像 發(fā)表于 07-03 09:52 ?245次閱讀

    bp神經(jīng)網(wǎng)絡(luò)模型怎么算預(yù)測值

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡稱BP網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-03 09:59 ?388次閱讀

    bp神經(jīng)網(wǎng)絡(luò)算法過程包括

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)是一種多層前饋神經(jīng)網(wǎng)絡(luò),具有強(qiáng)大的非線性映射能力,廣泛應(yīng)用于模式識別、信號處理、預(yù)測等領(lǐng)域。本文將詳細(xì)介紹
    的頭像 發(fā)表于 07-04 09:45 ?250次閱讀

    bp神經(jīng)網(wǎng)絡(luò)算法的基本流程包括哪些

    BP神經(jīng)網(wǎng)絡(luò)算法,即反向傳播神經(jīng)網(wǎng)絡(luò)算法,是一種常用的多層前饋
    的頭像 發(fā)表于 07-04 09:47 ?283次閱讀