背景
問題
有一組資料形式為 (x(i),y(i)) ,其中 x 是輸入的向量,神經網絡可以去非線性地拟合這組資料,其形式為hW,b(x),其中的參數有 W,b
單個神經元
- 示意圖
-
實質
先把輸入向量 x 的各個分量進行線性組合加一個偏移成為∑ni=1Wixi+b,再将這個結果通過activation function f ,就會得到單個神經元的輸出hW,b(x)
-
-
activation function
常見的activation function有3種類型:
- sigmoid f(z)=11+exp(−z)
- tanh f(z)=tanh(z)=ez−e−zez+e−z
- rectified linear f(z)=max(0,x)
-
3個函數的圖像如下:
Neural Network model
定義
單個神經元結構分層全連結。其中,最左邊為input layer,最右邊是output layer ,中間是hidden layer ,層内标注為“+1”的節點表示的是一個偏移量,叫做bias units 。以下是一個簡單的神經網絡模型
參數說明
其實任意兩個節點之間的連接配接線上都對應了一個參數,每層都是上一層的線性組合作為輸入傳到下一層,是以每層配有各自的 W,b 來代表這一層的權重,其中 W 表示普通節點上的權重,b代表bias unit的權重。這個簡單網絡有3層,我們用上标代表層數,是以有兩組這樣的參數(W,b)=(W(1),b(1),W(2),b(2)).
- 對于每兩層之間的 W ,用下标代表是哪兩個神經元的連結。Wij表示靠前一層的第 j 個節點與靠後一層的第i個節點的連接配接線的上的權重。注意這個前後的順序和直覺上的想法不太一樣,其原因是為了友善各項表達式最終可以寫成矩陣乘法的形式,這個在之後可以展現。
- 對于每兩層之間的 b ,用下标代表前一層的bias unit和後一層的哪一個神經元相連,是以隻需要一個下标bi代表和後一層的第 i 個神經元的連接配接線上的權重。
從以上的參數分析我們可以得出,W(1)∈R3×3,這裡前一個3代表隐含層節點數,後一個3代表輸入層節點數; W(2)∈R1×3 ; b(1)∈R1×3 ; b(2)∈R1×1
forward propagation表達式
a(2)1a(2)2a(2)3hW,b(x)=f(W(1)11x1+W(1)12x2+W(1)13x3+b(1)1)=f(W(1)21x1+W(1)22x2+W(1)23x3+b(1)2)=f(W(1)31x1+W(1)32x2+W(1)33x3+b(1)3)=a(3)1=f(W(2)11a(2)1+W(2)12a(2)2+W(2)13a(2)3+b(2)1)
容易看出,把以上形式簡寫成矩陣形式即為:
z(2)a(2)z(3)hW,b(x)=W(1)x+b(1)=f(z(2))=W(2)a(2)+b(2)=a(3)=f(z(3))
這裡的參數 z 代表每層的輸入經過了線性組合的結果,參數a代表 z 經過了激活函數之後的結果,其關系如下所示:
z(l+1)a(l+1)=W(l)a(l)+b(l)=f(z(l+1))
以上是一個簡單的神經網絡的前向傳播過程。事實上,一個神經網絡的架構中,隐含層可以有很多層,輸出層也可以有不止一個節點。
Backpropagation算法
cost function
對于一個測試用例,cost function代表網絡輸出值和真實值的平方誤差的二分之一,用下面的式子表示:
J(W,b;x,y)=12∥∥hW,b(x)−y∥∥2.
對于所有的測試用例,cost function代表每一個用例的cost的平均+正則項(W中的每一個元素的和再乘正則系數)。表達式如下:
J(W,b)=[1m∑i=1mJ(W,b;x(i),y(i))]+λ2∑l=1nl−1∑i=1sl∑j=1sl+1(W(l)ji)2=[1m∑i=1m(12∥∥hW,b(x(i))−y(i)∥∥2)]+λ2∑l=1nl−1∑i=1sl∑j=1sl+1(W(l)ji)2
說明:
1. 正則項的作用是限制W不要太大(因為優化的目标就是讓J盡可能小),防止過拟合的發生。
2. 用神經網絡進行分類,若用的是sigmoid神經元,标簽應該采用(0, 1);若采用tanh神經元,标簽應采用(-1,1)
3. 用神經網絡進行拟合,應在保證輸出在[0,1](sigmoid),或-1,1