Ex 3: Compare Stochastic learning strategies for MLPClassifier

http://scikit-learn.org/stable/auto_examples/neural_networks/plot_mlp_training_curves.html#sphx-glr-auto-examples-neural-networks-plot-mlp-training-curves-py

此範例將畫出圖表,展現不同的訓練策略(optimizer)下loss curves的變化,訓練策略包括SGD與Adam。

1.Stochastic Gradient Descent(SGD):

.Stochastic Gradient Descent(SGD)為Gradient Descent(GD)的改良,在GD裡是輸入全部的training dataset,根據累積的loss才更新一次權重,因此收歛速度很慢,SGD隨機抽一筆 training sample,依照其 loss 更新權重。

2.Momentum:

Momentum是為了以防GD類的方法陷入局部最小值而衍生的方法,可以利用momentum降低陷入local minimum的機率,此方法是參考物理學動量的觀念。

看圖1藍色點的位置,當GD類的方法陷入局部最小值時,因為gd=0將會使電腦認為此處為最小值,於是為了減少此現象,每次更新時會將上次更新權重的一部分拿來加入此次更新。如紅色箭頭所示,將有機會翻過local minimum。

圖1:momentum觀念示意圖

3.Nesterov Momentum:

Nesterov Momentum為另外一種Momentum的變形體,目的也是降低陷入local minimum機率的方法,而兩種方法的差異在於下圖:

圖2:左圖為momentum,1.先計算 gradient、2.加上 momentum、3.更新權重 右圖為Nesterov Momentum,1.先加上momentum、2.計算gradient、3.更新權重。

圖2圖片來源:http://cs231n.github.io/neural-networks-3/

4.Adaptive Moment Estimation (Adam):

Adam為一種自己更新學習速率的方法,會根據GD計算出來的值調整每個參數的學習率(因材施教)。 以上所有的最佳化方法都將需要設定learning_rate_init值,此範例結果將呈現四種不同資料的比較:iris資料集、digits資料集、與使用sklearn.datasets產生資料集circlesmoon

(一)引入函式庫

(二)設定模型參數

(三)畫出loss curves

圖3:四種資料對於不同學習方法的loss curves下降比較圖

(四)完整程式碼

Last updated