對比自監(jiān)督學習綜述
作者:Ashish Jaiswal, Ashwin Ramesh Babu, Mohammad Zaki Zadeh, Debapriya Banerjee, Fillia Makedon
單位:德克薩斯大學阿林頓分校
時間:2020年12月22日
視圖預測 View Prediction (Cross modal-based)
特征表示聚類 Clustering Feature Representation
自監(jiān)督學習(Self-supervised learning)最近獲得了很多關(guān)注,因為其可以避免對數(shù)據(jù)集進行大量的標簽標注。它可以把自己定義的偽標簽當作訓練的信號,然后把學習到的表示(representation)用作下游任務(wù)里。最近,對比學習被當作自監(jiān)督學習中一個非常重要的一部分,被廣泛運用在計算機視覺、自然語言處理等領(lǐng)域。它的目標是:將一個樣本的不同的、增強過的新樣本們在嵌入空間中盡可能地近,然后讓不同的樣本之間盡可能地遠。這篇論文提供了一個非常詳盡的對比自監(jiān)督學習綜述。我們解釋了在對比學習中常用的前置任務(wù)(pretext task),以及各種新的對比學習架構(gòu)。然后我們對不同的方法做了效果對比,包括各種下游任務(wù)例如圖片分類、目標檢測、行為識別等。最后,我們對當前模型的局限性、它們所需要的更多的技術(shù)、以及它們未來的發(fā)展方向做了總結(jié)。
對比學習 contrastive learning
自監(jiān)督學習 self-supervised learning
判別學習 discriminative learning
圖片/視頻分類 image/video classification
目標檢測 object detection
無監(jiān)督學習 unsupervised learning
遷移學習 transfer learning
深度學習從大量數(shù)據(jù)中自動學習的能力使其在各種領(lǐng)域廣泛應(yīng)用,例如CV和NLP。
但是深度學習也有其瓶頸,就是它需要大量的人工標注的標簽。
例如在計算機視覺中,監(jiān)督模型需要在圖片的表示和圖片的標簽之間建立關(guān)聯(lián)。
傳統(tǒng)的監(jiān)督學習模型極度依賴于大量的有標簽數(shù)據(jù)。
所以研究者們想研究出一種辦法,如何利用大量的無標簽數(shù)據(jù)。
所以自監(jiān)督學習的到了廣泛關(guān)注,因為它可以從數(shù)據(jù)自己本身中尋找標簽來監(jiān)督模型的訓練。
圖一:對比學習的直觀理解:讓原圖片和增強的圖片變近,讓原圖片和其他圖片變遠。
監(jiān)督學習不僅需要大量的標注數(shù)據(jù),它還面臨著下面的各種問題:
模型的泛化性能
偽相關(guān)
對抗攻擊
最近,自監(jiān)督學習結(jié)合了生成模型和對比模型的特點:從大量無標簽數(shù)據(jù)中學習表示。
一種流行的方式是設(shè)計各種前置任務(wù)(pretext task)來讓模型從偽標簽中來學習特征。例如圖像修復、圖像著色、拼圖、超分辨率、視頻幀預測、視聽對應(yīng)等。這些前置任務(wù)被證明可以學習到很好的表示。
圖二:對比自監(jiān)督學習訓練范式
在2014年生成對抗網(wǎng)絡(luò)(GAN)[3] 推出之后,生成模型得到了很多關(guān)注。它之后變成了許多強大的模型的基礎(chǔ),例如 CycleGAN, StyleGAN, PixelRNN, Text2Image, DiscoGAN 等。
這些模型啟發(fā)研究者去研究自監(jiān)督學習(不需要標簽)。
他們發(fā)現(xiàn)基于GAN的模型很復雜,不容易訓練,主要是由于下面原因:
難以收斂
判別器太強大而導致生成器難以生成好的結(jié)果
判別器和生成器需要同步
圖三:不同的對比學習方法在ImageNet上的效果(TOP1 分類準確率)。
與生成模型不同,對比學習是一種判別模型,它讓相似樣本變近,不同樣本變遠(見圖一)。
為了達到這一點,一種衡量遠近的指標被用來衡量嵌入之間的遠近。
如圖二所示,對比損失用來訓練對比學習模型。一般來說,以圖片為例,對比學習把一張圖片的增強版本當作一個正例,其余圖片當作反例,然后訓練一個模型來區(qū)分正反例。區(qū)分依賴于某種前置任務(wù)。
這樣做,學習到的表示就可以用到下游任務(wù)之中。
前置任務(wù)是自監(jiān)督學習中非常重要的一種策略。它可以用偽標簽從數(shù)據(jù)中學習表示。
偽標簽是從數(shù)據(jù)本身中定義而來的。
這些任務(wù)可以應(yīng)用到各種數(shù)據(jù)之中,例如圖片、視頻、語言、信號等。
在對比學習的前置任務(wù)之中,原始圖片被當作一種anchor,其增強的圖片被當作正樣本(positive sample),然后其余的圖片被當作負樣本。
大多數(shù)的前置任務(wù)可以被分為四類:
顏色變換
幾何變換
基于上下文的任務(wù)
基于交叉模式的任務(wù)
具體使用哪種任務(wù)取決于具體的問題。
圖四:顏色變換前置任務(wù),包括:原圖,高四噪聲,高斯模糊,顏色失真(jitter)
顏色變換很好理解,不多說了。在這個前置任務(wù)中,圖片經(jīng)過變換,它們還是相似的圖片,模型需要學會辨別這些經(jīng)過顏色變換的圖片。
幾何變換也很好理解,不多說了。
原圖被當作全局視圖(global view),轉(zhuǎn)換過的圖片被當作局部試圖(local view)。
圖五:幾何變換,包括:原圖,裁剪、旋轉(zhuǎn)、翻轉(zhuǎn)等
解決拼圖問題是無監(jiān)督學習中一個非常重要的部分。
在對比學習中,原圖被當作anchor,打亂后的圖片被當作正樣本,其余圖片被當作負樣本。
圖六:解決一個拼圖問題被當作學習表示的前置任務(wù)。
這個策略一般應(yīng)用于時許數(shù)據(jù),例如傳感器的數(shù)據(jù)或者一系列視頻幀。
策略背后的意義是:時間上相近的相似,時間上很遠的不相似。
解決這樣的前置任務(wù)可以讓模型學習到一些跟時間有關(guān)的表示。
在這里,一個視頻中的幀被當作正樣本,其余視頻被當作負樣本。
其余的方法還包括:隨機抽樣一個長視頻中的兩個片段,或者對每個視頻片段做幾何變換。
目標是使用對比損失(contrastive loss)來訓練模型,使得來自一個視頻的片段在嵌入空間中相近,來自不同視頻的片段不相近。
Qian 等人 [20] 提出的一個模型中將兩個正樣本和其余所有的負樣本之間進行對比。
一對正樣本是兩個增強的來自同一個視頻的視頻片段。
這樣,所有的視頻在嵌入空間中都是分割開來的,每個視頻占據(jù)一個小的嵌入空間。
圖七:對比預測編碼CPC:contrastive predictive coding。圖中的例子是音頻預測。類似的想法可以用在圖片、視頻、文本等領(lǐng)域上。
對于時序數(shù)據(jù)做對比一個最直觀的方法是預測將來或者預測缺失的信息。
這個前置任務(wù)是基于已有的一系列時間點數(shù)據(jù),去預測將來的高階的信息。
在 [21] [22] 等模型中,高階數(shù)據(jù)被壓縮在一個低維度的隱藏嵌入空間之中。強大的序列模型被當作encoder來生成一個基于上下文的C t C_tCt,然后用C t C_tCt來預測未來的信息。其中蘊含的意義是最大化兩者之間的互信息(Mutual information maximization)。
視圖預測 View Prediction (Cross modal-based)
視圖預測任務(wù)一般用在數(shù)據(jù)本身擁有多個視圖的情況下。
在 [23] 中,anchor和它的正樣本圖片來自同時發(fā)生的視角下,它們在嵌入空間中應(yīng)當盡可能地近,與來自時間線中其他位置的負樣本圖片盡可能地遠。
在 [24] 中,一個樣本的多視角被當作正樣本(intra-sampling),其余的inter-sampling當作負樣本。
圖八:從視頻幀序列中學習表示。[23]
選擇什么樣的前置任務(wù)取決于你所要解決的任務(wù)。
盡管已經(jīng)有很多類型的前置任務(wù)在對比學習中提出來了,但是選擇哪種前置任務(wù)依舊沒有一個理論支撐。
選擇正確的前置任務(wù)對表示學習有非常大的幫助。
前置任務(wù)的本質(zhì)是:模型可以學習到數(shù)據(jù)本身的一些轉(zhuǎn)換(數(shù)據(jù)轉(zhuǎn)換之后依然被認作是原數(shù)據(jù),轉(zhuǎn)換后到數(shù)據(jù)和原數(shù)據(jù)處于同一嵌入空間),同時模型可以判別其他不同的數(shù)據(jù)樣本。
但是前置任務(wù)本身是一把雙刃劍,某個特定的前置任務(wù)可能對某些問題有利,對其他問題有害。
圖九:兩張圖片的形狀差不多。但是,很多低階的細節(jié)是不一樣的。在這里使用正確的前置任務(wù)是非常重要的。[28]
在 [26] 中,作者專注于選取正確的前置任務(wù)的重要性。
圖十:一個例子:為什么旋轉(zhuǎn)前置任務(wù)有時候表現(xiàn)不好。
對比學習依賴于負樣本的數(shù)量,來生成好的表示。
它有時候可以看作是一個字典查詢?nèi)蝿?wù),字典有時候是整個訓練集,有時候是訓練集的子集。
有時候?qū)Ρ葘W習可以根據(jù)如何采樣負樣本來進行分類。
我們將對比學習的架構(gòu)分為以下四類(見圖十一)。
圖十一:(a)端到端訓練,一個encoder用來生成正樣本的表示,一個encoder用來生成負樣本的表示;(b)使用一個memory bank來存儲和抽取負樣本;(c)使用一個momentum encoder當作一個動態(tài)的字典查詢來處理負樣本;(d)額外使用一個聚類機制。
端到端學習是一種復雜的基于梯度的學習系統(tǒng),其中所有的模塊都是可微的。這種架構(gòu)偏好于大的batch size來存儲更多的負樣本。除了原圖片和其增強的圖片,其余的batch中的圖片被當作負樣本。這種架構(gòu)包含兩個encoder:一個query一個key(見圖十一a)。
這兩個encoder可以是一樣的,也可以是不一樣的。
使用一個對比損失,模型會讓正樣本的表示相近,讓負樣本和正樣本的表示相遠。
最近,一種端到端的模型 [15] SimCLR 獲得了很大成功。他們使用了非常大的batch size(4096)訓練了100個epochs。SimCLR證明了一種簡單機制的模型也可以獲得非常好的效果。
圖十二:SimCLR的效果。
另外一種端到端的模型 [21] CPC從高維的時序數(shù)據(jù)中學習表示,其使用對比損失來預測將來。
端到端學習中的負樣本與batch size有關(guān)。而batch size的大小受限于GPU/TPU 內(nèi)存,所以這里有一個計算資源的限制,而且如何優(yōu)化大batch訓練也是一個問題。
端到端依賴于大的batch(譯者:存疑,某些任務(wù)可能不需要),所以一種可行的解決方案是使用 memory bank。
Memory bank:的作用是在訓練的時候維護大量的負樣本表示。所以,創(chuàng)建一個字典來存儲和更新這些樣本的嵌入。Memory bank?M MM?在數(shù)據(jù)集?D DD?中對每一個樣本?I II?存儲一個表示?m I m_ImI。該機制可以更新負樣本表示,而無需增大訓練的batch size。
圖十三:PIRL中的memory bank。
PIRL [17] 是一種使用了 Memory bank 來學習圖像表示的方法。
但是,在訓練的時候維護一個大的memory bank是一個很復雜的任務(wù)。這種策略的一個缺點是更新表示的計算復雜度很高。
為了解決 memory bank 的缺點,momentum encoder [14] 被提了出來。這種機制創(chuàng)建了一種特殊的字典,它把字典當作一個隊列的keys,當前的batch進入隊列,最老的batch退出隊列。
Momentum encoder 共享了encoder Q的參數(shù)。它不會在每次反向傳播后更新,而是依據(jù)query encoder的參數(shù)來更新:
θ k ← m θ k + ( 1 ? m ) θ q \theta_k \leftarrow m\theta_k + (1-m)\theta_q?θk←mθk+(1?m)θq
在公式中,m ∈ [ 0 , 1 ) m\in [0, 1)m∈[0,1)?是momentum系數(shù)。只有參數(shù)θ q \theta_qθq會被反向傳播更新。
Momentum update使得θ k \theta_kθk緩慢、柔和地依據(jù)θ q \theta_qθq來更新,使得兩個encoders的區(qū)別并不會很大。
Momentum encoder的優(yōu)點是不需要訓練兩個不一樣的encoder,而且維護memory bank會比較簡單。
特征表示聚類 Clustering Feature Representation
上面介紹的三種架構(gòu)都是用某種相似度衡量來對比樣本,使得相似樣本相近,不相似樣本變遠,從而學習到好的表示。
本節(jié)介紹的機制使用兩個共享參數(shù)的端到端架構(gòu),這種架構(gòu)使用聚類算法來聚類相似樣本表示。
圖十四:傳統(tǒng)對比樣本學習 vs 對比聚類學習[13]
SwAV [13] 使用了聚類方法。其背后的idea在于,在一個嵌入空間中,貓的樣本們應(yīng)該和狗的樣本們相近(都是動物),而與房子的樣本們相遠。
在基于樣本的學習中,每個樣本被當作一個數(shù)據(jù)集中的離散類。
離散類在連續(xù)的嵌入空間中(相似的樣本表示相近)可能會有問題。
例如在一個batch里,正樣本是貓,負樣本們中也有貓,模型會讓正樣本的貓和負樣本中的貓變遠,不利于表示學習。
在自監(jiān)督學習中,Encoder非常重要,因為它們把數(shù)據(jù)樣本遍歷到隱空間中。
圖十五:訓練一個Encoder,然后遷移學習到下游任務(wù)。
沒有一個強大的encoder的話,模型可能難以學到有效的表示,從而執(zhí)行分類任務(wù)。對比學習中的大多數(shù)模型都采用了ResNet或其變種。
為了訓練一個encoder,需要一個前置任務(wù)來利用對比損失來進行反向傳播。
對比學習最核心的觀點是將相似樣本靠近,不相似樣本靠遠。
所以需要一個相似度衡量指標來衡量兩個表示的相近程度。
在對比學習中,最常用的指標是cosine similarity。
c o s s i m ( A , B ) = A ? B ∣ ∣ A ∣ ∣ ∣ ∣ B ∣ ∣ cos_sim(A, B) = \frac{A\cdot B}{||A||||B||}?cossim(A,B)=∣∣A∣∣∣∣B∣∣A?B
Noise Contrastive Estimation (NCE) [38] 函數(shù)定義為:
L N C E = ? log ? exp ? ( s i m ( q , k + ) / τ exp ? ( s i m ( q , k + ) / τ ) + exp ? ( s i m ( q , k ? ) / τ ) L_{NCE} = -\log \frac{\exp (sim(q, k_+)/\tau}{\exp (sim(q, k_+)/\tau ) + \exp (sim (q, k_{-})/\tau)}?LNCE=?logexp(sim(q,k+)/τ)+exp(sim(q,k?)/τ)exp(sim(q,k+)/τ
其中q qq是原樣本,k + k_+k+是正樣本,k ? k_-k?是負樣本,τ \tauτ是超參數(shù),被稱為溫度系數(shù)。s i m ( ) sim()sim()可以是任何相似度函數(shù),一般來說是cosine similarity。
如果負樣本的數(shù)量很多,NCE的一個變種 InfoNCE 定義為:
L I n f o N C E = ? log ? exp ? ( s i m ( q , k + ) / τ exp ? ( s i m ( q , k + ) / τ ) + ∑ i = 0 K exp ? ( s i m ( q , k i ) / τ ) L_{InfoNCE} = -\log \frac{\exp (sim(q, k_+)/\tau}{\exp(sim(q, k_+)/\tau) + \sum_{i=0}^K \exp(sim(q, k_i)/\tau)}?LInfoNCE=?logexp(sim(q,k+)/τ)+∑i=0Kexp(sim(q,ki)/τ)exp(sim(q,k+)/τ
k i k_iki表示負樣本。
與其他深度學習模型類似,對比學習應(yīng)用了許多訓練優(yōu)化算法。訓練的過程包括最小化損失函數(shù)來學習模型的參數(shù)。
常見的優(yōu)化算法包括 SGD 和 Adam 等。
訓練大的 batch 的網(wǎng)絡(luò)有時需要特殊設(shè)計的優(yōu)化算法,例如 LARS。
圖十六:計算機視覺中的各種下游任務(wù)
一般來說,計算機視覺的自監(jiān)督訓練包括兩個任務(wù):
前置任務(wù)
下游任務(wù)
下游任務(wù)聚焦于具體的應(yīng)用,在優(yōu)化下游任務(wù)的時候,模型利用到了前置任務(wù)優(yōu)化時期所學到的知識。這些任務(wù)可以是分類、檢測、分割、預測等。圖十七提供了一個遷移學習的流程。
圖十七:計算機視覺中的下游任務(wù)
為了測試自監(jiān)督學習中學習到的特征對下游任務(wù)的效果,一些方法,例如
kernel visualization
feature map visualization
nearsest-neighbor based approaches
被用來分析前置任務(wù)的有效性。
在這里,第一個卷積層的特征的kernels(分別來自于自監(jiān)督訓練和監(jiān)督訓練)被用來做比較。
類似地,不同層的 attention maps 也可以被用來測試模型的有效性。
圖十八:AlexNet所訓練的 attention map
一般來說,相同類的樣本在隱藏空間中的位置應(yīng)該相近。對一個輸入的樣本,使用最近相鄰方法,可以在數(shù)據(jù)集中使用 top-K 抽取來分析自監(jiān)督學習的模型是否有效。
最近,許多自監(jiān)督學習模型挑戰(zhàn)了監(jiān)督模型的效果。在本章中,我們收集和對比了這些模型的效果,在下游任務(wù)上。對于圖像分類,我們選擇了ImageNet和Places數(shù)據(jù)集。類似的,對于目標檢測,我們選擇了Pascal VOC數(shù)據(jù)集。行為識別和視頻分類我們選擇了UCF-101,HMDB-51和Kinetics。
表一:ImageNet
表二:Places 數(shù)據(jù)集
表三:VOC7+12 (a)frozen feature (b)fine-tune
表四:視頻分類
不具體解釋了。
提供了一些背景知識,略。
盡管實驗結(jié)果顯示對比學習的效果很好,但是它還需要更多的理論論證。
這篇論文總結(jié)了各種流行的自監(jiān)督對比模型。
我們解釋了對比學習中不同的模塊:
如何選擇正確的前置任務(wù)
如何選擇學習架構(gòu)
如何在下游任務(wù)上優(yōu)化
基于對比學習的模型獲得了非常好的實驗效果。
本文最后總結(jié)了當前對比學習面臨的問題。
[3] Ian J Goodfellow et al., Generative adversarial networks, 2014.
[13] Caron et al., Unsupervised learning of visual features by contrasting cluster assignments, 2020.
[14] He et al., Momentum contrast for unsupervised visual representation learning, CVPR, 2019.
[15] Chen et al., A simple framework for contrastive learning of visual representations, ICML, 2020.
[20] Qian et al., Spatiotemporal contrastive video representation learning, arXiv, 2020.
[21] Oord et al., Representation learning with contrastive predictive coding, arXiv, 2018.
[22] Lorre et al., Temporal contrastive pretraining for video action recognition, IEEE Winter Conference on Applications of Computer Vision, 2020.
[23] Sermanet et al., Time-contrastive networks: Self-supervised learning from video, 2017.
[24] Tao et al., Self-supervised video representation learning using inter-intra contrastive framework, 2020.
[26] Yamaguchi et al., Multiple pretext-task for self- supervised learning via mixing multiple image transformations, 2019.
[28] Noroozi et al., Unsupervised learning of visual representations by solving jigsaw puzzles, ECCV, 2016.
[38] Gutmann et al., A new estimation principle for unnormalized statistical models, AISTATS, 2020.
參考鏈接:https://blog.csdn.net/xovee/article/details/111622221