天天看點

論文閱讀_對比學習_SimCSE

英文題目:SimCSE: Simple Contrastive Learning of Sentence Embeddings

中文題目:SimSCE:用簡單的對比學習提升句嵌入的品質

論文位址:https://export.arxiv.org/pdf/2104.08821.pdf

領域:自然語言處理,對比學習

發表時間:2021.04

作者:Tianyu Gao, 普林斯頓大學,清華大學

出處:EMNLP

被引量:83

代碼和資料:https://github.com/princeton-nlp/SimCSE

閱讀時間:2022.09.18

(周五同僚分享,簡單整理筆記)

讀後感

主要用于提升句嵌入的品質。方法很簡單,利用BERT模型本身的dropout性質,通過同一輸入輸出不同嵌入作為正例對,然後取同一batch下的反例對訓練模型。

介紹

自監督學習主要包含:生成式,對比式,對抗式。其中的對比學習原理是:利用無監督資料,通過巧妙的方法構造正例/反例(一般是一個正例對應多個反例),訓練模型,讓正例距離足夠近,反例距離足夠遠,以利用無監督資料,進行更好地表示(表征)。

一般設計包含三部分:構造正/負例;優化損失函數;調整模型編碼器。

評價對比學習的品質有兩個關鍵名額:alignment和uniformity。其中alignment指的是正例中資料對表示的一緻性:

論文閱讀_對比學習_SimCSE

uniformity指的是嵌入空間分布的均勻性:

論文閱讀_對比學習_SimCSE

其中Pdata指空間中所有執行個體。也就是說正例距離越近越好,而随機采樣的資料對的距離應該分布在超球體表面。

方法

無監督資料訓練SimCSE

之前生成近似正例的方法有:随機增删,近義詞替換,交換詞序等。本文利用 BERT 模型本身包含 dropout,這樣同一個句子兩次送入模型,由于随機dropout,最終的編碼也不同。用這種方法作為資料增強,生成對比學習中的正例對,使用同一batch中的其它執行個體作為反例。損失函數定義如下:

論文閱讀_對比學習_SimCSE

表-1對比了文中方法和其它常用方法(删詞,剪切),在同義句子比對STS-B任務中的效果:

論文閱讀_對比學習_SimCSE

圖-2把損失拆分成alignment和uniformity,位置處于左下角時效果最好(兩個loss都小);可以看到随着疊代訓練損失的變化(箭頭方向),其中紅色線為SimSCE在兩個評測方向的變化相對最好。

論文閱讀_對比學習_SimCSE

有監督資料訓練SimCSE

文中還研究了SimSCE對比學習如何利用有監督學習的資料來提升模型的表現力。具體使用自然語言推理任務(NLI)資料,NLI用以判斷兩個句子的關系是:蘊含、中性或沖突。利用訓練集中的标注資訊産生對比學習中的正/負例。

選擇标注資料

為對比 NLI 的提升效果,先探索了一些構造正例的方法:

  • 使用Kaggle比賽的QQP資料集,它的訓練資料标注了兩個問句語義是否相同。
  • 使用Flickr30,對每個圖檔人工标注了五個标題,可将其中的兩兩标注組成正例對。
  • 使用ParaNMT,大規模的反向翻譯資料集(如:中->英->中),作為正例對。
  • 使用NLI任務資料集,最終NLI資料集效果最好,這是由于它包含高品質的衆包人工标注,并且正例中詞彙重合度小(同一詞在兩個正例對中均出現)。

将沖突關系對作為硬負例

為了更好利用NLI資料集,利用标注為沖突的執行個體,生成硬負例,并修改了損失函數,實驗證明了它的有效性:

論文閱讀_對比學習_SimCSE

可以看到,這裡硬負例被充分利用(被計入了N次),圖-4展示了實驗結果:

論文閱讀_對比學習_SimCSE

為了公正的對比,sample列隻采樣了134k正例來訓練模型。可以看到不同任務訓練的模型對 STS-B 效果的提升。

各向異性

各向異性意思是所有向量都被映射在了一個“狹窄”的高維空間。而uniformity是評價所有執行個體在向量空間中是否均勻分布,SimCSE在uniformity方面提升,也改善了自然語言編碼的各向異性問題。

圖-3對比了目前各種流行模型的alignment和uniformity:

論文閱讀_對比學習_SimCSE

實驗

主實驗使用句子相似度任務,在有監督和無監督兩方面,對比了不同方法的效果:

繼續閱讀