再介绍一篇最新的Contrastive Self-supervised Learning综述论文
作者 | 對白
出品 | 對白的算法屋
自監督學習(Self-supervised learning)最近獲得了很多關注,因為其可以避免對數據集進行大量的標簽標注。它可以把自己定義的偽標簽當作訓練的信號,然后把學習到的表示(representation)用作下游任務里。最近,對比學習被當作自監督學習中一個非常重要的一部分,被廣泛運用在計算機視覺、自然語言處理等領域。它的目標是:將一個樣本的不同的、增強過的新樣本們在嵌入空間中盡可能地近,然后讓不同的樣本之間盡可能地遠。這篇論文提供了一個非常詳盡的對比自監督學習綜述。
我們解釋了在對比學習中常用的前置任務(pretext task),以及各種新的對比學習架構。然后我們對不同的方法做了效果對比,包括各種下游任務例如圖片分類、目標檢測、行為識別等。最后,我們對當前模型的局限性、它們所需要的更多的技術、以及它們未來的發展方向做了總結。
公眾號「對白的算法屋」后臺回復關鍵詞【0910】下載論文PDF
1. 介紹
==============
深度學習從大量數據中自動學習的能力使其在各種領域廣泛應用,例如CV和NLP。但是深度學習也有其瓶頸,就是它需要大量的人工標注的標簽。例如在計算機視覺中,監督模型需要在圖片的表示和圖片的標簽之間建立關聯。
===
傳統的監督學習模型極度依賴于大量的有標簽數據。所以研究者們想研究出一種辦法,如何利用大量的無標簽數據。所以自監督學習的到了廣泛關注,因為它可以從數據自己本身中尋找標簽來監督模型的訓練。
圖一:對比學習的直觀理解:讓原圖片和增強的圖片變近,讓原圖片和其他圖片變遠
監督學習不僅需要大量的標注數據,它還面臨著下面的各種問題:
-
模型的泛化性能
-
偽相關
-
對抗攻擊
最近,自監督學習結合了生成模型和對比模型的特點:從大量無標簽數據中學習表示。
一種流行的方式是設計各種前置任務(pretext task)來讓模型從偽標簽中來學習特征。例如圖像修復、圖像著色、拼圖、超分辨率、視頻幀預測、視聽對應等。這些前置任務被證明可以學習到很好的表示。
圖二:對比自監督學習訓練范式
在2014年生成對抗網絡(GAN)推出之后,生成模型得到了很多關注。它之后變成了許多強大的模型的基礎,例如 CycleGAN, StyleGAN, PixelRNN, Text2Image, DiscoGAN 等。
這些模型啟發研究者去研究自監督學習(不需要標簽)。
他們發現基于GAN的模型很復雜,不容易訓練,主要是由于下面原因:
難以收斂
判別器太強大而導致生成器難以生成好的結果
判別器和生成器需要同步
圖三:不同的對比學習方法在ImageNet上的效果(TOP1 分類準確率)
與生成模型不同,對比學習是一種判別模型,它讓相似樣本變近,不同樣本變遠(見圖一)。
為了達到這一點,一種衡量遠近的指標被用來衡量嵌入之間的遠近。
如圖二所示,對比損失用來訓練對比學習模型。一般來說,以圖片為例,對比學習把一張圖片的增強版本當作一個正例,其余圖片當作反例,然后訓練一個模型來區分正反例。區分依賴于某種前置任務。
這樣做,學習到的表示就可以用到下游任務之中。
2.前置任務
前置任務是自監督學習中非常重要的一種策略。它可以用偽標簽從數據中學習表示。
偽標簽是從數據本身中定義而來的。
這些任務可以應用到各種數據之中,例如圖片、視頻、語言、信號等。
在對比學習的前置任務之中,原始圖片被當作一種anchor,其增強的圖片被當作正樣本(positive sample),然后其余的圖片被當作負樣本。
大多數的前置任務可以被分為四類:
-
顏色變換
-
幾何變換
-
基于上下文的任務
-
基于交叉模式的任務
具體使用哪種任務取決于具體的問題。
顏色變換
圖四:顏色變換前置任務,包括:原圖,高四噪聲,高斯模糊,顏色失真(jitter)
顏色變換很好理解,不多說了。在這個前置任務中,圖片經過變換,它們還是相似的圖片,模型需要學會辨別這些經過顏色變換的圖片。
幾何變換
幾何變換也很好理解,不多說了。
原圖被當作全局視圖(global view),轉換過的圖片被當作局部試圖(local view):
圖五:幾何變換,包括:原圖,裁剪、旋轉、翻轉等
基于上下文的
拼圖
解決拼圖問題是無監督學習中一個非常重要的部分。
在對比學習中,原圖被當作anchor,打亂后的圖片被當作正樣本,其余圖片被當作負樣本。
圖六:解決一個拼圖問題被當作學習表示的前置任務
基于幀的
這個策略一般應用于時許數據,例如傳感器的數據或者一系列視頻幀。
策略背后的意義是:時間上相近的相似,時間上很遠的不相似。
解決這樣的前置任務可以讓模型學習到一些跟時間有關的表示。
在這里,一個視頻中的幀被當作正樣本,其余視頻被當作負樣本。
其余的方法還包括:隨機抽樣一個長視頻中的兩個片段,或者對每個視頻片段做幾何變換。
目標是使用對比損失(contrastive loss)來訓練模型,使得來自一個視頻的片段在嵌入空間中相近,來自不同視頻的片段不相近。
Qian 等人 [20] 提出的一個模型中將兩個正樣本和其余所有的負樣本之間進行對比。
一對正樣本是兩個增強的來自同一個視頻的視頻片段。
這樣,所有的視頻在嵌入空間中都是分割開來的,每個視頻占據一個小的嵌入空間。
未來預測
圖七:對比預測編碼CPC:contrastive predictive coding。圖中的例子是音頻預測。類似的想法可以用在圖片、視頻、文本等領域上
對于時序數據做對比一個最直觀的方法是預測將來或者預測缺失的信息。
這個前置任務是基于已有的一系列時間點數據,去預測將來的高階的信息。
在 [21] [22] 等模型中,高階數據被壓縮在一個低維度的隱藏嵌入空間之中。強大的序列模型被當作encoder來生成一個基于上下文的
,然后用 來預測未來的信息。其中蘊含的意義是最大化兩者之間的互信息(Mutual information maximization)。
視圖預測 View Prediction (Cross modal-based)
視圖預測任務一般用在數據本身擁有多個視圖的情況下。
在 [23] 中,anchor和它的正樣本圖片來自同時發生的視角下,它們在嵌入空間中應當盡可能地近,與來自時間線中其他位置的負樣本圖片盡可能地遠。
在 [24] 中,一個樣本的多視角被當作正樣本(intra-sampling),其余的inter-sampling當作負樣本。
圖八:從視頻幀序列中學習表示
確定對的前置任務
選擇什么樣的前置任務取決于你所要解決的任務。
盡管已經有很多類型的前置任務在對比學習中提出來了,但是選擇哪種前置任務依舊沒有一個理論支撐。
選擇正確的前置任務對表示學習有非常大的幫助。
前置任務的本質是:模型可以學習到數據本身的一些轉換(數據轉換之后依然被認作是原數據,轉換后到數據和原數據處于同一嵌入空間),同時模型可以判別其他不同的數據樣本。
但是前置任務本身是一把雙刃劍,某個特定的前置任務可能對某些問題有利,對其他問題有害。
圖九:兩張圖片的形狀差不多。但是,很多低階的細節是不一樣的。在這里使用正確的前置任務是非常重要的。
在 [26] 中,作者專注于選取正確的前置任務的重要性。
圖十:一個例子:為什么旋轉前置任務有時候表現不好
3.架構
對比學習依賴于負樣本的數量,來生成好的表示。
它有時候可以看作是一個字典查詢任務,字典有時候是整個訓練集,有時候是訓練集的子集。
有時候對比學習可以根據如何采樣負樣本來進行分類。
我們將對比學習的架構分為以下四類(見圖十一)。
圖十一:(a)端到端訓練,一個encoder用來生成正樣本的表示,一個encoder用來生成負樣本的表示;(b)使用一個memory bank來存儲和抽取負樣本;(c)使用一個momentum encoder當作一個動態的字典查詢來處理負樣本;(d)額外使用一個聚類機制
端到端學習
端到端學習是一種復雜的基于梯度的學習系統,其中所有的模塊都是可微的。這種架構偏好于大的batch size來存儲更多的負樣本。除了原圖片和其增強的圖片,其余的batch中的圖片被當作負樣本。這種架構包含兩個encoder:一個query一個key(見圖十一a)。
這兩個encoder可以是一樣的,也可以是不一樣的。
使用一個對比損失,模型會讓正樣本的表示相近,讓負樣本和正樣本的表示相遠。
最近,一種端到端的模型 [15] SimCLR 獲得了很大成功。他們使用了非常大的batch size(4096)訓練了100個epochs。SimCLR證明了一種簡單機制的模型也可以獲得非常好的效果。
圖十二:SimCLR的效果
另外一種端到端的模型 [21] CPC從高維的時序數據中學習表示,其使用對比損失來預測將來。
端到端學習中的負樣本與batch size有關。而batch size的大小受限于GPU/TPU 內存,所以這里有一個計算資源的限制,而且如何優化大batch訓練也是一個問題。
使用 Memory Bank
端到端依賴于大的batch(譯者:存疑,某些任務可能不需要),所以一種可行的解決方案是使用 memory bank。
Memory bank:的作用是在訓練的時候維護大量的負樣本表示。所以,創建一個字典來存儲和更新這些樣本的嵌入。Memory bank M 在數據集 D 中對每一個樣本 存儲一個表示 。該機制可以更新負樣本表示,而無需增大訓練的batch size。
圖十三:PIRL中的memory bank
PIRL [17] 是一種使用了 Memory bank 來學習圖像表示的方法。
但是,在訓練的時候維護一個大的memory bank是一個很復雜的任務。這種策略的一個缺點是更新表示的計算復雜度很高。
使用 Momentum Encoder
為了解決 memory bank 的缺點,momentum encoder [14] 被提了出來。這種機制創建了一種特殊的字典,它把字典當作一個隊列的keys,當前的batch進入隊列,最老的batch退出隊列。
Momentum encoder 共享了encoder Q的參數。它不會在每次反向傳播后更新,而是依據query encoder的參數來更新:
θ k ← m θ k + ( 1 ? m ) θ q \theta_k \leftarrow m\theta_k + (1-m)\theta_
特征表示聚類 Clustering Feature Representation
上面介紹的三種架構都是用某種相似度衡量來對比樣本,使得相似樣本相近,不相似樣本變遠,從而學習到好的表示。
本節介紹的機制使用兩個共享參數的端到端架構,這種架構使用聚類算法來聚類相似樣本表示。
圖十四:傳統對比樣本學習 vs 對比聚類學習
SwAV [13] 使用了聚類方法。其背后的idea在于,在一個嵌入空間中,貓的樣本們應該和狗的樣本們相近(都是動物),而與房子的樣本們相遠。
在基于樣本的學習中,每個樣本被當作一個數據集中的離散類。
離散類在連續的嵌入空間中(相似的樣本表示相近)可能會有問題。
例如在一個batch里,正樣本是貓,負樣本們中也有貓,模型會讓正樣本的貓和負樣本中的貓變遠,不利于表示學習。
4.Encoders
在自監督學習中,Encoder非常重要,因為它們把數據樣本遍歷到隱空間中。
圖十五:訓練一個Encoder,然后遷移學習到下游任務
沒有一個強大的encoder的話,模型可能難以學到有效的表示,從而執行分類任務。對比學習中的大多數模型都采用了ResNet或其變種。
5.訓練
為了訓練一個encoder,需要一個前置任務來利用對比損失來進行反向傳播。
對比學習最核心的觀點是將相似樣本靠近,不相似樣本靠遠。
所以需要一個相似度衡量指標來衡量兩個表示的相近程度。
在對比學習中,最常用的指標是cosine similarity。
Noise Contrastive Estimation (NCE) [38] 函數定義為:
如果負樣本的數量很多,NCE的一個變種 InfoNCE 定義為:
與其他深度學習模型類似,對比學習應用了許多訓練優化算法。訓練的過程包括最小化損失函數來學習模型的參數。
常見的優化算法包括 SGD 和 Adam 等。
訓練大的 batch 的網絡有時需要特殊設計的優化算法,例如 LARS。
6.下游任務
圖十六:計算機視覺中的各種下游任務
一般來說,計算機視覺的自監督訓練包括兩個任務:
-
前置任務
-
下游任務
下游任務聚焦于具體的應用,在優化下游任務的時候,模型利用到了前置任務優化時期所學到的知識。這些任務可以是分類、檢測、分割、預測等。圖十七提供了一個遷移學習的流程。
圖十七:計算機視覺中的下游任務
為了測試自監督學習中學習到的特征對下游任務的效果,一些方法,例如
-
kernel visualization
-
feature map visualization
-
nearsest-neighbor based approaches
被用來分析前置任務的有效性。
對 Kernels 和 特征圖進行可視化
在這里,第一個卷積層的特征的kernels(分別來自于自監督訓練和監督訓練)被用來做比較。
類似地,不同層的 attention maps 也可以被用來測試模型的有效性。
圖十八:AlexNet所訓練的 attention map
最近相鄰擷取
一般來說,相同類的樣本在隱藏空間中的位置應該相近。對一個輸入的樣本,使用最近相鄰方法,可以在數據集中使用 top-K 抽取來分析自監督學習的模型是否有效。
**7.基準
**
最近,許多自監督學習模型挑戰了監督模型的效果。在本章中,我們收集和對比了這些模型的效果,在下游任務上。對于圖像分類,我們選擇了ImageNet和Places數據集。類似的,對于目標檢測,我們選擇了Pascal VOC數據集。行為識別和視頻分類我們選擇了UCF-101,HMDB-51和Kinetics。
**8.結論
**
這篇論文總結了各種流行的自監督對比模型。
我們解釋了對比學習中不同的模塊:
-
如何選擇正確的前置任務
-
如何選擇學習架構
-
如何在下游任務上優化
基于對比學習的模型獲得了非常好的實驗效果。
本文最后總結了當前對比學習面臨的問題。
機器學習/對比學習算法交流群
已建立機器學習/對比學習算法交流群!想要進交流群學習的同學,可以直接加我的微信號:duibai996。加的時候備注一下:昵稱+學校/公司。群里聚集了很多學術界和工業界大佬,歡迎一起交流算法心得,日常還可以嘮嗑~
關于我
你好,我是對白,清華計算機碩士畢業,現大廠算法工程師,拿過8家大廠算法崗SSP offer(含特殊計劃),薪資40+W-80+W不等。
高中榮獲全國數學和化學競賽二等獎。
本科獨立創業五年,兩家公司創始人,拿過三百多萬元融資(已到賬),項目入選南京321高層次創業人才引進計劃。創業做過無人機、機器人和互聯網教育,保研清華后退居股東。
我每周至少更新三篇原創,分享人工智能前沿算法、創業心得和人生感悟。我正在努力實現人生中的第二個小目標,上方關注后可以加我微信交流。
期待你的關注,我們一起悄悄拔尖,驚艷所有~
總結
以上是生活随笔為你收集整理的再介绍一篇最新的Contrastive Self-supervised Learning综述论文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何获取安卓iOS上的微信聊天记录、通过
- 下一篇: 硬件设计之一——电源设计05:过电流能力