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