1. 程式人生 > 其它 >Fine-tuning vs. Transfer Learning

Fine-tuning vs. Transfer Learning

目錄

fine-tuning(微調)

pre-train後的網路,需要進一步訓練(替換掉Input layer繼續訓練,可以選擇fine-tune全部層還是部分層,通常只fine-tune後面的層,因為前面的提取的是通用特徵generic features,如邊緣檢測,色彩檢測,而後面的層提取的是與特定類別有關的特徵)或者用來提feature(去掉最後的FC,剩下部分就可以用來提feature)
pre-train的模型可以去Model Zoo下載
不過一般fine-tune的lr更小,因為pre-train後的模型已經足夠平滑,我們不希望太快扭曲distort它們(尤其是當隨機初始化線性分類器來分類預訓練模型提取的特徵時。

新舊資料集是否相似 新資料集大小 結論
1 相似 因為資料量小,直接fine-tune容易過擬合。期待著高層特徵相似,直接用pre-train網路用作特徵提取器,train一個線性分類器
2 相似 fine-tune整個網路
3 不相似 最好不要fine-tune,既然不相似,高層特徵也不能用。可以使用前面的層提出來的特徵訓練SVm分類器
4 不相似 可以重新訓練,不過pre-train對收斂還是有好處的,因此也可以對整個網路進行fine-tune

Transfer Learning

摘自知乎回答
記得參考GMIS2017大會楊強的演講:https://zhuanlan.zhihu.com/p/27175524

  1. 把Alexnet裡卷積層最後一層輸出的特徵拿出來,然後直接用SVM分類。這是Transfer Learning,因為你用到了Alexnet中已經學到了的“知識”。
  2. 把Vggnet卷積層最後的輸出拿出來,用貝葉斯分類器分類。思想基本同上。
  3. 甚至你可以把Alexnet、Vggnet的輸出拿出來進行組合,自己設計一個分類器分類。這個過程中你不僅用了Alexnet的“知識”,也用了Vggnet的“知識”。
  4. 最後,你也可以直接使用fine-tune這種方法,在Alexnet的基礎上,重新加上全連線層,再去訓練網路。
    綜上,Transfer Learning關心的問題是:什麼是“知識”以及如何更好地運用之前得到的“知識”。這可以有很多方法和手段。而fine-tune只是其中的一種手段。