一、迁移学习与fine-tuning有什么区别?
生活随笔
收集整理的這篇文章主要介紹了
一、迁移学习与fine-tuning有什么区别?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、遷移學習
舉個例子,假設boss讓你做一下目標檢測,這個數據集是關于光纖箱噴碼字符檢測的。問題是,數據集很少(只有1000張數據),里面有多干擾的信息,你發現從零訓練開始訓練yolo的效果很差,很容易過擬合。怎么辦呢,于是你想到了使用Transfer Learning,用別人已經訓練好的Imagenet的模型來做。
二、遷移學習有哪些手法
- 把Alexnet里卷積層最后一層輸出的特征拿出來,然后直接用SVM分類。這是Transfer Learning,因為你用到了Alexnet中已經學到了的“知識”。
- Vggnet卷積層最后的輸出拿出來,用貝葉斯分類器分類。思想基本同上。
- 至你可以把Alexnet、Vggnet的輸出拿出來進行組合,自己設計一個分類器分類。這個過程中你不僅用了Alexnet的“知識”,也用了Vggnet的“知識”。
- 最后,你也可以直接使用fine-tune這種方法,在Alexnet的基礎上,重新加上全連接層,再去訓練網絡。
三、fine-tune使用策略
決定如何使用遷移學習的因素有很多,這是最重要的只有兩個:新數據集的大小、以及新數據和原數據集的相似程度。有一點一定記住:網絡前幾層學到的是通用特征,后面幾層學到的是與類別相關的特征。這里有使用的四個場景:
- 新數據集比較小且和原數據集相似。因為新數據集比較小,如果fine-tune可能會過擬合;又因為新舊數據集類似,我們期望他們高層特征類似,可以使用預訓練網絡當做特征提取器,用提取的特征訓練線性分類器。
- 新數據集大且和原數據集相似。因為新數據集足夠大,可以fine-tune整個網絡。
- **新數據集小且和原數據集不相似。**新數據集小,最好不要fine-tune,和原數據集不類似,最好也不使用高層特征。這時可是使用前面層的特征來訓練SVM分類器。
- **新數據集大且和原數據集不相似。**因為新數據集足夠大,可以重新訓練。但是實踐中fine-tune預訓練模型還是有益的。新數據集足夠大,可以fine-tine整個網絡。
四、總結
綜上,Transfer Learning關心的問題是:什么是“知識”以及如何更好地運用之前得到的“知識”。這可以有很多方法和手段。而fine-tune只是其中的一種手段。
總結
以上是生活随笔為你收集整理的一、迁移学习与fine-tuning有什么区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、Focal Loss理论及代码实现
- 下一篇: 一、多个txt文件合并成1个txt文件