創(chuàng)世紀 2:7:
“耶和華神用地上的塵土造人,將生氣吹在他鼻孔里,他就成了有靈的活人?!?/p>
上一篇8 萬能函數(shù)的形態(tài):人工神經(jīng)網(wǎng)絡(luò)解封了人工神經(jīng)網(wǎng)絡(luò),如果用非常簡短的語言來概括它,我更喜歡維基百科的詮釋:
人工神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)網(wǎng)絡(luò)(動物的中樞神經(jīng)系統(tǒng),特別是大腦)的結(jié)構(gòu)和功能的數(shù)學模型或計算模型,用于對函數(shù)進行估計或近似。神經(jīng)網(wǎng)絡(luò)由大量的人工神經(jīng)元聯(lián)結(jié)進行計算。大多數(shù)情況下人工神經(jīng)網(wǎng)絡(luò)能在外界信息的基礎(chǔ)上改變內(nèi)部結(jié)構(gòu),是一種自適應(yīng)系統(tǒng)。
就這樣,人類照著上帝創(chuàng)造生靈萬物的手法,居然也徒手造出了“活物”,且讓它們附體在芯片之中,操縱世事。它們中有龐然大物,有小巧玲瓏,不知疲倦,冰冷無情,是為“魔”。(是我看西游·降魔太多遍了-_-!)
然而要驅(qū)動那一堆首尾相連的神經(jīng)元,讓其“活”起來,還有最后一個步驟,就像圣經(jīng)中神造人時吹的那口生氣,即本篇要說的反向傳播大法(Back Propagation)。

神經(jīng)網(wǎng)絡(luò)有多少參數(shù)?
與線性回歸的算法框架如出一轍,基于神經(jīng)網(wǎng)絡(luò)的機器學習,是基于數(shù)據(jù)的、運用梯度下降算法來優(yōu)化網(wǎng)絡(luò)(減小損失)的過程。
在套用這個算法框架之前,要先搞清楚神經(jīng)網(wǎng)絡(luò)的參數(shù)及其形式。以經(jīng)典的3層感知器為例:

第一層是輸入層,其中的神經(jīng)元僅僅提供輸出值,并不含有權(quán)重和偏置。圖中輸入層有8個神經(jīng)元。
第二層是隱藏層,有15個神經(jīng)元,每個神經(jīng)元都會接收第一層的8個神經(jīng)元的輸出作為輸入,在其內(nèi)部,加權(quán)求和之后還有一個偏置。
第三層是輸出層,有10個神經(jīng)元,每個神經(jīng)元都會接受第二層的15個神經(jīng)元的輸出作為輸入,在其內(nèi)部,加權(quán)求和之后也有一個偏置。
用wjkl來表示一個單獨的權(quán)重,它代表的是第l層的第j個神經(jīng)元、與上一層(l-1)第k個神經(jīng)元輸出相對應(yīng)的權(quán)重?;蛟S你對這種表示方法感到有些別扭,但很快就會適應(yīng)的。以w243為例見下圖:

用bjl來表示第l層上,第j個神經(jīng)元中的偏置,這個比較顯而易見。
基于上述的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和對權(quán)重和偏置的符號的定義,當前構(gòu)建的神經(jīng)網(wǎng)絡(luò)第二層、第三層參數(shù)的矩陣表示如下所示:


基于神經(jīng)網(wǎng)絡(luò)的機器學習
第二層神經(jīng)元的權(quán)重120=15x8個,偏置15個,第三層神經(jīng)元的權(quán)重150=10x15個,偏置10個。整個神經(jīng)網(wǎng)絡(luò)的參數(shù):295個。一個不算特別復雜的,由33個神經(jīng)元構(gòu)成的全連接神經(jīng)網(wǎng)絡(luò),其參數(shù)已經(jīng)達到了295個之多。
所謂的訓練神經(jīng)網(wǎng)絡(luò),就是調(diào)整這295個參數(shù),使其對于樣本數(shù)據(jù),能夠讓“損失”達到最小。再次回顧二次損失函數(shù)的定義(其中n=295):

接著,套用隨機梯度下降算法,調(diào)整每個參數(shù)(以前兩個為例):

至此,只要求取每個參數(shù)對損失函數(shù)的偏導數(shù),代入上式即可對參數(shù)進行1次優(yōu)化??墒俏覀円呀?jīng)知道:神經(jīng)網(wǎng)絡(luò)可以近似任意的函數(shù),但卻無法知道其代表的函數(shù)的確切形式是什么。也就是說,對已知函數(shù)求偏導的公式算法,根本用不上。
反向傳播
從二十世紀40、50年代人工神經(jīng)元被發(fā)明,那一堆首尾相接的神經(jīng)元沉寂了長達三十年的漫漫長夜。直到1986年,心理學家David Rumelhart,在深度學習的守護者Geoffrey E. Hinton等人的協(xié)助下發(fā)現(xiàn)了“反向傳播”終極大法,它們就要“活”起來了。
貼出大法秘訣一飽眼福:




它由四個基本公式構(gòu)成,就像所有真理的數(shù)學描述一樣簡潔。仔細看最后兩個公式,那不就是損失函數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)的參數(shù)(權(quán)值和偏置)的偏導數(shù)的表達式嗎?而這就是反向傳播的核心目的。
至此,6 解鎖梯度下降算法中的隨機梯度下降算法(Mini-batch SGD)所缺失的梯度值計算終于補上了。一次完整的參數(shù)更新步驟如下:
- 確定一個小批量樣本;
- 通過網(wǎng)絡(luò)獲得輸出并計算損失;
- 反向傳播計算損失的梯度;
- 利用梯度更新網(wǎng)絡(luò)中的參數(shù);
就這樣循環(huán)上述步驟,直至讓損失降到最低,我們的網(wǎng)絡(luò)就訓練好了。
上一篇 8 萬能函數(shù)的形態(tài):人工神經(jīng)網(wǎng)絡(luò)
下一篇 10 NN基本功:反傳的推導
共享協(xié)議:署名-非商業(yè)性使用-禁止演繹(CC BY-NC-ND 3.0 CN)
轉(zhuǎn)載請注明:作者黑猿大叔(簡書)