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