透過Google SimCLR框架推進機器學習的自我監督和半監督學習

最近,自然語言處理模型(例如BERT和T5)已經表明,透過在類別庫上首先進行預訓練,可以在很少的類別標籤的情況下取得良好的效果。較大的未標記資料集,然後對較小的標記資料集進行微調。同樣,訓練前對大型未標記的圖片資料集,具有提高計算機視覺任務效能的潛力,具體表現為標本的CNN,例項歧視,CPC,AMDIM,CMC,莫科和別的。這些方法屬於自我監督學習的範疇,自我監督學習是透過從未標記資料集中建立替代標籤而將無監督學習問題轉換為有監督問題的一系列技術。但是,當前用於影象資料的自我監督技術非常複雜,需要對體系結構或訓練過程進行重大修改,並且尚未得到廣泛採用。

在“視覺表示的對比學習的簡單框架”中”,Google概述了一種方法,該方法不僅可以簡化而且可以改善以前在影象上進行自我監督表示學習的方法。Google提出的名為SimCLR的框架極大地提高了自我監督和半監督學習的技術水平,並以有限的類別標籤資料(85。8%最高5位準確性(使用1%)獲得了影象分類的新記錄。ImageNet資料集上標記影象的數量)。Google方法的簡單性意味著可以輕鬆地將其合併到現有的有監督學習管道中。接下來,Google首先介紹SimCLR框架,然後討論在開發SimCLR時發現的三件事。

SimCLR框架

SimCLR首先學習未標記資料集上影象的通用表示形式,然後可以使用少量標記影象對其進行微調,以實現給定分類任務的良好效能。通用表示是透過一種稱為對比學習的方法,透過同時最大化同一影象的不同變換檢視之間的一致性以及最小化不同影象的變換檢視之間的一致性來學習的。使用此對比物鏡更新神經網路的引數會導致相應檢視的表示彼此“吸引”,而不對應檢視的表示彼此“排斥”。

首先,SimCLR從原始資料集中隨機繪製示例,並使用簡單增強(隨機裁剪,隨機顏色失真和高斯模糊)的組合對每個示例進行兩次轉換,從而建立兩組相應的檢視。對單個影象進行這些簡單轉換的基本原理是(1)Google要鼓勵在轉換下對同一影象進行“一致”表示;(2)由於預訓練資料缺少標籤,因此Google無法先驗地知道哪個影象包含哪個物件3)Google發現這些簡單的轉換足以使神經網路學習良好的表示,儘管也可以採用更復雜的轉換策略。

然後,SimCLR使用基於ResNet架構的卷積神經網路變體。之後,SimCLR使用完全連線的網路(即MLP)計算影象表示的非線性投影,這會放大不變特徵並使網路識別同一影象的不同變換的能力最大化。Google使用隨機梯度下降來更新CNN和MLP,以最小化對比物鏡的損失函式。對未標記的影象進行預訓練後,Google可以直接使用CNN的輸出作為影象的表示,也可以使用標記的影象對其進行微調,以實現下游任務的良好效能。

透過Google SimCLR框架推進機器學習的自我監督和半監督學習

擬議的SimCLR框架的說明。同時訓練CNN和MLP層以產生對於相同影象的增強版本相似的投影,而對於不同影象則不同,即使那些影象屬於同一類物件。經過訓練的模型不僅可以很好地識別同一幅影象的不同變換,而且可以學習相似概念的表示(例如椅子與狗),隨後可以透過微調將其與標籤相關聯。

儘管簡單,SimCLR仍在ImageNet上的自我監督和半監督學習方面取得了極大的進步。由SimCLR學習的基於自我監督表示法訓練的線性分類器達到了76。5%/ 93。2%的top-1 / top-5準確性,而前一個最佳(CPC v2)為71。5%/ 90。1%,與監督的效能相匹配可以在較小的模型ResNet-50中進行學習,如下圖所示。

透過Google SimCLR框架推進機器學習的自我監督和半監督學習

使用不同的自我監督方法(在ImageNet上進行過預習)學習的表示形式上訓練的ImageNet top-1線性分類器的準確性。灰色十字表示受監管的ResNet-50。

當僅對1%的標籤進行微調時,SimCLR可以達到63。0%/ 85。8%的top-1 / top-5準確性,而之前的最佳(CPC v2)為52。7%/ 77。9%。也許令人驚訝的是,當在100%的標籤上進行微調時,預訓練的SimCLR模型仍可以顯著優於從頭開始訓練的監督基線,例如,對SimCLR的預訓練ResNet-50(4x)進行微調可以在30個紀元內達到80。1%的top-1準確性。 ,而從頭開始訓練它會在90個時期內獲得78。4%的收益。

SimCLR對先前方法提供的改進不是由於任何單一設計選擇,而是由於它們的組合。以下總結了幾個重要的發現。

發現1:用於生成相應檢視的影象轉換組合非常關鍵

SimCLR透過最大化同一影象的不同檢視的一致性來學習表示形式時,對影象進行轉換以防止瑣碎的一致性形式(例如顏色直方圖的一致性)非常重要。為了更好地理解這一點,Google探索了不同型別的轉換,如下圖所示。

透過Google SimCLR框架推進機器學習的自我監督和半監督學習

應用於原始影象的隨機變換示例

Google發現,雖然沒有一個單一的變換(Google研究過)足以定義可產生最佳表示的預測任務,但突出了兩個變換:隨機裁剪和隨機顏色失真。儘管裁剪和顏色失真都不能單獨帶來高效能,但是將這兩種轉換組合在一起可以帶來最新的結果。

要了解將隨機裁剪與隨機色彩失真結合起來為什麼很重要,請考慮使同一影象的兩個裁剪之間的一致性最大化的過程。這自然包含兩種型別的預測任務,這些任務可以實現有效的表示學習:(a)從較大的“全域性”檢視(作物B)預測區域性檢視(例如,下圖中的作物A),以及(b)預測相鄰檢視(例如,在作物C和作物D之間)。

透過Google SimCLR框架推進機器學習的自我監督和半監督學習

最大化不同作物之間的一致性會導致兩項預測任務。左: 全球視角與區域性視角。右: 相鄰檢視。

但是,同一影象的不同裁切通常在色彩空間中看起來非常相似。如果顏色保持不變,則模型只需匹配顏色直方圖即可最大化作物之間的一致性。在這種情況下,模型可能只專注於顏色,而忽略其他更通用的功能。透過獨立扭曲每種作物的顏色,可以消除這些淺層線索,並且該模型只能透過學習有用的和可概括的表示形式來達成一致。

發現2:非線性投影很重要

在SimCLR中,在計算用於對比學習目標的損失函式之前應用基於MLP的非線性投影,這有助於識別每個輸入影象的不變特徵,並最大化網路識別同一影象的不同變換的能力。在Google的實驗中,Google發現使用這樣的非線性投影有助於提高表示質量,將在SimCLR學習的表示上訓練的線性分類器的效能提高10%以上。

有趣的是,用作MLP投影模組的輸入的表示形式與投影輸出的表示形式之間的比較表明,當透過線性分類器進行測量時,較早階段的表示形式表現更好。由於用於對比物鏡的損耗函式基於投影的輸出,因此在投影之前的表示效果更好是有些令人驚訝的。Google猜想Google的目標會導致網路的最後一層變得不變,這些特徵對於可能對下游任務有用的顏色等特徵不會改變。使用額外的非線性投影頭,投影頭之前的表示層可以保留有關影象的更多有用資訊。

發現3:向上擴充套件可顯著提高效能

Google發現

(1)在同一批次中處理更多示例

(2)使用更大的網路

(3)訓練更長的時間都可以帶來顯著的改進

儘管這些看似有些明顯的觀察結果,但對於SimCLR而言,這些改進似乎要比對監督學習的改進大。例如,Google觀察到,有監督的ResNet的效能在ImageNet上的90到300個訓練時期之間達到峰值,但是SimCLR即使經過800個訓練時期也可以繼續改善。當Google增加網路的深度或寬度時,也似乎是這種情況– SimCLR的收益繼續增長,而對於有監督的學習,它的飽和開始增長。為了最佳化擴大培訓的回報,Google廣泛使用了在Google的實驗中使用雲端TPU。