用开源的人工标注数据来增强RoFormer-Sim
?PaperWeekly 原創(chuàng) ·?作者?|?蘇劍林
單位?|?追一科技
研究方向?|?NLP、神經(jīng)網(wǎng)絡(luò)
大家知道,從 SimBERT [1] 到 SimBERTv2(RoFormer-Sim),我們算是為中文文本相似度任務(wù)建立了一個(gè)還算不錯(cuò)的基準(zhǔn)模型。然而,SimBERT 和 RoFormer-Sim 本質(zhì)上都只是“弱監(jiān)督”模型,跟“無(wú)監(jiān)督”類(lèi)似,我們不能指望純?nèi)醣O(jiān)督的模型能達(dá)到完美符合人的認(rèn)知效果。所以,為了進(jìn)一步提升 RoFormer-Sim 的效果,我們嘗試了使用開(kāi)源的一些標(biāo)注數(shù)據(jù)來(lái)輔助訓(xùn)練。本文就來(lái)介紹我們的探索過(guò)程。
有的讀者可能想:有監(jiān)督有啥好講的?不就是直接訓(xùn)練么?說(shuō)是這么說(shuō),但其實(shí)并沒(méi)有那么“顯然易得”,還是有些“雷區(qū)”的,所以本文也算是一份簡(jiǎn)單的“掃雷指南”吧。
前情回顧
筆者發(fā)現(xiàn),自從 SimBERT 發(fā)布后,讀者問(wèn)得最多的問(wèn)題大概是:
為什么“我喜歡北京”跟“我不喜歡北京”相似度這么高?它們不是意思相反嗎?
尤其是 RoFormer-Sim 發(fā)布之后,類(lèi)似的問(wèn)題幾乎一兩周就出現(xiàn)一次。此外,不止筆者自己的科學(xué)空間交流群,別的 NLP 相關(guān)的群也時(shí)不時(shí)冒出差不多的問(wèn)題,說(shuō)明類(lèi)似的疑惑是普遍存在的。
那么,怎么理解這件事呢?
首先,“意思相反”這個(gè)認(rèn)知是不對(duì)的,從相似的角度來(lái)看,只有“相似”、“不相似”的說(shuō)法,并沒(méi)有“相反”的說(shuō)法,原則上來(lái)看,沒(méi)有兩個(gè)絕對(duì)毫無(wú)關(guān)聯(lián)的句子,所以理論上沒(méi)有哪兩個(gè)句子的相似度為 0,更不用說(shuō)沒(méi)有明確定義的“相反”了。而恰恰相反,我們通常認(rèn)為的“反義詞”,從客觀上來(lái)看,它們都算是比較相似的詞,比如“喜歡”和“討厭”,它們的共性多了去了:都是動(dòng)詞,都是描述情感傾向,用法也差不多,所以我們?cè)趺茨苷f(shuō)這兩個(gè)詞“毫不相似”甚至“相反”?我們說(shuō)它是反義詞,是指它在某一個(gè)極小的維度下是對(duì)立關(guān)系,要注意,只是某個(gè)維度,不是全部,所以意味著我們這種認(rèn)知本身是非客觀的(這么多維度相似,只有一個(gè)維度不相似,我們就說(shuō)它們是“反義詞”,這還不是不客觀?)。
同理,按照筆者的理解,從客觀角度來(lái)看,“我喜歡北京”跟“我不喜歡北京”就是很相似的,所以模型給出的相似度高是很合理的,給出相似度低才是不合理的。當(dāng)然,我不是說(shuō)“我喜歡北京”跟“我不喜歡北京”在任何場(chǎng)景下都相似,它們確實(shí)是存在對(duì)立的維度,但問(wèn)題是無(wú)監(jiān)督、弱監(jiān)督學(xué)習(xí)出來(lái)的都是比較客觀的結(jié)果,而如果我們認(rèn)為“我喜歡北京”跟“我不喜歡北京”不相似,那么就說(shuō)明我們主觀地挑出了我們要進(jìn)行比較的維度,而不是客觀的全部的維度。而既然是人的主觀行為,我們不應(yīng)該指望無(wú)監(jiān)督、弱監(jiān)督的方法能學(xué)出來(lái),最好的辦法就是標(biāo)注數(shù)據(jù)來(lái)有監(jiān)督學(xué)習(xí)。
所以,說(shuō)白了就是:
模型沒(méi)錯(cuò),錯(cuò)的是人。如果人堅(jiān)持自己沒(méi)錯(cuò),那就請(qǐng)通過(guò)標(biāo)注數(shù)據(jù)有監(jiān)督學(xué)習(xí)的方式來(lái)告訴模型它錯(cuò)了。
分門(mén)別類(lèi)
通過(guò)上述討論,我們應(yīng)該就能理解標(biāo)數(shù)據(jù)有監(jiān)督的必要性了。不是所有問(wèn)題都可以通過(guò)無(wú)監(jiān)督、弱監(jiān)督的方式解決,如果非要想無(wú)監(jiān)督、弱監(jiān)督的方案,其成本可能遠(yuǎn)遠(yuǎn)大于標(biāo)幾條數(shù)據(jù)。
至于相似度相關(guān)的中文人工標(biāo)注數(shù)據(jù),目前收集到的有三種類(lèi)型:
是非類(lèi)型:這種是比較常見(jiàn)的類(lèi)型,主要格式是“(句子 1, 句子 2, 是否相似)”,這里收集到的 ATEC、BQ、LCQMC、PAWSX 都是這種類(lèi)型;
NLI類(lèi)型:NLI 的全稱(chēng)是 Natrual Language Inference(自然語(yǔ)言推理),樣本格式是“(句子 1, 句子 2, 蘊(yùn)涵/中立/矛盾)”,可以視為更為精細(xì)一點(diǎn)的相似度數(shù)據(jù)集,當(dāng)前可以找到的中文 NLI 數(shù)據(jù)集是英文版翻譯過(guò)來(lái)的,鏈接位于 CNSD [2];
打分類(lèi)型:這算是最精細(xì)的相似度語(yǔ)料,格式為“(句子1, 句子2, 相似程度)”,這個(gè)相似程度一般是比 0/1 更細(xì)顆粒度的等級(jí),目前可以找到的中文數(shù)據(jù)集是STS-B [2],也是由對(duì)應(yīng)的英文數(shù)據(jù)集翻譯過(guò)來(lái)的。
由于量比較大的是前 2 種,所以為了處理上的方便,我們直接設(shè)置一個(gè)閾值,將第 3 種的 STS-B 數(shù)據(jù)轉(zhuǎn)化為第 1 種情形,所以可利用的就兩種數(shù)據(jù)格式:1)句子對(duì)的 2 分類(lèi);2)句子對(duì)的 3 分類(lèi)。
出乎意料
文章開(kāi)頭寫(xiě)到,雖然是監(jiān)督訓(xùn)練,但也不是那么“顯然易得”,這主要是因?yàn)橛?xùn)練方式的選擇有點(diǎn)出乎意料。簡(jiǎn)單起見(jiàn),我們先以 2 分類(lèi)的訓(xùn)練樣本為例進(jìn)行說(shuō)明。
假設(shè)兩個(gè)句子通過(guò)編碼器后得到的句向量分別為 u,v,由于在檢索階段我們通常使用它們的余弦值 為相似度進(jìn)行排序,所以很自然的想法就是基于 設(shè)計(jì)損失函數(shù),一些比較容易想到的有:
其中 是該句子對(duì)的標(biāo)簽。上述幾個(gè) loss 的大致意思是讓正樣本對(duì)的 盡量大,讓負(fù)樣本對(duì)的 盡量小。
然而,在筆者的實(shí)驗(yàn)中,這樣的訓(xùn)練和預(yù)測(cè)都一致訓(xùn)練方案,結(jié)果居然都不如出自 InferSent [3]、并且被 Sentence-BERT [4] 沿用的一種看起來(lái)是訓(xùn)練和預(yù)測(cè)不一致的方案。具體來(lái)說(shuō),Sentence-BERT 是將 u,v,|u-v|(其中 |u-v| 是指 u-v 的每個(gè)元素都取絕對(duì)值后構(gòu)成的向量)拼接起來(lái)做為特征,后面接一個(gè)全連接層做 2 分類(lèi)(如果是 NLI 數(shù)據(jù)集則是 3 分類(lèi))。
▲?訓(xùn)練階段的Sentence-BERT
▲?預(yù)測(cè)階段的Sentence-BERT
當(dāng)然,這只是訓(xùn)練方案,使用的時(shí)候,還是把句向量拿出來(lái),用余弦相似度做檢索。這樣看來(lái),InferSent、Sentence-BERT 使用的這種方案,事實(shí)上屬于訓(xùn)練和預(yù)測(cè)不一致的方案,訓(xùn)練的時(shí)候并沒(méi)有直接涉及到 ,預(yù)測(cè)的時(shí)候卻可以用 來(lái)檢索,并且表現(xiàn)還相當(dāng)不錯(cuò),所以不能不說(shuō)出人意料。
閉門(mén)造車(chē)
對(duì)此,筆者也是百思不得其解。筆者留意到,Sentence-BERT 的論文里,還比較了不同的特征拼合方式的最終效果,顯示出 u,v,|u-v| 拼接的效果是最佳的,如果只保留它們的一部分,效果都將會(huì)明顯下降,如下表。
▲ 不同拼接特征的實(shí)驗(yàn)結(jié)果
受到這個(gè)表格的啟發(fā),筆者“閉門(mén)造車(chē)”地構(gòu)思了一種解釋。首先,我們知道,人是非常“挑剔”的,尤其是對(duì)于相似度任務(wù),我們通常是認(rèn)為比較嚴(yán)格的相似才算是相似,但是我們的訓(xùn)練數(shù)據(jù)通常沒(méi)那么精準(zhǔn)。一方面,標(biāo)注本身可能存在噪聲;另一方面,對(duì)于某些樣本對(duì),標(biāo)注人員可能由于它們主題(而不是語(yǔ)義)相同就標(biāo)記為正樣本對(duì)。也就是說(shuō),標(biāo)注數(shù)據(jù)通常沒(méi)有我們要求的那么嚴(yán)格,如果直接用標(biāo)注結(jié)果來(lái)學(xué)習(xí)我們的排序度量,那么反而會(huì)帶來(lái)意外的偏差。
回看 u,v,|u-v| 拼接然后接個(gè)全連接的做法,它的打分函數(shù)相當(dāng)于:
這里的 是對(duì)應(yīng)的參數(shù)向量。其中前兩項(xiàng)打分為 ,如果它很大,并不能說(shuō)明 u,v 很接近,同理如果它很小,也不能說(shuō)明 u,v 差得很遠(yuǎn),它的作用更像是一個(gè)“主題分類(lèi)”模型,用于識(shí)別 u,v 的主題是否一致;而對(duì)于第三項(xiàng),我們知道 ,所以第三項(xiàng)是有能力判斷兩個(gè)向量的近似程度的,它也許代表了真正的“語(yǔ)義相似”。
綜合起來(lái),我們就可以認(rèn)為,u,v,|u-v| 拼接然后接個(gè)全連接的做法,它既包含了判斷兩個(gè)句子主題是否一致的打分,也包含了兩個(gè)句子語(yǔ)義相似的打分,它將“主題”和“語(yǔ)義”分離開(kāi)來(lái),增強(qiáng)了模型對(duì)數(shù)據(jù)的容錯(cuò)性,從而使得最終學(xué)習(xí)出來(lái)的向量更能體現(xiàn)出較為純粹、精準(zhǔn)的“語(yǔ)義”。
魚(yú)與熊掌
通過(guò) Sentence-BERT 的方案,利用開(kāi)源的相似度數(shù)據(jù)集,我們可以學(xué)習(xí)到一個(gè)效果還不錯(cuò)的句向量模型,也即檢索模型,利用它抽取特征并且用余弦相似度作為度量可以得到不錯(cuò)的結(jié)果。但問(wèn)題是,SimBERT、RoFormer-Sim 從來(lái)就不是單純的檢索模型,它希望“魚(yú)與熊掌兼得”——既具備好的檢索效果,又具備生成相似句的能力。
為此,我們通過(guò)上述方式訓(xùn)練好一個(gè) Sentence-BERT 后,通過(guò) SimBERTv2 來(lái)了!融合檢索和生成的 RoFormer-Sim 模型介紹的方案,把 Sentence-BERT 的檢索效果蒸餾到 RoFormer-Sim 上去,從而在保留相似句生成的基礎(chǔ)上提高檢索模型的效果。此外,同尺寸模型之間的蒸餾往往還能提升一點(diǎn)效果,所以我們蒸餾后的 RoFormer-Sim 的檢索效果,其實(shí)還比直接訓(xùn)練得到的 Sentence-BERT 效果要好些。
效果演示
我們把用標(biāo)注數(shù)據(jù)訓(xùn)練好的 RoFormer-Sim 開(kāi)源如下(文件名帶 -ft 的權(quán)重):
https://github.com/ZhuiyiTechnology/roformer-sim
下面是無(wú)監(jiān)督語(yǔ)義相似度哪家強(qiáng)?我們做了個(gè)比較全面的評(píng)測(cè)中的幾個(gè)任務(wù)的測(cè)試結(jié)果(測(cè)試集):
當(dāng)然,經(jīng)過(guò)了監(jiān)督訓(xùn)練,有提升是必然的,這個(gè)表格的意義參考不大。但對(duì)于用戶(hù)來(lái)說(shuō),有現(xiàn)成的模型可用就行了,管它是怎么來(lái)的對(duì)吧。讀者可能更關(guān)心的是,這個(gè)新模型有沒(méi)有解決之前檢索模型的“痛點(diǎn)”,比如能不能拉開(kāi)“我喜歡北京”跟“我不喜歡北京”的差距?下面就來(lái)看一些例子:
>>>?similarity(u'今天天氣不錯(cuò)',?u'今天天氣很好') 0.9769838 >>>?similarity(u'今天天氣不錯(cuò)',?u'今天天氣不好') 0.62359834 >>>?similarity(u'我喜歡北京',?u'我很喜歡北京') 0.9921096 >>>?similarity(u'我喜歡北京',?u'我不喜歡北京') 0.5291042 >>>?similarity(u'電影不錯(cuò)',?u'電影很好') 0.96764225 >>>?similarity(u'電影不錯(cuò)',?u'電影不好') 0.6312722 >>>?similarity(u'紅色的蘋(píng)果',?u'綠色的蘋(píng)果') 0.6974633 >>>?similarity(u'給我推薦一款紅色的車(chē)',?u'給我推薦一款黑色的車(chē)') 0.7191832 >>>?similarity(u'給我推薦一款紅色的車(chē)',?u'推薦一輛紅車(chē)') 0.9866457 >>>?similarity(u'給我推薦一款紅色的車(chē)',?u'麻煩來(lái)一輛紅車(chē)') 0.9460306從例子可以看出,經(jīng)過(guò)有監(jiān)督訓(xùn)練后,模型確實(shí)能體現(xiàn)出更符合普通常規(guī)認(rèn)知的相似度打分,比如加了“不”字后相似度明顯降低,經(jīng)過(guò)對(duì)比我們發(fā)現(xiàn)這部分效果主要由 NLI 數(shù)據(jù)集帶來(lái)的;還有,對(duì)“紅”、“黑”等顏色也會(huì)更加敏感,尤其是最后三個(gè)例子,體現(xiàn)出它的檢索排序結(jié)果更符合我們常規(guī)的意圖識(shí)別場(chǎng)景。
本文小結(jié)
本文介紹了我們利用標(biāo)注數(shù)據(jù)增強(qiáng) RoFormer-Sim 的過(guò)程,并開(kāi)源了相應(yīng)的訓(xùn)練好的模型,使得中文相似度模型有了一個(gè)效果更好的開(kāi)源可用開(kāi)源的 baseline。
參考文獻(xiàn)
[1] https://kexue.fm/archives/7427
[2] https://github.com/pluto-junzeng/CNSD
[3] https://github.com/pluto-junzeng/CNSD
[4] https://arxiv.org/abs/1705.02364
[5]https://arxiv.org/abs/1908.10084
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識(shí)的人。
總有一些你不認(rèn)識(shí)的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵(lì)高校實(shí)驗(yàn)室或個(gè)人,在我們的平臺(tái)上分享各類(lèi)優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)術(shù)熱點(diǎn)剖析、科研心得或競(jìng)賽經(jīng)驗(yàn)講解等。我們的目的只有一個(gè),讓知識(shí)真正流動(dòng)起來(lái)。
?????稿件基本要求:
? 文章確系個(gè)人原創(chuàng)作品,未曾在公開(kāi)渠道發(fā)表,如為其他平臺(tái)已發(fā)表或待發(fā)表的文章,請(qǐng)明確標(biāo)注?
? 稿件建議以?markdown?格式撰寫(xiě),文中配圖以附件形式發(fā)送,要求圖片清晰,無(wú)版權(quán)問(wèn)題
? PaperWeekly 尊重原作者署名權(quán),并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內(nèi)具有競(jìng)爭(zhēng)力稿酬,具體依據(jù)文章閱讀量和文章質(zhì)量階梯制結(jié)算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來(lái)稿請(qǐng)備注即時(shí)聯(lián)系方式(微信),以便我們?cè)诟寮x用的第一時(shí)間聯(lián)系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長(zhǎng)按添加PaperWeekly小編
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專(zhuān)欄吧
·
總結(jié)
以上是生活随笔為你收集整理的用开源的人工标注数据来增强RoFormer-Sim的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 葡萄夏天四面不漏风能活吗?
- 下一篇: 如何在家里制作最好的饺子?