iT邦幫忙

2022 iThome 鐵人賽

DAY 22
1

前言

從本日的文章開始的幾天內會介紹一些額外還沒介紹到的訓練技巧,今天會先從Transfer Learning開始。

什麼是Transfer Learning?

讓我們先參考wikipedia的定義

很好,十分的General。如果有一點的數學底子的朋友千萬不要覺得這麼general是在講什麼鬼?因為它就是這麼如此的General,所以利用Transfer Learning概念實作的方式可說是包山包海。

那讓我們說回人話,基本上就是有個主要的task與domain組合是T需要學習時,如果能利用到任何一個task與domain組合S的知識,就可說是遷移學習(Transfer Learning)。

有哪些例子

好吧!這聽起來還是很抽象。這邊舉兩個目前我實務上也比較常用到的例子:

  • Fine-tine with a pre-trained weights
    • 主要是利用一些在其他的地方已經利用一些龐大的資料集訓練好的模型作為基底(S)。接著用來訓練我們目前想要的模型(T)。
    • 以Computer Vision來說,很常見的就是利用ImageNet訓練好的模型當做Pretrained Weights,然後再拿手上需要建模的資料來訓練。這部份幾乎所有2D的框架,包括ResNet、EfficientNet都有Pretrained版本可以使用。
    • 以Natural Language Processing來說,就是各家大大做出來的Bert及變體都是很流行的Pretrained。(Transformer似乎也很流行)
  • Multi-Task Learning
    • 這個稍微比較不同的方式是,大多的情況是利用在訓練的時候,同一個資料點,具有不同的資料特徵來進行協同訓練。
    • 例如,判別貓貓狗狗的模型(S),同時還要判別動物們在的空間是屬於室內室外(T)。也就是同個模型的OUTPUT會有兩組,除了貓狗以外,還要判別室內室外。
      • 例如這是一張在室外的阿柴,來源
      • 這是一張在室內亂跳的貓貓,來源
    • 上述例子就可以在訓練的時候,獲得兩組loss(判別貓狗、判別室內外)來協同訓練,模型能作到的事情更多工,(或許)更接近人類一點。
    • 醫療影像上也很類似,一個專業的醫師,一張胸腔X光,除了能看到我們想訓練的任務中某個病徵以外,可能還可以看出這個人是否抽煙,是否受過外傷...等,利用這些資訊來協同訓練,也就是一種Multi-Task Learning。
    • 作法上通常比較客製,蒐集資料上成本也會高上許多,而訓練的參數通常也更難調校。但個人經驗上通常模型表現會更為穩健。

更多關於Transfer Learning,有興趣的朋友可以參考台大李宏毅老師的線上課程

Pre-trained Sources

那回到我們系列文的實作,這裡主要會使用ImageNet Pretrained Weight的Fine-tune為例。不過回到一個重點,要去哪裡找這些pre-trained呢?以下推薦幾個相容PyTorch的套件:

  • pytorch-image-models:提供非常多不同backbone,而且大多都有imagenet的pretrained。
  • MONAI:本系列文的老朋友,這裡的強像是提供不少3D影像的框架加上Pre-trained。
  • Hugging Face:近年竄起的強大AI社群,有非常多論文的實作,他們的pretrained 可以直接使用。

使用ImageNet Pretrained Weight為例

以我們系列文實驗的monai.networks.nets.EfficientNetBN來說,只要將pretrained = True就可使用imagenet的pretrained來進行fine-tune了!(具體請參考文件)

具體修改過的code可以參這個commit,跑完以後讓我們來參考一下wandb上的結果。

使用Pre-trained的模型是不是訓練成效更快,而且獲得了更好效果呢!
(另外第二個cosine效果不太好,可能就是這組超參數在後面不太適合pretrained了呢!)

本日小節

  • 介紹transfer learning
  • 比較使用pre-trained的成效

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

尚未有邦友留言

立即登入留言