文本匹配是自然語言處理領(lǐng)域一個基礎(chǔ)且重要的方向,一般研究兩段文本之間的關(guān)系。文本相似度、自然語言推理、問答系統(tǒng)、信息檢索都可以看作針對不同數(shù)據(jù)和場景的文本匹配應(yīng)用。
本文總結(jié)了文本匹配任務(wù)中的經(jīng)典網(wǎng)絡(luò)Siamse Network,它和近期預(yù)訓(xùn)練語言模型的組合,一些調(diào)優(yōu)技巧以及在線下數(shù)據(jù)集上的效果檢驗(yàn)。
Siamese 孿生網(wǎng)絡(luò)
在正式介紹前,我們先來看一個有趣的故事。
孿生網(wǎng)絡(luò)的由來
“Siamese”中的“Siam”是古時泰國的稱呼,中文譯作暹羅,所以“Siamese”就是指“暹羅”人或“泰國”人。“Siamese”在英語中同時表示“孿生”,這又是為什么呢?
十九世紀(jì),泰國出生了一對連體嬰兒“恩”和“昌”,當(dāng)時的醫(yī)學(xué)技術(shù)無法使他們分離出來,于是兩人頑強(qiáng)地生活了一生。
1829年他們被英國商人發(fā)現(xiàn),進(jìn)入馬戲團(tuán),在全世界各地演出。1839年他們訪問美國北卡羅萊那州成為“玲玲馬戲團(tuán)” 的臺柱,最后成為美國公民。1843年4月13日跟英國一對姐妹結(jié)婚,恩生了10個小孩,昌生了12個。1874年,兩人因病均于63歲離開了人間。他們的肝至今仍保存在費(fèi)城的馬特博物館內(nèi)。
從此之后,“暹羅雙胞胎”(Siamese twins)就成了連體人的代名詞,也因?yàn)檫@對雙胞胎全世界開始重視這項特殊疾病。
孿生網(wǎng)絡(luò)
由于結(jié)構(gòu)具有鮮明的對稱性,就像兩個孿生兄弟,所以下圖這種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)被研究人員稱作“Siamese Network”,即孿生網(wǎng)絡(luò)。
其中最能體現(xiàn)“孿生”的地方,在于網(wǎng)絡(luò)具有相同的編碼器(sentence encoder),即將文本轉(zhuǎn)換為高維向量的部分。網(wǎng)絡(luò)隨后對兩段文本的特征進(jìn)行交互,最后完成分類/相似預(yù)測。“孿生網(wǎng)絡(luò)”結(jié)構(gòu)簡單,訓(xùn)練穩(wěn)定,是很多文本任務(wù)不錯的baseline模型。
孿生網(wǎng)絡(luò)的具體用途是衡量兩個輸入文本的相似程度。
例如,現(xiàn)在我們有文本1和2,首先把它們分別輸入 sentence encoder 進(jìn)行特征提取和編碼,將輸入映射到新的空間得到特征向量u和v;最終通過u、v的拼接組合,經(jīng)過下游網(wǎng)絡(luò)來計算文本1和2的相似性。
整個過程有2個值得關(guān)注的點(diǎn):
在訓(xùn)練和測試中,模型的編碼器是權(quán)重共享的(“孿生”);編碼器的選擇非常廣泛,傳統(tǒng)的CNN、RNN和Attention、Transformer都可以
得到特征u、v后,可以直接使用cosine距離、歐式距離得到兩個文本的相似度;不過更通用的做法是,基于u和v構(gòu)建用于匹配兩者關(guān)系的特征向量,然后用額外的模型學(xué)習(xí)通用的文本關(guān)系映射;畢竟我們的場景不一定只是衡量相似度,可能還有問答、蘊(yùn)含等復(fù)雜任務(wù)
????????三連體網(wǎng)絡(luò)????????
基于孿生網(wǎng)絡(luò),還有人提出了 Triplet network 三連體網(wǎng)絡(luò)。顧名思義,輸入由三部分組成,文本1,和1相似的文本2,和1不相似的文本3。
訓(xùn)練的目標(biāo)非常樸素,期望讓相同類別間的距離盡可能的小,讓不同類別間的距離盡可能的大,即減小類內(nèi)距,增大類間距。
Sentence-BERT
自從2018年底Bert等預(yù)訓(xùn)練語言模型橫空出世,NLP屆的游戲規(guī)則某種程度上被大幅更改了。在計算資源允許的條件下,Bert成為解決很多問題的首選。甚至有時候拿Bert跑一跑baseline,發(fā)現(xiàn)問題已經(jīng)解決了十之八九。
但是Bert的缺點(diǎn)也很明顯,1.1億參數(shù)量使得推理速度明顯比CNN等傳統(tǒng)網(wǎng)絡(luò)慢了不止一個量級,對資源要求更高,也不適合處理某些任務(wù)。
例如,從10,000條句子中找到最相似的一對句子,由于可能的組合眾多,需要完成49,995,000次推理;在一塊現(xiàn)代V100GPU上使用Bert計算,將消耗65小時。
考慮到孿生網(wǎng)絡(luò)的簡潔有效,有沒有可能將它和Bert強(qiáng)強(qiáng)聯(lián)合呢?
當(dāng)然可以,這正是論文《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》的工作,首次提出了Sentence-Bert模型(以下簡稱SBert)。
SBert在眾多文本匹配工作中(包括語義相似性、推理等)都取得了最優(yōu)結(jié)果。更讓人驚訝的是,前文所述的從10,000條句子尋找最相似pair任務(wù),SBert僅需5秒就能完成!
基于BERT的文本匹配
讓我們簡短回顧此前Bert是怎么處理文本匹配任務(wù)的。
常規(guī)做法是將匹配轉(zhuǎn)換成二分類任務(wù)。輸入的兩個文本拼接成一個序列(中間用特殊符號“SEP”分割),經(jīng)過12層或24層Transformer模塊編碼后,將輸出層的字向量取平均或者取“CLS”位置的特征作為句向量,經(jīng)softmax完成最終分類。
但是論文作者 Nils Reimers 在實(shí)驗(yàn)中指出,這樣的做法產(chǎn)生的結(jié)果并不理想(至少在處理語義檢索和聚類問題時是如此),甚至比Glove詞向量取平均的效果還差。
基于S-BERT的文本匹配
為了讓Bert更好地利用文本信息,作者們在論文中提出了如下的SBert模型。是不是非常眼熟?對,這不就是之前見過的孿生網(wǎng)絡(luò)嘛!
SBert沿用了孿生網(wǎng)絡(luò)的結(jié)構(gòu),文本Encoder部分用同一個Bert來處理。之后,作者分別實(shí)驗(yàn)了CLS-token和2種池化策略(Avg-Pooling、Mean-Pooling),對Bert輸出的字向量進(jìn)一步特征提取、壓縮,得到u、v。關(guān)于u、v整合,作者提供了3種策略:
針對分類任務(wù),將u、v拼接,接入全連接網(wǎng)絡(luò),經(jīng)softmax分類輸出;損失函數(shù)用交叉熵
直接計算、輸出余弦相似度;訓(xùn)練損失函數(shù)采用均方根誤差
如果輸入的是三元組,論文種也給出了相應(yīng)的損失函數(shù)
總的來說,SBert直接用Bert的原始權(quán)重初始化,在具體數(shù)據(jù)集上微調(diào),訓(xùn)練過程和傳統(tǒng)Siamse Network差異不大。
但是這種訓(xùn)練方式能讓Bert更好的捕捉句子之間的關(guān)系,生成更優(yōu)質(zhì)的句向量。在測試階段,SBert直接使用余弦相似度來衡量兩個句向量之間的相似度,極大提升了推理速度。
實(shí)驗(yàn)為證
作者在7個文本匹配相關(guān)的任務(wù)中做了對比實(shí)驗(yàn),結(jié)果在其中5個任務(wù)上,SBert都有更優(yōu)表現(xiàn)。
作者還做了一些有趣的消融實(shí)驗(yàn)。
使用NLI和STS為代表的匹配數(shù)據(jù)集,在分類目標(biāo)函數(shù)訓(xùn)練時,作者測試了不同的整合策略,結(jié)果顯示“(u, v, |u-v|)”的組合效果最好。這里面最重要的部分是元素差:(|u - v|)。句向量之間的差異度量了兩個句子嵌入維度間的距離,確保相似的pair更近,不同的pair更遠(yuǎn)。
文章最后,作者將SBert和傳統(tǒng)方????法做了對比。
SBert的計算效率要更高。其中的smart-batching是一個小技巧。先將輸入的文本按長度排序,這樣同一個mini-batch的文本長度更加統(tǒng)一,padding時能顯著減少填充的token。
線下實(shí)測
我們將SBert模型在天池—新冠疫情相似句對判定比賽數(shù)據(jù)集上做了測試。經(jīng)數(shù)據(jù)增強(qiáng)后,線下訓(xùn)練集和驗(yàn)證集分別是13,500和800條句子組合。預(yù)訓(xùn)練模型權(quán)重選擇BERT_large。
最終SBert單模型在驗(yàn)證集上的準(zhǔn)確率是95.7%。直接使用Bert微調(diào)準(zhǔn)確率為95.2%。
小結(jié)
本文介紹了文本匹配任務(wù)中常用的孿生網(wǎng)絡(luò),和在此基礎(chǔ)上改進(jìn)而來的Sentence-BERT模型。
Siamse Network 簡潔的設(shè)計和平穩(wěn)高效訓(xùn)練非常適合作為文本匹配任務(wù)的baseline模型。SBert則充分利用了孿生網(wǎng)絡(luò)的優(yōu)點(diǎn)和預(yù)訓(xùn)練模型的特征抽取優(yōu)勢,在眾多匹配任務(wù)上取得了最優(yōu)結(jié)果。
拋開具體任務(wù),SBert 可以幫助我們生成更好的句向量,在一些任務(wù)上可能產(chǎn)生更優(yōu)結(jié)果。在推理階段,SBert直接計算余弦相似度的方式,大大縮短了預(yù)測時間,在語義檢索、信息搜索等任務(wù)中預(yù)計會有不錯表現(xiàn)。同時,得益于生成的高質(zhì)量句嵌入特征,SBert也非常適合做文本聚類、新FAQ發(fā)現(xiàn)等工作。
責(zé)任編輯:lq
-
模型
+關(guān)注
關(guān)注
1文章
3280瀏覽量
48989 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24764 -
文本
+關(guān)注
關(guān)注
0文章
118瀏覽量
17100
原文標(biāo)題:文本匹配利器:從孿生網(wǎng)絡(luò)到Sentence-BERT綜述
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論