預訓練後性能反而變差,自訓練要取代預訓練了嗎?
- 2020 年 7 月 28 日
- AI
早在2018年底,FAIR的研究人員就發布了一篇名為《Rethinking ImageNet Pre-training》的論文 ,這篇論文隨後發表在ICCV2019。該論文提出了一些關於預訓練的非常有趣的結論。
近期,Google大腦的研究團隊對這個概念進行了擴展,在新論文《Rethinking Pre-training and Self-training》中,不僅討論了預訓練,還研究了自訓練,比較了在同一組任務當中自訓練與監督預訓練、自監督預訓練之間的差異。
論文地址://arxiv.org/abs/2006.06882
作者通過實驗得出了以下結論:
1、如果預訓練任務和目標任務存在差異,則預訓練(包括監督和自監督)可能損害目標任務準確率;
2、自訓練適用不同規模數據集和不同強度增強數據的訓練;
3、自訓練並且可以看作對預訓練的補充,聯合預訓練和自訓練可以獲得更大的增益。
以下是機器學習研究工程師Aakash Nain對《Rethinking Pre-training and Self-training》這篇論文的解讀,文章發表在Medium上,AI科技評論對文章進行了編譯。
一、序言
在進一步探討論文細節之前,我們先了解一些術語。預訓練是運用在不同領域(例如電腦視覺、自然語言處理、語音處理)的一種非常普遍的做法。在電腦視覺任務中,我們通常使用在某個數據集上經過預訓練並可直接運用到另一個數據集的模型。例如,利用ImageNet預訓練就是一種可廣泛運用到目標分割和目標檢測任務的初始化方法。為實現此目的,我們常使用遷移學習和微調這兩種技術。另一方面,自訓練也嘗試在訓練期間結合模型對未標記數據的預測結果,以獲得其他可用的資訊來改善模型性能。例如,使用ImageNet來改進COCO目標檢測模型。首先在COCO數據集上訓練模型,然後將該模型用於生成ImageNet的偽標籤(我們將丟棄原始的ImageNet標籤),最後將帶有偽標籤的ImageNet數據集和有標籤的COCO數據集結合來訓練一個新的模型。自監督學習是另一種常用的預訓練方法。自監督學習的目的不僅僅是學習高級特徵。相反,我們希望模型學習的更好,有更好的魯棒性以適用於各種不同的任務和數據集。
二、研究動機
作者希望能解決以下問題:
1、預訓練對訓練結果有多大程度的幫助?
2、什麼情況下使用預訓練是無效的?
3、與預訓練相比,我們可以使用自訓練並獲得相似或更好的結果嗎?
4、如果自訓練優於預訓練(暫做這樣的假設),那它在多大的程度上比預訓練好?
5、在什麼情況下自訓練比預訓練更好?
6、自訓練的靈活性和可擴展性如何?
三、設置
1、數據集和模型
1)目標檢測:作者使用COCO數據集(11.8萬張圖片 )進行監督學習下的目標檢測訓練。ImageNet數據集(120萬張圖片 )和OpenImage數據集(170萬張圖片 )用作未標記的數據集。使用以EfficientNet – B7為主幹網路的RetinaNet目標檢測器。影像的解析度保持在640 x 640,金字塔等級為P3到P7,每個像素使用9個錨點。
2)語義分割:使用 PASCAL VOC 2012分割訓練集(1500張圖片)進行監督學習下的語義分割訓練。對於自訓練,作者使用了增強的PASCAL影像數據集(9000張圖片),標記以及未標記的COCO(24萬張圖片)和ImageNet(120萬張圖片)數據集。使用以EfficientNet-B7和EfficientNet-L2為主幹網路的NAS-FPN模型。
2、數據增強
在所有實驗中都使用了四種不同強度的增強策略來進行檢測和分割。這四種策略按強度從低到高依次為:1)Augment-S1:這是標準「 翻轉和裁剪」增強操作,包括水平翻轉和縮放裁剪。2)Augment-S2: 這包括論文《AutoAugment: Learning Augmentation Strategies from Data》中使用的AutoAugment,以及翻轉和裁剪。3)Augment-S3:它包括大規模縮放、AutoAugment、翻轉和裁剪。縮放範圍比Augment-S1:更大。4)Augment-S4: 結合論文《RandAugment: Practical automated data augmentation with a reduced search space》中提出的RandAugment,翻轉和裁剪,以及大規模縮放操作。此處的縮放等級與Augment-S2/S3相同。
3、預訓練
為了研究預訓練的有效性,作者使用了ImageNet預訓練的檢查點。使用EfficientNet-B7作為架構用於評估,對此模型,設置了兩個不同的檢查點,如下所示:1)ImageNet:通過AutoAugment在檢查點上訓練EfficientNet-B7,在ImageNet上達到84.5%了的top-1準確率。2)ImageNet ++:採用論文《Self-training with Noisy Student improves ImageNet classification》中提出的Noisy Student方法在檢查點上訓練EfficientNet-B7,其中利用了額外3億張未標記的影像,並達到了86.9%的top-1準確率。採用隨機初始化訓練的結果標記為Rand Init。
4、自訓練
自訓練是基於Noisy Student方法實現的,有三個步驟:
在標記的數據(例如COCO數據集)上訓練teacher model。
使用teacher model在未標記的數據(例如ImageNet數據集)上生成偽標記。
訓練一個student model,以聯合優化人工標籤和偽標籤上的損失。
四、實驗
1、增強和標記數據集大小對預訓練的影響
作者使用ImageNet進行監督預訓練,並改變帶標籤的COCO數據集大小以研究預訓練對結果的影響。實驗過程中,不僅會改變標記數據的大小,而且還使用不同增強強度的數據集,使用以EfficientNet-B7為主幹網路的RetinaNe模型來進行訓練。作者觀察到以下幾點:
1)使用高強度的數據增強時,監督預訓練會損害性能:作者注意到,當他們使用如上所述的標準增強方法Augment-S1時,預訓練會對結果有所幫助。但是隨著增加增強的強度,預訓練並未對結果有太大幫助。實際上,他們觀察到,在使用最強的數據增強(Augment-S3)時,預訓練會嚴重損害性能。
2)更多帶標籤的數據會降低監督預訓練的價值:這不是一個新發現。我們都知道,當數據量較小時,預訓練會對結果有所幫助。但是有足夠數量的標記數據時,從頭開始訓練也不會得到很差的結果。作者發現了相同的結論,這一觀點與FAIR的論文《Rethinking ImageNet Pre-training》相一致。
我的看法:在ImageNet上訓練的大多數模型都沒有使用很高強度的增強方法。高強度增強數據後,模型可能無法正確收斂。實際上,模型有時可能會對增強過擬合,當然這還需要進行適當的細節研究。
2、增強和標記數據集大小對自訓練的影響
作者使用相同的模型(使用帶有EfficientNet-B7主幹的RetinaNet檢測器)和相同的任務(COCO數據集目標檢測)來研究自訓練的影響。作者使用ImageNet數據集進行自訓練(這種情況下將丟棄ImageNet的原始標籤)。作者觀察到以下幾點:
1)即使預訓練對結果產生了負面影響,自訓練也有助於大規模數據集和高強度增強的情況:作者發現,當使用大量數據增強時將自訓練應用到隨機初始化模型中,這樣不僅可以提高基準線結果,並且超過了同情況下預訓練的結果。該實驗結果如下:
2)自訓練適用於各種不同大小的數據集,並且可以看作對預訓練的補充:作者發現自訓練另一個有趣的方面是,它可以作為預訓練的補充。簡而言之,當將自訓練與隨機初始化模型或預訓練模型結合使用時,它始終可以提高性能。在不同數據大小下,性能增益是一致的。
但,使用ImageNet ++ 預訓練時,與使用隨機初始化和ImageNet預訓練相比,增益相對更小。這有什麼具體原因嗎?是的,ImageNet ++初始化是從檢查點獲得的,在該檢查點使用了另外3億張未標記的影像。
3、自監督預訓練 vs 自訓練
有監督的 ImageNet預訓練會損害最大規模數據集和高強度數據增強下的訓練效果。但是自監督的預訓練呢?自監督學習(不帶標籤的預訓練)的主要目標是構建一種通用的表徵,這種表徵可以遷移到更多類型的任務和數據集中。為研究自監督學習的效果,作者使用了完整的COCO數據集和最高強度的增強。目的是將隨機初始化與使用了SOTA自監督演算法預訓練的模型進行比較。在實驗中使用SimCLR的檢查點,然後在ImageNet上對其進行微調。由於SimCLR僅使用ResNet-50,因此RetinaNet檢測器的主幹網路用ResNet-50替換。結果如下:
在這種情況下,我們觀察到自監督下的預訓練會損害訓練效果,但自訓練仍可以提高性能。
五、學到了什麼?
1、預訓練和通用的特徵表徵
我們看到,預訓練(監督以及自監督)並不總可以給結果帶來更好的效果。實際上,與自訓練相比,預訓練總是表現不佳。這是為什麼?為什麼ImageNet預訓練的模型對COCO數據集的目標檢測效果反而不好?為什麼通過自監督預訓練學習表徵無法提高性能?預訓練並不能理解當下的任務,並可能無法適應。分類問題比目標檢測問題容易得多。在分類任務上預訓練的網路是否可以獲得目標檢測任務所需要的所有資訊?用我喜歡的表達方式來說:即使這些任務只是彼此的子集,不同的任務也需要不同級別的粒度。
2、聯合訓練
正如作者所言,自訓練範式的優勢之一是它可以聯合監督和自訓練目標進行訓練,從而解決它們之間不匹配的問題。為了解決任務間由於差異導致的不匹配問題呢,我們也可以考慮聯合訓練的方法,例如聯合訓練ImageNet和COCO這兩個數據集?作者在實驗中使用了與自訓練相同的參數設置,發現ImageNet的預訓練可獲得+ 2.6AP的增益,但使用隨機初始化和聯合訓練可獲得+ 2.9AP的更大增益。而且,預訓練、聯合訓練和自訓練都是加性的。使用相同的ImageNet數據集,ImageNet的預訓練獲得+ 2.6AP的增益,預訓練+聯合訓練再獲得+ 0.7AP的增益,而預訓練+聯合訓練+自訓練則獲得+ 3.3AP的增益。
3、任務調整的重要性
正如我們在上文所見,任務調整對於提高性能非常重要。論文《Objects365: A Large-scale, High-quality Dataset for Object Detection》指出了類似的發現,在Open Images數據集上進行預訓練會損害COCO的性能,儘管兩者都帶有邊框標記。這意味著,我們不僅希望任務是相同的,而且標記最好也是相同的,以使預訓練對結果真正帶來益處。同時,作者指出了另外兩個有趣的現象:
1)ImageNet的預訓練模型,即使帶有額外的人工標籤,其效果也比自訓練差。
2)藉助高強度的數據增強方法(Augment-S4),使用PASCAL(訓練+ 增強數據集)進行訓練實際上會損害準確率。同時,通過對同一數據集進行自訓練而生成的偽標籤可提高準確性。
4、自訓練的可擴展性、通用性和靈活性
從作者進行的所有實驗中,我們可以得出以下結論:
在靈活性方面,自訓練在每種條件設置下均能很好地發揮作用,無論是少數據狀態、多數據狀態、弱數據增強還是強數據增強。
自訓練不依賴於模型架構也不依賴於數據集。它可以與ResNets、EfficientNets、SpineNet等不同架構以及ImageNet、COCO、PASCAL等不同數據集很好地結合使用。
一般意義上來看,無論預訓練是失敗還是成功,自訓練效果都是很好的。
在可擴展性方面,當我們擁有更多帶標籤的數據和更好的模型時,自訓練被證明表現良好。
5、自訓練的局限性
儘管自訓練可以帶來好處,但它也有一些局限性:
1)與在預訓練模型上進行微調相比,自訓練需要消耗更多的計算量。
2)預訓練的加速範圍是1.3倍至8倍,具體取決於預訓練模型的品質、數據增強的強度和數據集的大小。
3)自訓練並不能完全替代遷移學習和微調,這兩種技術將來也會被大量使用。
六、總結
《Rethinking Pre-training and Self-training》這篇論文提出了很多有關預訓練、聯合訓練、任務調整和普遍表徵的基本問題。解決這些問題比建立具有數十億參數的模型更為重要,可以幫助我們獲得更好的直覺,以了解深度神經網路做出的決策。
雷鋒網雷鋒網雷鋒網
原文鏈接://medium.com/@nainaakash012/rethinking-pre-training-and-self-training-53d489b53cbc