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