對比自監督學習浪潮迅猛來襲,你準備好了嗎?

2020-09-27     AI科技評論

原標題:對比自監督學習浪潮迅猛來襲,你準備好了嗎?

編譯 | Mr Bear

校對 | 青暮

近年來,自監督學習逐漸成為了備受人們關注的應對標註缺乏問題的熱門解決方案,科研人員在基於對比學習的自監督方法方面進行了大量研究。本文是 PyTorch Lightning 創始人 William Falcon 的對比學習綜述,對自監督學習、對比學習等基礎概念進行了簡要的回顧,介紹了 CPC、AMDIM、BYOL、SimCLR、Swav等最近較為著名的對比學習方法,並提出了一種名為 YADIM 的新型對比學習算法。

圖 1:對比學習

本文介紹了論文「A Framework For Contrastive Self-SupervisedLearning And Designing A New Approach 」中的主要內容。

論文地址:https://arxiv.org/abs/2009.00104

在過去的一年中,一類「新穎」的自監督學習(AMDIM、CPC、SimCLR、BYOL、Swav等)算法在人工智慧研究領域取得了多項目前最優的結果。

在我們近期發表的論文「A Framework For ContrastiveSelf-Supervised Learning And Designing A New Approach」中,我們為描述對比自監督學方法形式化定義了一個概念框架。並使用該框架分析了三種對比學習的示例:SimCLR、CPC、AMDIM,表明:儘管這些方法似乎在表面上看起來各不相同,但事實上它們都只是對彼此做出了細微的調整。

在本文中,我們將:

  • 回顧自監督學習
  • 回顧對比學習
  • 提出一種比較近期各種對比學習方法的框架
  • 使用我們的框架比較CPC、AMDIM、MOCO、SimCLR、BYOL
  • 使用我們的框架形式化定義了一種新的方法「YADIM」
  • 描述了一些我們的實驗結果
  • 描述了取得這些實驗結果的計算要求

1

實現

讀者可以通過以下連結獲取使用 PyTorch LIghtning框架編寫的所有文中介紹的方法,從而在任意的硬體設備上訓練這些算法,並且更加容易進行對比。

  • AMDIM:https://pytorch-lightning-bolts.readthedocs.io/en/latest/self_supervised_models.html#amdim
  • BYOL:https://pytorch-lightning-bolts.readthedocs.io/en/latest/self_supervised_models.html#byol
  • CPC V2:https://pytorch-lightning-bolts.readthedocs.io/en/latest/self_supervised_models.html#cpc-v2
  • Moco V2:https://pytorch-lightning-bolts.readthedocs.io/en/latest/self_supervised_models.html#moco-v2
  • SimCLR:https://pytorch-lightning-bolts.readthedocs.io/en/latest/self_supervised_models.html#simclr

2

自監督學習

回想一下,在監督學習任務中,我們會為系統給定一個輸入 x 和一個相應的標籤 y。

圖 2:監督式學習——圖左側為輸入圖像,右側為標籤。

在自監督學習任務中,我們僅僅為系統給定輸入 x,而不給定標籤 y,系統需要「學會根據輸入的某部分來預測輸入中的其它部分」。

圖 3:在自監督學習中,輸入數據被同時用作源和目標。

事實上,這種形式化定義是非常通用的,你可以創造性地對輸入進行「分割」。這種策略被稱為「前置任務」(又稱「代理任務」),研究者們已經嘗試了各種各樣的方法。在這裡,我們給出三種示例:

  • 預測兩個圖塊之間的相對位置(https://arxiv.org/abs/1505.05192)

  • 解決一個拼圖問題(https://arxiv.org/abs/1603.09246)

  • 對某張圖像進行著色(https://richzhang.github.io/colorization/)

圖 4:前置任務示例

儘管上述方法極具創造性,但是它們實際上效果並不理想。然而,最近一系列使用「對比學習」的方法已經開始顯著地縮小在 ImageNet 數據集上與監督式學習之間的性能差距。

圖 5:最新的方法(Swav)正在縮小與在 ImageNet 上訓練的監督式方法的差距。

3

對比學習

大多數機器學習算法背後的基本思想是,相似的樣本應該被劃分到一起,而與其它相關示例的聚類簇相距較遠。

Chopra 等人於 2014 年發表的最早的有關對比學習的工作「Learning a SimilarityMetric Discriminatively, with Application to Face Verification」正是基於這一思想構建的,主要思想的示意圖如下:

圖 6:對比學習示例

對比學習通過使用三個關鍵的元素(正樣本、anchor、負樣本的表征)來實現上述思想。為了創建一個正樣本對,我們需要兩個相似的樣本,而當我們創建一個負樣本對時,我們將使用第三個與兩個正樣本不相似的樣本。

圖 7:正負樣本與 Anchor

然而,在自監督學習任務中,我們並不知道每個樣本的標籤。因此,我們也無從知曉兩張圖像是否相似。

儘管如此,如果我們假設每張圖片都從屬於它自身的一個獨有的類別,那麼我們就可以提出各種構造這類三元組的方法(正負樣本對)。這意味著,在一個包含 N 個樣本的數據集中,我們現在擁有了 N 個標籤!

圖 8:為每一個樣本賦予一個獨特的類別

當我們知道了每一張圖像的標籤(類別)後,就可以使用數據增強技術來生成這些三元組。

4

特性1:數據增強過程

首先,我們可以通過定義一個數據增強過程來描述一種對比式自監督學習方法。

一個數據增強過程 A(x) 對同一個輸入應用一系列隨機變換。

圖 9:應用於某一輸入的隨機數據增強過程

在深度學習場景下,數據增強旨在構建對於原始輸入中的噪聲具有不變性的表征。例如,即使圖 9 中的豬被旋轉了、或者顏色消失了、甚至是像素被「抖動」了,網絡還是能將其識別出來。

在對比學習場景下,數據增強還有第二個目標:生成 anchor、正樣本、負樣本,將它們輸入給編碼器,並將其用於提取表征。

CPC

CPC 引入了應用色彩抖動、隨機灰度、隨機翻轉等變換的處理流程,但是它也引入了一種特殊的變換:將一張圖像劃分為一些重疊的子圖塊。

圖 10:CPC 中的關鍵變換

通過使用這一過程,CPC 可以生成多組正負樣本。實際上,該過程可以被應用於一批示例上,此時我們可以將批中其它的示例用作負樣本。

圖 11:根據一批圖像生成正樣本、anchor、負樣本對。

AMDIM

與 CPC 相比,AMDIM 使用了一種稍微有些不同的方法。在進行了一些標準變換(抖動、翻轉等)後,對於每一張圖像,它都會通過將數據增強過程在該圖像上應用兩次得到兩個版本的變換圖像。

圖 12:數據增強過程

實際上,Dosovitski 等人於 2014 年就在論文「Discriminative UnsupervisedFeature Learning with Convolutional Neural Networks」中提出了這一思想。這一思想旨在使用一個「種子」圖像生成相同圖像的許多變換版本。

SimCLR、Moco、Swav、BYOL

AMDIM 的工作流程取得了非常好的效果,以至於跟進該方法的所有工作都採用了相同的工作流程,它們對之前使用的變換方法採取了一些輕微的調整(例如,有的加入了抖動,有的加入了高斯模糊,等等)。然而,與 AMDIM 的主要思想相比,大多數這些變換方法都是不合邏輯的。

在本文中,我們針對這些變化的影響展開了消融實驗。我們發現,對變換的選取對於方法最終的性能是十分關鍵的。事實上,我們相信,這些方法的成功大部分都是由特定的對變換的選擇驅使的。

這些發現與 SimCLR 和 BYOL 論文中展示的相似的實驗結果是相符的。

下面的視頻詳細介紹了 SimCLR 的工作流程:

5

特性2:編碼器

第二種描述這些方法的方式是:對於編碼器的選擇。上述的大多數方法使用了具有各種各樣深度和寬度的ResNet 類網絡。

圖 13:ResNet 網絡架構

當這類方法開始出現時,CPC 和 AMDIM 實際上設計了自定義的編碼器。我們通過消融實驗發現了,AMDIM 的泛化性能欠佳,而 CPC 則受編碼器改變的影響較小。

圖 14:在 CIFAR-10 數據集上測試編碼器的魯棒性

自從 CPC 之後,所有的方法都選用了 ResNet-50網絡架構。儘管可能還有更優的架構有待發現,但是以 ResNet-50 作為標準架構說明我們可以重點關注如何提升其它的特性,從而通過更好的訓練方法(而不是更好的架構)獲得性能的提升。

然而,對於消融實驗中的每一種情況而言,有一個發現始終成立:更寬的編碼器在對比學習任務中性能要好得多。

6

特性3:表征提取

第三種描述這類方法的方式是:它們採取的提取表征的策略。可以說,這也許正是所有這些方法產生「魔力」的秘訣,也是它們差別最大之處。

為了理解提取表征的策略如此重要的原因,讓我們首先定義一下何為「表征」。「表征」是獨特特性的集合,它使一個系統(以及人類)可以理解某物與其它物體的區別。

Quora的這篇名為「What is representation learning in deep learning?」的博文使用了一個實例來說明如何試圖對形狀進行分類。要想成功地對形狀進行分類,在該形狀中找到的「角」的個數可能是一種很好的表征。

圖 15:各種擁有不同「角」數的形狀

在這些對比學習方法中,它們通過各種各樣的方式提取出表征。

CPC

CPC 引入了通過預測潛在空間中的「未來」情況來學習表征的思想。實際上,這意味著:(1)將一張圖像看做延時間軸自左上向右下展開,其左上角為「過去」,而右下角為「未來」。

圖 16:CPC 的「未來」預測任務

(2)預測結果並不是發生在像素級別上,而是編碼器的輸出(即潛在空間)。

圖 17:從像素空間到潛在空間的變換

最終,CPC 通過將編碼器的輸出(H)作為投影頭(作者稱其為一個上下文編碼器)生成的上下文向量的目標,定義了一個預測任務,從而進行表征提取。

圖 18:CPC 的表征提取

在我們的論文「A Framework ForContrastive Self-Supervised Learning And Designing A New Approach」中,我們發現:只要數據增強過程足夠強,那麼這種預測任務並不是必需的。並且,儘管有許多關於數據增強過程的假設,我們認為一個強大的數據增強過程會創建共享某種相似的全局結構、但擁有不同局部結構的正樣本對。

AMDIM

另一方面,AMDIM 採用的思想是:利用提取自卷積神經網絡(CNN)中間層的各個特徵圖,對比不同視圖的表征。我們可以從兩個方面來分析這一過程:(1)圖像的多視圖(2)CNN 的中間層。

首先,我們不妨回想一下 AMDIM 為同一張圖像生成兩個版本的數據增強變體的過程。

圖 19:AMDIM 數據增強過程

每個版本的數據增強結果都會被傳入給相同的編碼器,從而為每張圖像提取特徵圖。AMDIM 並不會丟棄由編碼器生成的中間特徵圖,而是會將這些特徵圖用來進行跨空間尺度的比較。回想一下,當一張輸入圖像經過 CNN 的各個層時,感受野會在不同尺度上對輸入進行信息編碼。

圖 20:不同尺度的特徵圖

AMDIM 通過對 CNN 的中間輸出進行比較來實踐了這一思想。圖 21 說明了這一比較過程是如何在三張由編碼器生成的特徵圖之間進行的。

圖 21:AMDIM 的表征提取——AMDIM 使用相同的編碼器提取 3 組特徵圖,並對它們進行比較。

其餘的此類方法都針對 AMDIM 提出的思想進行了一些微調。

SimCLR

SimCLR 使用了與 AMDIM 相同的思想,但是做出了 2 處微調:

(1)僅僅使用最後的特徵圖

(2)利用一個投影頭處理該特徵圖,並比較投影前後的兩個向量(與 CPC 中的上下文投影相似)

Moco

正如前文所提到的,對比學習需要用到負樣本。通常而言,這是通過將 batch 中的某張圖像與其它圖像進行比較而實現的。

Moco 進行了與 AMDIM 相同的處理過程(僅僅用到了最後的特徵圖),但它保留了處理過的所有batch 的歷史記錄,並以此增加負樣本的數量。這樣做的效果是:用於提供對比信號的負樣本數增加,它超過了單個batch 所得到的負樣本數。

圖 22:基於動量編碼器的對比學習

BYOL

BYOL 採用了與 AMDIM 相同的思想(但只用到了最後的特徵圖),但是進行了兩處改變。

圖 23:BYOL 架構示意圖

(1)BYOL 用到了兩個編碼器。第二個編碼器實際上完全是第一個編碼器的副本,但是它不會在每一輪更新權重,而是使用一種滾動均值(rolling average)更新它們。

(2)BYOL 並沒有用到負樣本,而是依靠滾動權值更新作為一種為訓練提供對比信號的方式。然而,近期的一項消融實驗發現,這種做法可能並不是必需的,而且事實上加入批量歸一化可以確保系統不生成平凡解。

Swav

Caron 等人在論文「UnsupervisedLearning of Visual Features by Contrasting Cluster Assignments」中將他們的表征提取任務構建為一種「在線聚類」,其中他們迫使「同一張圖像不同的增強結果編碼之間的一致性」得以滿足。因此,Swav 採用了與 AMDIM 相同的方法(僅僅使用最後的特徵圖),但是它沒有直接比較向量,而是通過一組 K 個預先計算出的編碼計算相似度。

圖 24:Swav 工作流程示意圖

實際上,這意味著 Swav 會生成 K 個聚類,對於每個編碼的向量而言,它會對這些聚類進行比較,從而學習出新的表征,這份工作可以看做將 AMDIM 和論文「Unsupervised Learning byPredicting Noise」的思想進行了融合。

7

關於特性3的思考

表征的提取策略正是這些方法的不同之處。然而,它們之間的變化非常微妙,並沒有進行嚴格的消融實驗。我們很難確定是什麼真正導致了相應的結果發生。

根據我們的實驗結果,我們發現,CPC 和 AMDIM 策略對於結果的影響可以忽略不計,反而增加了計算複雜度。使這些方法奏效的主要驅動力是數據增強過程。

8

特性4:相似度度量

第四個我們可以用來比較這類方法的特性是:它們使用的相似度度量方法。上述所有的方法都使用了一個點積或餘弦相似度。儘管我們的論文並沒有列舉出這些消融實驗情況,但我們的實驗結果說明:對於相似度的選擇在很大程度上是無關緊要的。

9

特性5:損失函數

我們用來對比這些方法的第五種特性是:對損失函數的選擇。所有這類方法(除了 BYOL)都選擇使用了一種噪聲對比估計(NCE)損失。NCE 損失函數包含兩個部分:一個分子、一個分母。分子鼓勵相似的向量靠近,分母推動所有其它的向量遠離。

圖 25:NCE 損失

如果沒有分母,那麼損失就會變成一個常數,因此學到的表征就會不再適用。

然而,BYOL 並不需要該分母,而是依賴於第二個編碼器的權重更新機制來提供對比信號。然而,正如前文所述,近期的一些消融實驗說明,實際上這可能並不是驅動對比信號的因素。

在下面的視頻中,我使用 SimCLR 作為一個示例,對NCE 損失進行了完整的解釋。

10

另一種DIM(YADIM)

我們希望通過生成一種新的方法來說明我們框架的有效性,該方法可以進行不需要前置動機或不涉及表征提取策略的自監督學習。我們將這種新的方法稱為 YADIM。

YADIM 的特性如下:

特性 1:數據增強過程

在 YADIM 中,我們融合了 CPC 和 AMDIM 的數據增強過程。

特性 2:編碼器

我們使用了 AMDIM 中的編碼器,儘管使用任意其它編碼器(如 ResNet-50)也有效。

特性 3:表征提取

YADIM 策略是簡單的:對某張圖像的多個版本進行編碼,並使用最後的特徵圖進行對比。在該方法中,我們沒有使用投影頭或者其它複雜的對比策略。

特性 4:相似度度量

我們在 YADIM 中堅持使用點積。

特性 5:損失函數

我們也使用了 NCE 損失函數。

YADIM 的實驗結果

儘管我們唯一有意義的選擇是:融合 AMDIM 和 CPC 的數據增強過程,但是相較於其它的方法,YADIM 仍然成功地取得了優秀的性能。

圖 26:對比實驗結果

與所有相關的工作不同,我們通過真正親自實現每一種方法生成了上述結果。實際上,據我們所知,我們實現的 CPC V2 版本是第一個 DeepMind 之外的公開實現版本。

更重要的是,我們使用 PyTorchLightning 標準化了所有的實現,因此我們可以客觀地提取出所有上述結果背後的主要驅動因素。

計算效率

上述方法是使用大量計算資源訓練出來的。高昂的計算開銷意味著我們並沒有進行嚴格的超參數搜索,而只是簡單地使用了 STL-10 的超參數在 ImageNet 上進行訓練。

使用 PyTorch Lightning 進行高效的分布式計算,我們可以將在 ImageNet 上使用 16 位精度每epoch的訓練時間下降至 3 分鐘。

基於 23dn.24xlarge 示例的訓練每小時需要花費 31.212 美元,下面是我們用於每種方法的計算資源:

圖 27:訓練 AMDIM 的資源耗費情況

圖 28:訓練 CPC 的資源耗費情況

圖 28:訓練 SimCLR 的資源耗費情況

圖 28:訓練 YADIM 的資源耗費情況

11

要點回顧

  • 為了比較各種對比學習方法並且更容易地對其進行設計,我們引入了一種概念框架。
  • AMDIM、CPC、SimCLR、Moco、BYOL 以及 Swav 之間的差異非常微小。主要的不同之處在於它們提取表征的方式。
  • AMDIM 和 CPC 提出了被其它方法採用的關鍵思想。SimCLR、Moco、BYOL 以及 Swav 可以看做 AMDIM 的變體。
  • 只要編碼器夠寬,對於編碼器的選擇並沒有影響。
  • 只要數據增強過程生成良好的正負樣本輸入,表征提取策略並沒有太大的影響。
  • 通過使用我們的框架,我們可以形式化定義一種新的對比自監督學習方法「YADIM」,它與其它的競爭方法性能相當。
  • 訓練這類方法的巨大計算開銷意味著:在世界上,只有有限的研究組可以在該領域持續取得進展。儘管如此,我們以一種標準化的方式表述了所有這些算法,這至少可以減輕實現這些算法並對實現進行驗證的困難。
  • 由於大多數實驗結果都是由更寬的網絡和特定的數據增強過程驅動的,我們猜想當前的研究方向的提升空間可能較為有限。

原文連結:

https://towardsdatascience.com/a-framework-for-contrastive-self-supervised-learning-and-designing-a-new-approach-3caab5d29619

NeurIPS 2020錄用結果已出,歡迎各位作者投稿

點擊閱讀原文,直達「CCF-NLP走進高校之鄭州大學」直播頁面!

文章來源: https://twgreatdaily.com/zh-cn/vuTc0XQBURTf-Dn5bW90.html