而在機器視覺領域,自監督學習主要有兩類方法,生成類方法(Generative)和區別類方法(Discriminative)。其中,生成類方法透過直接在輸入空間中主動生成畫素或建立畫素模型來完成機器學習任務。區別類方法則是透過最佳化目標函式來學習潛在空間中的表徵(Representation),利用學習到的表徵來完成下游任務,比如對比不同的資料。在自監督方法中,區別類方法透過執行前置(pretext)任務訓練網路,因此使用的用於訓練網路的樣本資料和標記資料一般都來自於未標記的資料集。
前置任務是指用來學習視覺表徵的自我監督學習任務,目的是對下游任務(也就是真正任務)使用在前置任務中獲得的學習表徵或模型權重。
對比學習也是一種基於潛在空間的區別類自監督學習方法,近年來獲得了越來越多的關注。與有監督學習不同,對比學習不需要依賴於大量人工標記處理的樣本資料,適用於更多的應用場景。此外,對比學習直接使用資料本身提供監督資訊來指導學習。
對比學習的主要任務是從由相似 / 不相似資料對組成的資料集中學習相似 / 不相似的表示。利用這種方法,可以訓練機器學習模型來區分相似 / 不相似的影像。對比學習中,機器學習的是一對「孿生網路」,即同時學習針對於正樣本(相似資料)的網路和針對於負樣本(不相似資料)的網路。對於這種孿生網路,對比學習中引入了損失函式處理成對的資料關係。
首先確定 x 為「錨定(Anchor)資料」,令 x + 表示與 x 相似的正樣本,x - 表示與 x 不相似的負樣本,對比學習透過建立一個 softmax 分類器來正確地對正樣本(綠色)和負樣本(紅色)進行分類。對於 x,對比學習的目的是學習一個編碼器 f,以滿足下式[3]:
其中,score( )函式用於度量兩個樣本特徵之間的相似度。透過構建損失函式實現將較大數值分配給正樣本,將較小值分配給負樣本,從而學習到滿足上式的編碼器。假設使用向量內積來計算相似度,下面給出一個損失函式的示例:
其中,分母項由一個正樣本和 N-1 個負樣本組成。損失函式中標記為綠色和紅色的部分分別與編碼器約束的不等式中的綠色和紅色部分相對應。其中,綠色部分表示對正樣本的計算,紅色部分表示對負樣本的計算。由上式可以看出 L_N 是一個 N 向 softmax 分類器的交叉熵損失函式,在對比學習中通常被稱為資訊損失(InfoNCE Loss )。在其它一些文獻中也被稱為多類 n 對損失(Multi-class N-Pair Loss)或基於排名的 NCE(Ranking-based NCE )等。
InfoNCE Loss 最初來源於 Yann LeCun 的《Dimensionality reduction by learning an invariant mapping》[1],我們將詳細介紹此文。此文主要目的是將其應用在降維任務中,即,對於在原始空間中相似的樣本,經過降維處理(特徵提取)後,在特徵空間中兩個樣本仍舊是相似的;而在原始空間中不相似的樣本,在經過降維處理後,在特徵空間中仍舊不相似。
本文在回顧這篇文章的基礎上,結合 Hinton 組關於 SimCLR(a Simple Framework for Contrastive Learning)的相關工作 [2],詳細分析了對比學習在視覺表示提取、影像分類任務中的應用,具體包括 SimCLR 和最新的 SimCLRv2 [6]。其中,SimCLRv2 是在 SimCLR 的基礎上構建的一個半監督學習框架,作者給出的分析和實驗顯示,半監督學習(SimCLRv2)極大提升了自監督對比學習(SimCLR)的效果,在文章中的實驗條件下,SimCLRv2 僅使用 10% 的標記資料就獲得了超過監督學習的效果。
最後,類似於 SimCLRv2 向自監督學習中引入一些(半)監督資訊的思路,本文介紹一篇最新發表在 arxiv 上的文章《Supervised Contrastive Learning》[5],該文章將「自監督」和「有監督」結合起來,與經典的利用交叉熵(Cross-Entropy)的 「有監督」學習相比,引入「自監督」的對比學習,能夠學習到更優的表示,顯著提高了 ImageNet 分類任務中 Top-1 的準確性和穩健性。
一、利用對比學習實現降維
本文是 CVPR 2006 中的一篇文章,由 Yann LeCun 組首次提出了對比學習損失函式的概念 [1]。降維是指將一組高維資料對映到低維流形上,以便將輸入空間中的「相似」點對映到流形的附近點上。比如著名的 PCA 和 MDS 就是降維方法。作者為了學習一個能夠將高維資料對映到低維流形的全域性一致非線性函式,提出了一種透過學習不變對映實現降維的方法(Dimensionality Reduction by Learning an Invariant Mapping,DrLIM)。
該方法使用基於能量的模型,利用給定的鄰域關係來學習對映函式。為了最小化以生成這樣的對映函式,本文提出了一個新的損失函式。與早期以樣本(Samples)為單元學習得到的損失函式不同,本文的損失函式是以樣本對(Pairs of Samples)為基本單元學習得到的。基於該損失函式學習到的對映函式能夠持續對映訓練期間未知的新點。此外,這個對映函式不受輸入空間中簡單的距離測量的限制。
給定高維訓練資料向量 X_i,每個 X_i 都有一個對應的由與其相似的訓練資料向量組成集合 S_Xi,可以透過一些先驗知識,例如對失真或時間接近的不變性等來計算得到集合 S_Xi。理想的對映函式 G_W 應當能夠將相似的輸入向量對映到輸出流形上的鄰近點,同時將不同 / 不相似的輸入向量對映到流形中距離較遠的點。令 X1 和 X2 分別為輸入向量,Y 為二值化標記,即 X1 與 X2 相似(X1 與 X2 屬於同一類)則 Y=0,X1 與 X2 不相似(X1 與 X2 不屬於同一類)則 Y=1。首先,定義 X1 與 X2 之間的距離為 D_W:
D_W 衡量 X1 與 X2 的函式輸出在潛在空間中的歐式距離,其中 G_W 是所尋求的對映函式。透過學習對映函式 G_W 的引數W,能夠使在原始高維空間中的近鄰樣本在低維流形上內聚、而原始高維空間中的非近鄰樣本遠離。定義損失函式為:
其中,(Y,X1,X2)^i 表示第 i 個已標記樣本對。L_S 表示相似樣本的損失函式,L_D 表示不相似樣本的損失函式,P 為訓練集中樣本的總數目。L_S 和 L_D 的設計必須能夠使 L 保證對於相似樣本對 D_W 值較小,而對於不相似樣本 D_W 值較大。繼續將 L 展開,可以得到下式:
其中,d=||a_n−b_n||_2,用於表徵兩個特徵間的歐式距離,y 為標籤如上述 Y,margin 為設定的閾值。當 y=1(即樣本相似)時,損失函式只剩下∑yd^2,這表明原本相似的樣本,如果在特徵空間的歐式距離較大,則說明當前的模型不好,因此需要進一步增大損失值。當 y=0 時(即樣本不相似)時,損失函式為∑(1−y)max(margin−d,0)^2,即當樣本不相似時,其特徵空間的歐式距離小的情況下,損失值會變大。圖 1 給出了損失函式值與樣本特徵的歐式距離之間的關係。
圖 1. 損失函式與樣本特徵的歐式距離之間的關係,其中紅色虛線表示相似樣本的損失值,藍色實線表示不相似樣本的損失值。
圖 2 給出了本文所採用的學習結構:孿生網路結構(Siamese Architecture),它由 G_W 的兩個副本組成,共享同一組引數 W 和一個 cost 模組。透過學習該結構,能夠將 MNIST 資料對映到具有位移不變性的低維流形中。孿生網路結構的輸入為樣本對(Y,X1,X2),生成兩個輸出 G_W(X1)、G_W(X2)。損失函式結合 D_W 和標籤 Y 來生成 L_S 或 L_D,利用隨機梯度更新引數 W。
圖 2. 對映函式結構。
由於共享權重和多層結構,該孿生網路結構可以學習到最優的移位不變區域性特徵檢測器,同時保持對輸入影像幾何畸變的不變性。圖 3 給出了 MNIST 樣本平移對映不變性的實驗結果。首先,使用歐式距離鄰域圖(每個樣本 5 個最近鄰)進行訓練,轉換樣本之間的較大距離產生了不相交的鄰域關係圖,並且生成的對映也是不相交的。輸出點根據輸入樣本的轉換位置進行聚類(圖 3)。在圖 3 中的每個簇中,樣本組織結構良好、分佈均勻。
圖 3. MNIST 樣本平移對映不變性。
DrLIM 是一種降維方法,作者在原文中透過實驗驗證了 DrLIM 能夠利用先驗知識學習到低維流形的不變對映。DrLIM 應用於降維中的優勢在於引入了對比損失函式 L(W)。透過對相似樣本和不相似樣本使用單獨的損失函式,系統避免崩潰為一個常數函式,同時能夠保持輸出空間的平衡。
二、自監督和半監督的視覺表示對比學習
1、SimCLR
本文是最新發表於 ICML 2020 中的文章 [2]。受到基於潛在空間(Latent Space)對比學習的不同的區分方法(Discriminative Approaches)所表現出來的良好效能啟發,本文作者提出了一個簡單的視覺表徵對比學習框架:SimCLR。SimCLR 透過最大化潛在空間 z 中的對比函式來學習視覺表示,該損失函式基於同一樣本資料的不同增強檢視之間的一致性來構建。具體見圖4:
圖 4. 視覺表徵對比學習的簡單框架。
對於同一個樣本資料的增強資料集合中的兩個獨立增強資料樣本,t ~T 和 t’~T,得到兩個資料樣本的相關性檢視 x_i 和 x_j。使用損失函式訓練基本編碼器網路 f() 和對映頭 g()以最大化二者之間的一致性。訓練結束後,拋棄對映頭 g(),並使用編碼器 f()和表示 h 來執行後續的下游任務。
SimCLR 的完整流程如下:
SimCLR 框架包括以下四個主要部分:
隨機資料增強模組(A stochastic data augmentation module):該模組將任意給定的資料樣本例項隨機變換,產生同一個樣本例項的兩個相關檢視,作為正樣本對錶示為 x_i 和 x_j。依次應用三個簡單的增強處理:隨機裁剪然後調整到原始大小,隨機顏色扭曲和隨機高斯模糊。
基於神經網路的編碼器(A neural network base encoder):該模組從擴充的資料樣本例項中提取表示向量。SimCLR 框架允許在沒有任何約束的情況下選擇各種網路架構的編碼器。本文作者採用了常用的 ResNet 計算得到 h_i=ResNet(x_i)。
神經網路對映頭(neural network projection head),它將表示對映到應用對比損失函式的空間中。本文作者使用包含一個隱藏層的 MLP 計算 z_i=W^(2)σ(W^(1)h_i),其中,σ為 ReLu 函式。
適用於對比預測任務的對比損失函式(A contrastive loss function)。一對正樣本對 (i,j) 的損失函式定義為
最後,在一個小批次中計算所有正樣本對 (i,j) 和(j,i)的損失以得到總體損失值。這個損失計算函式稱為歸一化溫度尺度交叉熵損失 NT-Xent(the Normalized Temperature-Scaled Cross Entropy Loss)。
2、SimCLRv2
在 2 月份釋出 SimCLR v1 後不久,作者就釋出了升級版本 SimCLRv2 以及程式碼 https://github.com/google-research/simclr。新的工作是一個半監督學習框架(Semi-Supervised Learning Framework),主要包括三部分:(1) 無監督或自監督的預訓練;(2)有監督的微調;(3)使用未標記的資料進一步的蒸餾處理。其中,作者改進了 SimCLR 得到了 SimCLRv2,用於第一個步驟中 ResNet 體系結構的無監督預訓練。該框架以與任務無關和特定於任務兩種方式利用未標記的資料。該半監督學習框架具體如下圖 5:
圖 5. 半監督學習框架以兩種方式利用未標記的資料:(1)在無監督的預訓練中使用不可知的任務(左);(2)在自訓練 / 知識蒸餾中使用特定任務(右)
半監督學習框架主要包括下述三個部分:
使用 SimCLRv2 的自監督預訓練:SimCLR 透過在潛在空間中最佳化對比損失函式,從而保證同一資料樣本例項的不同增強檢視之間的一致性來學習表示。與 SimCLR 相比,SimCLRv2 有以下幾個改進:(1)與 SimCLR 使用 ResNet-50 不同,SimCLRv2 訓練的模型更深,但更少。SimCLRv2 訓練的最大模型是一個 152 層的 ResNet,它有 3 倍寬度通道和選擇性核(selective kernels,SK),SK 是一種通道注意機制,可以提高網路的引數效率。透過將模型從 ResNet-50 擴充套件到 ResNet-152(3x +SK),當對 1% 的標記樣本進行微調時,SimCLRv2 獲得了 29% 的 Top1 準確度的相對提高。(2)增加非線性網路對映頭 g()的容量,使其更深。此外,與 SimCLR 預訓練完畢後即丟棄 g()的處理方式不同,SimCLRv2 從中間層進行微調。這一調整使得線性評估和僅對幾個標記樣本進行微調的處理效果都產生了顯著的改進。透過使用一個 3 層對映頭和第一層對映頭的微調,當在 1% 的標記樣本上進行微調時,SimCLRv2 的 Top1 準確度相對提高了 14%。(3)引入記憶體記憶機制,指定一個記憶體網路(具有用於穩定的加權移動平均數),將其輸出儲存作為負樣本使用。本身該框架是基於已經提供了許多負樣本的小批次(mini-batch)進行訓練的,引入記憶體機制使得線性評估效果改進了 1%,基於標記樣本微調的結果改進了 1%。
微調:微調是一種常見的方法,可以使不受任務約束的預訓練網路適應特定任務。在 SimCLR 中,在預訓練後丟棄 MLP 對映頭 g(),在微調過程中只使用 ResNet 編碼器 f()。在 SimCLRv2 的微調過程中,將 MLP 對映頭的一部分合併到基本編碼器中 f(),而不是將其全部丟棄。這相當於從對映頭的中間層進行微調,而不是像 SimCLR 中那樣從對映頭的輸入層進行微調。以一個 3 層對映頭為例:g(h_i)=W^(3)(σ(W^(2)σ(W^(1)h_i))),對於 SimCLR 來說,微調的過程為:f^task(x_i)=W^taskf(x_i),其中,W^task 為新增的任務特定線性層的權重,這是從對映頭的輸入層進行微調。為了從對映頭的第一層進行微調,SimCLRv2 引入一個新的編碼器函式 f^task(x_i)=W^taskσ(W^(1)f(x_i)),這是一個 ResNet,後面是全連線層。
透過未標記樣本進行自訓練 / 知識蒸餾:為了進一步改進目標任務的網路,SimCLRv2 直接利用未標記樣本來執行目標任務。使用微調網路作為教師網路,為訓練學生網路輸入標記標籤。具體地說,在沒有使用真實標記的情況下,將以下蒸餾損失降到最低:
其中,τ表示標量溫度引數(a scalar temperature parameter)。在知識蒸餾過程中,教師網路 P^T(y|x_i)固定不變,學生網路 P^S(y|x_i)進行訓練。雖然在本文工作中只關注使用未標記樣本的知識蒸餾,但當標記樣本的數量很大時,也可以使用加權組合將蒸餾損失與真實標記樣本進行結合:
圖 6. 不同方法 Top-1 準確度。
作者使用 ResNet-50 進行實驗,由圖 6 可以看出,本文提出的半監督學習框架僅使用 1% 的標記(每個類別 13 張標記影像)即可獲得 73.9% 的 Top1 準確率,與之前的 SimCLR 能夠獲得的最好結果(圖中標記為 State of the Art,SOTA)相比,標記資料使用效率提高了 10%,整體結果提高了大約 22%。使用本文方法訓練的 ResNet-50 在 10% 的標記資料的情況下能夠達到 77.5% 的 Top1 準確率,優於相同實驗環境下已知全部標記資訊的監督學習方法。
短短半年的時間,SimCLRv2 與 SimCLR 相比提升了大約 22%,這個改進的速度和改進的效果都是相當驚人的。由此,本文也傳遞出了一個資訊:半監督學習的潛力是非常巨大的。
本文給出的研究結果可以進一步被用來提高計算機視覺特定應用的準確性。在這些特定應用中,獲取標記的資料比訓練更大模型所耗費的成本更高或實現起來更加困難。例如,在醫療應用中,獲取高質量的資料標記需要臨床醫生參與最基礎的資料標記工作,這顯然是成本巨大且耗時非常長的,在這種情況下更好的半監督學習方法可能能夠獲得更快、更好的效果,從而有助於挽救生命。
三、有監督的對比學習
本文是 Google 人工智慧團隊的最新研究成果。圖 7 給出了一個經典的自監督學習應用的示例 [2]。在自監督學習中,所有的樣本資料(影像)都沒有標記。因此,使用給定的樣本影像(剪下、翻轉、顏色變化等)來生成正樣本影像,而負樣本影像則是從小批次資料集中隨機抽樣得到的。這種樣本構建和學習的方法可能會存在假樣本的問題,如圖 7 右下角的影像。
這幅影像與正樣本的原始影像(左上角的影像)並非由對同一影像的處理得到的,因此被認為是「負樣本」。在完全自監督(無人工分類標記)的情況下,「狗」的照片被錯分為負樣本。這種錯誤的類別劃分方式可能會導致對比學習學習到錯誤的表示。
圖 7. 自監督對比學習示例。
圖 7 中的示例說明了對比學習中的一個典型問題:如何合理的設計 / 構建正樣本 - 負樣本對(Pair)。一方面,科學的構建正 - 負樣本對能夠改進樣本分類的任務的準確度;另一方面,透過有效利用樣本對之間的 語義關係(Semantic Relation),即從更高層次挖掘樣本影像中的資訊,能夠進一步改進對比學習的效果。本文的思路是,人工對不同類別的樣本影像「打標記」,在有監督的情況下避免錯分的負樣本的問題。此時,圖 7 變為如下圖 8。在本文考慮的監督對比損失中,在提供人工標記的前提下對一個類別的正樣本與其他類別的負樣本進行對比。來自同一類(人工標記類別)的影像被對映到低維超球體中的鄰近點。
圖 8. 有監督的對比學習示例。
經典對比學習問題中,對比損失由兩個「相反的力」組成:對於給定的錨定資料點,第一個力拉進錨點在表示空間中與其他點的距離,而第二個力使得錨點遠離其他點。前一組稱為正樣本,後一組稱為負樣本。本文工作的創新點在於,除了大量負樣本因素之外,每個錨點的訓練會考慮許多正樣本因素,使用人工提供的標記來選擇正樣本和負樣本。具體見圖 9 示例。交叉熵損失(左)使用標記和 softmax 損失來訓練模型;經典的自監督對比損失(中)使用對比損失和增強處理後的樣本資料來學習一類影像的視覺表示;本文提出的監督對比損失(右)分為兩個階段;第一階段使用標記選擇影像對比損失。在第二階段,凍結學習到的表示,然後使用 softmax 損失線上性層上學習分類器。
圖 9. 不同學習方式對比。
本文提出的有監督對比學習框架主要由以下幾部分組成:
資料增強模組:輸入影像轉換為隨機增強影像。對於每個輸入影像,生成兩個隨機增強影像,每個隨機增強影像代表輸入影像的不同檢視,因此都包含原始輸入影像中的一些資訊子集。增強處理的第一步是對影像進行隨機裁剪處理,然後將其調整為輸入影像的原始解析度。第二步,執行下述增強處理:自動增強、隨機增強、隨機混色和高斯模糊。
編碼器網路:將一個增強影像對映到一個表示向量。每個輸入影像的兩個增強影像分別輸入到同一個編碼器中,從而產生一對錶示向量。作者實驗了兩種常用的編碼器架構:ResNet-50 和 ResNet-200,其中最終池化層的啟用被用作表示向量。
對映網路:將表示向量經由一個對映網路對映為一個向量。使用一個隱藏層大小為 2048、輸出向量大小為 128 的多層感知器(MLP)作為對映網路。將該向量在單位超球面上規範化處理,從而使得可以使用內積來測量對映空間中的距離。對映網路僅用於訓練有監督的對比損失。與 SimCLR 相同,訓練完成後即丟棄該網路,使用一個單一的線性層代替它。
在有監督的場景下,樣本表示為{x_k, y_k}k=1...N,其中 x_k 為樣本,y_k 為類別標記,對應的 minibatch 中包含 2N 個樣本對。對於有監督學習,經典對比學習中的對比損失不能處理多個樣本確定屬於同一類的情況。為了將損失推廣到能夠處理屬於同一類的任意數量的正樣本的情況,作者提出了以下損失函式:
該式的變化包括:(1)推廣到任意數量的正樣本,對於任何錨定點,一個小批次中的所有正樣本(即基於擴充的一個以及來自同一類的任何剩餘樣本)都用於計算得到分子;(2)負樣本越多,對比越大。在分母上加上更多的負樣本可以增加正樣本的對比度。
表 1 給出了 ResNet-50 和 ResNet-200 的結果。對於本文所考慮的兩種結構,有監督的對比損失比交叉熵效能好,超過了 1%。此外,在帶有 AutoAugment 的 ResNet-50 上實現了 78.8% 的準確率(為了進行比較,表 1 還給出了其他一些效能最好的方法)。
表 1. ResNet-50 和 ResNet-200 上 ImageNet 的 Top1/Top5 準確度結果。
本文所給出的方法實際上是在對比學習的啟發下的一種改進的監督學習方法。其使用的損失函式提供了一端完全無監督訓練和另一端完全監督訓練之間的自然聯絡。這也為半監督學習的應用提供了可能性,試想,沿著該思路是否可以成功利用單個損失的好處,進而實現根據標記資料的可用性平滑地改變訓練的行為。本文中作者並未涉及半監督學習的研究和討論,給出的分析和實驗結果都是有監督的。但結合 Hinton 組最新的成果,在今後的研究方向中,是否也可以考慮將該框架延伸到半監督的場景?
四、文章小結
在這篇文章中,我們回顧了對比損失的來源,分析了 SimCLR 自監督對比學習方法,結合最新的 SimCLRv2 瞭解了基於對比學習的半監督學習框架,最後還介紹了一篇最新的關於有監督學習的文章。我們在這篇文章中是按照「對比學習的起源 - 自監督對比學習 - 半監督對比學習 - 有監督對比學習」的思路選取的四篇論文。從文章的分析和給出的實驗結果可以看出,加入半監督、有監督的資訊後,影像分類任務的效果得以提升。但是,正如 Hinton 關於 SimCLRv2 的文章中闡述的,在一些特定應用中,獲取標記的資料比訓練更大模型所耗費的成本更高或實現起來更加困難。在這種情況下,有監督學習的應用非常困難,半監督、自監督的學習方法則具有明顯優勢。對比學習具有完整、清晰的學習框架和數學理論分析的基礎,以及良好的應用場景適應性,我們會在後續繼續跟進對比學習的各類框架的發展。
本文參考引用的文獻:
[1] Hadsell R , Chopra S , Lecun Y . Dimensionality reduction by learning an invariant mapping[C]// 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'06). IEEE, 2006. http://www.cs.toronto.edu/~hinton/csc2535/readings/hadsell-chopra-lecun-06-1.pdf
[2] Chen T , Kornblith S , Norouzi M , et al. A Simple Framework for Contrastive Learning of Visual Representations. ICML 2020.https://arxiv.org/abs/2002.05709
[3] https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html
[4] Oord A V D , Li Y , Vinyals O . Representation Learning with Contrastive Predictive Coding[J]. 2018. https://arxiv.org/pdf/1807.03748.pdf
[5] Khosla P , Teterwak P , Wang C , et al. Supervised Contrastive Learning[J]. 2020. https://arxiv.org/abs/2004.11362?context=cs.CV
[6] Chen T , Kornblith S , Norouzi M , et al.Big Self-Supervised Models are Strong Semi-Supervised Learners, https://arxiv.org/abs/2006.10029
[7] Wu M , Zhuang C , Mosse M , et al. On Mutual Information in Contrastive Learning for Visual Representations[J]. arXiv, 2020.https://arxiv.org/pdf/2005.13149.pdf
分析師介紹:
本文作者為仵冀穎,工學博士,畢業於北京交通大學,曾分別於香港中文大學和香港科技大學擔任助理研究員和研究助理,現從事電子政務領域資訊化新技術研究工作。主要研究方向為模式識別、計算機視覺,愛好科研,希望能保持學習、不斷進步。