对比学习(Contrastive Learning)相关进展梳理
?PaperWeekly 原創 ·?作者|李磊
學校|西安電子科技大學本科生
研究方向|自然語言處理
最近深度學習兩巨頭 Bengio 和 ?LeCun 在 ICLR 2020 上點名 Self-Supervised Learning(SSL,自監督學習) 是 AI 的未來,而其的代表的 Framework 便是 Contrastive Learning(CL,對比學習)。?
另一巨頭 Hinton 和 Kaiming 兩尊大神也在這問題上隔空過招,MoCo、SimCLR、MoCo V2 打得火熱,這和 BERT 之后,各大公司出 XL-Net、RoBerta 刷榜的場景何其相似。
本篇文章,將會從對比學習的背后的直覺原理出發,介紹其框架,并且對目前的一些相關的工作進行簡要介紹,希望能夠為感興趣的同學提供一些幫助。
Motivation & Framework
很多研究者認為,深度學習的本質就是做兩件事情:Representation Learning(表示學習)和 Inductive Bias Learning(歸納偏好學習)。目前的一個趨勢就是,學好了樣本的表示,在一些不涉及邏輯、推理等的問題上。
例如判斷句子的情感極性、識別圖像中有哪些東西,AI 系統都可以完成非常不錯;而涉及到更高層的語義、組合邏輯,則需要設計一些過程來輔助 AI 系統去分解復雜的任務,ICLR 19 [1] 的一篇 oral 就是做的類似的事情。
因為歸納偏好的設計更多的是任務相關的,復雜的過程需要非常精心的設計,所以很多工作都開始關注到表示學習上,NLP 最近大火的預訓練模型,例如 BERT,就是利用大規模的語料預訓練得到文本的好的表示。那么,CV 領域的 BERT 是什么呢?答案已經呼之欲出,就是對比學習。
1.1 Illustrative Example
▲ 當你被要求畫一張美元,左邊是沒有鈔票在你面前,右邊是面前擺著一張鈔票畫出來的結果
上面這個例子來自于 Contrastive Self-supervised Learning?[2] 這篇 Blog,表達的一個核心思想就是:盡管我們已經見過很多次鈔票長什么樣子,但我們很少能一模一樣的畫出鈔票;雖然我們畫不出栩栩如生的鈔票,但我們依舊可以輕易地辨別出鈔票。
基于此,也就意味著表示學習算法并不一定要關注到樣本的每一個細節,只要學到的特征能夠使其和其他樣本區別開來就行,這就是對比學習和對抗生成網絡(GAN)的一個主要不同所在。
1.2 Contrastive Learning Framework
既然是表示學習,那么我們的核心就是要學習一個映射函數 ,把樣本 編碼成其表示 ,對比學習的核心就是使得這個 滿足下面這個式子:
這里的 就是和 類似的樣本, 就是和 不相似的樣本, 這是一個度量樣本之間相似程度的函數,一個比較典型的 score 函數就是就是向量內積,即優化下面這一期望:
如果對于一個 ,我們有 個正例和 個負例,那么這個 loss 就可以看做是一個 N 分類問題,實際上就是一個交叉熵,而這個函數在對比學習的文章中被稱之為 InfoNCE。
事實上,最小化這一 loss 能夠最大化 和 互信息的下界,讓二者的表示更為接近。理解了這個式子其實就理解了整個對比學習的框架,后續研究的核心往往就聚焦于這個式子的兩個方面:
如何定義目標函數?最簡單的一種就是上面提到的內積函數,另外一中 triplet 的形式就是 ,直觀上理解,就是希望正例 pair 和負例 pair 隔開至少 的距離,這一函數同樣可以寫成另外一種形式,讓正例 pair 和負例 pair 采用不同的 函數,例如, ,。
如何構建正例和負例?針對不同類型數據,例如圖像、文本和音頻,如何合理的定義哪些樣本應該被視作是 ,哪些該被視作是 ,;如何增加負例樣本的數量,也就是上面式子里的 ?這個問題是目前很多 paper 關注的一個方向,因為雖然自監督的數據有很多,但是設計出合理的正例和負例 pair,并且盡可能提升 pair 能夠 cover 的 semantic relation,才能讓得到的表示在downstream task 表現的更好。
接下來,就會介紹一下 MoCo、SimCLR 以及 Contrasitve Predictive Coding(CPC) 這三篇文章,在構建對比樣例中的一些核心觀點。
Contrastive Pair
2.1 MoCo
論文標題:Momentum Contrast for Unsupervised Visual Representation Learning
論文來源:CVPR 2020
論文鏈接:https://arxiv.org/abs/1911.05722
代碼鏈接:https://github.com/facebookresearch/moco
前面提到了,樣本數量對于學習到的樣本質量有很大的影響。MoCo 做的事情很簡單,就是把負例樣本的 encoder 和 mini-batch 大小解耦。也就是說,原先在算目標函數的時候,負例樣本對也會為 loss 產生貢獻,因為也就會有梯度回傳給對應的 encoder,那么這樣在實現的時候,樣本數量必然會受到 batch size 的限制,從而影響學習到表示的質量。
為此,Memory Bank 提出我把所有樣本的表示都存起來,然后每次隨機采樣,這樣就可以認為我的負例樣本理論上可以達到所有樣本的數量,具體的做法就是每一輪來 encode 一次所有的變量,顯然,這樣很吃內存,并且得到的表示也和參數更新存在一定的滯后。
MoCo 則改善了上述的兩個缺點,一方面,用一個 queue 來維護當前的 negative candidates pool,queue 有著進出的動態更新機制,一方面能夠和 Mini-batch 解耦,queue size 可以設置的比較大,另外一方面也就不用對所有樣本做類似預處理的進行編碼;對于負例樣本的參數,采用 Momentum update 的方式,來把正例 encoder 的參數? copy 給負例 encoder :
三種方式的示意圖也在這一小節的開頭給出了,可以清楚的看到三種方式的區別。這種對比畫圖的方式對于說明問題很有幫助,可以在論文中進行嘗試。
2.2 SimCLR
論文標題:A Simple Framework for Contrastive Learning of Visual Representations
論文鏈接:https://arxiv.org/abs/2002.05709
代碼鏈接:https://github.com/google-research/simclr
MoCo 剛說完樣本數量對于對比學習很重要,這邊 SimCLR 就從另外一個角度,說構建負例的方式(圖像上,就是對于圖像的 transformation)也很重要,探究了 transformation 、batch-size 大小等對于學習到的表示的影響,并且把這個框架用下面這張圖來說明:
文章主要得出了下面幾個結論:
對于樣本進行變化,即構建正例和負例的 transformation 對于結果至關重要;
用 entropy loss 的 Contrastive Learning,可以通過 normalize representation embedding 以及 temperature adjustment 提點;
在計算 loss 之前,讓表示再過一個 non-linear hard 能大幅提升效果,即上面框架圖中的 ;
大 batch-size 對于 CL 的增益比 Supervised Learning 更大。
其中最后一個結論,和 MoCo 的初衷是符合的,并且作者雖說不用 Memory-bank,但是 SimCLR 嘗試的 bsz 也達到了令人發指的 8192,用了 128 塊 TPU,又是算力黨的一大勝利。
MoCo v2 也是利用了上面的第一點和第三點,在 MoCo 基礎上得到了進一步的提升,然后作者還也明確的點名了 SimCLR,稱不需要使用那么大的 batch size 也能超過它,可能這就是神仙打架吧。
2.3 CPC
論文標題:Representation Learning with Contrastive Predictive Coding
論文鏈接:https://arxiv.org/abs/1807.03748
代碼鏈接:https://github.com/davidtellez/contrastive-predictive-coding
前面討論的兩篇文章主要集中在圖像數據上,那么對于文本、音頻這樣的數據,常見的裁剪、旋轉等變換操作就無法適用了,并且,因為其數據本身的時序性,設計合理的方法來把這一點考慮進去是至關重要的。
Contrastive Predictive Coding(CPC) 這篇文章就提出,可以利用一定窗口內的 和 作為 Positive pair,并從輸入序列之中隨機采樣一個輸入 作為負例,下圖說明了 CPC 的工作過程:
為了把歷史的信息也加入進去,作者提出可以在 上額外增加一個自遞歸模型,例如 GRU,來在表示之中融入時序關系,得到相應的 來進行對比學習。在下游任務中,既可以使用 也可以使用 ,又或者是二者的融合,可以根據任務需要來進行靈活的選擇。
Theory & Application
接下來,會簡要的討論幾篇關于對比學習的理論和應用類的文章:
3.1 ICML 2019
論文標題:A Theoretical Analysis of Contrastive Unsupervised Representation Learning
論文來源:ICML 2019
論文鏈接:https://arxiv.org/abs/1902.09229
這篇文章發表在 ICML 2019 上,對比學習這一框架雖然在直覺上非常 make sense,但是理論上為什么得到的表示就能夠在 downstream 例如 classification 上表現良好?
這篇文章通過定義 latent class 以及樣本和 latent class 的距離入手,推導出了二分類情況下的 loss bound,保證了其的泛化性能。文章提出了一個改進算法就是進行 block 處理,不再直接優化各個 pair 的 inner product,而是轉而優化 positive block 以及 negative block 的內積:
文章在后續的實驗上也驗證了這一方法會優于內積方法。
3.2 NIPS 2017
論文標題:Contrastive Learning for Image Captioning
論文來源:NIPS 2017
論文鏈接:https://arxiv.org/abs/1710.02534
代碼鏈接:https://github.com/doubledaibo/clcaption_nips2017
這篇文章希望通過使用對比學習來解決 image captioning 中標題文本可區別性的問題,即盡可能讓標題描述和唯一的一張圖片對應,而不是籠統而又模糊的可能和多張圖片對應。
作者引入對比學習,把對應的圖像和標題作為正例 pair ,并把其中的圖像隨機采樣得到負例 pair ,并且在已有的 sota 模型上優化 ,提升生成的 caption 的效果。
3.3 ICLR 2020
論文標題:Contrastive Learning of Structured World Models
論文來源:ICLR 2020
論文鏈接:https://arxiv.org/abs/1911.12247
代碼鏈接:https://github.com/tkipf/c-swm
前面提到,表示學習能夠較好的解決一些簡單的任務,但是理解物體之間的關系以及建模其間的交互關系不單單需要好的表示,同樣需要一個好的歸納偏好。
這篇文章就是通過利用 state set 來表示世界中各個物體的狀態,并且利用圖神經網絡來建模其之間的交互,再進一步地利用對比學習來提升性能,下圖給出了模型的示意圖:
這里的對比學習是從 TransE 架構遷移而來,具體地,在 TransE 中,我們會希望一個三元組 的能夠讓 盡可能的小,即 的表示加上 relation 的表示和 的表示盡可能地接近,而遷移到世界模型中,就是要將 entity 換成物體的 state,relation 換成 action,即經過圖卷積后的得到的新的表示,通過下面的式子進行優化:
這里的 是從 experience buffer 中采樣得到的負例樣本,文章在后續多物體交互環境的模擬實驗中驗證了其方法的優越性。
Summary
本文介紹了關于對比學習背后的動機,以及一系列在圖像、文本上的一些工作,在計算機視覺領域,其習得的表示能夠很好地在下游任務泛化,甚至能夠超過監督學習的方法。
回過頭來看,預訓練模型從 ImageNet 開始,后來這一思想遷移到 NLP,有了 BERT 等一系列通過自監督的預訓練方法來學習表示,后來這一想法又反哺了計算機視覺領域,引出了諸如 MoCo、SimCLR 等工作,在一系列分割、分類任務上都取得了驚人的表現。
那么,這一思想會不會又再次和 NLP 結合,碰撞出新的火花呢,讓我們拭目以待。
參考鏈接
[1] https://arxiv.org/abs/1904.12584
[2] https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html
點擊以下標題查看更多往期內容:
?
GELU的兩個初等函數近似是怎么來的?
BERT在小米NLP業務中的實戰探索
圖神經網絡時代的深度聚類
針對復雜問題的知識圖譜問答最新進展
小樣本學習(Few-shot Learning)綜述
將“softmax+交叉熵”推廣到多標簽分類問題
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的对比学习(Contrastive Learning)相关进展梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微星星影 15 Air 笔记本亮相:酷睿
- 下一篇: 东方红110拖拉机能拉动两米七子刀的旋耕