论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
論文筆記整理:吳楊,浙江大學(xué)計算機(jī)學(xué)院,知識圖譜、NLP方向。
https://www.ctolib.com/https://arxiv.org/abs/1908.10084
動機(jī)
???? 谷歌的 BERT 預(yù)訓(xùn)練模型,已經(jīng)能夠在兩個句子的語義相似度匹配等需要輸入一對句子的任務(wù)上取得了非常好的效果,但是,假如說現(xiàn)在有N個句子,需要為每個句子找出與其最相似的另一個句子,顯然使用BERT需要O(N*N)的時間,這是非常耗時的操作。因此有必要通過生成每個句子的Embedding,然后通過Embedding直接計算相似度來大大減輕計算量。由于直接使用BERT的輸出(CLS,或者平均)作為句子Embedding的效果并不好,因此本文提出了使用孿生網(wǎng)絡(luò)來輸出優(yōu)秀的句子Embedding。
方法
(1) 概述
SBERT 網(wǎng)絡(luò)是通過 SNLI 數(shù)據(jù)集(標(biāo)注了一對句子之間的關(guān)系,可以是蘊含、矛盾或者中立)進(jìn)行預(yù)訓(xùn)練的,所謂孿生網(wǎng)絡(luò)其實就是兩個一模一樣共享參數(shù)的網(wǎng)絡(luò),我們首先將第一個句子輸入到BERT,通過不同的Pooling方法獲得句子的Embedding表示,第二個句子同樣如此,然后將這兩個Embedding變換后通過Softmax輸出這對句子之間關(guān)系的概率進(jìn)行訓(xùn)練(分類問題)。在訓(xùn)練完畢后,我們就可以將下面的BERT和pooling層拿出來,將句子輸入得到其Embedding,再進(jìn)行其他操作(比如計算相似度可以直接使用cosine-sim)
(2) Pooling方法:
a. CLS:直接使用CLS的輸出作為Embedding
b.MEAN: 平均所有token的輸出作為Embedding
c. MAX:取每一維輸出向量的最大值
(3) 目標(biāo)函數(shù):
?????? a. 分類目標(biāo)函數(shù):
?????? 其中 u 和 v 為兩個句子的 Embedding,Wt為變換矩陣,最終的維度為3n*k
??????????? 該目標(biāo)函數(shù)可用于預(yù)訓(xùn)練Sentence Embedding
?????? b. 回歸目標(biāo)函數(shù):
?????????? 該目標(biāo)函數(shù)直接計算u和v的cosine相似度,將之均方誤差作為loss。另外結(jié)構(gòu)
????????????? 也是預(yù)測時候的計算方式
?????? c. 三胞胎目標(biāo)函數(shù):
??? 其中Sa為句子a的Embedding,Sp則為句子p,句子p是跟a屬于同一類型的
???? 正例句子,n 則是一個反例,三胞胎網(wǎng)絡(luò)和孿生網(wǎng)絡(luò)類似,這個目標(biāo)函數(shù)是為了讓
????????????? 正例距離盡量近而反例盡量遠(yuǎn)
(4) 預(yù)訓(xùn)練:
?????? SBERT在SNLI和MultiNLI數(shù)據(jù)集上訓(xùn)練,其中SNLI包括了570,000對句子標(biāo)注了矛盾(contradiction)、蘊含(entailment)和中立(neutral)關(guān)系
(5) 評測:
$1 無監(jiān)督語義相似度匹配(unsupervised STS)
??? STS 數(shù)據(jù)集:語義相關(guān)度標(biāo)注數(shù)據(jù)集,給定一對語句,標(biāo)注其語義相關(guān)度(從0不相關(guān)到5非常相關(guān))
??? 在SNLI和NLI數(shù)據(jù)集上pre-train,不進(jìn)行fine-tune,直接計算cos相似度,使用spearman計算cos相似度和標(biāo)簽的相關(guān)性,因為標(biāo)簽是離散值,而預(yù)測的時候使用的是回歸模型,因此需要計算其相關(guān)度,論文中說普通的相關(guān)度計算不太好,使用Spearman是比較不錯的選擇
$2 有監(jiān)督語義相似度匹配(supervised STS)
???????在NLI數(shù)據(jù)集(兩個語句是否蘊含、矛盾、中立)上pre-train
???????在STSb數(shù)據(jù)集(語義相似度數(shù)據(jù)集)上進(jìn)行fine-tune并進(jìn)行評測
???????使用cos相似度計算,使用Spearman計算與label的相關(guān)度
$3 辯論觀點相似度匹配(Argument Facet Similarity)
???????AFS語料庫包括了關(guān)于gun control, gay marriage, 和death penalty三個主題的一系列辯論觀點,其標(biāo)注了一對辯論觀點的主題是否相同(0-完全不同的主題,5-完全相同的主題),作者在論文中說,由于AFS的相似度判斷不僅僅是觀點類似,還需要是理由也類似,而且AFS的用詞和語句表達(dá)跟SNLI差距很大,因此直接使用pre-train的Embedding計算相似度效果不太好。
???????同時采用了十折交叉檢驗和使用其中的兩個topic訓(xùn)練,3個topic測試的方案,采用Spearman相關(guān)度計算
$4 Wikidata相同段落識別(Wikipedia Sections Distinction)
???? 對wikipedia的任意兩句話標(biāo)注了是否屬于同一小節(jié)
?? 采用三胞胎網(wǎng)絡(luò)進(jìn)行訓(xùn)練,采樣兩個同一小節(jié)和一個不同小節(jié)的語句,讓同一小節(jié)的Embedding盡可能近,不同小節(jié)盡可能遠(yuǎn)
$5 SentEval遷移學(xué)習(xí)
???????SentEval是專門用于測試Embedding效果的數(shù)據(jù)集,但是其任務(wù)跟本文這些pre-train和fine-tune時的沒什么關(guān)聯(lián),其任務(wù)主要有:
???????MR: 影評的情感預(yù)測 ??????????????? CR:商品評價的情感預(yù)測
???????SUBJ: 影評的主觀程度預(yù)測 ?????? MPQA:新聞觀點的兩極分類
???????SST: 斯坦福情感樹分類 ???????????? TREC:問題類型分類
???????MRPC: 微軟的判斷語義是否等價的數(shù)據(jù)集
???????從結(jié)果中可以看出,SBERT輸出的句子Embedding表現(xiàn)不錯,并且對句子中的情感成分捕捉的很好。而相比之下,原生BERT輸出的CLS向量表現(xiàn)的不盡如人意
(6) 模型簡化測試:
??????????? 作者在SNLI和STSb數(shù)據(jù)集上測試了使用不同的Pooling方法以及不同的u、v拼接方式對輸出的SentenceEmbedding的影響。
?????? 事實證明,采用各種Pooling方式其實對SBERT的性能影響不大。而改變拼接方式影響較大,普通的(u,v)拼接的性能很差,最重要的一部分是|u-v|,畢竟分類的輸出很依賴與計算兩個Embedding的差異度
(7) 計算效率:
? 在計算效率上,主要與直接使用GloVe Embedding和使用Universal SentenceEncoder進(jìn)行比較(BERT需要幾十個小時)。
?????? 由于Transformer的并行性,因此雖然在CPU上SBERT的表現(xiàn)不太好,但是在GPU上還是不錯的。當(dāng)然直接使用GloVe的效率是顯而易見的(直接進(jìn)行向量運算即可)。Smart batching是說通過將長度相似的句子分為一組,這樣在mini-batch中就只需要padding到最長的長度,可以減小padding token的計算開銷。
總結(jié)
本文提出了使用孿生BERT網(wǎng)絡(luò)訓(xùn)練Sentence Embedding的方法,事實證明這種方式輸出的Embedding在捕捉句子的語義和情感等方面都有不錯的效果,在各種任務(wù)上都有著不輸于fine-tune BERT的成績,而且很大的提升了計算效率。
?
OpenKG
開放知識圖譜(簡稱 OpenKG)旨在促進(jìn)中文知識圖譜數(shù)據(jù)的開放與互聯(lián),促進(jìn)知識圖譜和語義技術(shù)的普及和廣泛應(yīng)用。
點擊閱讀原文,進(jìn)入 OpenKG 博客。
總結(jié)
以上是生活随笔為你收集整理的论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 | HEAD-QA: 一个面向
- 下一篇: 集群、分布式、微服务的概念及异同