寫在前面
今天分享給大家一篇NAACL2022論文,結合句子間差異的無監督句子嵌入對比學習方法-DiffCSE,全名《DiffCSE: Difference-based Contrastive Learning for Sentence Embeddings》。該篇論文主要是在SimCSE上進行優化,通過ELECTRA模型的生成偽造樣本和RTD(Replaced Token Detection)任務,來學習原始句子與偽造句子之間的差異,以提高句向量表征模型的效果。
paper:https://arxiv.org/pdf/2204.10298.pdf
github:https://github.com/voidism/DiffCSE
介紹
句向量表征技術目前已經通過對比學習獲取了很好的效果。而對比學習的宗旨就是拉近相似數據,推開不相似數據,有效地學習數據表征。SimCSE方法采用dropout技術,對原始文本進行數據增強,構造出正樣本,進行后續對比學習訓練,取得了較好的效果;并且在其實驗中表明”dropout masks機制來構建正樣本,比基于同義詞或掩碼語言模型的刪除或替換等更復雜的增強效果要好得多。“。這一現象也說明,「直接增強(刪除或替換)往往改變句子本身語義」。
paper:https://aclanthology.org/2021.emnlp-main.552.pdf
github:https://github.com/princeton-nlp/SimCSE
論文解讀:https://zhuanlan.zhihu.com/p/452761704
Dangovski等人發現,在圖像上,采用不變對比學習和可變對比學習相互結合的方法可以提高圖像表征的效果。而采用不敏感的圖像轉換(如,灰度變換)進行數據增強再對比損失來改善視覺表征學習,稱為「不變對比學習」。而「可變對比學習」,則是采用敏感的圖像轉換(如,旋轉變換)進行數據增強的對比學習。如下圖所示,做左側為不變對比學習,右側為可變對比學習。對于NLP來說,「dropout方法」進行數據增強為不敏感變化,采用「詞語刪除或替換等」方法進行數據增強為敏感變化。
paper:https://arxiv.org/pdf/2111.00899.pdf
作者借鑒Dangovski等人在圖像上的做法,提出來「DiffCSE方法」,通過使用基于dropout masks機制的增強作為不敏感轉換學習對比學習損失和基于MLM語言模型進行詞語替換的方法作為敏感轉換學習「原始句子與編輯句子」之間的差異,共同優化句向量表征。
模型
模型如下圖所示,
左側為一個標準的SimCSE模型,右側為一個帶條件的句子差異預測模型。給定一個句子,SimCSE模型通過dropout機制構造一個正例,使用BERT編碼器f,獲取句向量,SimCSE模型的訓練目標為:
其中,為訓練輸入batch大小,為余弦相似度,為溫度參數.
右側實際上是ELECTRA模型,包含生成器和判別器。給定一個長度為T的句子,,生成一個隨機掩碼序列,其中。使用MLM預訓練語言模型作為生成器G,通過掩碼序列來生成句子中被掩掉的token,獲取生成序列。然后使用判別器D進行替換token檢測,也就是預測哪些token是被替換的。其訓練目標為:
針對一個batch的訓練目標為。
最終將兩個loss通過動態權重將其結合,
為了使判別器D的損失可以傳播的編碼器f中,將句向量拼接到判別器D的輸入中,輔助進行RTD任務,這樣做可以鼓勵編碼器f使信息量足夠大,從而使判別器D能夠區分和之間的微小差別。
當訓練DiffCSE模型時,固定生成器G參數,只有句子編碼器f和鑒別器D得到優化。訓練結束后,丟棄鑒別器D,只使用句子編碼器f提取句子嵌入對下游任務進行評價。
結果&分析
在句子相似度任務以及分類任務上的效果,如下表1和表2所示,相比與SimCSE模型均有提高,
為了驗證DiffCSE模型具體是哪個部分有效,進行以下消融實驗。
Removing Contrastive Loss
如表3所示,當去除對比學習損失,僅采用RTD損失時,在句子相似度任務上,下降30%,在分類任務上下降2%。
Next Sentence vs. Same Sentence
如表3所示,當將同句話預測任務,變成預測下句話任務時,在句子相似度任務和分類任務上,具有不同程度的下降。
Other Conditional Pretraining Tasks
DiffCSE模型采用MLM模型和LM模型分別作為生成器時,效果如表3所示,在句子相似度任務和分類任務上,具有不同程度的下降。句子相似度任務上下降的較為明顯。
Augmentation Methods: Insert/Delete/Replace
將MLM模型生成偽造句換成隨機插入、隨機刪除或隨機替換的效果,如表示所4,MLM模型的效果綜合來說較為優秀。
Pooler Choice
在SimCSE模型中,采用pooler層(一個帶有tanh激活函數的全連接層)作為句子向量輸出。該論文實驗發現,采用帶有BN的兩層pooler效果更為突出,如表5所示;并發現,BN在SimCSE模型上依然有效。
代碼如下:
classProjectionMLP(nn.Module):
def__init__(self,config):
super().__init__()
in_dim=config.hidden_size
hidden_dim=config.hidden_size*2
out_dim=config.hidden_size
affine=False
list_layers=[nn.Linear(in_dim,hidden_dim,bias=False),
nn.BatchNorm1d(hidden_dim),
nn.ReLU(inplace=True)]
list_layers+=[nn.Linear(hidden_dim,out_dim,bias=False),
nn.BatchNorm1d(out_dim,affine=affine)]
self.net=nn.Sequential(*list_layers)
defforward(self,x):
returnself.net(x)
Size of the Generator
在DiffCSE模型中,嘗試了不同大小的生成器G,如下表所示,DistilBERTbase模型效果最優。并且發現與原始ELECTRA模型的結論不太一致。原始ELECTRA認為生成器的大小在判別器的1/4到1/2之間效果是最好的,過強的生成器會增大判別器的難度。而DiffCSE模型由于融入了句向量,導致判別器更容易判別出token是否被替換,所以生成器的生成能力需要適當提高。
Masking Ratio
對于掩碼概率,經實驗發現,在掩碼概率為30%時,模型效果最優。
Coefficient λ
針對兩個損失之間的權重值,經實驗發現,對比學習損失為RTD損失200倍時,模型效果最優。
總結
個人覺得這篇論文的主要思路還是通過加入其他任務,來增強句向量表征任務,整體來說挺好的。但是該方法如何使用到監督學習數據上,值得思考,歡迎留言討論。
-
數據
+關注
關注
8文章
7170瀏覽量
89706 -
生成器
+關注
關注
7文章
320瀏覽量
21153 -
向量
+關注
關注
0文章
55瀏覽量
11711
原文標題:DiffCSE:結合句子間差異的無監督句子嵌入對比學習方法
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論