在上一篇文章 《零基礎(chǔ)入門深度學(xué)習(xí):感應(yīng)器、線性單元和梯度下降》 中,我們已經(jīng)掌握了機(jī)器學(xué)習(xí)的基本套路,對模型、目標(biāo)函數(shù)、優(yōu)化算法這些概念有了一定程度的理解,而且已經(jīng)會訓(xùn)練單個(gè)的感知器或者線性單元了。在這篇文章中,我們將把這些單獨(dú)的單元按照一定的規(guī)則相互連接在一起形成 神經(jīng)網(wǎng)絡(luò) ,從而奇跡般的獲得了強(qiáng)大的學(xué)習(xí)能力。我們還將介紹這種網(wǎng)絡(luò)的訓(xùn)練算法: 反向傳播算法 。最后,我們依然用代碼實(shí)現(xiàn)一個(gè)神經(jīng)網(wǎng)絡(luò)。如果您能堅(jiān)持到本文的結(jié)尾,將會看到我們用自己實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)去識別手寫數(shù)字。
神經(jīng)元
神經(jīng)元和感知器本質(zhì)上是一樣的,只不過我們說感知器的時(shí)候,它的激活函數(shù)是階躍函數(shù);而當(dāng)我們說神經(jīng)元時(shí),激活函數(shù)往往選擇為sigmoid函數(shù)或tanh函數(shù)。如下圖所示:


sigmoid函數(shù)的定義如下:

將其帶入前面的式子,得到

sigmoid函數(shù)是一個(gè)非線性函數(shù),值域是(0,1)。函數(shù)圖像如下圖所示

sigmoid函數(shù)的導(dǎo)數(shù)是:

可以看到,sigmoid函數(shù)的導(dǎo)數(shù)非常有趣,它可以用sigmoid函數(shù)自身來表示。這樣,一旦計(jì)算出sigmoid函數(shù)的值,計(jì)算它的導(dǎo)數(shù)的值就非常方便。
神經(jīng)網(wǎng)絡(luò)是啥

神經(jīng)網(wǎng)絡(luò)其實(shí)就是按照一定規(guī)則連接起來的多個(gè)神經(jīng)元。上圖展示了一個(gè)全連接(full connected, FC)神經(jīng)網(wǎng)絡(luò),通過觀察上面的圖,我們可以發(fā)現(xiàn)它的規(guī)則包括:
神經(jīng)元按照層來布局。最左邊的層叫做輸入層,負(fù)責(zé)接收輸入數(shù)據(jù);最右邊的層叫輸出層,我們可以從這層獲取神經(jīng)網(wǎng)絡(luò)輸出數(shù)據(jù)。輸入層和輸出層之間的層叫做隱藏層,因?yàn)樗鼈儗τ谕獠縼碚f是不可見的。
同一層的神經(jīng)元之間沒有連接。
第N層的每個(gè)神經(jīng)元和第N-1層的所有神經(jīng)元相連(這就是full connected的含義),第N-1層神經(jīng)元的輸出就是第N層神經(jīng)元的輸入。
每個(gè)連接都有一個(gè)權(quán)值。
上面這些規(guī)則定義了全連接神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。事實(shí)上還存在很多其它結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),比如卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),他們都具有不同的連接規(guī)則。
計(jì)算神經(jīng)網(wǎng)絡(luò)的輸出
神經(jīng)網(wǎng)絡(luò)實(shí)際上就是一個(gè)輸入向量到輸出向量的函數(shù),即:

根據(jù)輸入計(jì)算神經(jīng)網(wǎng)絡(luò)的輸出,需要首先將輸入向量的每個(gè)元素的值賦給神經(jīng)網(wǎng)絡(luò)的輸入層的對應(yīng)神經(jīng)元,然后根據(jù)式1依次向前計(jì)算每一層的每個(gè)神經(jīng)元的值,直到最后一層輸出層的所有神經(jīng)元的值計(jì)算完畢。最后,將輸出層每個(gè)神經(jīng)元的值串在一起就得到了輸出向量。
接下來舉一個(gè)例子來說明這個(gè)過程,我們先給神經(jīng)網(wǎng)絡(luò)的每個(gè)單元寫上編號。

如上圖,輸入層有三個(gè)節(jié)點(diǎn),我們將其依次編號為1、2、3;隱藏層的4個(gè)節(jié)點(diǎn),編號依次為4、5、6、7;最后輸出層的兩個(gè)節(jié)點(diǎn)編號為8、9。因?yàn)槲覀冞@個(gè)神經(jīng)網(wǎng)絡(luò)是全連接網(wǎng)絡(luò),所以可以看到每個(gè)節(jié)點(diǎn)都和上一層的所有節(jié)點(diǎn)有連接。比如,我們可以看到隱藏層的節(jié)點(diǎn)4,它和輸入層的三個(gè)節(jié)點(diǎn)1、2、3之間都有連接,其連接上的權(quán)重分別為W41,W42,W43。那么,我們怎樣計(jì)算節(jié)點(diǎn)4的輸出值a4呢?