图灵奖大佬 Lecun 发表对比学习新作,比 SimCLR 更好用!
文 | Rukawa_Y
編 | 智商掉了一地,Sheryc_王蘇
比 SimCLR 更好用的 Self-Supervised Learning,一起來看看吧!
Self-Supervised Learning作為深度學習中的獨孤九劍,當融匯貫通靈活應用之后,也能打敗聲名在外的武當太極劍。比如在NLP領域中,每當遇到文本分類的問題,BERT + funetuning的套路來應對,但是也正因為如此大家解決問題的思路出現固化。也正是這個原因,當本菜鳥第一次接觸到Self-Supervised Learning這個概念時,就在項目中嘗試應用Self-Supervised的SimCLR方法,但是卻事與愿違,模型的預測效果并沒有顯著地提升,反而出現了一丟丟的下降,等厚著臉皮求助大佬后才明白,SimCLR對于模型效果的提升必須基于大Batch Size才會有效果。
而在近期,由 Yann Lecun 等人發表了一篇題為《Decouple Contrastive Learning》的論文,其中仔細分析了SimCLR和其他自監督學習模型所使用的InfoNCE損失函數,僅僅對InfoNCE的表達式進行了一處修改,就大大緩解了InfoNCE對于大Batch Size的需求問題,并在不同規模的Vision Benchmarks上均取得優于SimCLR的結果。
接下來就讓我們跟隨論文的思路,一起學習Decoupled Contrastive Learning吧。
論文標題
Decoupled Contrastive Learning
論文鏈接
https://arxiv.org/abs/2110.06848
1 對比學習中正負樣本的解耦
作為本文的背景,我們先來介紹一下SimCLR的基本思想,它是對訓練樣本做數據增強(例如對于圖像進行裁剪等),訓練模型讓同一圖片增強后得到的表示相近,并互斥不同圖片增強后的表示。
論文從SimCLR所使用的InfoNCE損失函數開始分析。InfoNCE對于其中一個樣本的增強數據的InfoNCE損失函數如下:
其中所使用的各個變量的意義分別為:
為一個Batch中所使用的樣本, 為Batch Size;
是樣本增強后的兩個數據;
是對于Batch中所有樣本增強后的數據集合;
是樣本的增強數據輸入到Encode Layer中所對應的輸出;
是歸一化后的表示。
InfoNCE的損失函數分別求對于,和的梯度:(這里作者對梯度進行了一定的變化,變化過程可參照論文附錄的第一部分)
其中需要注意的是損失函數的梯度中均有一個系數,這個系數導致模型訓練的梯度發生了放縮。該系數的具體形式如下:
作者將這個導致SimCLR模型梯度放縮的系數稱為Negative-Positive Coupling (NPC) Multiplier,即NPC乘數。NPC乘數分子和分母上出現的中衡量了正樣本對的相似度,而分母上出現的則衡量了負樣本對的相似度。
顧名思義,對訓練的影響與正負樣本的耦合有關:當負樣本較為分散時,正樣本同樣可能較為分散;反之,當正樣本較為緊湊時,負樣本同樣可能較為緊湊。論文中對于不同情形下的NPC乘數進行了定性分析,總結如下:
當訓練使用的正樣本較分散時,負樣本可能同樣比較分散。此時正樣本為Hard Positive,負樣本為Easy Negative。這使得NPC乘數分子分母上的相似度同時減小,得到的小于1的NPC乘數會減小Hard Positive帶來的梯度幅度。
當訓練使用的負樣本較緊湊時,正樣本可能同樣比較緊湊。此時正樣本為Easy Positive,負樣本為Hard Negative。這使得NPC乘數分子分母上的相似度同時增大,得到的小于1的NPC乘數會減小Hard Negative帶來的梯度幅度。
當Batch Size較小時,分母上對Batch中負樣本相似度的求和會受限于Batch Size,得到更小的NPC乘數,使得梯度幅度進一步被減小。
由此可見,SimCLR對于大Batch Size的需求很可能來自于NPC乘數對于梯度的縮小。Batch Size同NPC乘數分布的具體的關系見下圖:
從圖中可以明顯看出,Batch Size越小,的分布越接近于;Batch Size越大,的分布越接近于。同時作者還給出了的均值和離散系數同Batch Size的關系,見下圖:
可以看出,小的Batch Size使得的均值減小,離散系數增大,從而使得訓練過程中的梯度被大幅縮小。
綜上所述,SimCLR等自監督模型中對于大Batch Size的需求問題一定程度上來自于。論文的作者由此修改了InfoNCE的公式來消除的影響,從而引出了本文的核心:Decoupled Contrastive Learning Loss。
2 Decoupled Contrastive Learning
既然NPC乘數的存在會使得梯度被縮小,那么移除掉NPC乘數不就能解決上面的問題了么?通過將導數中的NPC乘數移除,作者推導出了下面的損失函數。在這個損失函數中,正負樣本的耦合帶來的梯度放縮被消去,作者將該損失稱為Decoupled Contrastive Learning (DCL) Loss,即解耦對比損失函數:
可見,Decoupled Constrive Learning中的損失直接去掉了SimCLR損失函數分母中兩個正樣本對之間的相似度,從而直接計算正樣本對的相似度同所有負樣本對相似度之和的比值。
Decoupled Contrastive Learning中所對應的梯度如下:
我們同樣針對正負樣本對耦合和Batch Size較小的情況,具體分析反向傳播過程中的梯度:因為缺少了NPC這個系數的影響,當出現正負樣本耦合的情況,正負樣本比較分散(Hard Positive + Easy Negative)或者正負樣本比較集中(Easy Positive + Hard Negative)反向傳播過程中梯度幅度就不會減少,同時因為沒有了NPC系數的存在,比較小的Batch Size也就不會使得梯度幅度變得很小。
綜上所述,消去了NPC乘數的DCL損失函數能較SimCLR損失取得更好的效果,后面的實驗結果也對此進行了證明。
同時論文的作者還提出了一種DCL損失的變形,即對DCL損失中衡量正樣本對相似度的一項增加一個權重。作者將其稱為DCLW損失:
上式中,權重使用負von Mises-Fisher權重函數:
且。為參數,在后續實驗中取0.5。這一權重使得在出現Hard Positive時能增大其提供的訓練信號。顯然,是的一個特殊情況。
總結來說,DCL損失僅在SimCLR所采用的損失函數基礎上采取了一些小的改動,使得模型能夠在訓練過程中也不要求大Batch Size,同時對正負樣本對進行解耦。
3 實驗結果
論文作者首先比較在不同的Batch Size下,使用DCL損失和InfoNCE損失的SimCLR在ImageNet、STL10、CIFAR10和CIFAR100數據集上的表現:
可以發現在不同的Batch Size上,DCL損失的效果均優于SimCLR。同時,Batch Size越小,DCL損失提供的性能提升越大,這與先前的理論推導一致。
作者又比較了在Batch Size固定為256,epoch固定為200時的DCL損失和加權重的DCLW損失,結果如下:
可以看出,DCLW損失相較于DCL損失能進一步提升模型效果,甚至在ImageNet-1K上能夠以256的Batch Size超越SimCLR使用8192 Batch Size的結果,66.2%。可見,DCL和DCLW損失能夠通過較小的改動解決SimCLR對于大Batch Size的依賴。
4 文章小結
本篇論文針對自監督學習中的SimCLR方法為何要求較大Batch Size的原因開始分析,提出了一種可以讓自監督學習在較小的Batch Size上取得很好效果的loss函數,大幅降低了自監督學習的計算成本,使得自監督學習可以有更廣泛的應用。
除此之外,本篇論文還分析了SimCLR中使用的loss函數在反向傳播梯度計算中的問題時,提出的一種名為正負樣本耦合(Negative-Positive Coupling) 現象,同時也給予了我們一定的啟發,如果是同SimCLR中所用的InfoNCE形式不相同的loss函數,在計算梯度的時候,是否也會有正負樣本耦合現象,或者說不僅僅有正負樣本耦合的現象,還有例如對于不同正樣本的,在不同負樣本之間的負負樣本耦合的現象等,如果能夠分析出Self-Supervised Learning中不同方法可能存在不同的耦合現象,那么我們是否可以進一步地提升自監督模型的效果,這些都是值得我們去思考和探索的。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的图灵奖大佬 Lecun 发表对比学习新作,比 SimCLR 更好用!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跟小伙伴们做了个高效刷论文的小站
- 下一篇: AI当下要破局,不能没有知识图谱!