iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
0
Big Data

我的資料科學之路系列 第 34

[Day 34] Deep learning -- 訓練技巧 (ii)

挑選Error function

借一張台大李宏毅老師的投影片,其實error function有很多可以選,通常用的就是square error跟cross entropy兩種了。
不過這個slide說明了為什麼cross entropy比square error更好,大家可以看到圖中畫出了這兩種error的loss function,顯然cross entropy能夠造成比較陡的地形,所以gradient-based方法可以收斂的比較快,而且也比較不會被困在local minimum中出不去。

挑選learning rate

基本上會建議從小的開始試,確定可以找到滿意的解的時候可漸漸加大來加速訓練速度。
可以試的值大概是0.001, 0.01, 0.1。基本上到0.1就已經很大了,要小心一直振盪無法收斂的情況喔!

挑選activation function

sigmoid跟tanh可以玩玩就好,真正比較有效率的會選ReLU跟softplus。

Overfitting

當遇到testing的時候error開始隨著訓練的時間而上升的時候怎麼辦呢?
這邊提供幾個方法:

Regularization

前面講過的regularization在這邊也是可以用的,不過效果並沒有很顯著,不過還是可以試試看。

Early stop

如果訓練overfitting,那就在他快要overfitting之前關掉就好了阿!
這邊你可以設定測試的時候,如果error開始連續上升多少次,那就差不多可以把訓練停掉了。雖然是個防止overfitting的方法,但是有沒有可能讓節點可以學的更好呢?

Dropout

最後一個方法,也是最有效的方法,但是也很難訓練。也就是在訓練過程中隨機把一些節點拿掉,如此一來,整個網路模型就會更專注在訓練個別的節點,讓每個節點訓練到爐火純青的地步。
這就像你用兩隻手吃飯是一件很容易的事,但是當你只用右手吃飯就變得非常困難,當你用右手吃飯訓練到跟一般吃飯一樣容易之後,左手也照辦,你又回到兩隻手吃飯就會變得超級強的!
(吃飯這件事不用到爐火純青好嗎
把節點拿掉本身並不是一件難事,你只需要把連結到這個節點的權重設為0就可以了。
(記得最後要把節點放回去阿!
如此一來你就會發現你的網路模型達到前所未有的accuracy囉!!


上一篇
[Day 33] Deep learning -- 訓練技巧 (i)
系列文
我的資料科學之路34

尚未有邦友留言

立即登入留言