丹琦女神新作:对比学习,简单到只需要Dropout两下
文 | 花小花Posy
上周把 《對(duì)比學(xué)習(xí)有多火?文本聚類都被刷爆了...》分享到賣萌屋的群里后,遭到了群友們一波嫌棄安利。
小伙伴們表示,插入替換的數(shù)據(jù)增強(qiáng)方式已經(jīng)Out了,SimCSE才是現(xiàn)在的靚仔。
snowfloating說:看完Danqi Chen組里的SimCSE,再看這篇感覺就沒什么驚喜了。
蘇神: 直接用dropout,居然work了。真見鬼了......
奧多多奧多多:這篇有說法的。
抱著一顆好奇的心,想看看這篇SimCSE到底有什么說法,又哪里見鬼了?小花認(rèn)認(rèn)真真拜讀了原文,今天跟大家分享分享SimCSE用的什么神奇招數(shù)。
看完你可能不信,但它真的很神奇!
SimCSE的全稱是 Simple Contrastive Learning of Sentence Embeddings,S代表Simple。文中的方法完全對(duì)得起題目,它是真的簡(jiǎn)單!簡(jiǎn)單在哪兒呢?
它簡(jiǎn)單地用dropout替換了傳統(tǒng)的數(shù)據(jù)增強(qiáng)方法,將同一個(gè)輸入dropout兩次作為對(duì)比學(xué)習(xí)的正例,而且效果甚好。
它簡(jiǎn)單地將NLI的數(shù)據(jù)用于監(jiān)督對(duì)比學(xué)習(xí),效果也甚好。
這么簡(jiǎn)單的方法,真的work!?WHY?
下面我們一起領(lǐng)略一下這篇文章的風(fēng)騷吧!
論文題目:
SimCSE: Simple Contrastive Learning of Sentence Embeddings
論文鏈接:
https://arxiv.org/pdf/2104.08821.pdf
SimCSE開篇討論的問題是:對(duì)比學(xué)習(xí)為何work?寫上一篇文的時(shí)候,我就在想對(duì)比學(xué)習(xí)為什么work呢?今天看到本文給出了很好的解釋。
對(duì)比學(xué)習(xí)為何work?
原來 ICML2020 專門有一篇文章[1]研究了對(duì)比學(xué)習(xí)為什么work。[1]中指出,對(duì)比表示學(xué)習(xí)有用,主要是因?yàn)樗鼉?yōu)化了兩個(gè)目標(biāo):
正例之間表示保持較近距離
隨機(jī)樣例的表示應(yīng)分散在超球面上。
并提出這兩個(gè)目標(biāo)分別可以用指標(biāo)alignment和uniformity來衡量。
下圖可以直觀理解這兩個(gè)目標(biāo):
alignment計(jì)算正例對(duì)之間的向量距離的期望:
越相似的樣例之間的alignment程度越高。因?yàn)閍lignment使用距離來衡量,所以距離越小,表示alignment的程度越高。
uniformity評(píng)估所有數(shù)據(jù)的向量均勻分布的程度,越均勻,保留的信息越多。
可以想象任意從表示空間中采樣兩個(gè)數(shù)據(jù)和, 希望他們的距離比較遠(yuǎn)。他們的距離越遠(yuǎn),證明空間分布越uniform。所以u(píng)niformity的值也是越低越好。
SimCSE也采用這兩個(gè)指標(biāo)來衡量生成的句子向量,并證明了文本的語(yǔ)義空間也滿足:alignment值越低且uniformity值越低,向量表示的質(zhì)量越高,在STS任務(wù)上的Spearman相關(guān)系數(shù)越高。
SimCSE
SimCSE有兩個(gè)變體:Unsupervised SimCSE和Supervised SimCSE,主要不同在于對(duì)比學(xué)習(xí)的正負(fù)例的構(gòu)造。下面詳細(xì)介紹下他們的構(gòu)造方式。
無監(jiān)督SimCSE
Unsupervised SimCSE 引入dropout給輸入加噪聲,假設(shè)加噪后的輸入仍與原始輸入在語(yǔ)義空間距離相近。其正負(fù)例的構(gòu)造方式如下:
正例:給定輸入,用預(yù)訓(xùn)練語(yǔ)言模型編碼兩次得到的兩個(gè)向量和作為正例對(duì)。
負(fù)例:使用in-batch negatives的方式,即隨機(jī)采樣一個(gè)batch中另一個(gè)輸入作為的負(fù)例。
訓(xùn)練目標(biāo)函數(shù):
下圖展示了Unsupervised SimCSE的樣例:
如何生成dropout mask?
對(duì)于Unsupervised SimCSE,核心在于如何生成dropout mask。剛開始讀完一遍的時(shí)候,驚嘆原來dropout可以這么用,效果提升還挺大。后來細(xì)想,仍舊有些困惑兩次dropout mask的生成過程是怎樣的呢?仔細(xì)讀了下,原文說:
In other words, we pass the same input sentence to the pre-trained encoder twice and obtain two embeddings as “positive pairs”, by applying independently sampled dropout masks。
還是不太清楚。后來看了作者在GitHub的issue里面的回復(fù)才懂了。因?yàn)锽ERT內(nèi)部每次dropout都隨機(jī)會(huì)生成一個(gè)不同的dropout mask。所以SimCSL不需要改變?cè)糂ERT,只需要將同一個(gè)句子喂給模型兩次,得到的兩個(gè)向量就是應(yīng)用兩次不同dropout mask的結(jié)果。然后將兩個(gè)向量作為正例對(duì)。(真的simple)
有監(jiān)督SimCSE
本文還提出Supervised SimCSE,利用標(biāo)注數(shù)據(jù)來構(gòu)造對(duì)比學(xué)習(xí)的正負(fù)例子。為探究哪種標(biāo)注數(shù)據(jù)更有利于句子向量的學(xué)習(xí),文中在多種數(shù)據(jù)集上做了實(shí)驗(yàn),最后發(fā)現(xiàn)NLI數(shù)據(jù)最有利于學(xué)習(xí)句子表示。下面以NLI數(shù)據(jù)為例介紹Supervised SimCSE的流程。
Supervised SimCSE 引入了NLI任務(wù)來監(jiān)督對(duì)比學(xué)習(xí)過程。該模型假設(shè)如果兩個(gè)句子存在蘊(yùn)含關(guān)系,那么它們之間的句子向量距離應(yīng)該較近;如果兩個(gè)句子存在矛盾關(guān)系,那么它們的距離應(yīng)該較遠(yuǎn)。因此NLI中的蘊(yùn)含句對(duì)和矛盾句對(duì)分別對(duì)應(yīng)對(duì)比學(xué)習(xí)中的正例對(duì)和負(fù)例對(duì)。所以在Supervised SimCSE中,正負(fù)例的構(gòu)造方式如下:
正例:NLI中entailment關(guān)系樣例對(duì)。負(fù)例:a) in-batch negatives b)NLI中關(guān)系為contradiction的樣例對(duì)。
訓(xùn)練目標(biāo):
實(shí)驗(yàn)結(jié)果
Dropout優(yōu)于傳統(tǒng)數(shù)據(jù)增強(qiáng)?
下圖中對(duì)比了使用Unsupervised SimCSE (第一行None)和常見的數(shù)據(jù)增強(qiáng)方法在STS-B驗(yàn)證集上的Spearman's Correlation。
其中crop k%表示隨機(jī)減掉k%長(zhǎng)度的span,word deletion表示隨機(jī)刪除k%的詞,delete one word只刪除一個(gè)詞,MLM 15%表示用隨機(jī)替換掉15%的詞。上表中所有dropout的方法的dropout的比例都是0.1。(因?yàn)槲闹袑?duì)比了不同比例的dropout,p=0.1效果最好。)
實(shí)驗(yàn)結(jié)果很明顯的可以看出,SimCSE是遠(yuǎn)超其余數(shù)據(jù)增強(qiáng)方法的。小花的理解是傳統(tǒng)數(shù)據(jù)增強(qiáng)的方法是對(duì)原始輸入直接進(jìn)行改變,在編碼后,增強(qiáng)的數(shù)據(jù)與原始數(shù)據(jù)在語(yǔ)義空間的距離是不是要比直接用dropout的方式要遠(yuǎn)。
Dropout與對(duì)比學(xué)習(xí)的關(guān)系
為了理解dropout為什么work,作者可視化了不同方法下alignment和uniformity在訓(xùn)練過程中的變化趨勢(shì)。
上圖中對(duì)比了在不同數(shù)據(jù)增強(qiáng)/dropout方式下,和在訓(xùn)練過程中的變化方向(每訓(xùn)練10步采樣一次)。Fix 0.1表示p=0.1時(shí),兩次使用相同dropout mask。對(duì)于Fixed 0.1和No dropout來講,正例對(duì)的句子表示是完全相同的,
可以看到隨著訓(xùn)練步數(shù)增加,Unsup. SimCSE的平穩(wěn)地遞減。雖然降低的趨勢(shì)卻不明顯,但其初始化的值就相對(duì)較低。上圖進(jìn)一步驗(yàn)證了SimCSE有效的原因是,它可以讓alingnment和uniformity的值逐漸降低。
小花在這里有一個(gè)問題請(qǐng)教:使用Fixed 0.1和No dropout與另外兩種方式相比較,是不是不太公平?因?yàn)楫?dāng)正例對(duì)兩個(gè)向量完全相同時(shí),其實(shí)是缺失了一些變體的對(duì)比信息在里面的。還有既然兩個(gè)向量完全相同,為什么會(huì)上升呢?還望理解的小伙伴留言討論下呀!(?▽?)
語(yǔ)義文本相似效果如何?
SimCSE在STS(語(yǔ)義文本相似)任務(wù)上進(jìn)行了評(píng)估。評(píng)價(jià)指標(biāo)是 Spearman’s correlation。表格中對(duì)比了各種建模句子向量的方法,包括簡(jiǎn)單的對(duì)Glove向量取平均,到前不久的SOTA:BERT-Flow和BERT-Whitening。可以看到,在各種編碼器和有無監(jiān)督模式下,SimCSE都取得了顯著的提升。比如無監(jiān)督時(shí),和與BERT-Whitening相比,Avg. 分別提升了7.96%和14.77%。
此外,作者還對(duì)比了不同句子表示模型下 和與他們?cè)赟TS任務(wù)上的結(jié)果:可以看出:
Avg.BERT模型的較低,但較高;
相反,對(duì)BERT表示進(jìn)行后處理的BERT-flow和BERT-whitening的較低,但是卻很高;
Unsup.SimCSE和SimCSE的兩個(gè)值都是較低的,他們的STS的結(jié)果也更好。
說明和需要結(jié)合使用,只有當(dāng)二者的值都比較低時(shí),模型學(xué)習(xí)到的句子向量表示才最適合STS任務(wù)。
遷移學(xué)習(xí)效果
除了STS任務(wù)上的評(píng)估外,本文還將訓(xùn)練好的句子向量遷移到7個(gè)任務(wù)上。
遷移學(xué)習(xí)上的SimCSE并沒有展現(xiàn)出明顯的優(yōu)勢(shì)。作者的解釋是句子級(jí)別的訓(xùn)練目標(biāo)并不能直接有利于遷移學(xué)習(xí)。為了讓遷移學(xué)習(xí)效果更好,文中還是嘗試將MLM損失和對(duì)比學(xué)習(xí)損失一起訓(xùn)練,取得了少量的提升(上表中標(biāo)有w/MLM的行)。
有開源嘛?
有的! 4月23號(hào)剛開源的代碼。
GitHub鏈接:
https://github.com/princeton-nlp/SimCSE
文中的預(yù)訓(xùn)練語(yǔ)言模型已經(jīng)整合到了HuggingFace中,可以像BERT模型那樣,直接通過API調(diào)用模型。
from?transformers?import?AutoModel,?AutoTokenizertokenizer?=?AutoTokenizer.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased") model?=?AutoModel.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased")想動(dòng)手試試的小伙伴們趕緊GitHub看看吧...
小結(jié)
本文提出了一個(gè)簡(jiǎn)單的對(duì)比學(xué)習(xí)的框架,SimCSE,用于學(xué)習(xí)句子表示。文中提出dropout+對(duì)比學(xué)習(xí)和NLI+對(duì)比學(xué)習(xí),都非常有利于句子表示的學(xué)習(xí)。SimCSE大幅刷新STS任務(wù)榜單,取得了新一輪的SOTA。
這篇文章讓小花很愛的一點(diǎn)是,明明是我們習(xí)以為常的dropuout和早就熟悉透了的的NLI數(shù)據(jù),但是本文的作者們卻能從一個(gè)全新的角度看待它們,將它們與比學(xué)習(xí)建立聯(lián)系,取得非常顯著的提升,并合理地解釋為什么work。
尋求報(bào)道、約稿、文案投放:
添加微信xixiaoyao-1,備注“商務(wù)合作”
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
?
[1] Wang, T., & Isola, P. (2020). Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere. ICML. https://arxiv.org/pdf/2005.10242.pdf
總結(jié)
以上是生活随笔為你收集整理的丹琦女神新作:对比学习,简单到只需要Dropout两下的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东 | NLP人才联合培养计划
- 下一篇: Transformer太深不行?NUS字