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