CoSENT:比Sentence-BERT更有效的句向量方案
?PaperWeekly 原創(chuàng) · 作者 | 蘇劍林
單位 | 追一科技
研究方向 | NLP、神經(jīng)網(wǎng)絡(luò)
學(xué)習(xí)句向量的方案大致上可以分為無監(jiān)督和有監(jiān)督兩大類,其中有監(jiān)督句向量比較主流的方案是 Facebook 提出的“InferSent” [1],而后的“Sentence-BERT” [2] 進(jìn)一步在 BERT 上肯定了它的有效性。然而,不管是 InferSent 還是 Sentence-BERT,它們在理論上依然相當(dāng)令人迷惑,因為它們雖然有效,但存在訓(xùn)練和預(yù)測不一致的問題,而如果直接優(yōu)化預(yù)測目標(biāo) cos 值,效果往往特別差。
最近,筆者再次思考了這個問題,經(jīng)過近一周的分析和實驗,大致上確定了 InferSent 有效以及直接優(yōu)化 cos 值無效的原因,并提出了一個優(yōu)化 cos 值的新方案 CoSENT(Cosine Sentence)。實驗顯示,CoSENT 在收斂速度和最終效果上普遍都比 InferSent 和 Sentence-BERT 要好。
樸素思路
本文的場景是利用文本匹配的標(biāo)注數(shù)據(jù)來構(gòu)建句向量模型,其中所利用到的標(biāo)注數(shù)據(jù)是常見的句子對樣本,即每條樣本是“(句子 1, 句子 2, 標(biāo)簽)”的格式,它們又大致上可以分類“是非類型”、“NLI 類型”、“打分類型”三種,參考《用開源的人工標(biāo)注數(shù)據(jù)來增強(qiáng) RoFormer-Sim》中的“分門別類”一節(jié)。
失效的Cos
簡單起見,我們可以先只考慮“是非類型”的數(shù)據(jù),即“(句子 1, 句子 2, 是否相似)”的樣本。假設(shè)兩個句子經(jīng)過編碼模型后分別得到向量 ,由于檢索階段計算的是余弦相似度 ,所以比較自然的想法是設(shè)計基于 的損失函數(shù),比如
其中 表示是否相似。類似的 loss 還可以寫出很多,大致的意思都是讓正樣本對的相似度盡可能大、負(fù)樣本對的相似度盡可能小。然而,直接優(yōu)化這些目標(biāo)的實驗結(jié)果往往特別差(至少明顯比 InferSent 要差),在某些情況下甚至還不如隨機(jī)初始化的效果。
難搞的閾值
這是因為,通常文本匹配語料中標(biāo)注出來的負(fù)樣本對都是“困難樣本”,常見的是語義不相同但字面上有比較多的重合。此時,如果我們用式(1)作為損失函數(shù),那么正樣本對的目標(biāo)是 1、負(fù)樣本對的目標(biāo)是 -1,如果我們用式(2)作為損失函數(shù),那么正樣本對的目標(biāo)是 1、負(fù)樣本對的目標(biāo)是 0。
不管哪一種,負(fù)樣本對的目標(biāo)都“過低”了,因為對于“困難樣本”來說,雖然語義不同,但依然是“相似”,相似度不至于 0 甚至 -1 那么低,如果強(qiáng)行讓它們往 0、-1 學(xué),那么通常的后果就是造成過度學(xué)習(xí),從而失去了泛化能力,又或者是優(yōu)化過于困難,導(dǎo)致根本學(xué)不動。
要驗證這個結(jié)論很簡單,只需要把訓(xùn)練集的負(fù)樣本換成隨機(jī)采樣的樣本對(視作更弱的負(fù)樣本對),然后用上述 loss 進(jìn)行訓(xùn)練,就會發(fā)現(xiàn)效果反而會變好。如果不改變負(fù)樣本對,那么緩解這個問題的一個方法是給負(fù)樣本對設(shè)置更高的閾值,比如
這樣一來,負(fù)樣本對的相似度只要低于 0.7 就不優(yōu)化了,從而就不那么容易過度學(xué)習(xí)了。但這僅僅是緩解,效果也很難達(dá)到最優(yōu),而且如何選取這個閾值依然是比較困難的問題。
InferSent
讓人倍感神奇的是,訓(xùn)練和預(yù)測不一致的 InferSent 和 Sentence-BERT,卻在這個問題上表現(xiàn)良好。以 Sentence-BERT 為例,它的訓(xùn)練階段是將 (其中 是指 的每個元素都取絕對值后構(gòu)成的向量)拼接起來做為特征,后面接一個全連接層做 2 分類(如果是 NLI 數(shù)據(jù)集則是 3 分類),而在預(yù)測階段,還是跟普通的句向量模型一樣,先計算句向量然后算 cos 值作為相似度。如下圖所示:
▲ 訓(xùn)練階段的Sentence-BERT
▲ 預(yù)測階段的Sentence-BERT
再閉門造車
為什么 InferSent 和 Sentence-BERT 會有效?在《用開源的人工標(biāo)注數(shù)據(jù)來增強(qiáng)RoFormer-Sim》中的“閉門造車”一節(jié)筆者給出了一個基于容錯性的解釋,而經(jīng)過這段時間的思考,筆者對這個問題有了一個新的理解,這里再跟大家分享交流一下。
一般情況下,哪怕負(fù)樣本對是“困難樣本”,總體而言正樣本對的字面相似度是大于負(fù)樣本對的,這樣一來,哪怕是對于初始模型,正樣本對的差距 總體較小,而負(fù)樣本對的差距 總體較大,我們可以想象正樣本對的 主要分布在一個半徑較小的球面附近,而負(fù)樣本對的 分布在一個半徑較大的球面附近,也就是說,初始階段 本身就有聚類傾向,我們接下來只需要根據(jù)標(biāo)簽信息強(qiáng)化這種聚類傾向,使得正樣本對的 依然保持更小,負(fù)樣本對的 保持更大。一個直接的做法就是 后面接一個 Dense 分類器,然而常規(guī)的分類器是基于內(nèi)積的,它沒法區(qū)分兩個分布在不同球面的類別,所以我們加上絕對值變成 ,將球面變?yōu)殄F形,此時就可以用 Dense 分類層來分類了。這就是筆者認(rèn)為的 的來源。
至于 的拼接,筆者認(rèn)為是用來消除各向異性的。像“BERT+[CLS]”的句向量模型,在初始階段具有嚴(yán)重的各向異性,這種各向異性對句向量的效果有著比較嚴(yán)重的負(fù)面影響,而 只是向量的相對差距,無法明顯改善這種各向異性。而 拼接之后接 Dense 層,由于 Dense 層的類別向量是隨機(jī)初始化的,所以相當(dāng)于給了 一個隨機(jī)的優(yōu)化方向,迫使它們各自“散開”,遠(yuǎn)離當(dāng)前的各向異性狀態(tài)。
潛在的問題
InferSent 和 Sentence-BERT 雖然有效,但也存在比較明顯的問題。
比如,前面說了它有效的原因是初始階段就有聚類傾向,而標(biāo)簽訓(xùn)練只是強(qiáng)化這個聚類傾向信息,所以“初始階段就有聚類傾向”就顯得相當(dāng)重要,它意味著其效果比較依賴于初始模型,比如“BERT+平均池化”的最終效果就優(yōu)于“BERT+[CLS]”,因為前者在初始階段的區(qū)分度就更好。
此外,InferSent 和 Sentence-BERT 終究是訓(xùn)練和預(yù)測不一致的方案,所以存在一定的概率會“訓(xùn)崩”,具體表現(xiàn)為訓(xùn)練 loss 還在下降,訓(xùn)練 acc 還在提升,但是基于余弦值的評測指標(biāo)(如 Spearman 系數(shù))卻明顯下降,哪怕是訓(xùn)練集也是如此。這說明訓(xùn)練還是正常進(jìn)行的,但是已經(jīng)脫離了“正樣本對的 更小、負(fù)樣本對的 更大”的分類依據(jù),從而余弦值就崩了。
InferSent 和 Sentence-BERT 還存在調(diào)優(yōu)困難問題,這同樣是因為訓(xùn)練和預(yù)測的不一致性,導(dǎo)致我們很難確定對哪些訓(xùn)練過程的調(diào)整會給預(yù)測結(jié)果帶來正面幫助。
CoSENT
簡單來說,就是 InferSent 和 Sentence-BERT 算是一種可用的方案,但存在諸多的不確定性。那難道優(yōu)化 cos 值就真的沒有出頭之日了嗎?當(dāng)然不是。早前的 SimCSE 其實也有一個有監(jiān)督版,它也是直接優(yōu)化 cos 值,但它要用到“(原始句子, 相似句子, 不相似句子)”格式的三元組數(shù)據(jù)。而本文提出的 CoSENT,則進(jìn)一步改進(jìn)了上述思路,使得訓(xùn)練過程只用到句子對樣本。
新?lián)p失函數(shù)
我們記 為所有的正樣本對集合, 為所有的負(fù)樣本對集合,其實我們是希望對于任意的正樣本對 和負(fù)樣本對 ,都有
其實 是它們各自的句向量。說白了,我們只希望正樣本對的相似度大于負(fù)樣本對的相似度,至于大多少,模型自己決定就好。事實上語義相似度常見的評價指標(biāo) spearman也 是一樣,它只依賴于預(yù)測結(jié)果的相對順序,而不依賴于具體的值。
在《將“softmax+交叉熵”推廣到多標(biāo)簽分類問題》中,我們介紹了處理這類需求的一個有效方案,那就是 Circle Loss 理論里邊的公式 (1):
簡單來說,就是如果你希望最終實現(xiàn) ,那么就往 里邊加入 一項。對應(yīng)我們這里的場景,我們可以得到損失函數(shù)
其中 是一個超參數(shù),本文后面的實驗取了 20。這就是 CoSENT 的核心內(nèi)容了,它是一個優(yōu)化 cos 值的新的損失函數(shù)。
通用的排序
可能有讀者質(zhì)疑:就算這里的式(6)真的可用,那也只適用于二分類數(shù)據(jù),像 NLI 數(shù)據(jù)是 3 分類的就不能用了?
事實上,式(6)本質(zhì)上是一個為排序設(shè)計的損失函數(shù),它可以更加通用地寫成:
也就是說,只要我們認(rèn)為樣本對 的真實相似度應(yīng)該大于 的真實相似度,就可以往 里邊加入 ;換句話說,只要我們能夠為樣本對設(shè)計順序,那么就可以用式(7)。
對于 NLI 數(shù)據(jù)而言,它有“蘊含”、“中立”、“矛盾”三種標(biāo)簽,我們自然可以認(rèn)為兩個“蘊含”的句子相似度大于兩個“中立”的句子,而兩個“中立”的句子相似度大于兩個“矛盾”的句子,這樣基于這三種標(biāo)簽就可以為 NLI 的句子對排序了。而有了這個排序后,NLI 數(shù)據(jù)也可以用 CoSENT 來訓(xùn)練了。類似地,對于 STS-B 這種本身就是打分的數(shù)據(jù),就更適用于 CoSENT 了,因為打分標(biāo)簽本身就是排序信息。
當(dāng)然,如果多類別之間沒有這種序關(guān)系,那就不能用 CoSENT 了。然而,對于無法構(gòu)建序關(guān)系的多類別句子對數(shù)據(jù),InferSent 和 Sentence-BERT 能否出合理的句向量模型,筆者也是持懷疑態(tài)度。目前沒看到類似的數(shù)據(jù)集,也就無從驗證了。
優(yōu)秀的效果
筆者在多個中文數(shù)據(jù)集上對 CoSENT 進(jìn)行了實驗,分別比較了在原有訓(xùn)練集上訓(xùn)練以及在 NLI 數(shù)據(jù)集訓(xùn)練兩種方案,大多數(shù)實驗結(jié)果都表明 CoSENT 明顯優(yōu)于 Sentence-BERT。測試數(shù)據(jù)集同《無監(jiān)督語義相似度哪家強(qiáng)?我們做了個比較全面的評測》,每個數(shù)據(jù)集都被劃分為 train、valid、test 三部分,評測指標(biāo)是預(yù)測值和標(biāo)簽的 spearman 系數(shù)。
實驗代碼:
https://github.com/bojone/CoSENT
下面是用各自的 train 集進(jìn)行訓(xùn)練后,test 集的效果:
下面則是用開源的 NLI 數(shù)據(jù)作為訓(xùn)練集進(jìn)行訓(xùn)練后,每個任務(wù)的 test 集的效果:
可以看到,大多數(shù)任務(wù)上 CoSENT 都有較為明顯的提升,而個別有任務(wù)上的下降也是比較小的(1% 以內(nèi)),原生訓(xùn)練的平均提升幅度超過 6%,而 NLI 訓(xùn)練的平均提升幅度也有 1% 左右。
此外,CoSENT 還有更快的收斂速度,比如“BERT+CoSENT+ATEC”的原生訓(xùn)練,第一個 epoch 的 valid 結(jié)果就有 48.78,而對應(yīng)的“Sentence-BERT+ATEC”只有 41.54;“RoBERTa+CoSENT+PAWSX”的原生訓(xùn)練,第一個 epoch 的 valid 結(jié)果就有 57.66,而對應(yīng)的“Sentence-RoBERTa+PAWSX”只有 10.84;等等。
聯(lián)系與區(qū)別
可能有的讀者會問式(6)或式(7)跟 SimCSE 或?qū)Ρ葘W(xué)習(xí)有什么不同?從損失函數(shù)的形式上來看兩者確有一點相似之處,但含義完全不同的。
標(biāo)準(zhǔn)的 SimCSE 是只需要正樣本對的(通過 Dropout 或者人工標(biāo)注構(gòu)建),然后它將 batch 內(nèi)的所有其他樣本都視為負(fù)樣本;而有監(jiān)督版的 SimCSE 則是需要三元組的數(shù)據(jù),它實際上就是把困難樣本補充到標(biāo)準(zhǔn)的 SimCSE上,即負(fù)樣本不只有 batch 內(nèi)的所有其他樣本,還有標(biāo)注的困難樣本,但同時正樣本依然不能缺,所以需要“(原始句子, 相似句子, 不相似句子)”的三元組數(shù)據(jù)。
至于 CoSENT,它只用到了標(biāo)注好的正負(fù)樣本對,也不包含隨機(jī)采樣 batch 內(nèi)的其他樣本來構(gòu)建負(fù)樣本的過程,我們也可以將它理解為對比學(xué)習(xí),但它是“樣本對”的對比學(xué)習(xí),而不是像 SimCSE 的“樣本”對比學(xué)習(xí),也就是說,它的“單位”是一對句子而不是一個句子。
文章小結(jié)
本文提出了一種新的有監(jiān)督句向量方案 CoSENT(Cosine Sentence),相比于 InferSent 和 Sentence-BERT,它的訓(xùn)練過程更貼近預(yù)測,并且實驗顯示,CoSENT 在收斂速度和最終效果上都普遍比 InferSent 和 Sentence-BERT 要好。
參考文獻(xiàn)
[1] https://arxiv.org/abs/1705.02364
[2] https://arxiv.org/abs/1908.10084
特別鳴謝
感謝 TCCI 天橋腦科學(xué)研究院對于 PaperWeekly 的支持。TCCI 關(guān)注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。
總有一些你不認(rèn)識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)術(shù)熱點剖析、科研心得或競賽經(jīng)驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創(chuàng)作品,未曾在公開渠道發(fā)表,如為其他平臺已發(fā)表或待發(fā)表的文章,請明確標(biāo)注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發(fā)送,要求圖片清晰,無版權(quán)問題
? PaperWeekly 尊重原作者署名權(quán),并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內(nèi)具有競爭力稿酬,具體依據(jù)文章閱讀量和文章質(zhì)量階梯制結(jié)算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯(lián)系方式(微信),以便我們在稿件選用的第一時間聯(lián)系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
·
總結(jié)
以上是生活随笔為你收集整理的CoSENT:比Sentence-BERT更有效的句向量方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚂蚁借呗不能借钱了
- 下一篇: 史上最全推荐系统传统算法合集