62.1 什么是微調(fine-tune)
- 微調(fine-tune)丰捷,顧名思義指稍微調整參數(shù)即可得到優(yōu)秀的性能,是遷移學習的一種實現(xiàn)方式盗扒。
- 微調和從頭訓練(train from scratch)的本質區(qū)別在于模型參數(shù)的初始化透罢,train from scratch通常指對網(wǎng)絡各類參數(shù)進行隨機初始化(當然隨機初始化也存在一定技巧),隨機初始化模型通常不具有任何預測能力定拟,通常需要大量的數(shù)據(jù)或者特定域的數(shù)據(jù)進行從零開始的訓練,這樣需要訓練到優(yōu)秀的模型通常是稍困難的逗嫡。
- 而微調的網(wǎng)絡青自,網(wǎng)絡各類參數(shù)已經(jīng)在其他數(shù)據(jù)集(例如ImageNet數(shù)據(jù)集)完成較好調整的,具備了較優(yōu)秀的表達能力驱证。
- 因此延窜,我們只需要以較小的學習速率在自己所需的數(shù)據(jù)集領域進行學習即可得到較為優(yōu)秀的模型。
- 微調通常情況下抹锄,無須再重新設計網(wǎng)絡結構逆瑞,預訓練模型提供了優(yōu)秀的結構,只需稍微修改部分層即可伙单。
- 在小數(shù)據(jù)集上获高,通常微調的效果比從頭訓練要好很多,原因在于數(shù)據(jù)量較小的前提下吻育,訓練更多參數(shù)容易導致過度擬合念秧。
62.2 微調有哪些不同方法?
- 以圖像分類為例布疼,通常情況下由于不同數(shù)據(jù)集需要的類別數(shù)不同摊趾,我們需要修改網(wǎng)絡的輸出頂層币狠。這種情況下有兩種微調方式:
- 不凍結網(wǎng)絡模型的任何層,對最后的改動層使用較大的學習率砾层,對未改動層以較小的學習率進行訓練全模型訓練漩绵,進行多輪訓練即可。即一步完成訓練肛炮。
- 凍結除了頂部改動層以外的所有層參數(shù)止吐,即不對凍結部分的層進行參數(shù)訓練更新,進行若干輪的微調訓練后铸董,放開頂部層以下的若干層或者全部放開所有層的參數(shù)祟印,再次進行若干輪訓練即可。即分多步訓練粟害。
- 以上兩種都屬于微調蕴忆。目前由于存在大量優(yōu)秀的預訓練模型,如何確定哪個模型適合自己的任務并能得到最佳性能需要花大量的時間探索悲幅。
- 此時套鹅,上述的前者是種不錯訓練方式,你無須進行過多分步的操作汰具。
- 而當探索到一個比較適合的模型時卓鹿,你不妨可以再次重新嘗試下以第二種方式進行訓練,或許能得到相比于前者稍高些的性能留荔,因為小數(shù)據(jù)集上調整過多的參數(shù)過擬合的機率也會增大吟孙,當然這并不是絕對的。
62.3 微調先凍結底層聚蝶,訓練頂層的原因杰妓?
- 凍結多步訓練的方式。
- 首先凍結除了頂部改動層以外的所有層參數(shù)碘勉,對頂層進行訓練巷挥,這個過程可以理解為頂層的域適應訓練,主要用來訓練適應模型的現(xiàn)有特征空間验靡,防止頂層糟糕的初始化倍宾,對已經(jīng)具備一定表達能力的層的干擾和破壞,影響最終的性能胜嗓。
- 之后高职,在很多深度學習框架教程中會使用放開頂層往下一半的層數(shù),繼續(xù)進行微調辞州。
- 這樣的好處在于越底層的特征通常是越通用的特征怔锌,越往上其整體的高層次語義越完備,這通過感受野很容易理解。
- 所以产禾,若預訓練模型的數(shù)據(jù)和微調訓練的數(shù)據(jù)語義差異越大(例如ImageNet的預模型用于醫(yī)學圖像的訓練),那越往頂層的特征語義差異就越大牵啦,因此通常也需要進行相應的調整亚情。
大數(shù)據(jù)視頻推薦:
網(wǎng)易云課堂
CSDN
人工智能算法競賽實戰(zhàn)
AIops智能運維機器學習算法實戰(zhàn)
ELK7 stack開發(fā)運維實戰(zhàn)
PySpark機器學習從入門到精通
AIOps智能運維實戰(zhàn)
騰訊課堂
大數(shù)據(jù)語音推薦:
ELK7 stack開發(fā)運維
企業(yè)級大數(shù)據(jù)技術應用
大數(shù)據(jù)機器學習案例之推薦系統(tǒng)
自然語言處理
大數(shù)據(jù)基礎
人工智能:深度學習入門到精通