每日一問之預訓練與微調

預訓練(pre-training/trained)和微調(fine tuning)這兩個詞經常在論文中見到,今天主要按以下兩點來說明。

  • 什麼是預訓練和微調?
  • 它倆有什麼作用?

什麼是預訓練和微調

  • 你需要搭建一個網絡模型來完成一個特定的圖像分類的任務。首先,你需要隨機初始化參數,然後開始訓練網絡,不斷調整直到網絡的損失越來越小。在訓練的過程中,一開始初始化的參數會不斷變化。當你覺得結果很滿意的時候,你就可以將訓練模型的參數保存下來,以便訓練好的模型可以在下次執行類似任務時獲得較好的結果。這個過程就是 pre-training。
  • 之後,你又接收到一個類似的圖像分類的任務。這時候,你可以直接使用之前保存下來的模型的參數來作爲這一任務的初始化參數,然後在訓練的過程中,依據結果不斷進行一些修改。這時候,你使用的就是一個 pre-trained 模型,而過程就是 fine tuning。

所以,預訓練 就是指預先訓練的一個模型或者指預先訓練模型的過程;微調 就是指將預訓練過的模型作用於自己的數據集,並使參數適應自己數據集的過程。

預訓練和微調的作用

在 CNN 領域中,實際上,很少人自己從頭訓練一個 CNN 網絡。主要原因是自己很小的概率會擁有足夠大的數據集,基本是幾百或者幾千張,不像 ImageNet 有 120 萬張圖片這樣的規模。擁有的數據集不夠大,而又想使用很好的模型的話,很容易會造成過擬合。

所以,一般的操作都是在一個大型的數據集上(ImageNet)訓練一個模型,然後使用該模型作爲類似任務的初始化或者特徵提取器。比如 VGG,Inception 等模型都提供了自己的訓練參數,以便人們可以拿來微調。這樣既節省了時間和計算資源,又能很快的達到較好的效果。

參考

[1]. What is pretraining in deep learning & how does it work?

[2]. CS231n: Convolutional Neural Networks for Visual Recognition

P.S:文中有錯歡迎指出,互相學習。以及歡迎關注我的公衆號 :)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章