真正的利器:對比學(xué)習(xí)SimCSE

最近看了一篇最新的Sentence Embedding論文,今年4月份的,丹琦大神發(fā)表的《Simple Contrastive Learning of Sentence Embeddings》, 簡稱就是SimCSE,直譯過來就是 基于簡單對比學(xué)習(xí)句子嵌入。和沒有對比學(xué)習(xí)的Bert相比,個人認(rèn)為最大的區(qū)別就是:

  • 考慮到了拉大當(dāng)前樣本和不相關(guān)樣本的距離,uniformity。 而原始的Bert僅僅考慮了相似樣本越相似越好,也就是Alignment。

整篇文章的關(guān)鍵詞有兩個,simple 和 Contrastive Learning。接下里,我們分別來看下,如何簡單,又如何對比學(xué)習(xí)。

Contrastive Leaning

釋義

對比學(xué)習(xí),顧名思義,就是兩個事物之間作比對,山羊和綿羊之間相似度高。 山羊和飛機之間相似度低。而其思想就是,讓相似度更加拉近,不相似的之間距離更加遠。有點類似于聚類的思想,類的內(nèi)部距離越小越好,類的外部距離越大越好。其損失函數(shù)的設(shè)計也吻合了上面思想:

損失函數(shù)

假設(shè)我們數(shù)據(jù)集中有兩個相似樣本,xi+xi, 那么他們的輸出為hi+hi, 他們應(yīng)該是相似的,越小越好,距離越近,即分子越小越好。

而分母則是,xi和數(shù)據(jù)集中其他的樣本的距離,不相識的樣本,越大越好,即分母越大越好。
總起來說,就是這個損失越小,越能達到對比學(xué)習(xí)的思想。

評價指標(biāo)

引入兩個指標(biāo)分別刻畫對比學(xué)習(xí)的兩個目標(biāo):

  • Alignment: 代表相似樣本之間距離更近。
    其公式為:


    公式

    所有的樣本和自己的相似樣本做差平方,越小越相似。在下面圖上更直觀:


    image.png

    假設(shè)x和y是相似樣本,那么輸出的向量f(x)和f(y) 越近越好,最好到了一個點上。
  • uniformity
    uniformity是從另一個角度來考慮問題,不相關(guān)的樣本越遠越好。
    其公式為:


    公式

    這個公司可以近似看做熵, 假設(shè)x和y是不相似樣本,那么輸出的向量f(x)和f(y) 越遠,uniformity越小,最好不相關(guān)都滾遠點。
    下面圖上更直觀:

每一家都住在這個圖上,家庭內(nèi)部都住著相似樣本,家之外都不相似,彼此離得越遠越好,也許最理想的境界就是 每一家彼此都離的差不多遠,比較平均的住在這個球上,這樣整體的平均距離才能達到最大,這也就是熵的含義。 因為均勻分布信息熵最高,分布越均勻則保留的信息越多.

SimCSE

原理和損失函數(shù)都有了,接下來是如何構(gòu)造正負例了。 在這文章中,分為兩種情況,分別取構(gòu)建自己的正負例。

Unsupervised SimCSE

image.png

實線箭頭代表正例,虛線代表負例。

  • 正例構(gòu)造: 給定輸入,用Bert Encoder兩次得到的兩個向量和作為正例對。
    由于Bert本身就有隨機DropOut 功能,所以同一句話 走兩次Bert,得到的兩個向量不同,但是是相似的。因為原樣本和生成的正樣本的語義是完全一致的,只是生成的embedding不同而已,可以看做Bert Encoder過程中,對數(shù)據(jù)做了一個小增強。
  • 負例構(gòu)造:使用in-batch negatives的方式,即隨機采樣一個batch中另一個輸入作為的負例。說白了就是batch中其他的樣本就是負例。
  • 損失如下:


    image.png

而且這種dropoutmask 比數(shù)據(jù)增強也強很多,文章中實驗指標(biāo)如下:


image.png

為什么會強這么多呢?這是個好問題

可能是,增強嘛,無非對輸入的原始詞做改變,無論是刪除,替換,回譯等等吧,畢竟是源頭上,離最后的輸出太遠了。而 Dropout基本上是最后的階段,干掉一些神經(jīng)元,可能效果更直接一些。

Supervised SimCSE

image.png

正例就是人工標(biāo)注的相關(guān)的,負例就是batch中其他的負樣本。
損失函數(shù):


image.png

如下圖:


image.png

Two dogs are running. 和 There are animals outdoors. 是人工標(biāo)注的相關(guān)的兩句話,所以是正例,用實線連接的。
其他的都是負例,用虛線連接的。同一個batch的中的。

總結(jié)

整篇論文,我覺的兩個亮點:
1.考慮到了拉大當(dāng)前樣本和不相關(guān)樣本的距離,uniformity。 而原始的Bert僅僅考慮了相似樣本越相似越好,不會考慮不同的樣本間的距離增大,也就是Alignment。

  1. Dropout在Encoder內(nèi)部干預(yù),要比源頭增強更好,更直接。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 機器學(xué)習(xí)基礎(chǔ)總結(jié) 一、其它 1. 機器學(xué)習(xí)的編程流程 模型的訓(xùn)練過程a. 數(shù)據(jù)的加載b. 數(shù)據(jù)的清洗c. 數(shù)據(jù)的分...
    瀟蕭之炎閱讀 446評論 0 0
  • 機器學(xué)習(xí)是做NLP和計算機視覺這類應(yīng)用算法的基礎(chǔ),雖然現(xiàn)在深度學(xué)習(xí)模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間...
    在河之簡閱讀 20,883評論 4 65
  • 以西瓜書為主線,以其他書籍作為參考進行補充,例如《統(tǒng)計學(xué)習(xí)方法》,《PRML》等 第一章 緒論 1.2 基本術(shù)語 ...
    danielAck閱讀 4,888評論 0 5
  • 1 為什么要對特征做歸一化 特征歸一化是將所有特征都統(tǒng)一到一個大致相同的數(shù)值區(qū)間內(nèi),通常為[0,1]。常用的特征歸...
    顧子豪閱讀 7,099評論 2 22
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,549評論 0 4

友情鏈接更多精彩內(nèi)容