問題:BERT的表示本身存在塌縮的問題。通過對BERT詞表示的觀察,會發現整體呈錐形分佈:高頻詞聚集在錐頭部,低頻詞分散在錐尾。又由於高頻詞本身是高頻的,因此會主要貢獻整個的句子表示,讓整體的相似度都很高。
解決思路:
對比學習,它是通過拉近相同樣本的距離、拉遠不同樣本的距離,來刻畫樣本本身的表示,正好可以解決BERT表示的塌縮問題。
兩種對比學習方法:
ConSERT 與 SimCSE都是基於對比學習的文本相似度模型:
1、ConSERT 是採用多種數據增強的方式來構造正例的。主要在Embedding層使用下面幾種方法:
shuffle:更換position id的順序
token cutoff:在某個token維度把embedding置爲0
feature cutoff:在embedding矩陣中,有768個維度,把某個維度的feature置爲0
dropout:embedding層的dropout
2、SimCSE 則是採用了 BERT 所有層中的 Dropout,將一個batch的數據兩次經過BERT(實際上是複製batch的數據再經過BERT,可以加快效率),得到不同的兩個輸出,比如輸入的樣本x再兩次經過BERT後,由於DropMask的不同,得到的輸出就是不一樣的,假設得到的輸出爲 hz 和 hz′ ,將 hz 和 hz′ 作爲一組正例, hz 和其他的作爲負例,然後用對比損失計算loss。
鏈接:https://zhuanlan.zhihu.com/p/378544839
鏈接:https://wmathor.com/index.php/archives/1580/