Sigmoid Neural Network Toy Example

by allenlu2007

 

本文參考 http://neuralnetworksanddeeplearning.com/chap3.html

前文用 perceptron 的問題是 (1) sgn function 是 hard decision (binary); (2) Not differentiable (hard to do back prop?)

(1) Hard decision, 的好處是簡單,就是只有 binary information (0 or 1, +1 or -1).  缺點是 loss information.

比較好的方式是用 soft decision (communication terminology), 就是有灰階地帶。一個問題是 output 就變成非 binary.  在實務上有其他的方式: 例如用機率的方式 (還是 binary, 但灰階用機率來表示)。或是用 PWM, PFM, 等等。無論如何 keep 比較多的 information 還是有助於 learning (?)

 

(2) Non-differnetiable 有什麼缺點?  Perceptron 在一些比較複雜的 configuration 會很難做 training/learning.  有可能只要微調 weight or bias, 就會造成所有的 input/hidden states 完全不同。因為 sgn function 是有 jump. 

 

NewImage

如何避免以上的問題? 一個 solution 是使用 sigmoid (or logistic) function 代替 sgn function.

NewImage

乍看之下, sigmoid neuron 和 perceptron 很不同。其實是把不連續 sgn function (step function) 改成平滑的 sigmoid function 如下。

在 z 很大或很小時 sigmoid function 和 sgn function 都一樣 (nonlinear), 只有在 z 在 (-4, +4) 之間和 sgn function 有大的差別。

一個最大的好處是 sigmoid function 是 differentiable.  對於之後的 learning (back prop) 很重要。

NewImage

NewImage

 

Differentiable and Learning

Differentiable and learning 的關係由下述微分方程式 (1st order Taylor expansion) 描述。

 

NewImage

(i) 假設所有偏微分是常數,Eq (5) 基本上是一個線性方程式。 Δoutput is a linear combination of Δwj and Δb.

(ii) Bias b 可以被併入 w(n+1) assuming x(n+1)=1.

 

以下 learning 的說明是錯誤的: 原因是根本尚未定義 cost function. 

————————————————————————————————–

所謂 learning 就是 (i) 給定一組 (x1, x2, …, xn, 1) 和 output;  (ii) prior (or random initialization) (w1, w2, …, b); 

(iii) 計算 forward prop:  output’ = σ(W*X + b);   (iv)  Δoutput = output – output’;

(v) 用 equation (5) 調整 ΔW and Δb 再用新的 training set 回到 iterate step (i).   

 

當然如果變數太多 (n個 Δwj and Δb),就需要多組 training sets (X, b) 產生聯立方程式 of (5).  可以解出 ΔW and Δb

 ——————————————————————————————————

 

正確的做法是先定義 cost function/loss function/energy function

NewImage

x and a 是 training set.  Summation 就是把所有的 training set error square 加總。

y(x) 在 sigmoid neuron 就是  σ(x, w, b).  

 

我們用一個簡單的 toy example 來說明如何進行。假設 parameter space 只有 2 維 (w and b) = (ν1, ν2)

此時可以計算 cost function 的 delta (而不是前文 error 的 delta)

NewImage

NewImage

NewImage

如果選取如下 eq(10), 可以讓 delta(C) 變負值,朝 lower cost 的方向移動。

NewImage

NewImage

NewImage

Equation (11) 就是 steepest/gradient descent (GD).  

目標就是找到 parameter w and b 讓 Gradient C=0.

既然要算 gradient, 明顯 cost function 必須是 differentiable.  Sigmoid function 滿足這個要求。反之 sgn function 則是 non-differentiable.

NewImage

 

 

Overfit and Underfit

一般的 optimization 問題 (如 curve fitting or linear regression),  training data dimension (x and a in eq. 6)  大於 parameter space dimension (w and b in eq. 6), 稱為 under fit.  這是 high bias 的 case.  舉例而言,如果要用 linear regression 來 fit 以下的 input data.  

NewImage

如果用 linear function 來 fit input data, 很明顯是 under fit 的 case.  因此 learn 出來的 linear function 和 input data 有很大的 bias.

如果用 2nd order function 看來就好很多。

 

反之如果 parameter space (例如 multi-layer neural network 所有 W and b) 的 dimensions 比 training data dimension 大, 稱為 over fit.    

NewImage

意即有很多的 (W, b) 都可以滿足 Eq (6).  這是 high variance 的 case.   

對於 over fit 一般可以 (i) 丟掉一些 features (W), 也就是減少 parameter space 的 dimension (如上圖)  

或是 (ii) 在 cost function 加上 regulation (e.g. cost function 再加上 W^2).  

 

一般而言,如果一開始就把 input data reduce dimension 或用 low dimension parameter 來表示 (也就是 under fit) 會造成 information 的 loss.  之後無法再恢復。所以要儘量避過早 reduce data dimension.  在 neural network 用於影像應用上,1000×1000 pixel 的 input 影像就用 1M dimension 來表示。經過 deep network 每層逐步 reduce dimension, 最後才 reduce 到幾百幾千或幾萬種 image category (dimension).  

在 deep learning 的每個 layer, 會用 shared weight 和 pooling 來 reduce dimension.  同樣在 SVM … 來 reduce dimension.

在一些 machine learning algorithm 會用 PCA/ICA, 或 sparsity method 來 reduce dimension.   不過還是強調不要一開始就 reduce dimension (e.g. 用 linear function 來 fit data).  有時甚至需要先提高 dimension, 最後再 reduce dimension.  

 

Overfit and underfit 可以參考此文 and 此文

  

Sigmoid Learning

先定義參數 w^l_jk and b^l_j 

NewImage

NewImage

以及:

NewImage

如果 f(x) = x^2

NewImage

NewImage 

 

 

 

 

 

 

 

 

 

Advertisements