什么是fine-tuning?
在實踐中,由于數據集不夠大,很少有人從頭開始訓練網絡。常見的做法是使用預訓練的網絡(例如在ImageNet上訓練的分類1000類的網絡)來重新fine-tuning(也叫微調),或者當做特征提取器。
以下是常見的兩類遷移學習場景:
1 卷積網絡當做特征提取器。使用在ImageNet上預訓練的網絡,去掉最后的全連接層,剩余部分當做特征提取器(例如AlexNet在最后分類器前,是4096維的特征向量)。這樣提取的特征叫做CNN codes。得到這樣的特征后,可以使用線性分類器(Liner SVM、Softmax等)來分類圖像。
2 Fine-tuning卷積網絡。替換掉網絡的輸入層(數據),使用新的數據繼續訓練。Fine-tune時可以選擇fine-tune全部層或部分層。通常,前面的層提取的是圖像的通用特征(generic features)(例如邊緣檢測,色彩檢測),這些特征對許多任務都有用。后面的層提取的是與特定類別有關的特征,因此fine-tune時常常只需要Fine-tuning后面的層。
預訓練模型
在ImageNet上訓練一個網絡,即使使用多GPU也要花費很長時間。因此人們通常共享他們預訓練好的網絡,這樣有利于其他人再去使用。例如,Caffe有預訓練好的網絡地址Model Zoo。
何時以及如何Fine-tune
決定如何使用遷移學習的因素有很多,這是最重要的只有兩個:新數據集的大小、以及新數據和原數據集的相似程度。有一點一定記?。壕W絡前幾層學到的是通用特征,后面幾層學到的是與類別相關的特征。這里有使用的四個場景:
1、新數據集比較小且和原數據集相似。因為新數據集比較小,如果fine-tune可能會過擬合;又因為新舊數據集類似,我們期望他們高層特征類似,可以使用預訓練網絡當做特征提取器,用提取的特征訓練線性分類器。
2、新數據集大且和原數據集相似。因為新數據集足夠大,可以fine-tune整個網絡。
3、新數據集小且和原數據集不相似。新數據集小,最好不要fine-tune,和原數據集不類似,最好也不使用高層特征。這時可是使用前面層的特征來訓練SVM分類器。
4、新數據集大且和原數據集不相似。因為新數據集足夠大,可以重新訓練。但是實踐中fine-tune預訓練模型還是有益的。新數據集足夠大,可以fine-tine整個網絡。
實踐建議
預訓練模型的限制。使用預訓練模型,受限于其網絡架構。例如,你不能隨意從預訓練模型取出卷積層。但是因為參數共享,可以輸入任意大小圖像;卷積層和池化層對輸入數據大小沒有要求(只要步長stride fit),其輸出大小和屬于大小相關;全連接層對輸入大小沒有要求,輸出大小固定。
學習率。與重新訓練相比,fine-tune要使用更小的學習率。因為訓練好的網絡模型權重已經平滑,我們不希望太快扭曲(distort)它們(尤其是當隨機初始化線性分類器來分類預訓練模型提取的特征時)。
原文鏈接:https://blog.csdn.net/weixin_42137700/article/details/82107208
剛開始接觸深度學習的時候,遷移學習與fine-tune確實有點搞不清楚。其實遷移學習是一個大的方向,fine-tune是實現遷移學習常用的一個方法。那么:
1.什么是遷移學習呢?
遷移學習顧名思義就是把已經訓練好的模型的參數遷移到新的模型來幫助新模型的訓練??紤]到大部分的數據或任務是存在相關性的,所以通過遷移學習我們可以將已經學習到的模型參數,通過某種方式來分享給新的模型,從而加快優化模型的學習效率不用像大多數模型那樣從零開始。
2.什么是fine-tune?
fine-tune是進行遷移學習的一種手段。一般我們本身的數據集量比較小,無法重頭開始訓練一個效果良好的模型。于是,我們只能通過遷移學習,將一個網絡,比如(VGG)前面5大層保持模型參數不變(這里的模型參數是指已經通過Imagenet數據集訓練好的模型參數)。因為前面幾層主要是提取圖片的特征。因此,我們也可以把這幾層當作特征提取器,保持原有的權重不變,提取現有的圖片的特征。微調就是將調整后面的全連接層,或者最后的幾個卷積層加全連接層,來實現我們想要的結果,一般根據自己要分類的類別數等等進行調整。
3.何時以及如何fine-tune?
首先要注意的是:網絡的前幾層學到的是通用的特征,后面幾層學到的是與類別相關的特征。
原文鏈接:https://blog.csdn.net/weixin_37203756/article/details/80180663
fine-tune
翻譯:微調
指的是:就是用別人訓練好的模型,加上我們自己的數據集,來訓練新的模型。fine tune相當于使用別人的模型的前幾層,來提取淺層特征,然后在最后再落入我們自己的分類中。
好處:不用完全重新訓練模型,提高效率,在比較少的迭代次數之后得到一個比較好的效果。
適用于:數據量不是很大的情況
原文鏈接:https://blog.csdn.net/qq_40234695/article/details/88889282
總結
以上是生活随笔為你收集整理的什么是fine-tuning?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sock文件
- 下一篇: 春分的美好象征(二十四节气之春分)