一. 為什么需要神經(jīng)網(wǎng)絡(luò)
目前為止,我們已經(jīng)學(xué)習(xí)了2個機(jī)器學(xué)習(xí)模型。線性回歸一般用來處理線性問題,邏輯回歸用來處理2分類問題。雖然邏輯回歸也可以處理非線性的分類問題,但是當(dāng)我們有非常多的特征時,例如大于100個變量,將會有數(shù)量非常驚人的特征組合。這對于一般的邏輯回歸來說需要計算的特征太多了,負(fù)荷太大。而神經(jīng)網(wǎng)絡(luò)既可以解決復(fù)雜的非線性分類問題,又可以避免龐大的計算量。
二. 神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
人工神經(jīng)網(wǎng)絡(luò)是由很多神經(jīng)元(激活單元)構(gòu)成的,神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的基本元素。
1. 神經(jīng)元
神經(jīng)網(wǎng)絡(luò)的基本邏輯單元(又稱激活單元)如下圖所示:
- 輸入(X):x1,x2,x3是神經(jīng)元的輸入特征,這里我們常常省略X0,它的值是常量1,被稱為偏置單元。
- 連接權(quán)值(θ):連接權(quán)值用于將輸入特征線性組合在一起,構(gòu)成一個線性表達(dá)式。
- 激活函數(shù)(h): 將線性表達(dá)式代入激活函數(shù)中,得到的值就是神經(jīng)元的輸出。
- 神經(jīng)元:黃色小圈。
實(shí)際上,可以這樣理解神經(jīng)元工作過程,當(dāng)將輸入送進(jìn)神經(jīng)元后,神經(jīng)元將輸入與權(quán)值線性組合(實(shí)際上就是θ TX)輸出一個線性表達(dá)式,再將這個表達(dá)式送入激活函數(shù)中,便得到了神經(jīng)元的真實(shí)輸出。
2. 神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)由好多個激活單元構(gòu)成,如下圖所示:

-
向前傳播算法:
第一層的輸入線性組合后,交給第二層的所有神經(jīng)元;第二層每個神經(jīng)元得到輸出后,作為第三層的輸入,線性組合后交給第三層;第三層計算后,最后得到整個網(wǎng)絡(luò)的輸出。
以上面的三層神經(jīng)網(wǎng)絡(luò)為例,假設(shè)每個神經(jīng)元的激活函數(shù)都是g(z)
由第一層計算第二層神經(jīng)元可得
由第二層計算第三層結(jié)果則是
我們可以知道:每一個a都是由上一層所有的輸入(可能是X,也可能是a)和每一個輸入所對應(yīng)的權(quán)重決定的。我們把這樣從左到右的計算方法稱為前向傳播算法( FORWARD PROPAGATION )。 - 這里,第一層叫做輸入層;第三層叫做輸出層;中間層叫做隱藏層,這里只畫了一層,但實(shí)際上隱藏層可以是很多層。
- 注意:我們繪制神經(jīng)網(wǎng)絡(luò)時,每一層都省略了一個額外的節(jié)點(diǎn) x0 ,這個 x0 節(jié)點(diǎn)就是偏置單位(偏置神經(jīng)元)。但因?yàn)?x0 總是等于1,所以有時候,我們會畫出它,有時我們不會畫出,這要看畫出它是否對例子有利。
3. 用數(shù)學(xué)描述神經(jīng)網(wǎng)絡(luò)

4. 更好的理解神經(jīng)網(wǎng)絡(luò)

為了更好的理解神經(jīng)網(wǎng)絡(luò),我們可以把輸入層遮住。假設(shè)我們的激活函數(shù)是sigmoid函數(shù),其實(shí)神經(jīng)網(wǎng)絡(luò)就是邏輯回歸,只不過我們把輸入從x1,x2,x3....換成了中間層的a1,a2,a3.....。
從本質(zhì)上講,在普通的邏輯回歸中,我們被限制為使用數(shù)據(jù)中的原始特征x1,x2,x3......。我們雖然可以使用一些二項式項來組合這些特征,但是我們?nèi)匀皇艿竭@些原始特征的限制。在神經(jīng)網(wǎng)絡(luò)中,原始特征只是輸入層,在我們上面三層的神經(jīng)網(wǎng)絡(luò)例子中,第三層也就是輸出層做出的預(yù)測利用的是第二層的特征,而非輸入層中的原始特征,我們可以認(rèn)為第二層中的特征是神經(jīng)網(wǎng)絡(luò)通過學(xué)習(xí)后自己得出的一系列用于預(yù)測輸出變量的高級的新特征。這就是神經(jīng)網(wǎng)絡(luò)相比于邏輯回歸和線性回歸的優(yōu)勢。
5. 激活函數(shù)的種類
激活函數(shù)的選擇是構(gòu)建神經(jīng)網(wǎng)絡(luò)過程中的重要環(huán)節(jié),下面簡要介紹常用的激活函數(shù)。
(1) 線性函數(shù)( Liner Function )

(2) 斜面函數(shù)( Ramp Function )**

(3) 閾值函數(shù)( Threshold Function )**

以上3個激活函數(shù)都屬于線性函數(shù),下面介紹兩個常用的非線性激活函數(shù)。
(4) S形函數(shù)( Sigmoid Function )

(5) 雙極S形函數(shù)

S形函數(shù)與雙極S形函數(shù)的圖像如下:

雙極S形函數(shù)與S形函數(shù)主要區(qū)別在于函數(shù)的值域,雙極S形函數(shù)值域是(-1,1),而S形函數(shù)值域是(0,1)。由于S形函數(shù)與雙極S形函數(shù)都是可導(dǎo)的(導(dǎo)函數(shù)是連續(xù)函數(shù)),因此適合用在BP神經(jīng)網(wǎng)絡(luò)中。(BP算法要求激活函數(shù)可導(dǎo))
人工神經(jīng)網(wǎng)絡(luò)中,最常用的激活函數(shù)就是sigmoid函數(shù)
三. 神經(jīng)網(wǎng)絡(luò)的類型
神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元互聯(lián)而構(gòu)成的網(wǎng)絡(luò)。根據(jù)網(wǎng)絡(luò)中神經(jīng)元的互聯(lián)方式,常見網(wǎng)絡(luò)結(jié)構(gòu)主要可以分為下面3類:
1. 前饋神經(jīng)網(wǎng)絡(luò)
前饋網(wǎng)絡(luò)也稱前向網(wǎng)絡(luò),是最常見的神經(jīng)網(wǎng)絡(luò),前文提到的都是前饋網(wǎng)絡(luò)。稱之為前饋是因?yàn)樗谳敵龊湍P捅旧碇g沒有反饋,數(shù)據(jù)只能向前傳送,直到到達(dá)輸出層,層間沒有向后的反饋信號。
-
典型網(wǎng)絡(luò):感知機(jī),BP網(wǎng)絡(luò)
2. 反饋神經(jīng)網(wǎng)絡(luò)
反饋型神經(jīng)網(wǎng)絡(luò)是一種從輸出到輸入具有反饋連接的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)比前饋網(wǎng)絡(luò)要復(fù)雜得多。
-
典型網(wǎng)絡(luò):Elman網(wǎng)絡(luò),Hopfield網(wǎng)絡(luò)。
3. 自組織網(wǎng)絡(luò)
自組織神經(jīng)網(wǎng)絡(luò)是一種無監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)。它通過自動尋找樣本中的內(nèi)在規(guī)律和本質(zhì)屬性,自組織、自適應(yīng)地改變網(wǎng)絡(luò)參數(shù)與結(jié)構(gòu)。




