iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0

前言

走過了資料分析、演算法選擇後,
我們得知了有些可以改善模型的方向:

  1. 解決資料不平衡(Done)
  2. 學習率的設定(To do)
  3. 訓練輪數(To do)
  4. 模型深度(No, I want my model to be more efficient ! )
  5. 階段式訓練(To do)

我用嘗試調整類別權重(class weight)解決資料不平衡的問題
但是在介紹學習率之前,
我想先解決一個經典的問題: over fitting
因為在EFN_base當中,
loss和val loss在訓練初期就開始往不同方向成長了,
我非常傷心/images/emoticon/emoticon02.gif
https://ithelp.ithome.com.tw/upload/images/20210923/20141294Y336xa6JG2.jpg


實驗設計

我根據EFN_base的結構,在不同層度上插入dropout layer。
先說一下甚麼是Global Max Pooling(GMP),
就是把每個feature map用最大值取代。
(從"面"變成"點",aka 降維)

假設我最後一層Conv layer有18個feature maps,
那經過GMP後,我就有一層長度為18的網路層。

簡單來說就是取代傳統Flatten + Dense layer的作法,
來大量地減少參數量,所以可以緩和過擬合問題。

因為GMP本身沒有參數,
所以我個人猜想...

  1. GMP後有些神經元是冗員
  2. 在GMP後面加一層Dense layer學習,應該可以提升fitting能力。
    於是乎我有下列兩個設置

A. Global Pooling後接Dropout (EFN_drop)

https://ithelp.ithome.com.tw/upload/images/20210923/20141294ziZ2QfAYZB.jpg

B. Global Pooling後接Dense + Dropout (EFN_densedrop)

https://ithelp.ithome.com.tw/upload/images/20210923/20141294D2jpTMGGiR.jpg
一樣是訓練30輪,來看看誰能夠幫我解決EFN_base的過擬合問題


實驗結果

loss and val_loss

可以看出加上drop對於overfitting沒甚麼太大的幫助= =
訓練初期(第3輪開始)就val loss就和loss分道揚鑣了,

https://ithelp.ithome.com.tw/upload/images/20210923/201412945MS0dhm8aL.jpg

comparing all metrics

模型 | 訓練時長(秒) | acc | loss | val_acc | val_loss
------------- | ------------- | ------------- | -------------
EFN_drop | 2471 | 0.953(勝) | 0.136(勝) | 0.635(勝) | 1.865(勝)
EFN_densedrop | 2478 | 0.942 | 0.172 | 0.611 | 1.977
EFN_base | 2004 | 0.952 | 0.139 | 0.617 | 1.905


結語

看來是EFN_drop在各方面輾壓般的勝利,
但這是一個警訊,
即使加了dropout也會過擬合的非常嚴重,
除了dropout之外,normalization也能減小過擬合問題。
未來我在訓練完整模型時,絕對會用到它!


上一篇
[Day 17] 我的資料哪有這麼平衡!第二季 (class weights)
下一篇
[Day 19] 還是學不會,再縮小一點 ~ (學習率衰減)
系列文
AI Facial Expression Recognition: Data, Model, Application30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言