更好的对比样本选择,更好的对比效果
?原創(chuàng) ·?作者?|?張琨
學校?|?中國科學技術大學博士生
研究方向?|?自然語言處理
自監(jiān)督學習(Self-Supervised Learning, SSL),或者自監(jiān)督學習中的對比學習(Contrastive Learning,CL)在近兩年成為人工智能研究的一個重要研究方向和方法。自監(jiān)督學習或者對比學習能夠充分利用數據本身的特性,在不需要標注的前提下實現對輸入數據的準確表征學習,輔助增強了模型在下游任務中的性能。
為了進一步挖掘自監(jiān)督學習或者對比學習的潛能,針對自監(jiān)督學習,人們設計了更加精巧,和下游任務更相關的自監(jiān)督任務用于模型訓練;針對對比學習,不同的距離度量方法,不同的損失函數設計,不同的正負樣本采樣方法,是否使用已有的標簽信息都是重要的研究方向。
本文針對對比學習,尤其是對比學習中利用更好的采樣方式增強對比效果的一些工作進行簡單介紹,希望能為大家?guī)硪恍┪⑿〉膯l(fā)。
對比學習簡介
什么是對比學習,簡單來講,對比學習就是通過數據之間的對比進行表示學習,目的就是為了獲得更通用的知識,用于輔助下游任務。它與表示學習,度量學習相比,都是為了獲得輸入的更好表征,只是側重點不同。
對比學習更側重于學習方法,他的核心思想可以總結為在向量表征空間中將正樣本(positive example)與錨點樣本(anchor example)之間的距離拉近,將負樣本(negative example)與錨點樣本(anchor example)之間的距離拉遠,通過這樣的方式自然而言的就能夠構建損失函數(triplet loss)進行模型訓練。
因此重點就落到了如何定義正樣本,負樣本,為了避免對標簽的要求,通用的做法是利用數據增強的方法(例如圖像中的旋轉,裁剪等)獲得錨點樣本的增強樣本,作為正樣本;而在同一批次的訓練數據中,其他樣本都可以認為是負樣本。這樣就實現了在不需要標簽信息的條件下,利用數據本身的特點進行對比學習。以上就是對比學習的基本思想。下圖是對比學習中的一個典型框架。
對比學習降低了對標簽的依賴,讓我們能夠在不需要標簽的條件下實現輸入數據的準確表示。但從他的基本思想中也可以看出來,在樣本的選擇上仍然有些粗放。例如數據增強的樣本都是正樣本么?自然語言中有時候改掉一些詞會直接導致整體語義的變化,通過替換詞進行數據增強不一定能夠保證正樣本的真正性(true positive)。
負樣本直接從同一個 batch 中進行選擇,很直接的同一個 batch 中肯定包含屬于同一類的樣本,那么這種樣本的真負性(true negative)該如何保證?為了解決這些問題,進一步挖掘對比學習的潛力,例如利用已有標簽的方法實現更好的樣本選擇,當然也有很多其他的選擇更好樣本的方法被提出來。接下來,本文將對其中的一些代表性工作進行介紹。
監(jiān)督對比學習
論文標題:
Supervised Contrastive Learning
收錄會議:
NeurIPS 2020
論文鏈接:
https://arxiv.org/abs/2004.11362
代碼鏈接:
https://github.com/google-research/google-research/tree/master/supcon
2.1 亮點
該工作 [1] 在對比學習中引入了標簽信息,利用標簽信息將對比學習的損失擴展為支持 multiple positive 和 multiple negative 的形式,以監(jiān)督學習的設置實現了對比學習效果的提升。
作者通過梯度計算的角度說明了文中提出的 loss 可以更好地關注于 hard positives and negatives,從而獲得更好的效果。
2.2 方法
首先是傳統對比學習與本文提出的監(jiān)督對比學習的比較,從圖中可以看出,當小狗為對比錨點時,傳統對比學習只能學習到單個小狗的特征,而同屬于小狗但屬于不同品種的小狗則會被作為負例,從而使得小狗這一類別的通用特征無法被整個模型學習到。
因此,如果將同屬于小狗這一類別的樣本也作為錨點的正例,那么模型不僅能夠學習到單個小狗的通用特征(數據內特征),同時也能學習到同一類別的特征(類內特征),考慮到對比學習的基本思想,屬于同一類的數據距離將會更近,類與類之間的差異將會更明顯。為了實現這個效果,作者從損失函數上進行了相對修改,假設有 N 個隨機選擇的樣本 ,傳統對比學習的 InfoNCE 損失可以表示為如下形式:
其中,即排除出錨點樣本之外的其他樣本。通過這個損失函數可以發(fā)現,整個模型在優(yōu)化的時候是在考慮一個正樣本和多個負樣本之間的關系。為了引入標簽信息,作者在損失函數上進行了如下改進:
首先,由于考慮了標簽信息,那么在一個訓練 batch 中的屬于同一類的樣本將會被發(fā)現作為正樣本。這樣首先就可以將對比損失拓展為多個正樣本對多個負樣本。公式中 表示和錨點樣本屬于同一類的樣本。這兩個公式的不同之處在于求和位置的不同,一個是在 log 內求和,一個是在 log 外求和。作者通過分析這兩個損失函數都擁有以下特性:
1. 能夠泛化到任意數量的正樣本:保證了模型能夠將屬于同一類的樣本聚的更緊密;
2. 通過求和操作,能夠進一步利用負樣本增強對比學習的性能:這兩個公式都是在所有的負樣本挑選上進行了求和,效果有點類似 noise contrastive estimation 和 n-pair losses [2] [3];
3.能夠更好的實現強負樣本(正樣本)的選擇:通過考慮額外的標簽信息,模型在正負樣本的選擇上可信度就更好,屬于同一類別的樣本彼此之間會作為正樣本, 保證了類內特征的學習,屬于不同類別的樣本才會被作為負樣本,同時求和操作是在所有挑選的負樣本上進行的,因此負樣本也可以得到充分的保證。
2.3 實驗
有了這樣的一個損失函數之后,作者分別在不同的方法和不同的數據集上進行效果的驗證,以下是相關實驗結果:
從這些實驗結果上可以看出作者提出的方法確實有效提升了模型的性能。
從這個工作中,可以看出通過充分利用已有數據,在選擇樣本的時候能夠更好的選擇正樣本,實現了對比學習性能的提升,這也為我們將標簽信息融入到模型中提供了參考的思路。
HCL
論文標題:
Contrastive Learning with Hard Negative Samples
收錄會議:
ICLR 2021
論文鏈接:
https://arxiv.org/abs/2010.04592
代碼鏈接:
https://github.com/joshr17/HCL
3.1 亮點
本文首次提出一種利用采樣分布實現更好的負采樣的方法,并且給出了一種在缺乏真實的不相似信息的條件下如何進行采樣的采樣策略。在不使用標簽的條件下實現了更好的負采樣,提升了對比學習的性能。
3.2 方法
首先是整個方法的思路圖,在傳統的對比學習負采樣工作中,主要是對同一個 batch 中的非錨點隨機采樣,作為負樣本;或者是前一個工作中利用標簽信息進行負樣本選擇。那么這些工作確實會選擇到一個負樣本,并將其分開。
但這些工作也存在一些問題,一些簡單的負樣本能夠被分的很開,而一些距離較近的負樣本則并沒有享受到對比學習帶來的優(yōu)惠,他們之間依然是難分的,這些負樣本就可以認為是強負樣本(離樣本點很近但確實又不屬于同一類的樣本),例如圖中的下方例子。為了實現這個目標,作者首先定義了什么是好的強負樣本,它們需要滿足兩個條件:
與原始樣本擁有不同的標簽
與原始樣本盡可能的相似
為了滿足這個條件,那就要完成使用無監(jiān)督的方法刪選出不屬于同一類的樣本,這個目標感覺更像是一個監(jiān)督分類問題。對無監(jiān)督來說過于復雜了,為此,作者進行了一些妥協,即盡量滿足條件 1,在對樣本難度要求不那么大的時候,可以忽略條件 2。接下來就是具體的實施辦法。
作者首先指出條件一的目標就是要設計一個通過 embedding 和錨點樣本可以得到的概率分布 q,在這個分布上,能夠采樣出一批滿足條件的負樣本,為此,作者首先給出采樣分布函數:
即難負樣本的分布是以于錨點樣本不同為條件的概率分布,具體可以通過錨點樣本與負樣本的向量點積之后,先乘以一個系數,然后作為指數項在于單純負樣本的分布相乘。值越大,代表這個樣本越難,那么這個樣本就更應該被采到。但這個時候條件 1 依然是不滿足的,因為在無標簽的條件下,我們無法得知采到的負樣本是否真的與錨點樣本的標簽是不一致的。為了解決這個問題,這里作者使用了 PU-learning [5] 的方法重新了上述分布,即得到了如下形式:
即把負樣本拆分成來自同一標簽的分布和來自不同標簽的分布兩個部分,則來自同一個標簽的分布使用和第一個公式相似的方法,可以得到
那么滿足兩個條件的負樣本分布就可以表示為如下形式:
在此基礎上,針對原始對比損失和只使用難負樣本的對比損失就可以表示為如下形式:
這個目標函數只需要估計期望 和 即可,而針對 和 的采樣,本文采用了經典了蒙特卡洛重要性采樣:
式子右邊分母的和是兩個配分函數,可以用均值近似:
至此,整個技術部分就完成了介紹。整體看著十分復雜,設計多種多樣的抽樣方法。但在具體實現過程中,做著吃出,通過重新調整目標函數的權重,而不是采樣過程,只需要額外的兩行代碼就能夠實現整個方法,作者在附錄中還貼心的給出來實驗代碼:3.3 實驗
作者選擇 SimCLR 作為 baseline 在多個數據集上進行了相關的實驗,實驗結果如下:
1. 圖像表征
2. 圖的表征
3. 句子表征
從這些實驗結果中可以充分證明作者提出的方法的有效性。同時,為了更好的展示作者提出的方法的優(yōu)越性,作者還對強負樣本進行詳細的分析,例如是否更難的樣本一定更好?避免錯誤的樣本是否會改善整個采樣?通過這些實驗驗證,作者進一步展示了所提出的方法的優(yōu)越性。
False Negative Cancellation
論文標題:
Boosting Contrastive Self-Supervised Learning with False Negative Cancellation
論文鏈接:
https://arxiv.org/abs/2011.11765
4.1 亮點
本文首次關注負樣本的正確性,提出一種 false negative cancellation 的方法,通過將假負樣本從對比損失計算中刪除提升對比學習的性能。作者還提出了一種無監(jiān)督的識別假負樣本的方法,在無監(jiān)督條件下實現對比學習性能的提升。
4.2 方法
在對比學習中,正例一般是通過數據增強的方法得到,因此它的準確性是可以保證的。但負例的準確性相對來說比較難以保證,同一個 batch 中的其他樣本有可能是和錨點樣本屬于同一類,例如上圖。
在這種情況下,將右側的樣本作為負例一方面會使得模型忽略輸入所包含的隱式語義信息,另一方面則會影響模型的收斂速度。之前的方法大多集中在如何選擇質量更高的正負樣本,忽略了樣本的準確性。為此,作者就從這個角度展開研究。
一個直觀的思路,既然負例樣本的準確性之前沒有考慮過,那考慮一下不就好了,在對比學習的損失中將那些假負例直接刪除,只留下真負例不就好了。基于這樣的想法,作者直接對損失函數進行了修改,框架圖可以表示為下圖:
首先就是識別出來假負例,然后將其從負例樣本中刪除,更進一步,為了更加充分的利用數據,還可以將這些假負例作為真正例來使用,從而進一步提升對比學習的效果,而且這種形式還可以實現第一個工作中提到的多對對對比形式。具體形式化可以表現為如下方式:
首先是原始的對比學習損失函數:
當我們識別出 batch 中的假負例集合 的時候,我們直接將這些內容刪除即可,
更進一步,既然這些樣本 是假負例,那么他們就是真正例,也就是說可以將這些作為正例的樣本進一步提升對比學習的性能,
思路非常簡單且易于理解和實現,那么關鍵問題來了,如何確定假負例?和第一個工作類似使用標簽的話那就和第一個工作區(qū)別不大了,如何在無標簽的條件下實現假負例的識別呢?這個就是另一個創(chuàng)新點
作者通過分析數據發(fā)現,假負例擁有以下兩個特點:
1. 假負例是來自不同輸入數據,但和錨點數據擁有相同語義內容,因此他們之間存在一定的相似度
2. 假負例可能和錨點沒有那么相似,但是他和錨點的增強樣本必然有更大的一個相似度,因為每個增強樣本都是從不同角度對錨點的一個表示。
基于以上者兩個發(fā)現,作者提出了一種無監(jiān)督的假負例樣本識別方法,首先舉個例子:
從這個例子中可以看出,右側藍框的圖片不是左側錨點樣本的增強樣本,因此它會被作為負樣本,但實際上這個樣本和左側樣本的 support views 存在比較高的相似度,也應該被當作正樣本。也就是說,我們可以通過分析負樣本與錨點樣本的不同數據增強樣本之間的相似度計算來找到那些假負例。為此,作者提出了自己的方法,具體流程如下:
1. 對每個錨點樣本,除了生成增強樣本,同時也會額外生成一些增強樣本,組成 support set
2. 針對每個負樣本,分別計算負樣本與 support set 中的每個樣本之間的相似度(可以使用不同的相似度計算方法)
3. 將得到的相似度得分進行整合(不同的整合方法)
4. 根據得到的最終相似度得分,選擇出合適的負樣本,將其作為假負樣本集合,用于損失函數計算。
以上就是整個方法的技術部分,非常簡單易理解,但感覺特別有意思。
4.3 實驗
為了驗證作者提出的方法的效果,作者從多個角度進行了模型效果的驗證:
1. 整體的實驗效果:
2. 兩種損失函數的對比
3. 假負例選擇策略的對比
以上只展示了部分實驗結果,為了充分驗證作者提出的假負例取消策略,作者進行了多角度的實驗驗證,一次來充分說明作者提出的方法的效果。美中不足的是作者只進行了 CV 方面的實驗,如果可以加一些 NLP 相關的實驗,那就更好了。
總結
本文簡單介紹了在對比學習的采樣中設計更好的采樣策略提升對比學習性能的方法,包括直接使用已有標簽,構建更好的概率分布實現更好的樣本選擇,以及通過對假負樣本的識別和重利用提升對比學習的性能,整體思路非常有意思。而確定采樣樣本的質量能夠有效提升模型的性能,這方面還有更多值得研究的,例如如何確定選取樣本的質量,如何選擇更合適的數據增強策略,如何提升所選取的樣本的可信度等等。這方面的研究是一個非常有意思的研究方向。
參考文獻
[1] Khosla P, Teterwak P, Wang C, et al. Supervised contrastive learning[J]. arXiv preprint arXiv:2004.11362, 2020.?
[2] Gutmann M, Hyv?rinen A. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models[C]//Proceedings of the thirteenth international conference on artificial intelligence and statistics. JMLR Workshop and Conference Proceedings, 2010?
[3] Sohn K. Improved deep metric learning with multi-class n-pair loss objective[C]//Advances in neural information processing systems. 2016: 1857-1865. [^4]: Robinson J, Chuang C Y, Sra S, et al. Contrastive learning with hard negative samples[J]. arXiv preprint arXiv:2010.04592, 2020.?
[5] Elkan C, Noto K. Learning classifiers from only positive and unlabeled data[C]//Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. 2008: 213-220.?
[6] Huynh T, Kornblith S, Walter M R, et al. Boosting contrastive self-supervised learning with false negative cancellation[J]. arXiv preprint arXiv:2011.11765, 2020.
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優(yōu)質內容以更短路徑到達讀者群體,縮短讀者尋找優(yōu)質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創(chuàng)作品,未曾在公開渠道發(fā)表,如為其他平臺已發(fā)表或待發(fā)表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發(fā)送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
·
總結
以上是生活随笔為你收集整理的更好的对比样本选择,更好的对比效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法改进有多快?是否比迭代硬件收益更大?
- 下一篇: 阿里广告技术最新突破:全链路联动-面向最