自监督:对比学习contrastive learning
對比自監督學習
英文原文
對比自監督學習
導讀
利用數據本身為算法提供監督。
對比自監督學習技術是一種很有前途的方法,它通過學習對使兩種事物相似或不同的東西進行編碼來構建表示。
自監督方法將取代深度學習中占主導地位的直接監督范式的預言已經存在了相當一段時間。Alyosha Efros打了一個著名的賭,賭在2015年秋季之前,一種無監督的方法將會在檢測Pascal VOC方面勝過有監督的R-CNN。但四年之后,他的預言現在已經實現了。目前,自監督方法(MoCo, He et al., 2019)在Pascal VOC上的檢測性能已經超越了監督方法,并在許多其他任務上取得了良好的效果。
最近自監督學習復蘇背后的一系列方法遵循一種被稱為對比學習(contrastive learning)的范式。
許多現代的ML方法依賴于人類提供的標簽或獎勵作為訓練過程中使用的唯一學習信號形式。這種對直接語義監督的過度依賴有幾個危險:
- 基礎數據的結構比稀疏標簽或獎勵所能提供的要豐富得多。因此,純監督學習算法往往需要大量的樣本來學習,并收斂于脆弱的解決方案。
- 高維問題不能直接監督,RL等問題獲取標簽的邊際成本更高。
- 它導致針對特定任務的解決方案,而不是可以重新利用的知識。
自監督學習提供了一個很有前途的選擇,其中數據本身為學習算法提供監督。在這篇文章中,我會試著概述對比方法與其他自監督學習技術的不同之處,并回顧這一領域最近的一些論文。
圖解的例子
左圖:憑記憶畫的一美元鈔票。右圖:照著一美元鈔票畫的。
看看Epstein, 2016年做的這個實驗,在這個實驗中,受試者被要求盡可能詳細地畫一張美元的圖片。
左邊的圖表示通過回憶一美元鈔票的樣子畫出的。右邊的圖是他們后來照著一張現鈔畫的。很明顯,在沒有美元鈔票的情況下所畫的圖與根據原型所畫的圖有很大的不同。
盡管我們已經無數次地看到一美元紙幣,但我們沒有得到它的完整表示。事實上,我們只保留了足夠的特征來將它與其他物體區分開來。類似地,我們能否建立一種不關注像素級細節、只編碼足以區分不同物體的高級特征的表示學習算法?
生成方法 vs 對比方法
當代的自監督學習方法大致可以分為兩類:
對比法,顧名思義,就是通過對比正負樣本來學習表示。雖然不是一個新的范式,這種方法在計算機視覺任務已經得到了巨大的成功經驗的計算機視覺任務與非監督對比的預訓練。
最值得注意的是:
- 對比方法在未標記的ImageNet數據上進行訓練,使用線性分類器進行評估,超過現在監督AlexNet的準確性。與純監督學習相比,從標記數據學習時,它們也表現出了顯著的數據效率(data - efficient CPC, Henaff et al., 2019)。
- ImageNet的預訓練成功地遷移到了其他下游任務,并優于有監督的預訓練對手(MoCo, He et al., 2019)。
它們不同于更傳統的生成方法來學習表示,后者關注于像素空間中的重構誤差來學習表示。
- 使用像素級損失可能導致這種方法過于關注基于像素的細節,而不是更抽象的潛在因素。
- 基于像素的目標通常假定每個像素之間是獨立的,因此降低了它們建模相關性或復雜結構的能力。
對比方法如何工作?
更正式地說,對于任何數據點x,對比方法的目的是學習編碼器f:
- 這里x+是與x相似或相等的數據點,稱為正樣本。
- x?是與x不同的數據點,稱為負樣本。
- score函數是一個度量兩個特征之間相似性的指標。
x通常被稱為“錨”數據點。為了優化這一特性,我們可以構造一個softmax分類器來正確地分類正樣本和負樣本。這個分類器鼓勵score函數給正例樣本賦于大值,給負樣本賦于小值:
分母項由一個正樣本和N - 1個負樣本組成。這里我們使用點積作為score函數:
這是N-way softmax分類器常見的交叉熵損失,在對比學習文獻中通常稱為InfoNCE損失。在之前的工作中,我們將其稱為多類n-pair loss和基于排序的NCE。
InfoNCE也與互信息有關系。具體地說,最小化InfoNCE損失可使f(X)和f(X+)之間互信息的下界最大化。
讓我們更仔細地看看不同的對比方法來理解他們在做什么:
Deep InfoMax
Deep InfoMax中的對比任務
Deep InfoMax (DIM, Hjelm等人,2018)通過利用圖像中的本地結構來學習圖像的表示。DIM的對比任務是區分全局特征和局部特征是否來自同一幅圖像。在這里,全局特征是卷積編碼器的最終輸出(一個平面向量,Y),局部特征是編碼器中間層(一個M x M特征圖)的一個輸出。每個局部特征圖都有一個有限的感受野。所以,直觀上,這意味著要做好對比任務全局特征向量必須從所有不同的局部區域中獲取信息。
DIM的損失函數看起來與我們上面描述的對比損失函數完全一樣。給定一個錨圖像x,
- f(x)為全局特征。
- f(x+)為同一圖像(正樣本)的局部特征。
- f(x?)是指來自另一幅圖像(負樣本)的局部特征。
DIM的應用還延伸到了其他領域,如graph和RL。對DIM的后續研究,即增強多尺度DIM (Bachman et al., 2019),使用線性分類協議評估時,使用無監督訓練在ImageNet上實現了68.4%的Top-1準確率。
Contrastive Predictive Coding
對比預測編碼(CPC (van den Oord et al ., 2018) (https://arxiv.org/abs/1807.03748))是一種對比方法,可以應用于任何形式的可以表示為有序序列的數據:文字,語音,視頻,甚至圖片(一個圖像可以看作是一系列像素或patch)。
CPC通過編碼信息來學習表示,這些信息在相隔多個時間步的數據點之間共享,放棄了局部信息。這些特征通常被稱為“慢特征”:不會隨著時間變化得太快的特征。具體的例子包括音頻信號中說話者的身份,視頻中進行的活動,圖像中的物體等。
圖解使用音頻輸入的CPC的對比任務
CPC的對比任務設置如下。設{x1,x2,…,xN}為數據點序列,xt為錨點。然后,
- xt+k是錨點的正樣本。
- 從序列中隨機采樣的數據點xt?是一個負樣本。
CPC利用單一任務中的多個k來捕獲在不同時間尺度上演化的特征。
在計算xt的表示時,我們可以使用運行在編碼器網絡之上的自回歸網絡來編碼歷史上下文。
最近的研究(Henaff et al., 2019)擴展了CPC,在ImageNet上用線性分類器評估時達到了71.5%的top-1準確率。
使用對比學習學習不變性
左:AMDIM學習數據增強(如隨機裁剪)之間的不變的表示。右:CMC學習圖像的不同視圖(通道)之間不變的表示
對比學習提供了一種簡單的方法在表示空間中來施加不變性。假設我們想要一個表示對一個變換T不變(例如剪裁、灰度縮放),我們可以簡單地構造一個對比目標,給定一個錨點x,
- T(x)是正樣本
- T(x′)其中x′是隨機的圖像或數據,是負樣本
最近的幾篇論文中使用了這種方法,并取得了巨大的經驗成功:
- 增強多尺度DIM (AMDIM,Bachman et al., 2019)使用標準的數據增強技術作為轉換集,表示應該對不同的增強方法具有不變性。
- 對比多視圖編碼(CMC, Tian et al., 2019)使用同一幅圖像的不同視圖(深度、亮度、亮度、色度、表面法線和語義標簽)作為變換集,其表示也應該是不變的。
擴展負樣本的數量 (MoCo)
對比方法中使用負樣本的不同策略的比較。這里xq是正樣本,xk是負樣本。注意,在MoCo中,梯度不會通過動量編碼器回流。
對比方法在有更多的負樣本的情況下效果更好,因為假定更多的負樣本可以更有效地覆蓋底層分布,從而給出更好的訓練信號。在通常的對比學習公式中,梯度流通過編碼器的正樣本和負樣本。這意味著正樣本的數量被限制在mini-batch的尺寸上。動量對比(MoCo,He et al., 2019)通過維持一個大的負樣本隊列,并且不使用反向傳播來更新負編碼器,有效地繞過了這個問題。相反,它定期更新負編碼器使用動量更新:
其中,θk表示負樣本編碼器的權重,θq表示正樣本編碼器的權重。
來自MoCo的一個相當驚人的結果是,在PASCAL VOC、COCO和其他數據集上,效果比有監督的預訓練模型好,有時候遠遠超過。傳統上,這些任務需要在ImageNet上進行有監督的預培訓才能獲得最佳效果,但MoCo的結果表明,無監督和有監督的預訓練訓之間的差距已經很大程度上縮小了。
自監督學習的一個泛化的范式
盡管在這篇文章中對比學習的大部分應用都集中在標準的計算機視覺任務上,我希望對比學習對于自監督學習來說是一個任意領域和任務的范式。它允許我們將關于數據結構的先驗知識注入到表示空間中。這意味著,當我們遠離靜態iid數據集(丟棄了數據中的大量底層結構)并利用額外的結構信息時,我們可以構建更強大的自監督方法。
—END—
總結
以上是生活随笔為你收集整理的自监督:对比学习contrastive learning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: X16 - 999、中国近代史纲要、03
- 下一篇: document.querySelect