人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種從信息處理角度對人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象從而建立的某種簡單模型,按不同的連接方式組成不同的網(wǎng)絡(luò)。其在語音識別、計算機(jī)視覺和文本處理等方面取得的突破性成果。
神經(jīng)元
在神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元是計算的基本單元,也被稱為節(jié)點或單元。它接受其他節(jié)點或外部的輸入,在計算后產(chǎn)生輸出。每兩個節(jié)點間的連接都代表一個對于通過該連接信號的加權(quán)值,稱之為權(quán)重(w)。該節(jié)點將一個函數(shù)f(定義如下)作用于輸入的加權(quán)和,如下圖所示
上述網(wǎng)絡(luò)采用數(shù)值輸入X1和X2、與輸入相關(guān)聯(lián)的權(quán)重w1和w2以及輸入權(quán)重b(稱為偏置)。稍后我們會介紹更多關(guān)于偏置的細(xì)節(jié)。
神經(jīng)元輸出Y的計算上圖所示。函數(shù)f是非線性的,稱為激活函數(shù)。它的作用是將非線性引入到神經(jīng)元的輸出中,以此達(dá)到神經(jīng)元學(xué)習(xí)非線性表示的目的,滿足實際環(huán)境的數(shù)據(jù)要求。
每個激活函數(shù)都取一個數(shù)并對它進(jìn)行特定的運算。在實際應(yīng)用中我們可能會遇到下面幾種激活函數(shù):
Sigmoid函數(shù):σ(x)=1/(1+exp(?x))
tanh函數(shù):tanh(x)=2σ(2x)?1
ReLU函數(shù):f(x)=max(0,x)
下面是這幾個激活函數(shù)的圖像
偏差的重要性:如果沒有偏置的話,我們所有的分割線都是經(jīng)過原點的,但是現(xiàn)實問題并不會那么如我們所愿。都是能夠是經(jīng)過原點線性可分的。
前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)是第一個也是最簡單的人工神經(jīng)網(wǎng)絡(luò),各神經(jīng)元從輸入層開始,接收前一級輸入,并輸出到下一級,直至輸出層。整個網(wǎng)絡(luò)中無反饋,可用一個有向無環(huán)圖表示。
前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示
前饋神經(jīng)網(wǎng)絡(luò)由三種節(jié)點組成:
1.輸入節(jié)點-輸入階段將來自外部的信息提供給網(wǎng)絡(luò),統(tǒng)稱為“輸入層”。任何輸入節(jié)點都不執(zhí)行計算,它們只是將信息傳遞給隱含階段。
2.隱含節(jié)點-隱含節(jié)點與外界沒有直接聯(lián)系(因此名稱為“隱含”)。他們執(zhí)行計算并將信息從輸入節(jié)點傳輸?shù)捷敵龉?jié)點。隱藏節(jié)點的集合形成“隱藏層”。雖然前饋網(wǎng)絡(luò)只有一個輸入層和一個輸出層,但它可以沒有或有多個隱藏層。
3.輸出節(jié)點-輸出節(jié)點統(tǒng)稱為“輸出層”,負(fù)責(zé)計算并將信息從網(wǎng)絡(luò)傳輸?shù)酵獠渴澜纭?/p>
前饋網(wǎng)絡(luò)的兩個例子如下:
1.單層感知器-這是最簡單的前饋神經(jīng)網(wǎng)絡(luò),不包含任何隱藏層。
2.多層感知器-多層感知器具有一個或多個隱藏層。我們只討論下面的多層感知器,因為它們比實際應(yīng)用中的單層感知器更常用。
多層感知器
多層感知器(MLP)包含一個或多個隱藏層(除了一個輸入層和一個輸出層)。單層感知器只能學(xué)習(xí)線性函數(shù),而多層感知器也可以學(xué)習(xí)非線性函數(shù)。
下圖顯示了具有單個隱藏層的多層感知器。需要注意的是,所有連接都有與之相關(guān)的權(quán)重,但圖中只顯示了三個權(quán)重(w0,w1,w2)。
輸入層:輸入層有三個節(jié)點。偏置節(jié)點的值為1,其他兩個節(jié)點將X1和X2作為外部輸入(數(shù)字值取決于輸入數(shù)據(jù)集)。
如上所述,在輸入層中不執(zhí)行計算,所以來自輸入層中的節(jié)點的輸出分別是1,X1和X2,這些輸入被饋送到隱藏層中。
隱藏層:隱藏層也有三個節(jié)點,其偏置節(jié)點的輸出為1,隱藏層中另外兩個節(jié)點的輸出取決于輸入層(1,X1,X2)的輸出以及與其相關(guān)的權(quán)重。
下圖顯示了其中一個隱藏節(jié)點的輸出計算。同樣,可以計算其他隱藏節(jié)點的輸出。然后,這些輸出被反饋到輸出層中的節(jié)點。
輸出層:輸出層有兩個節(jié)點,它們從隱藏層獲取輸入,并執(zhí)行與隱藏節(jié)點相似的計算。計算結(jié)果(Y1和Y2)將成為多層感知器的輸出。
給定一組特征X=(x1,x2,。。。)和一個目標(biāo)y,多層感知器可以學(xué)習(xí)特征和目標(biāo)之間的關(guān)系,無論是分類還是回歸。
我們舉個例子來更好地理解多層感知器。假設(shè)我們有以下的學(xué)生標(biāo)記數(shù)據(jù)集:
兩個輸入欄顯示學(xué)生學(xué)習(xí)的小時數(shù)和學(xué)生獲得的期中分?jǐn)?shù)。最終結(jié)果欄可以有兩個值1或0,表示學(xué)生是否通過了期末測試。例如,我們可以看到,如果學(xué)生學(xué)習(xí)了35個小時,并在期中獲得了67分,他最終通過了期末測試。
現(xiàn)在假設(shè)我們想預(yù)測一個學(xué)習(xí)25小時,期中70分的學(xué)生是否能通過期末測試。
這是一個二元分類問題,其中多層感知器可以從給定的例子(訓(xùn)練數(shù)據(jù))中學(xué)習(xí),并給出一個新的數(shù)據(jù)點的預(yù)測。我們將在下面看到多層感知器如何學(xué)習(xí)這種關(guān)系。
訓(xùn)練我們的多層感知器
下圖所示的多層感知器在輸入層(除了偏置節(jié)點之外)有兩個節(jié)點,它們采用輸入“小時分析”和“期中標(biāo)記”。它也有一個帶有兩個節(jié)點(除了偏置節(jié)點)的隱藏層。輸出層也有兩個節(jié)點-上層節(jié)點輸出“通過”的概率,而下層節(jié)點輸出“失敗”的概率。
在分類任務(wù)中,我們通常使用Softmax函數(shù)作為多層感知器的輸出層中的激活函數(shù),以確保輸出是確實存在的,并且它們概率相加為1。Softmax函數(shù)采用任意實值向量,并且將其化為一個在0和1之間的矢量,其總和為1。所以,在這種情況下
P(合格)+P(不合格)=1
第1步:向前傳播
網(wǎng)絡(luò)中的所有權(quán)重都是隨機(jī)分配的。讓我們考慮圖中標(biāo)記為V的隱藏層節(jié)點。假設(shè)從輸入到該節(jié)點的連接的權(quán)重是w1,w2和w3(如圖所示)。
然后網(wǎng)絡(luò)將第一個訓(xùn)練樣例作為輸入(我們知道對于輸入35和67,通過的概率是1)。
輸入到網(wǎng)絡(luò)=[35,67]
來自網(wǎng)絡(luò)的期望輸出(目標(biāo))=[1,0]
那么考慮節(jié)點的輸出V可以計算如下(f是一個激活函數(shù),如Sigmoid函數(shù)):
V=f(1*w1+35*w2+67*w3)
同樣,也計算隱藏層中另一個節(jié)點的輸出。隱藏層中兩個節(jié)點的輸出作為輸出層中兩個節(jié)點的輸入。這使我們能夠計算輸出層中兩個節(jié)點的輸出概率。
假設(shè)輸出層兩個節(jié)點的輸出概率分別為0.4和0.6(因為權(quán)重是隨機(jī)分配的,所以輸出也是隨機(jī)的)。我們可以看到,計算的概率(0.4和0.6)與期望的概率(分別為1和0)相差很遠(yuǎn),因此圖中的網(wǎng)絡(luò)被認(rèn)為有“不正確的輸出”。
第2步:向后傳播和權(quán)重更新
我們計算輸出節(jié)點處的總誤差,并使用反向傳播將這些誤差返回網(wǎng)絡(luò)以計算梯度。然后,我們使用一種優(yōu)化方法諸如梯度下降,以減小輸出層誤差在網(wǎng)絡(luò)中的權(quán)重。這將在下面的圖中顯示。
假設(shè)與所考慮的節(jié)點相關(guān)的新權(quán)重是w4,w5和w6(在反向傳播和調(diào)整權(quán)重之后)。
如果我們現(xiàn)在再次向網(wǎng)絡(luò)輸入相同的示例,則網(wǎng)絡(luò)應(yīng)該比以前執(zhí)行得更好,因為權(quán)重現(xiàn)在已經(jīng)被調(diào)整到最小化誤差。如圖所示,與之前的[0.6,-0.4]相比,輸出節(jié)點的誤差現(xiàn)在降低到[0.2,-0.2]。這意味著我們的神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)會了正確的分類我們的第一個訓(xùn)練樣例。
我們在數(shù)據(jù)集中重復(fù)這個過程和所有其他的訓(xùn)練樣例。那么,神經(jīng)網(wǎng)絡(luò)將完全學(xué)會這些例子。
如果我們現(xiàn)在要預(yù)測一個學(xué)習(xí)25小時,期中有70分的學(xué)生是否能通過期末測試,我們就要經(jīng)過前向傳播步驟,找到通過和失敗的概率。
多層感知器的三維可視化
AdamHarley創(chuàng)建了一個已經(jīng)在手寫數(shù)字的MNIST數(shù)據(jù)庫上訓(xùn)練(使用反向傳播)的多層感知器的三維可視化。
網(wǎng)絡(luò)將784個數(shù)字像素值作為來自手寫數(shù)字(其在輸入層中具有對應(yīng)于像素的784個節(jié)點)的28×28圖像的輸入。網(wǎng)絡(luò)在第一個隱藏層有300個節(jié)點,第二個隱藏層有100個節(jié)點,輸出層有10個節(jié)點(對應(yīng)于10個數(shù)字)。
雖然這里描述的網(wǎng)絡(luò)比前一節(jié)討論的要大得多(使用更多的隱藏層和節(jié)點),但正向傳播步驟和反向傳播步驟中的所有計算都是按照相同的方式(在每個節(jié)點處)進(jìn)行的之前。
較亮的顏色表示比其他更高的輸出值的節(jié)點。在輸入層中,亮節(jié)點是那些接收較高像素值作為輸入的節(jié)點。在輸出層中,唯一亮節(jié)點對應(yīng)于數(shù)字5(它的輸出概率為1,比輸出概率為0的其他九個節(jié)點高)。這表明MLP已經(jīng)正確分類輸入的數(shù)字。我強(qiáng)烈推薦使用這個可視化例子來觀察不同層次的節(jié)點之間的連接。
責(zé)任編輯人:CC
評論