1. 概述
前面我們已經介紹了最早的神經網絡:感知機。感知機一個非常致命的缺點是由於它的線性結構,其只能做線性預測(甚至無法解決回歸問題),這也是其在當時廣為詬病的一個點。
雖然感知機無法解決非線性問題,但是其給非線性問題的解決提供了一個思路。感知機的局限來自於其線性結構,如果我們能夠給其加入非線性結構,比如先給輸入做一個非線性變換,這樣其就能擬合非線性問題。那么這就是我們這次要講的前向神經網絡。
2. 結構
前向神經網絡(Feed-forward Neural Network)是一種多層的網絡結構,非常典型的就是三層結構:輸入層、隱藏層和輸出層。層與層之間用權值(連線)連接。一般只有前一層的值才能作為后一層的值的輸入,而反過來不能,也就是說不能有反饋(Feed-back),這也是其名字的又來。這個結構非常重要,因為名聲赫赫的BP算法就是基於這個結構的。
網絡中每一個點(神經元)都有值,設為$a_j$。其中輸入層的a就等於x,其他層的a則由權值以及之前層的值來確定。每個神經元在參與后面神經元值的計算時,並不直接使用其自身的值,而是經過一個非線性激活函數(一般是tanh或sigmoid),得到激活值$z_j$,然后再參與計算。輸入層用x表示,輸出層一般用y表示,權值一般表示為W(包含bias)。下面以三層網絡結構為例來表示這些值。
$a^{(0)}_j$ = $x_j$
$z^{(0)}_j$ = $h(a^{(0)}_j)$
$a^{(1)}_j$ = $\sum_{i}w^{(1)}_{ji}a^{(0)}_i$
$z^{(1)}_j$ = $h(a^{(1)}_j)$
$a^{(2)}_j$ = $\sum_{i}w^{(2)}_{ji}a^{(1)}_i$
$y_j$ = $\sigma(a^{(2)}_j)$
其中$x_0$ = 1 ,$a_0$ = 1(目的是為了省略bias項)。
這里我們舉的例子是后一層的值只由前一層的值來決定,當然,這個限定並不是一定的。只要沒有反饋結構,都能算作是前向神經網絡。所以這里就衍生除了一種結構叫做skip layer,即當前層不僅僅由前一層決定,還可以由前幾層的值決定。這個網絡結構如下:
這個結構看上去好像輸入跳過了隱藏層直接作用與輸出,這也是其名字的由來。
3. 權值的對稱性
這是神經網絡為數不多的性質之一,使用的也比較少。以三層神經網絡為例,假設中間層有M個神經元,如果我們交換其中兩個神經元的位置(與其相連的權值也相應移動),那么網絡的映射關系 y = f(x) 沒有變化。所以對於這個三層網絡來說,一共有M!個網絡與其等價。這就是網絡的對稱性。