日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CoSENT:比Sentence-BERT更有效的句向量方案

發布時間:2024/10/8 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CoSENT:比Sentence-BERT更有效的句向量方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?PaperWeekly 原創 · 作者 | 蘇劍林

單位 | 追一科技

研究方向 | NLP、神經網絡

學習句向量的方案大致上可以分為無監督和有監督兩大類,其中有監督句向量比較主流的方案是 Facebook 提出的“InferSent” [1],而后的“Sentence-BERT” [2] 進一步在 BERT 上肯定了它的有效性。然而,不管是 InferSent 還是 Sentence-BERT,它們在理論上依然相當令人迷惑,因為它們雖然有效,但存在訓練和預測不一致的問題,而如果直接優化預測目標 cos 值,效果往往特別差。

最近,筆者再次思考了這個問題,經過近一周的分析和實驗,大致上確定了 InferSent 有效以及直接優化 cos 值無效的原因,并提出了一個優化 cos 值的新方案 CoSENT(Cosine Sentence)。實驗顯示,CoSENT 在收斂速度和最終效果上普遍都比 InferSent 和 Sentence-BERT 要好。

樸素思路

本文的場景是利用文本匹配的標注數據來構建句向量模型,其中所利用到的標注數據是常見的句子對樣本,即每條樣本是“(句子 1, 句子 2, 標簽)”的格式,它們又大致上可以分類“是非類型”、“NLI 類型”、“打分類型”三種,參考《用開源的人工標注數據來增強 RoFormer-Sim》中的“分門別類”一節。

失效的Cos

簡單起見,我們可以先只考慮“是非類型”的數據,即“(句子 1, 句子 2, 是否相似)”的樣本。假設兩個句子經過編碼模型后分別得到向量 ,由于檢索階段計算的是余弦相似度 ,所以比較自然的想法是設計基于 的損失函數,比如

其中 表示是否相似。類似的 loss 還可以寫出很多,大致的意思都是讓正樣本對的相似度盡可能大、負樣本對的相似度盡可能小。然而,直接優化這些目標的實驗結果往往特別差(至少明顯比 InferSent 要差),在某些情況下甚至還不如隨機初始化的效果。

難搞的閾值

這是因為,通常文本匹配語料中標注出來的負樣本對都是“困難樣本”,常見的是語義不相同但字面上有比較多的重合。此時,如果我們用式(1)作為損失函數,那么正樣本對的目標是 1、負樣本對的目標是 -1,如果我們用式(2)作為損失函數,那么正樣本對的目標是 1、負樣本對的目標是 0。

不管哪一種,負樣本對的目標都“過低”了,因為對于“困難樣本”來說,雖然語義不同,但依然是“相似”,相似度不至于 0 甚至 -1 那么低,如果強行讓它們往 0、-1 學,那么通常的后果就是造成過度學習,從而失去了泛化能力,又或者是優化過于困難,導致根本學不動。

要驗證這個結論很簡單,只需要把訓練集的負樣本換成隨機采樣的樣本對(視作更弱的負樣本對),然后用上述 loss 進行訓練,就會發現效果反而會變好。如果不改變負樣本對,那么緩解這個問題的一個方法是給負樣本對設置更高的閾值,比如

這樣一來,負樣本對的相似度只要低于 0.7 就不優化了,從而就不那么容易過度學習了。但這僅僅是緩解,效果也很難達到最優,而且如何選取這個閾值依然是比較困難的問題。

InferSent

讓人倍感神奇的是,訓練和預測不一致的 InferSent 和 Sentence-BERT,卻在這個問題上表現良好。以 Sentence-BERT 為例,它的訓練階段是將 (其中 是指 的每個元素都取絕對值后構成的向量)拼接起來做為特征,后面接一個全連接層做 2 分類(如果是 NLI 數據集則是 3 分類),而在預測階段,還是跟普通的句向量模型一樣,先計算句向量然后算 cos 值作為相似度。如下圖所示:

▲ 訓練階段的Sentence-BERT

▲ 預測階段的Sentence-BERT

再閉門造車

為什么 InferSent 和 Sentence-BERT 會有效?在《用開源的人工標注數據來增強RoFormer-Sim》中的“閉門造車”一節筆者給出了一個基于容錯性的解釋,而經過這段時間的思考,筆者對這個問題有了一個新的理解,這里再跟大家分享交流一下。

一般情況下,哪怕負樣本對是“困難樣本”,總體而言正樣本對的字面相似度是大于負樣本對的,這樣一來,哪怕是對于初始模型,正樣本對的差距 總體較小,而負樣本對的差距 總體較大,我們可以想象正樣本對的 主要分布在一個半徑較小的球面附近,而負樣本對的 分布在一個半徑較大的球面附近,也就是說,初始階段 本身就有聚類傾向,我們接下來只需要根據標簽信息強化這種聚類傾向,使得正樣本對的 依然保持更小,負樣本對的 保持更大。一個直接的做法就是 后面接一個 Dense 分類器,然而常規的分類器是基于內積的,它沒法區分兩個分布在不同球面的類別,所以我們加上絕對值變成 ,將球面變為錐形,此時就可以用 Dense 分類層來分類了。這就是筆者認為的 的來源。

至于 的拼接,筆者認為是用來消除各向異性的。像“BERT+[CLS]”的句向量模型,在初始階段具有嚴重的各向異性,這種各向異性對句向量的效果有著比較嚴重的負面影響,而 只是向量的相對差距,無法明顯改善這種各向異性。而 拼接之后接 Dense 層,由于 Dense 層的類別向量是隨機初始化的,所以相當于給了 一個隨機的優化方向,迫使它們各自“散開”,遠離當前的各向異性狀態。

潛在的問題

InferSent 和 Sentence-BERT 雖然有效,但也存在比較明顯的問題。

比如,前面說了它有效的原因是初始階段就有聚類傾向,而標簽訓練只是強化這個聚類傾向信息,所以“初始階段就有聚類傾向”就顯得相當重要,它意味著其效果比較依賴于初始模型,比如“BERT+平均池化”的最終效果就優于“BERT+[CLS]”,因為前者在初始階段的區分度就更好。

此外,InferSent 和 Sentence-BERT 終究是訓練和預測不一致的方案,所以存在一定的概率會“訓崩”,具體表現為訓練 loss 還在下降,訓練 acc 還在提升,但是基于余弦值的評測指標(如 Spearman 系數)卻明顯下降,哪怕是訓練集也是如此。這說明訓練還是正常進行的,但是已經脫離了“正樣本對的 更小、負樣本對的 更大”的分類依據,從而余弦值就崩了。

InferSent 和 Sentence-BERT 還存在調優困難問題,這同樣是因為訓練和預測的不一致性,導致我們很難確定對哪些訓練過程的調整會給預測結果帶來正面幫助。

CoSENT

簡單來說,就是 InferSent 和 Sentence-BERT 算是一種可用的方案,但存在諸多的不確定性。那難道優化 cos 值就真的沒有出頭之日了嗎?當然不是。早前的 SimCSE 其實也有一個有監督版,它也是直接優化 cos 值,但它要用到“(原始句子, 相似句子, 不相似句子)”格式的三元組數據。而本文提出的 CoSENT,則進一步改進了上述思路,使得訓練過程只用到句子對樣本。

新損失函數

我們記 為所有的正樣本對集合, 為所有的負樣本對集合,其實我們是希望對于任意的正樣本對 和負樣本對 ,都有

其實 是它們各自的句向量。說白了,我們只希望正樣本對的相似度大于負樣本對的相似度,至于大多少,模型自己決定就好。事實上語義相似度常見的評價指標 spearman也 是一樣,它只依賴于預測結果的相對順序,而不依賴于具體的值。

在《將“softmax+交叉熵”推廣到多標簽分類問題》中,我們介紹了處理這類需求的一個有效方案,那就是 Circle Loss 理論里邊的公式 (1):

簡單來說,就是如果你希望最終實現 ,那么就往 里邊加入 一項。對應我們這里的場景,我們可以得到損失函數

其中 是一個超參數,本文后面的實驗取了 20。這就是 CoSENT 的核心內容了,它是一個優化 cos 值的新的損失函數。

通用的排序

可能有讀者質疑:就算這里的式(6)真的可用,那也只適用于二分類數據,像 NLI 數據是 3 分類的就不能用了?

事實上,式(6)本質上是一個為排序設計的損失函數,它可以更加通用地寫成:

也就是說,只要我們認為樣本對 的真實相似度應該大于 的真實相似度,就可以往 里邊加入 ;換句話說,只要我們能夠為樣本對設計順序,那么就可以用式(7)。

對于 NLI 數據而言,它有“蘊含”、“中立”、“矛盾”三種標簽,我們自然可以認為兩個“蘊含”的句子相似度大于兩個“中立”的句子,而兩個“中立”的句子相似度大于兩個“矛盾”的句子,這樣基于這三種標簽就可以為 NLI 的句子對排序了。而有了這個排序后,NLI 數據也可以用 CoSENT 來訓練了。類似地,對于 STS-B 這種本身就是打分的數據,就更適用于 CoSENT 了,因為打分標簽本身就是排序信息。

當然,如果多類別之間沒有這種序關系,那就不能用 CoSENT 了。然而,對于無法構建序關系的多類別句子對數據,InferSent 和 Sentence-BERT 能否出合理的句向量模型,筆者也是持懷疑態度。目前沒看到類似的數據集,也就無從驗證了。

優秀的效果

筆者在多個中文數據集上對 CoSENT 進行了實驗,分別比較了在原有訓練集上訓練以及在 NLI 數據集訓練兩種方案,大多數實驗結果都表明 CoSENT 明顯優于 Sentence-BERT。測試數據集同《無監督語義相似度哪家強?我們做了個比較全面的評測》,每個數據集都被劃分為 train、valid、test 三部分,評測指標是預測值和標簽的 spearman 系數。

實驗代碼:

https://github.com/bojone/CoSENT

下面是用各自的 train 集進行訓練后,test 集的效果:

下面則是用開源的 NLI 數據作為訓練集進行訓練后,每個任務的 test 集的效果:

可以看到,大多數任務上 CoSENT 都有較為明顯的提升,而個別有任務上的下降也是比較小的(1% 以內),原生訓練的平均提升幅度超過 6%,而 NLI 訓練的平均提升幅度也有 1% 左右。

此外,CoSENT 還有更快的收斂速度,比如“BERT+CoSENT+ATEC”的原生訓練,第一個 epoch 的 valid 結果就有 48.78,而對應的“Sentence-BERT+ATEC”只有 41.54;“RoBERTa+CoSENT+PAWSX”的原生訓練,第一個 epoch 的 valid 結果就有 57.66,而對應的“Sentence-RoBERTa+PAWSX”只有 10.84;等等。

聯系與區別

可能有的讀者會問式(6)或式(7)跟 SimCSE 或對比學習有什么不同?從損失函數的形式上來看兩者確有一點相似之處,但含義完全不同的。

標準的 SimCSE 是只需要正樣本對的(通過 Dropout 或者人工標注構建),然后它將 batch 內的所有其他樣本都視為負樣本;而有監督版的 SimCSE 則是需要三元組的數據,它實際上就是把困難樣本補充到標準的 SimCSE上,即負樣本不只有 batch 內的所有其他樣本,還有標注的困難樣本,但同時正樣本依然不能缺,所以需要“(原始句子, 相似句子, 不相似句子)”的三元組數據。

至于 CoSENT,它只用到了標注好的正負樣本對,也不包含隨機采樣 batch 內的其他樣本來構建負樣本的過程,我們也可以將它理解為對比學習,但它是“樣本對”的對比學習,而不是像 SimCSE 的“樣本”對比學習,也就是說,它的“單位”是一對句子而不是一個句子。

文章小結

本文提出了一種新的有監督句向量方案 CoSENT(Cosine Sentence),相比于 InferSent 和 Sentence-BERT,它的訓練過程更貼近預測,并且實驗顯示,CoSENT 在收斂速度和最終效果上都普遍比 InferSent 和 Sentence-BERT 要好。

參考文獻

[1] https://arxiv.org/abs/1705.02364

[2] https://arxiv.org/abs/1908.10084

特別鳴謝

感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。

更多閱讀

#投 稿?通 道#

?讓你的文字被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。

📝?稿件基本要求:

? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?

? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題

? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算

📬?投稿通道:

? 投稿郵箱:hr@paperweekly.site?

? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者

? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿

△長按添加PaperWeekly小編

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

·

總結

以上是生活随笔為你收集整理的CoSENT:比Sentence-BERT更有效的句向量方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。