transfer learning / fine tuning
卷積神經網絡需要大量的數據和資源來進行訓練, 例如, imagenet ILSVRC model 是需要在1.2 million 張圖片,利用多GPU,耗時2-3個周的訓練才能完成.
transfer learning 是將在之前任務(例如image net)訓練過的網絡權值,遷移到一個新任務上去. 研究者們或者參與者們已經更習慣于, 而非偶爾使用transfer learning and fine-tuning.
而且, 遷移學習和fine-tuning 策略確實表現得不俗. Razavian et al (2014)的實驗表明,簡單的使用從 image net ILSVRC訓練的到的模型來進行特征提取, 利用提取到的特征來訓練新的模型.利用這樣的策略進行一系列的計算機視覺任務,他們得到了state-of-the-art或者說接近state-of-the-art的實驗結果.
- trainsfer learning: 利用在image net(或其他數據集)上訓練的網絡. 去掉最后的fully-connected layer. 然后將網絡剩余部分當做一個feature extractor, 以用于其他新的數據. 一旦利用該網絡對所有圖片提取到了特征. 可以用這些特征訓練一個新的classifier.
- Fine-tuning: 去掉并重新訓練網絡上層的全連接層, 并且微調網絡其余部分的權重.
使用哪種策略
- 有兩點因素需要考慮
- 你所用數據的規(guī)模
-
你所用數據庫和已訓練網絡數據庫之間的相似性.
- 用自己的數據從零開始訓練網絡, 這個策略也得考慮.
根據以上表格, 情況分為四種:
- 相似數據集 & 小規(guī)模數據集(你的數據集): 遷移高層特征(盡量去除已有網絡高層的全連接層, 將剩余部分作為分類器), 利用網絡提取特征, 然后訓練分類器. 不進行fine-tuning, 避免了在小規(guī)模數據集上帶來overfit問題, 使用提取的高層特征, 是利用了兩個數據庫之前的相似性.
- 非相似 & 小規(guī)模數據庫: 遷移底層特征, 提取特征訓練數據庫. 不建議進行fine-tuning,是為了避免在大數據庫上訓練的特征會給小數據集的訓練帶來overfit. 使用底層的特征是以為底層的特征一般比較general.
- 相似數據集 & 大規(guī)模數據集: 進行fine-tuning, fine-tuning是為了避免overfit.
- 非相似數據集 & 大規(guī)模數據集: 進行fine-tuning, fine-tuning是為了避免overfit.