iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
AI & Data

PyTorch 生態鏈實戰運用系列 第 20

[Day20] 實際訓練與結果分析

  • 分享至 

  • xImage
  •  

前言

根據前一篇的Learning Rate設定後,實際進行了訓練。獲得了結果後,今天的文章將實際解釋實驗產出。

實驗設定

除了上一篇最後提及的CosineAnnealingLR以外,這裡也額外進行了兩個實驗進行對比,具體Learning Rate,隨著訓練過程的變化可以參考下圖:

optimizer一樣都使用Adam,依序分別是

  • learning rate = 0.0058 (lr finder suggestion)
  • learning rate = 0.0058 with ReduceLROnPlateau (monitor on val/auroc),大概在2xk-th step後就降到5.8e-6,最後跑到5.8e-9,非常的小
  • learning rate = 0.001 with CosineAnnealingLR between (0.001, 0.00003)

實驗結果

Machine Learning大多的方法都是圍繞在Loss的優化上,因此廢話不多說,先上loss圖:

看圖時大概可以搭配下列幾點服用:

  • 同顏色是相同的實驗,實線是Train、虛線是Val
  • 基本上每種顏色的pattern都很接近,從這邊可以推斷
    1. Train與Val沒有分佈基本上是相近的
    2. 模型確實都共同在Train裡面學到東西了,val也都一起跟著下降
  • 大約一開始在10k-th step以前,是lr_finder找到的0.0058的那兩個顏色對應的顏色,loss下降的比較快
  • 從頭到尾learning rate=0.0058的那組,初期下降快速,但後期基本上就卡住了。這種情況很可能是到後面的時候,Learning rate在那個時間點已經屬於偏大,無法找到比較好的點。
  • 搭配使用ReduceLROnPlateau的那組,下降的效率最好,基本上不到一半的歷程就已經得到不錯的結果。但後面無法繼續下降,這種情況可能反而是,到後期Learning rate已經太小,而導致無法都一直卡在某個Local Optimal出不太去導致。
  • 而使用CosineAnnealingLR的這組,就十分的有趣,首先是learning rate使用的比較小,初期收斂就比較小。接下來它還會因為週期性的learning rate變大導致結果又變差,但到最後卻反而有種繞過了什麼山頭,得到了最好結果的味道在。

其實上述的這些實驗結果,類似的情況反覆被我遇見,所以也是我個人近年來偏好使用CosineAnnealingLR的原因。

最後讓我們看一下,最主要的Metrics -- AUROC :

最好的那一個結果是在CosineAnnealingLR找到的AUROC = 0.7333。目前結果看起來還不錯了,雖然只是Validation set,但也十分接近MedMNIST裡頭最好的一樣也是使用28x28的0.769!

那到底Test的結果會如何?欲知後事如何,且待下回分解!

本日小節

  • 跑了幾個實驗比較結果
  • 結果看起來不錯,持續進步
  • 下一篇來跑test的結果以及講一些哲學問題

上一篇
[Day19] learning Rate and scheduler
下一篇
[Day21] EVALUATION ON TEST SET
系列文
PyTorch 生態鏈實戰運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言