人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種從信息處理角度對(duì)人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象從而建立的某種簡(jiǎn)單模型,按不同的連接方式組成不同的網(wǎng)絡(luò)。其在語(yǔ)音識(shí)別、計(jì)算機(jī)視覺(jué)和文本處理等方面取得的突破性成果。
神經(jīng)元
在神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元是計(jì)算的基本單元,也被稱為節(jié)點(diǎn)或單元。它接受其他節(jié)點(diǎn)或外部的輸入,在計(jì)算后產(chǎn)生輸出。每?jī)蓚€(gè)節(jié)點(diǎn)間的連接都代表一個(gè)對(duì)于通過(guò)該連接信號(hào)的加權(quán)值,稱之為權(quán)重(w)。該節(jié)點(diǎn)將一個(gè)函數(shù)f(定義如下)作用于輸入的加權(quán)和,如下圖所示
上述網(wǎng)絡(luò)采用數(shù)值輸入X1和X2、與輸入相關(guān)聯(lián)的權(quán)重w1和w2以及輸入權(quán)重b(稱為偏置)。稍后我們會(huì)介紹更多關(guān)于偏置的細(xì)節(jié)。
神經(jīng)元輸出Y的計(jì)算上圖所示。函數(shù)f是非線性的,稱為激活函數(shù)。它的作用是將非線性引入到神經(jīng)元的輸出中,以此達(dá)到神經(jīng)元學(xué)習(xí)非線性表示的目的,滿足實(shí)際環(huán)境的數(shù)據(jù)要求。
每個(gè)激活函數(shù)都取一個(gè)數(shù)并對(duì)它進(jìn)行特定的運(yùn)算。在實(shí)際應(yīng)用中我們可能會(huì)遇到下面幾種激活函數(shù):
Sigmoid函數(shù):σ(x)=1/(1+exp(?x))
tanh函數(shù):tanh(x)=2σ(2x)?1
ReLU函數(shù):f(x)=max(0,x)
下面是這幾個(gè)激活函數(shù)的圖像
偏差的重要性:如果沒(méi)有偏置的話,我們所有的分割線都是經(jīng)過(guò)原點(diǎn)的,但是現(xiàn)實(shí)問(wèn)題并不會(huì)那么如我們所愿。都是能夠是經(jīng)過(guò)原點(diǎn)線性可分的。
前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)是第一個(gè)也是最簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò),各神經(jīng)元從輸入層開(kāi)始,接收前一級(jí)輸入,并輸出到下一級(jí),直至輸出層。整個(gè)網(wǎng)絡(luò)中無(wú)反饋,可用一個(gè)有向無(wú)環(huán)圖表示。
前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示
前饋神經(jīng)網(wǎng)絡(luò)由三種節(jié)點(diǎn)組成:
1.輸入節(jié)點(diǎn)-輸入階段將來(lái)自外部的信息提供給網(wǎng)絡(luò),統(tǒng)稱為“輸入層”。任何輸入節(jié)點(diǎn)都不執(zhí)行計(jì)算,它們只是將信息傳遞給隱含階段。
2.隱含節(jié)點(diǎn)-隱含節(jié)點(diǎn)與外界沒(méi)有直接聯(lián)系(因此名稱為“隱含”)。他們執(zhí)行計(jì)算并將信息從輸入節(jié)點(diǎn)傳輸?shù)捷敵龉?jié)點(diǎn)。隱藏節(jié)點(diǎn)的集合形成“隱藏層”。雖然前饋網(wǎng)絡(luò)只有一個(gè)輸入層和一個(gè)輸出層,但它可以沒(méi)有或有多個(gè)隱藏層。
3.輸出節(jié)點(diǎn)-輸出節(jié)點(diǎn)統(tǒng)稱為“輸出層”,負(fù)責(zé)計(jì)算并將信息從網(wǎng)絡(luò)傳輸?shù)酵獠渴澜纭?/p>
前饋網(wǎng)絡(luò)的兩個(gè)例子如下:
1.單層感知器-這是最簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò),不包含任何隱藏層。
2.多層感知器-多層感知器具有一個(gè)或多個(gè)隱藏層。我們只討論下面的多層感知器,因?yàn)樗鼈儽葘?shí)際應(yīng)用中的單層感知器更常用。
多層感知器
多層感知器(MLP)包含一個(gè)或多個(gè)隱藏層(除了一個(gè)輸入層和一個(gè)輸出層)。單層感知器只能學(xué)習(xí)線性函數(shù),而多層感知器也可以學(xué)習(xí)非線性函數(shù)。
下圖顯示了具有單個(gè)隱藏層的多層感知器。需要注意的是,所有連接都有與之相關(guān)的權(quán)重,但圖中只顯示了三個(gè)權(quán)重(w0,w1,w2)。
輸入層:輸入層有三個(gè)節(jié)點(diǎn)。偏置節(jié)點(diǎn)的值為1,其他兩個(gè)節(jié)點(diǎn)將X1和X2作為外部輸入(數(shù)字值取決于輸入數(shù)據(jù)集)。
如上所述,在輸入層中不執(zhí)行計(jì)算,所以來(lái)自輸入層中的節(jié)點(diǎn)的輸出分別是1,X1和X2,這些輸入被饋送到隱藏層中。
隱藏層:隱藏層也有三個(gè)節(jié)點(diǎn),其偏置節(jié)點(diǎn)的輸出為1,隱藏層中另外兩個(gè)節(jié)點(diǎn)的輸出取決于輸入層(1,X1,X2)的輸出以及與其相關(guān)的權(quán)重。
下圖顯示了其中一個(gè)隱藏節(jié)點(diǎn)的輸出計(jì)算。同樣,可以計(jì)算其他隱藏節(jié)點(diǎn)的輸出。然后,這些輸出被反饋到輸出層中的節(jié)點(diǎn)。
輸出層:輸出層有兩個(gè)節(jié)點(diǎn),它們從隱藏層獲取輸入,并執(zhí)行與隱藏節(jié)點(diǎn)相似的計(jì)算。計(jì)算結(jié)果(Y1和Y2)將成為多層感知器的輸出。
給定一組特征X=(x1,x2,。。。)和一個(gè)目標(biāo)y,多層感知器可以學(xué)習(xí)特征和目標(biāo)之間的關(guān)系,無(wú)論是分類還是回歸。
我們舉個(gè)例子來(lái)更好地理解多層感知器。假設(shè)我們有以下的學(xué)生標(biāo)記數(shù)據(jù)集:

兩個(gè)輸入欄顯示學(xué)生學(xué)習(xí)的小時(shí)數(shù)和學(xué)生獲得的期中分?jǐn)?shù)。最終結(jié)果欄可以有兩個(gè)值1或0,表示學(xué)生是否通過(guò)了期末測(cè)試。例如,我們可以看到,如果學(xué)生學(xué)習(xí)了35個(gè)小時(shí),并在期中獲得了67分,他最終通過(guò)了期末測(cè)試。
現(xiàn)在假設(shè)我們想預(yù)測(cè)一個(gè)學(xué)習(xí)25小時(shí),期中70分的學(xué)生是否能通過(guò)期末測(cè)試。

這是一個(gè)二元分類問(wèn)題,其中多層感知器可以從給定的例子(訓(xùn)練數(shù)據(jù))中學(xué)習(xí),并給出一個(gè)新的數(shù)據(jù)點(diǎn)的預(yù)測(cè)。我們將在下面看到多層感知器如何學(xué)習(xí)這種關(guān)系。
訓(xùn)練我們的多層感知器
下圖所示的多層感知器在輸入層(除了偏置節(jié)點(diǎn)之外)有兩個(gè)節(jié)點(diǎn),它們采用輸入“小時(shí)分析”和“期中標(biāo)記”。它也有一個(gè)帶有兩個(gè)節(jié)點(diǎn)(除了偏置節(jié)點(diǎn))的隱藏層。輸出層也有兩個(gè)節(jié)點(diǎn)-上層節(jié)點(diǎn)輸出“通過(guò)”的概率,而下層節(jié)點(diǎn)輸出“失敗”的概率。
在分類任務(wù)中,我們通常使用Softmax函數(shù)作為多層感知器的輸出層中的激活函數(shù),以確保輸出是確實(shí)存在的,并且它們概率相加為1。Softmax函數(shù)采用任意實(shí)值向量,并且將其化為一個(gè)在0和1之間的矢量,其總和為1。所以,在這種情況下
P(合格)+P(不合格)=1
第1步:向前傳播
網(wǎng)絡(luò)中的所有權(quán)重都是隨機(jī)分配的。讓我們考慮圖中標(biāo)記為V的隱藏層節(jié)點(diǎn)。假設(shè)從輸入到該節(jié)點(diǎn)的連接的權(quán)重是w1,w2和w3(如圖所示)。
然后網(wǎng)絡(luò)將第一個(gè)訓(xùn)練樣例作為輸入(我們知道對(duì)于輸入35和67,通過(guò)的概率是1)。
輸入到網(wǎng)絡(luò)=[35,67]
來(lái)自網(wǎng)絡(luò)的期望輸出(目標(biāo))=[1,0]
那么考慮節(jié)點(diǎn)的輸出V可以計(jì)算如下(f是一個(gè)激活函數(shù),如Sigmoid函數(shù)):
V=f(1*w1+35*w2+67*w3)
同樣,也計(jì)算隱藏層中另一個(gè)節(jié)點(diǎn)的輸出。隱藏層中兩個(gè)節(jié)點(diǎn)的輸出作為輸出層中兩個(gè)節(jié)點(diǎn)的輸入。這使我們能夠計(jì)算輸出層中兩個(gè)節(jié)點(diǎn)的輸出概率。
假設(shè)輸出層兩個(gè)節(jié)點(diǎn)的輸出概率分別為0.4和0.6(因?yàn)闄?quán)重是隨機(jī)分配的,所以輸出也是隨機(jī)的)。我們可以看到,計(jì)算的概率(0.4和0.6)與期望的概率(分別為1和0)相差很遠(yuǎn),因此圖中的網(wǎng)絡(luò)被認(rèn)為有“不正確的輸出”。

第2步:向后傳播和權(quán)重更新
我們計(jì)算輸出節(jié)點(diǎn)處的總誤差,并使用反向傳播將這些誤差返回網(wǎng)絡(luò)以計(jì)算梯度。然后,我們使用一種優(yōu)化方法諸如梯度下降,以減小輸出層誤差在網(wǎng)絡(luò)中的權(quán)重。這將在下面的圖中顯示。
假設(shè)與所考慮的節(jié)點(diǎn)相關(guān)的新權(quán)重是w4,w5和w6(在反向傳播和調(diào)整權(quán)重之后)。

如果我們現(xiàn)在再次向網(wǎng)絡(luò)輸入相同的示例,則網(wǎng)絡(luò)應(yīng)該比以前執(zhí)行得更好,因?yàn)闄?quán)重現(xiàn)在已經(jīng)被調(diào)整到最小化誤差。如圖所示,與之前的[0.6,-0.4]相比,輸出節(jié)點(diǎn)的誤差現(xiàn)在降低到[0.2,-0.2]。這意味著我們的神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)會(huì)了正確的分類我們的第一個(gè)訓(xùn)練樣例。

我們?cè)跀?shù)據(jù)集中重復(fù)這個(gè)過(guò)程和所有其他的訓(xùn)練樣例。那么,神經(jīng)網(wǎng)絡(luò)將完全學(xué)會(huì)這些例子。
如果我們現(xiàn)在要預(yù)測(cè)一個(gè)學(xué)習(xí)25小時(shí),期中有70分的學(xué)生是否能通過(guò)期末測(cè)試,我們就要經(jīng)過(guò)前向傳播步驟,找到通過(guò)和失敗的概率。
多層感知器的三維可視化
AdamHarley創(chuàng)建了一個(gè)已經(jīng)在手寫數(shù)字的MNIST數(shù)據(jù)庫(kù)上訓(xùn)練(使用反向傳播)的多層感知器的三維可視化。
網(wǎng)絡(luò)將784個(gè)數(shù)字像素值作為來(lái)自手寫數(shù)字(其在輸入層中具有對(duì)應(yīng)于像素的784個(gè)節(jié)點(diǎn))的28×28圖像的輸入。網(wǎng)絡(luò)在第一個(gè)隱藏層有300個(gè)節(jié)點(diǎn),第二個(gè)隱藏層有100個(gè)節(jié)點(diǎn),輸出層有10個(gè)節(jié)點(diǎn)(對(duì)應(yīng)于10個(gè)數(shù)字)。
雖然這里描述的網(wǎng)絡(luò)比前一節(jié)討論的要大得多(使用更多的隱藏層和節(jié)點(diǎn)),但正向傳播步驟和反向傳播步驟中的所有計(jì)算都是按照相同的方式(在每個(gè)節(jié)點(diǎn)處)進(jìn)行的之前。
較亮的顏色表示比其他更高的輸出值的節(jié)點(diǎn)。在輸入層中,亮節(jié)點(diǎn)是那些接收較高像素值作為輸入的節(jié)點(diǎn)。在輸出層中,唯一亮節(jié)點(diǎn)對(duì)應(yīng)于數(shù)字5(它的輸出概率為1,比輸出概率為0的其他九個(gè)節(jié)點(diǎn)高)。這表明MLP已經(jīng)正確分類輸入的數(shù)字。我強(qiáng)烈推薦使用這個(gè)可視化例子來(lái)觀察不同層次的節(jié)點(diǎn)之間的連接。
責(zé)任編輯人:CC
電子發(fā)燒友App













評(píng)論