反向傳播算法(Back Propagation)

機(jī)器學(xué)習(xí)可以看做是數(shù)理統(tǒng)計(jì)的一個(gè)應(yīng)用猜旬,在數(shù)理統(tǒng)計(jì)中一個(gè)常見(jiàn)的任務(wù)就是擬合,也就是給定一些樣本點(diǎn)弟胀,用合適的曲線揭示這些樣本點(diǎn)隨著自變量的變化關(guān)系狸演。

深度學(xué)習(xí)同樣也是為了這個(gè)目的,只不過(guò)此時(shí)滑黔,樣本點(diǎn)不再限定為(x, y)點(diǎn)對(duì)笆包,而可以是由向量矩陣等等組成的廣義點(diǎn)對(duì)(X,Y)略荡。而此時(shí)庵佣,(X,Y)之間的關(guān)系也變得十分復(fù)雜,不太可能用一個(gè)簡(jiǎn)單函數(shù)表示汛兜。然而巴粪,人們發(fā)現(xiàn)可以用多層神經(jīng)網(wǎng)絡(luò)來(lái)表示這樣的關(guān)系,而多層神經(jīng)網(wǎng)絡(luò)本質(zhì)就是一個(gè)多層復(fù)合的函數(shù)序无。

借用網(wǎng)上找到的一幅圖[1]验毡,來(lái)直觀描繪一下這種復(fù)合關(guān)系。

多層神經(jīng)網(wǎng)絡(luò)

其對(duì)應(yīng)的表達(dá)式如下:


多層神經(jīng)網(wǎng)絡(luò)對(duì)應(yīng)的表達(dá)式

上面式中的Wij就是相鄰兩層神經(jīng)元之間的權(quán)值帝嗡,它們就是深度學(xué)習(xí)需要學(xué)習(xí)的參數(shù)晶通,也就相當(dāng)于直線擬合y=k*x+b中的待求參數(shù)k和b。

和直線擬合一樣哟玷,深度學(xué)習(xí)的訓(xùn)練也有一個(gè)目標(biāo)函數(shù)狮辽,這個(gè)目標(biāo)函數(shù)定義了什么樣的參數(shù)才算一組“好參數(shù)”。在機(jī)器學(xué)習(xí)中巢寡,一般是采用成本函數(shù)(cost function)喉脖,然后,訓(xùn)練目標(biāo)就是通過(guò)調(diào)整每一個(gè)權(quán)值Wij來(lái)使得cost達(dá)到最小抑月。cost函數(shù)也可以看成是由所有待求權(quán)值Wij為自變量復(fù)合函數(shù)树叽,而且基本上是非凸的,即含有許多局部最小值谦絮。但實(shí)際中發(fā)現(xiàn)题诵,采用我們常用的梯度下降法就可以有效的求解最小化cost函數(shù)的問(wèn)題洁仗。

凸函數(shù)是一個(gè)定義在某個(gè)向量空間的凸子集C(區(qū)間)上的實(shí)值函數(shù)f,而且對(duì)于凸子集C中任意兩個(gè)向量, f((x1+x2)/2)>=(f(x1)+f(x2))/2,則f(x)是定義在凸子集c中的凸函數(shù)性锭。(定義和圖片來(lái)自百度百科)


凸函數(shù)

梯度下降法需要給定一個(gè)初始點(diǎn)赠潦,并求出該點(diǎn)的梯度向量,然后以負(fù)梯度方向搜索方向草冈,以一定的步長(zhǎng)進(jìn)行搜索她奥,從而確定下一個(gè)迭代點(diǎn),再計(jì)算該新的梯度方向怎棱,如此重復(fù)直到cost收斂哩俭。那么如何計(jì)算梯度呢?

假設(shè)我們把cost函數(shù)表示為

那么它的梯度向量[2]就等于

其中

表示正交單位向量蹄殃。為此携茂,我們需求出cost函數(shù)H對(duì)每一個(gè)權(quán)值Wij的偏導(dǎo)數(shù)。而BP算法正是用來(lái)求解這種多層復(fù)合函數(shù)所有變量偏導(dǎo)數(shù)利器诅岩。

我們以求e=(a+b)*(b+1)的偏導(dǎo)[3]為例讳苦。

它的復(fù)合關(guān)系畫出圖可以表示如下:


復(fù)合關(guān)系圖

在圖中,引入了中間變量c,d吩谦。

為了求出a=2, b=1時(shí)鸳谜,e的梯度,我們可以先利用偏導(dǎo)數(shù)的定義求出不同層之間相鄰節(jié)點(diǎn)的偏導(dǎo)關(guān)系式廷,如下圖所示咐扭。


不同層之間相鄰節(jié)點(diǎn)的偏導(dǎo)關(guān)系


利用鏈?zhǔn)椒▌t我們知道:

以及


鏈?zhǔn)椒▌t在上圖中的意義是什么呢?其實(shí)不難發(fā)現(xiàn)


的值等于從a到e的路徑上的偏導(dǎo)值的乘積滑废,而

的值等于從b到e的路徑1(b-c-e)上的偏導(dǎo)值的乘積加上路徑2(b-d-e)上的偏導(dǎo)值的乘積蝗肪。也就是說(shuō),對(duì)于上層節(jié)點(diǎn)p和下層節(jié)點(diǎn)q蠕趁,要求得

需要找到從q節(jié)點(diǎn)到p節(jié)點(diǎn)的所有路徑薛闪,并且對(duì)每條路徑,求得該路徑上的所有偏導(dǎo)數(shù)之乘積俺陋,然后將所有路徑的 “乘積” 累加起來(lái)才能得到

的值豁延。

大家也許已經(jīng)注意到,這樣做是十分冗余的腊状,因?yàn)楹芏?b>路徑被重復(fù)訪問(wèn)了诱咏。比如上圖中,a-c-e和b-c-e就都走了路徑c-e缴挖。對(duì)于權(quán)值動(dòng)則數(shù)萬(wàn)的深度模型中的神經(jīng)網(wǎng)絡(luò)袋狞,這樣的冗余所導(dǎo)致的計(jì)算量是相當(dāng)大的。

同樣是利用鏈?zhǔn)椒▌t,BP算法則機(jī)智地避開了這種冗余硕并,它對(duì)于每一個(gè)路徑只訪問(wèn)一次就能求頂點(diǎn)對(duì)所有下層節(jié)點(diǎn)的偏導(dǎo)值法焰。

正如反向傳播(BP)算法的名字說(shuō)的那樣,BP算法是反向(自上往下)來(lái)尋找路徑的倔毙。

從最上層的節(jié)點(diǎn)e開始,初始值為1乙濒,以層為單位進(jìn)行處理陕赃。對(duì)于e的下一層的所有子節(jié)點(diǎn),將1乘以e到某個(gè)節(jié)點(diǎn)路徑上的偏導(dǎo)值颁股,并將結(jié)果“堆放”在該子節(jié)點(diǎn)中么库。等e所在的層按照這樣傳播完畢后,第二層的每一個(gè)節(jié)點(diǎn)都“堆放"些值甘有,然后我們針對(duì)每個(gè)節(jié)點(diǎn)诉儒,把它里面所有“堆放”的值求和,就得到了頂點(diǎn)e對(duì)該節(jié)點(diǎn)的偏導(dǎo)亏掀。然后將這些第二層的節(jié)點(diǎn)各自作為起始頂點(diǎn)忱反,初始值設(shè)為頂點(diǎn)e對(duì)它們的偏導(dǎo)值,以"層"為單位重復(fù)上述傳播過(guò)程滤愕,即可求出頂點(diǎn)e對(duì)每一層節(jié)點(diǎn)的偏導(dǎo)數(shù)温算。

以上圖為例,節(jié)點(diǎn)c接受e發(fā)送的1*2并堆放起來(lái)间影,節(jié)點(diǎn)d接受e發(fā)送的1*3并堆放起來(lái)注竿,至此第二層完畢,求出各節(jié)點(diǎn)總堆放量并繼續(xù)向下一層發(fā)送魂贬。節(jié)點(diǎn)c向a發(fā)送2*1并對(duì)堆放起來(lái)巩割,節(jié)點(diǎn)c向b發(fā)送2*1并堆放起來(lái),節(jié)點(diǎn)d向b發(fā)送3*1并堆放起來(lái)付燥,至此第三層完畢宣谈,節(jié)點(diǎn)a堆放起來(lái)的量為2,節(jié)點(diǎn)b堆放起來(lái)的量為2*1+3*1=5, 即頂點(diǎn)e對(duì)b的偏導(dǎo)數(shù)為5.

舉個(gè)不太恰當(dāng)?shù)睦踊幔绻焉蠄D中的箭頭表示欠錢的關(guān)系蒲祈,即c→e表示e欠c的錢。以a, b為例萝嘁,直接計(jì)算e對(duì)它們倆的偏導(dǎo)相當(dāng)于a, b各自去討薪梆掸。a向c討薪,c說(shuō)e欠我錢牙言,你向他要酸钦。于是a又跨過(guò)c去找e。b先向c討薪咱枉,同樣又轉(zhuǎn)向e卑硫,b又向d討薪徒恋,再次轉(zhuǎn)向e』斗可以看到入挣,追款之路,充滿艱辛硝拧,而且還有重復(fù)径筏,即a, b 都從c轉(zhuǎn)向e。

而BP算法就是主動(dòng)還款障陶。e把所欠之錢還給c滋恬,d。c抱究,d收到錢恢氯,樂(lè)呵地把錢轉(zhuǎn)發(fā)給了a,b鼓寺,皆大歡喜勋拟。

------------------------------------------------------------------

【參考文獻(xiàn)】

[1]技術(shù)向:一文讀懂卷積神經(jīng)網(wǎng)絡(luò)CNN

[2]Gradient

[3]http://colah.github.io/posts/2015-08-Backprop/

其他推薦網(wǎng)頁(yè):

1.tensorflow.org 的頁(yè)面

2.Neural networks and deep learning


作者:胡逸夫

鏈接:https://www.zhihu.com/question/27239198/answer/89853077

來(lái)源:知乎

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)侄刽,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處指黎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市州丹,隨后出現(xiàn)的幾起案子醋安,更是在濱河造成了極大的恐慌,老刑警劉巖墓毒,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吓揪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡所计,警方通過(guò)查閱死者的電腦和手機(jī)柠辞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)主胧,“玉大人叭首,你說(shuō)我怎么就攤上這事∽俣埃” “怎么了焙格?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)夷都。 經(jīng)常有香客問(wèn)我眷唉,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任冬阳,我火速辦了婚禮蛤虐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肝陪。我一直安慰自己驳庭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布见坑。 她就那樣靜靜地躺著嚷掠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荞驴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天贯城,我揣著相機(jī)與錄音熊楼,去河邊找鬼。 笑死能犯,一個(gè)胖子當(dāng)著我的面吹牛鲫骗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踩晶,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼执泰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了渡蜻?” 一聲冷哼從身側(cè)響起术吝,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茸苇,沒(méi)想到半個(gè)月后排苍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡学密,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年淘衙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腻暮。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彤守,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哭靖,到底是詐尸還是另有隱情具垫,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布款青,位于F島的核電站做修,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饰及,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一蔗坯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燎含,春花似錦宾濒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赴魁,卻和暖如春卸奉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颖御。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工榄棵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潘拱。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓疹鳄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芦岂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘪弓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容