对反向传播算法(Back-Propagation)的推导与一点理解
最近在對(duì)卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行學(xué)習(xí)的過程中,發(fā)現(xiàn)自己之前對(duì)反向傳播算法的理解不夠透徹,所以今天專門寫篇博客記錄一下反向傳播算法的推導(dǎo)過程,算是一份備忘錄吧,有需要的朋友也可以看一下這篇文章,寫的挺不錯(cuò)的:http://www.cnblogs.com/lancelod/p/4164231.html,本文也大量參考了這篇文章。本文在推導(dǎo)過程中忽略了偏置的存在,這樣做是為了更簡單明晰的闡述BP算法的操作過程,并不是說偏置不重要,希望不會(huì)引起誤會(huì)。
? ? ? ? 我們知道,神經(jīng)網(wǎng)絡(luò)大多采取正向傳播預(yù)測(cè),反向傳播誤差的結(jié)構(gòu)。反向傳播算法是運(yùn)用在神經(jīng)網(wǎng)絡(luò)中進(jìn)行網(wǎng)絡(luò)權(quán)重等最優(yōu)值計(jì)算算法,其核心就是梯度下降 + 鏈?zhǔn)椒▌t求偏導(dǎo),下面就對(duì)反向傳播算法進(jìn)行一下簡單的推導(dǎo):
? ? ? ? 在下面的推導(dǎo)過程中,表示連接前一層神經(jīng)元?和后一層神經(jīng)元?的權(quán)值。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? 對(duì)于輸出層神經(jīng)元?,它的輸入?按下式進(jìn)行計(jì)算(忽略偏置):
? ??
? ? ? ? 可以看到它的輸入等于前一層所有神經(jīng)元的輸出和對(duì)應(yīng)連接的加權(quán)和, 如上圖,而的輸出按下式計(jì)算:
? ? ??
? ? ? ? 對(duì)于有監(jiān)督訓(xùn)練, 期望輸出即樣本類標(biāo)簽d和實(shí)際輸出y都是已知的, 可以定義誤差或者loss function為:
? ? ??
? ? ? ? 前期的準(zhǔn)備工作已經(jīng)完成了,下面開始正式的推導(dǎo)過程:? ? ??
? ? ? ? 這樣,我們就可以根據(jù)最后求出的誤差來對(duì)權(quán)重進(jìn)行更新,這種誤差反向傳遞的方式就是反向傳播算法的精髓所在。
? ? ? ? 處理完輸出層神經(jīng)元,我們?cè)賮砜匆幌螺敵鰧又暗囊粚由窠?jīng)元的權(quán)值更新,我們定義表示連接前一層神經(jīng)元和后一層神經(jīng)元的權(quán)值。
? ? ? ? 相信大家已經(jīng)看出誤差反向傳導(dǎo)的內(nèi)涵了,每一層所產(chǎn)生的誤差會(huì)逐漸向之前的層次傳播,而各層的權(quán)重根據(jù)梯度下降算法不斷地優(yōu)化??傊?#xff0c;反向傳播算法的核心就是梯度下降 + 鏈?zhǔn)椒▌t求偏導(dǎo),雖然看起來很繁瑣并且計(jì)算復(fù)雜度有點(diǎn)高,但是實(shí)際上BP算法的精確性和易用性是很難被其他算法替代的,這也是現(xiàn)在比如CNN等很火的深度學(xué)習(xí)算法普遍采用BP算法的原因。
原文地址:http://blog.csdn.net/qrlhl/article/details/50885527
總結(jié)
以上是生活随笔為你收集整理的对反向传播算法(Back-Propagation)的推导与一点理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 激活函数概述
- 下一篇: 反向传播算法最全解读,机器学习进阶必看!