一文掌握《對比學習(Contrastive Learning)》要旨,詳述MoCo和SimCLR算法

2021-12-23 專知
1. 摘要

基於自監督學習的Bert[1]預訓練模型在NLP領域大放光彩,在多項下遊任務中均取得很好的效果。Bert在無標註的語料中充分地學到了通用的知識,那麼很容易引出一個問題,CV領域是否也可以「復現」Bert的成功呢?近年比較火熱的對比學習或許是這個問題的一個答案。

對比學習(Contrastive Learning)是自監督學習的一種,需要從無標註的圖像數據中學習特徵表示,並用於下遊任務中。其指導原則是:通過自動構造相似實例和不相似實例,學習一個表示學習模型,通過這個模型,使得相似的實例在投影空間中比較接近,而不相似的實例在投影空間中距離比較遠。本文將介紹對比學習的基本思路以及經典的MoCo系列[2][3][4]、SimCLR系列模型[5][6],了解對比學習的方法和特性。

2.研究動機

首先自監督學習的定義為:自監督學習屬於無監督學習範式的一種,特點是不需要人工標註的類別標籤信息,直接利用數據本身作為監督信息,來學習樣本數據的特徵表示,並用於下遊任務。在特徵的表示學習中,自監督優勢主要體現在以下兩點:

無需大量的標註數據,在很多任務例如強化學習中,獲取標籤所帶來的邊際成本更高

更關注數據本身的信息,數據本身可以提供比稀疏的標籤更多的信息,有監督學習的算法通常需要採用大量樣本來學習,並收斂到可能是「脆弱」的結果

可以學習到更通用的知識,相比於特定任務的模型所學到的表示,自監督學習得到的表示通常可以更好的遷移到下遊任務中

自監督學習主要分為兩大類:生成式(預測式)方法和對比式方法,如下圖[7]所示:

圖1 自監督學習類別

其中生成式方法在NLP領域可以參考Bert的掩碼語言模型(MLM,Masked Language Modeling),MLM隨機mask掉輸入中的部分tokens,目標是通過這些tokens的上下文信息來預測出這些tokens,在CV領域可以參考變分自編碼器[8](VAE,Variational Auto-Encoder)和生成式對抗網絡[9](GAN,Generative Adversarial Networks),他們通過模型對圖像進行編碼再解碼重構的方式完成訓練。而對比式的方法則是將數據分別與正例樣本和負例樣本在特徵空間進行對比,來學習樣本的特徵表示。在CV領域,生成式方法更注重於像素級別的重構,這也導致模型所學習的編碼更注重於像素的細節,但是通過人的直覺可以認識到,我們記憶和區分事物並不是通過像素級別的特徵來區分的,而是通過一些更高級的特徵。因此,如何提取更高級的特徵並使用其進行區分,成為了對比學習研究的主要目的。

3.對比學習基本思路

其中

為了優化編碼器

4.模型介紹4.1 MoCo v1[2]

MoCo是由Kaiming He的團隊發表在CVPR2020的工作,MoCo通過對比學習的方法,將無監督學習在ImageNet的分類的效果超過有監督學習的性能。MoCo關注的重點是樣本數量對學習到的質量的影響。MoCo使用的正負樣例生成方法中,正樣本生成方法:隨機裁剪,生成兩個區域,同一張圖片的兩個區域是正樣本,不同圖片的兩個區域是負樣本,即判斷兩個區域是否為同一張圖片。首先介紹簡單的end-to-end模型結構,如下圖:

圖2 MoCo-end2end結構圖定義

圖3 MoCo-MemBank-MoCo結構圖Memory Bank模型解耦合dictionary size與mini-batch size,即負樣本不在每個batch中進行選取,而是在所有樣本的特徵組成的bank中進行採樣,通過隨機採樣,一定程度上可以認為一個query採樣的負樣本能代表所有樣本,但是帶來的問題是每個mini-batch的反向傳播都會更新encoder參數,如果每一次更新重新encode一次所有樣本,內存需求較大,如果只是更新下一次採樣的k個樣本,得到的表示和參數更新存在一定的滯後。而文章提出的MoCo則是融合了end-to-end和Memory Bank,並解決了之前存在的問題,添加了momentum encoder,將dictionary作為一個動態進出的隊列,目標是構建一個大的且能在訓練過程中保持一致性的dictionary,作者用該隊列維護最近幾個mini-batch中樣本特徵表示,並將隊列作為所有樣本採樣的子集,對於負樣例的encoder參數

4.2 SimCLR v1[5]

SimCLR是由Ting Chen等人發表在ICML2020的工作,與MoCo相比,SimCLR關注的重點是正負樣例的構建方式,同時SimCLR還探究了非線性層在對比學習中的作用,並分析了batch_size大小、訓練輪數等超參數對對比學習的影響。SimCLR模型結構圖如下所示:

圖4 SimCLR結構圖給定輸入的錨點數據為

圖5 SimCLR數據增強作者實驗了多種數據增強方法,最終得出結論:數據增強對對比學習效果提升有明顯作用,並且多種數據增強的組合效果更好;數據增強對對比學習的提升比對有監督學習的提升高。此外,通過在得到編碼表示後添加非線性變化,發現encoder編碼後的4.3 MoCo v2[3]

在SimCLR發表一個月後,Kaiming He等人發表了MoCo v2,主要借鑑了SimCLR中的改動:

最終在以更小的batch_size和訓練輪數,在ImageNet分類任務上提升超過SimCLR。

4.4 SimCLR v2[6]

SimCLR由Hinton組的Ting Chen在NIPS2020對SimCLR的模型部分做出了如下改進:

除此之外,作者對ImageNet中的無監督方法預訓練與有監督方法進行微調做了進一步的研究,並提出了如下圖所示的模型:

圖6 SimCLRv2

上圖的半監督模型展示流程如下:

採用了相較於SimCLR v1更大的並且帶有SK的ResNet152(3x)在ImageNet進行對比學習預訓練

在小規模有標籤的數據進行fine-tuning

通過蒸餾方式在無標籤數據進行知識的遷移

最終,作者根據實驗結果提出以下結論:

半監督學習的性能受有標籤數據規模的影響為:有標籤數據規模越少,參數量更大的模型fine-tuning後性能的提升相比參數規模小的模型fine-tuning後的效果大

儘管大模型對於廣義特徵表達非常重要,但是額外的模型容量對於特徵任務而言可能並非必需的

根據調整encoder模型後非線性層的數量,證明了非線性層的重要性,深的非線性層可以提高模型性能

4.5 MoCo v3[4]

終於,在2021年,Kaiming He及其團隊在CVPR發布了MoCo v3,嘗試使用Visual Transformer(ViT)作為encoder,但是MoCo v3中並不是使用之前改進的memory queue,而是使用SimCLR的large batch。在MoCo v3中,作者的研究回歸基礎問題,主要解決了對比學習在ViT訓練過程中表現出的不穩定性。

使用ViT作為encoder後,作者還參考在負例編碼器

圖7 MoCov3-準確率震蕩

在分析各層梯度變化後,猜測出現這種情況的原因可能是模型中第一層的梯度會出現驟增,作者給出的解決方法是固定模型的patch projection層,並認為該方法並非解決此問題的根本方法,但是使用該「trick」可以一定程度解決訓練中出現的不穩定性(在學習率較高時仍會出現這種情況)。

5.總結

本文介紹了對比學習的基本思路和經典模型,並通過介紹MoCo系列和SimCLR系列模型展示了目前對比學習研究的重點。除文章中所介紹的模型外,近年來提出的SwAV[10]模型將聚類方法引入訓練過程、只採用正例進行對比學習的BYOL[11]及SimSiam[12]、以及在NLP領域使用對比學習的SimCSE[13]等,都值得深入學習和討論,篇幅原因此處不詳細展開,期待更多創新性的工作來提升對比學習的性能。

參考資料[1]

Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).

[2]

He, Kaiming, et al. "Momentum contrast for unsupervised visual representation learning." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.

[3]

Chen, Xinlei, et al. "Improved baselines with momentum contrastive learning." arXiv preprint arXiv:2003.04297 (2020).

[4]

Chen, Xinlei, Saining Xie, and Kaiming He. "An empirical study of training self-supervised visual transformers." arXiv preprint arXiv:2104.02057 (2021).

[5]

Chen, Ting, et al. "A simple framework for contrastive learning of visual representations." International conference on machine learning. PMLR, 2020.

[6]

Chen, Ting, et al. "Big self-supervised models are strong semi-supervised learners." arXiv preprint arXiv:2006.10029 (2020).

[7]

Contrastive Self-Supervised Learning https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html

[8]

Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).

[9]

Goodfellow, Ian J., et al. "Generative adversarial networks." arXiv preprint arXiv:1406.2661 (2014).

[10]

Caron, Mathilde, et al. "Unsupervised learning of visual features by contrasting cluster assignments." arXiv preprint arXiv:2006.09882 (2020).

[11]

Grill, Jean-Bastien, et al. "Bootstrap your own latent: A new approach to self-supervised learning." arXiv preprint arXiv:2006.07733 (2020).

[12]

Chen, Xinlei, and Kaiming He. "Exploring Simple Siamese Representation Learning." arXiv preprint arXiv:2011.10566 (2020).

[13]

Gao, Tianyu, Xingcheng Yao, and Danqi Chen. "SimCSE: Simple Contrastive Learning of Sentence Embeddings." arXiv preprint arXiv:2104.08821 (2021).

相關焦點

  • 盤點近期大熱對比學習模型:MoCo/SimCLR/BYOL/SimSiam
    在表示學習方面,如果直接對語義進行監督學習,雖然表現很好,但是它需要很多的樣本並且往往是需要對特定的任務進行設計,很難具有遷移性。所以難怪各位大佬們都紛紛為自監督學習站臺,自監督是未來!自監督學習有大類方法,一個是生成方法一個對比方法,如上圖。
  • 2021最新對比學習(Contrastive Learning)相關必讀論文整理分享
    要說到對比學習(Contrastive Learning),首先要從自監督學習開始講起。
  • 從 SimCLR, MoCo, BYOL 了解目前圖像自監督對比學習預訓練在做什麼
    在不使用任何的標籤的情況下,使用自監督對比學習預訓練出的CNN編碼器參數能夠在分類、分割、檢測等基礎任務上都有上佳的表現。這篇文章重點總結了SimCLR, MoCo, BYOL三個經典的CV領域無監督對比學習預訓練的方法。
  • 一文梳理無監督對比學習(MoCo/SimCLR/SwAV/BYOL/SimSiam)
    在SimCLR推出後,各路大佬們又陸續提出了不少有意義的工作,本文將對2020年的一些對比學習經典研究進行總結,方便大家快速掌握這個方向的原理和發展脈絡。首先再簡要說下對比學習的基本原理,先從無監督表示學習講起。表示學習的目標是為輸入  學習一個表示
  • 華人博士提出原型對比學習,非監督學習效果遠超MoCo和SimCLR
    之後非監督學習的又一裡程碑!Salesforce的華人科學家(Junnan Li)介紹了一種新的非監督式神經網絡學習方法,這種方法能夠從數百萬個未標記的圖像中訓練深層神經網絡,讓我們離機器智能又進了一步。本文提出的原型對比學習(PCL) ,統一了非監督式學習的兩個學派: 聚類學習和對比學習。PCL 推動了機器學習和人工智慧的聖杯--非監督式學習技術的進步,並向無需人類指導的機器智能邁出了重要的一步。
  • Debiased Contrastive Learning
    自監督表示學習的核心是對比語義相似和不相似的樣本對,學習泛化的樣本表達,供下遊任務使用。在無標籤的情況下,先前的對比學習方法在做負採樣時,由於均勻採樣所產生的bias,有可能採樣到False Negative的負樣本,從而對模型的學習帶來負面影響。如下右圖所示,帶標籤的負採樣和不帶標籤的負採樣結果存在較大差距。
  • 對比學習(Contrastive Learning)綜述
    ,其中對於數據的標記與否,可以分為監督學習和無監督學習。動機我們的核心就是要學習一個映射函數 f ,把實例 x 編碼成其表示 f(x) ,對比學習的核心就是使得這個 f 滿足下面這個式子:這裡的  就是和  相似實例,  就是和  不相似實例,  這是一個度量實例之間相似度(similarity)的函數。最終目標就是不斷最大化  和  互信息的下界,讓二者的表示更為接近。C.
  • 2021最新對比學習(Contrastive Learning)在各大頂會上的經典必讀論文解讀
    然而,當前的預訓練目標,例如Masked預測和Masked跨度填充並沒有明確地對關於日常概念的關係常識進行建模,對於許多需要常識來理解或生成的下遊任務是至關重要的。為了用以概念為中心的常識來增強預訓練語言模型,在本文中,作者提出了從文本中學習常識的生成目標和對比目標,並將它們用作中間自監督學習任務,用於增量預訓練語言模型(在特定任務之前下遊微調數據集)。
  • 再介紹一篇Contrastive Self-supervised Learning綜述論文
    具體而言,contrastive learning最近已成為在計算機視覺、自然語言處理(NLP)和其他領域中自監督學習方法的主要部分。本文對contrastive learning方法的自監督方法進行了綜述,包括contrastive learning中常用的pretext任務,以及提出的不同體系結構,並對多種下遊任務(例如圖像分類、目標檢測和動作識別)的不同方法進行性能比較。最後,對方法的局限性以及未來方向做了介紹。自監督學習方法
  • 對比學習Contrastive Learning總覽
    常見的機器學習分類方法把機器學習分為監督學習、無監督學習、半監督學習,主要區別是訓練數據有無標籤。無監督學習即訓練數據沒有標籤,這裡的無標籤指的是不需要人為地加標籤,不管是手動還是其他方法標註,典型算法如聚類算法。自監督學習本質屬於無監督學習,訓練數據不需要標註,直接用來訓練,只不過訓練過程中使用數據自身的內容作為學習目標,也可以說是從自身找標籤。
  • 初探對比學習(Contrastive Learning)
    這裡包含了兩個重要信息,一是這篇文章中提出了一個對比學習的框架,二是框架目標是視覺表示。根據大神的介紹,對比學習在搜推廣(搜索、推薦、廣告)的應用中也主要是套用了這個框架來學習user或item的表示,進而應用到後續的CTR任務中。這也是為什麼選擇以這篇論文為主線。
  • 近期必讀的六篇 ICML 2020【對比學習】相關論文
    (contrastive learning)框架。我們簡化了最近提出的對比自監督學習算法,並且不需要專門的體系結構或存儲庫。為了理解什麼使對比預測任務能夠學習有用的表示,我們系統地研究了我們框架的主要組成部分。我們表明:(1)數據增強部分在定義有效的預測任務中起著關鍵作用;(2)在表示和對比損失之間引入可學習的非線性變換大大提高了學習表示的質量;(3)與監督學習相比,對比學習受益於更大的batch和更多的訓練。
  • 一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法
    王小新 編譯自 Medium量子位 出品 | 公眾號 QbitAIQ-Learning是強化學習中最常用的算法之一。Medium上有篇文章,討論了這種算法的一個重要部分:搜索策略。量子位搬運過來,以下為博客譯文:我們先介紹下有關概念和符號。
  • 全監督語義分割訓練新範式「像素對比學習」,蘇黎世聯邦理工等出品
    此外,很多表徵學習(representation learning)的工作 [4, 5] 也驗證了:通過強調性質 2,有助於更好的增強性質 1。因此我們大膽假設,儘管當前的語義分割算法已經取得了極佳性能,但是通過同時考慮性質 1 和 2,有可能習得一個更好的、結構化的分割特徵空間,進而進一步提高語義分割算法的性能。
  • self-supervised系列-何凱明的MoCo
    Momentum Contrast (MoCo);對比學習contrastive learning [29]往往被看作一個字典查找dictionary look-up的問題,我們使用隊列與滑動平均編碼器構建了一個動態的字典。
  • 一文詳解最近異常火熱的self-supervised learning
    所以覺得有必要了解一下 SSL,也看了一些 paper 和 blog,最後決定寫這篇文章作為一個總結。什麼是 Self-Supervised Learning首先介紹一下到底什麼是 SSL,我們知道一般機器學習分為監督學習,非監督學習和強化學習。而 self-supervised learning 是無監督學習裡面的一種,主要是希望能夠學習到一種通用的特徵表達用於下遊任務。
  • 對比自監督學習浪潮迅猛來襲,你準備好了嗎?
    本文是 PyTorch Lightning 創始人 William Falcon 的對比學習綜述,對自監督學習、對比學習等基礎概念進行了簡要的回顧,介紹了 CPC、AMDIM、BYOL、SimCLR、Swav等最近較為著名的對比學習方法,並提出了一種名為 YADIM 的新型對比學習算法。
  • 深度學習 | 圖解Contrastive Predictive Coding從臉盲說起,超直觀無公式
    社區的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步。Contrastive Learning (對比學習) 是這兩年深度學習非常熱的話題,可以說是刷新了很多人對無監督學習對認知。
  • 【機器學習基礎】Self-Supervised Learning入門介紹
    所以覺得有必要了解一下 SSL,也看了一些 paper 和 blog,最後決定寫這篇文章作為一個總結。什麼是 Self-Supervised Learning首先介紹一下到底什麼是 SSL,我們知道一般機器學習分為監督學習,非監督學習和強化學習。而 self-supervised learning 是無監督學習裡面的一種,主要是希望能夠學習到一種通用的特徵表達用於下遊任務。
  • 醫療圖像分割中有限標註情況下的全局和局部特徵的對比學習
    自監督學習提供了一種利用無標籤數據預訓練網絡的策略,隨後利用少量有標籤的數據針對下遊任務進行微調。對比學習是自監督學習的一種變體,能夠學習到圖片級別的表示。本文提出的方法,利用了domain-specific和problem-specific的線索,拓展了在少量標註數據情況下,針對3D醫療圖像分割的對比學習框架。