1. 程式人生 > >神經網路和BP演算法

神經網路和BP演算法

5. 神經網路

5.1 前向傳播

神經網路分為很多層,包括輸入層、輸出層和中間的隱層。

使用的符號如下:

a i ( j ) 第j層,第i個單元的輸出(activity)

Θ ( j ) 第j層向第j+1層傳播的係數矩陣,如果在j層有 S

j 個節點,j+1層有 S j + 1 個節點,那麼,
Θ ( j ) R S j + 1 × ( S j + 1 )
,其中的+1 是由於上述節點沒有包含偏倚節點(bias)即邏輯迴歸中的常數項b。

通過調節權重係數,神經網路可以得到XOR, XNOR, AND, NOT, OR

多分類問題

神經網路處理多分類問題採用的是one-vs-all的方法,對於k類問題,輸出層為k個節點,正確的分類輸出節點為1,其餘的為0.

5.2 損失函式

神經網路中節點的輸入到輸出的非線性函式一般選用sigmoid函式,因此藉助邏輯迴歸的損失函式,可以寫出輸出層有K個節點有k個樣本的神經網路的損失函式

J ( Θ ) = 1 m i = 1 m k = 1 K [ y k ( i ) l o g ( h Θ ( x ( i ) ) k ) + ( 1 y k ( i ) ) l o g ( 1 h Θ ( x ( i ) ) k ] + λ 2 m l = 1 L 1 i = 1 S l j = 1 S l + 1 ( Θ j , i ( l ) ) 2
上式中, L 為神經網路的總層數,每一層的節點數為 S l ,

Θ j , i ( l ) 表示第 l 層的第j 個節點到第 l + 1 層的第i 個節點的連結的權重。

上面的損失函式就是將每個輸出節點的損失函式加和同時考慮所有權重的正則化。需要注意的是,第一個2重求和中的i為遍歷樣本,k為遍歷輸出層節點,第二個3重求和中的i,j都是指節點,不是樣本。

5.3 BP演算法

為了優化損失函式,需求計算 J ( Θ ) , J ( Θ ) Θ ,這裡採用向後傳播(BP)演算法,推導過程如下:

觀察損失函式,先忽略正則化項,第一項等於所有輸出節點的損失函式加和,我們首先對其中一個損失函式求導,首先,令函式
C = k = 1 K y k ( i ) l o g ( h Θ ( x ( i ) ) k ) ( 1 y k ( i ) ) l o g ( 1 h Θ ( x ( i ) ) k

由於需要對每一層之間的各個權重係數進行求導,這裡我們先從輸出層開始,利用求導鏈式法則,可以得到: