預訓練後性能反而變差,自訓練要取代預訓練了嗎?

2021-01-10 雷鋒網

早在2018年底,FAIR的研究人員就發布了一篇名為《Rethinking ImageNet Pre-training》的論文 ,這篇論文隨後發表在ICCV2019。該論文提出了一些關於預訓練的非常有趣的結論。

近期,谷歌大腦的研究團隊對這個概念進行了擴展,在新論文《Rethinking Pre-training and Self-training》中,不僅討論了預訓練,還研究了自訓練,比較了在同一組任務當中自訓練與監督預訓練、自監督預訓練之間的差異。

論文地址:https://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》這篇論文提出了很多有關預訓練、聯合訓練、任務調整和普遍表徵的基本問題。解決這些問題比建立具有數十億參數的模型更為重要,可以幫助我們獲得更好的直覺,以了解深度神經網絡做出的決策。

雷鋒網雷鋒網雷鋒網

原文連結:https://medium.com/@nainaakash012/rethinking-pre-training-and-self-training-53d489b53cbc

相關焦點

  • 預、自訓練之爭:谷歌說預訓練雖火,但在標註數據上自訓練更有效
    因而,重新探究預訓練和自訓練的效果成為一個非常重要的課題。在這篇谷歌團隊的論文中,Quoc V. Le 等研究者發現,當具有大量的標註數據時,自訓練的運行效果要優於預訓練,並在 COCO 檢測和 PASCAL 分割任務上實現了 SOTA 結果。眾所周知,預訓練是計算機視覺領域的主導範式,研究人員也熱衷於預訓練。但是,預訓練真的有用嗎?
  • 怎樣預訓練GNN能實現更好的遷移效果?北郵等提出自監督預訓練策略
    儘管 GNN 可以從頭開始訓練,但近來一些研究表明:對 GNN 進行預訓練以學習可用於下遊任務的可遷移知識能夠提升 SOTA 性能。但是,傳統的 GNN 預訓練方法遵循以下兩個步驟:1)在大量未標註數據上進行預訓練;2)在下遊標註數據上進行模型微調。
  • 【NLP】Facebook提出的預訓練模型BART
    該模型結合雙向和自回歸 Transformer 進行模型預訓練,在一些自然語言處理任務上取得了SOTA性能表現。近日,Facebook 發表論文,提出一種為預訓練序列到序列模型而設計的去噪自編碼器 BART。BART 通過以下步驟訓練得到:1)使用任意噪聲函數破壞文本;2)學習模型來重建原始文本。
  • 預訓練還需要監督信息嗎?一文了解無監督訓練的優勢
    在微軟亞洲研究院和香港城市大學的一項研究中,作者從 MoCo 預訓練和目標檢測的遷移出發,深入探討了為什麼無監督訓練在遷移任務上更有優勢?結合新的發現,是否有可能改進有監督的預訓練?MoCo 是一種通過區分不同實例 (instance discrimination)的 pretext task 進行無監督訓練的方法。
  • 賽爾原創@Findings|中文預訓練語言模型回顧
    簡介以BERT為代表的預訓練語言模型在眾多自然語言處理任務中取得了顯著性能提升,並且隨後湧現出一批效果更優的預訓練語言模型。在本文中,我們將經典的預訓練語言模型應用在中文場景並使用相同的實驗設置去驗證它們在中文領域的性能表現。
  • 賽爾原創@Findings | 中文預訓練語言模型回顧
    簡介以BERT為代表的預訓練語言模型在眾多自然語言處理任務中取得了顯著性能提升,並且隨後湧現出一批效果更優的預訓練語言模型。在本文中,我們將經典的預訓練語言模型應用在中文場景並使用相同的實驗設置去驗證它們在中文領域的性能表現。
  • 中文ELECTRA預訓練模型再升級
    在今年3月,哈工大訊飛聯合實驗室推出了中文ELECTRA預訓練模型,並將相關資源進行開源,目前在GitHub上已獲得580個star。本次更新中,我們將預訓練語料從原有的約20G提升至180G,利用接近9倍大小的數據集。
  • Longformer:超越RoBERTa,為長文檔而生的預訓練模型
    並且,作者用Longformer的attention方法繼續預訓練RoBERTa。訓練得到的語言模型在多個長文檔任務上進行fine-tune後,性能全面超越Roberta。該預訓練模型也已開源,大家可以很方便地直接應用於自己的任務。
  • 預訓練語言模型:還能走多遠?
    2018 年 7 月開始,他正式加入華為諾亞方舟實驗室,任語音語義首席科學家,主導語音和自然語言處理領域的前沿研究和技術創新,除了語音、對話、翻譯、多模態以外,其實驗室也在重點布局預訓練語言模型。 在論壇中,專家們討論的話題包括但不限於:預訓練語言模型還能給我們帶來哪些驚喜?「大力出奇蹟」 這條路還能繼續下去嗎?
  • ELECTRA中文預訓練模型開源,僅1/10參數量,性能依舊媲美BERT
    作為一種新的文本預訓練模型,ELECTRA 新穎的設計思路、更少的計算資源消耗和更少的參數,迅速引起了大批關注者。特別是在去年 11 月 ICLR 2020 論文接收出爐後,曾引起NLP圈內不小的轟動。
  • [預訓練語言模型專題] MT-DNN(KD) : 預訓練、多任務、知識蒸餾的結合
    感謝清華大學自然語言處理實驗室對預訓練語言模型架構的梳理,我們將沿此脈絡前行,探索預訓練語言模型的前沿技術,紅框中為已介紹的文章,綠框中為本期介紹的文章,歡迎大家留言討論交流。眾所周知,語言模型預訓練方法和多任務學習策略都是提高模型性能的重要手段,本文就結合了兩者的優點,提出了MT-DNN的方案,並在GLUE上的八個NLU任務上超越了之前的state-of-art模型。首先,MT-DNN考慮了四種類型的NLU任務,分別是單句文本分類(CoLA, SST-2),文本對的分類(RTE,MNLI,QQP,MRPC),文本相似度度量(STS-B),相關度排序(QNLI)。
  • LogME:通用快速準確的預訓練模型評估方法
    在一些研究領域(比如2020年非常熱門的自監督學習),研究成果最終也是以預訓練模型的方式呈現給社區。在深度學習社區裡,一些熱門領域已經積累了成百上千個預訓練模型。面對眾多預訓練模型,我們在進行遷移時,該用哪一個好呢?
  • 深度| 通過NMT訓練的通用語境詞向量:NLP中的預訓練模型?
    自然語言處理(NLP)這個領域目前並沒有找到合適的初始化方法,它不能像計算機視覺那樣可以使用預訓練模型獲得圖像的基本信息,我們在自然語言處理領域更常用的還是隨機初始化詞向量。本文希望通過 MT-LSTM 先學習一個詞向量,該詞向量可以表徵詞彙的基本信息,然後再利用該詞向量輔助其它自然語言處理任務以提升性能。
  • PTMs|2020最新NLP預訓練模型綜述
    用帶注意力機制的「seq2seq」從「機器翻譯任務」中預訓練一個LSTM encoder。輸出的上下文向量(CoVe)有助於提升一系列NLP下遊任務的性能。(2) 「ELMo」[6].用「兩層的Bi-LSTM」從「雙向語言模型任務BiLM」(包括1個前向的語言模型以及1個後向的語言模型)中預訓練一個「Bi-LSTM Encoder」。能夠顯著提升一系列NLP下遊任務的性能。
  • 華為開源預訓練語言模型「哪吒」:提升多項中文NLP任務性能
    可以看到的是近兩年預訓練模型的發展非常快速,從 Word2Vec 到 ULMFiT、CoVe 再到 BERT、XLNET 等,都各有特點且在不斷完善中。聚焦於「多項中文 NLP 任務性能」的 NEZHA 也有亮眼的性能升級。在此,雷鋒網(公眾號:雷鋒網) AI 開發者將 NEZHA 詳細內容及 TinyBERT 相關地址整理如下。
  • 機器推理文本+視覺,跨模態預訓練新進展
    跨模態預訓練模型 Unicoder-VLUnicoder-VL 採用多層 Transformer 結構作為模型基礎,基於自注意力機制學習語言與語言信息間的協同表示。Unicoder-VL 在圖片檢索和圖片推理問答中的應用Unicoder-VL 在經過預訓練後,可以直接在下遊任務上進行微調(fine-tune)。本文主要在圖片檢索和圖片推理問答這兩個任務上進行驗證。1)圖像文本檢索。
  • 滴滴提出無監督預訓練模型,中文識別性能提10%以上
    但是,轉錄後的數據需要大量的努力才能在工業應用中獲得,同時在線系統中還保留著大量未轉錄的數據,這些數據收集起來成本較低。因此,當標記數據有限時,如何有效地使用未轉錄數據來提升語音識別系統的性能就很值得研究了。最近,無監督預訓練已在一些領域顯示出較好的結果。
  • NLP預訓練模型大集合!
    近日,Separius 在 GitHub 上列舉了一系列關於 NLP 預訓練模型的近期論文和文章,力求全面地概述 NLP 各個方面的最新研究成果,包括詞嵌入、池化方法、編碼器、OOV 處理等。Vectors:基於 GloVe-like 嵌入的近期結果構建 OOV 表徵,依賴於使用預訓練詞向量和線性回歸可高效學習的線性變換。
  • 復旦邱錫鵬教授:2020最新NLP預訓練模型綜述
    代表性工作包括:「CoVe」 用帶注意力機制的「seq2seq」從「機器翻譯任務」中預訓練一個LSTM encoder。輸出的上下文向量(CoVe)有助於提升一系列NLP下遊任務的性能。「ELMo」用「兩層的Bi-LSTM」從「雙向語言模型任務BiLM」(包括1個前向的語言模型以及1個後向的語言模型)中預訓練一個「Bi-LSTM Encoder」,能夠顯著提升一系列NLP下遊任務的性能。
  • 最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄
    與最近的語言表徵模型不同,BERT 旨在基於所有層的左、右語境來預訓練深度雙向表徵。BERT 是首個在大批句子層面和 token 層面任務中取得當前最優性能的基於微調的表徵模型,其性能超越許多使用任務特定架構的系統,刷新了 11 項 NLP 任務的當前最優性能記錄。