Sentence-BERT 論文閱讀

BERT、RoBERTa已經在文本語義相似度任務(semantic textual similarity ,STS)上達到了sota。然而,BERT要求句子對拼接到一起再傳入模型中,這會導致巨大的計算開銷——例如,在10000條句子中尋找最相似的兩條,則需要約5*10^7次計算,如果使用BERT,則需要約65小時,這導致許多涉及篇章向量的任務,如相似度計算、聚類等無從開展。

基於此,我們提出了sentence-BERT(SBERT),它使用基於預訓練過的BERT的孿生網絡,獲得在語義上有足夠意義的篇章向量。該方法在保持BERT的效果的同時,可以將計算時間從65小時降低到約5秒。

介紹和相關工作

面對BERT在線上部署時的計算開銷問題,Humeau et al. (2019)提出過一種解決方案(即poly-encoder),該方法利用Attention機制計算m個上下文向量,然後再計算它們和預先計算好的候選embedding之間的得分。然而poly-encoder也存在不足——首先,它的打分函數並不對稱;其次,它的計算開銷對於聚類這樣的任務而言還是太大(O(N^2))。

模型

總的來說,作者在模型方面採取了以下幾種新的嘗試:

  1. 得到定長Embedding的不同方式:
    1. 直接取[CLS];
    2. 對得到的每個Embedding取mean-pooling;
    3. 對得到的每個Embedding取max-pooling。
  2. 針對不同的任務,建立了三種不同的目標函數:

(1)Classification Objective Function

如圖1左側所示,我們分別獲得兩句話的句子向量 u 和 v ,並將 u  、v 和二者按位求差向量   進行拼接,再將拼接好的向量乘上一個可訓練的權重   :

其中,   爲句子向量維度,   爲類別數。

                                                                                                        圖1

(2)Regression Objective Function

如圖1右側所示,目標函數是MSE-loss,直接對兩句話的句子向量 計算餘弦相似度,然後計算。

(3)Triplet Objective Function

在這個目標函數下,將模型框架進行修改,將原來的兩個輸入,變成三個句子輸入。給定一個錨定句 a ,一個肯定句 p和一個否定句 n ,模型通過使 a 的距離小於 a 的距離,來優化模型。使其目標函數o最小,即:

其中|| · ||代表的是兩個樣本的距離,本文采用的是歐氏距離,而S_a、S_p、S_n均爲對應樣本的sentence-Embedding。實驗時,作者將超參數epsilon設爲1.

實驗結果

實驗一

                                                                                                        圖2

如圖2,以上爲各個方法將輸入句子轉爲sentence-vector後計算相似度,再計算相似度和實際結果之間的斯皮爾曼係數(結果乘以100)。從圖中可見,SBERT的效果優於直接輸入BERT。

實驗二 遷移實驗

如圖3,本實驗選取了新的數據集Argument Facet Similarity (AFS)(Misra et al.)。該數據集主要包含三個話題的數據,因而可以進行話題遷移性測試。具體的測試方式爲——使用任意三個話題中的兩個作爲訓練集,剩下的一個作爲測試集,對語義相似度進行試驗。最終結果表明,sentence-BERT的遷移性較差。由於傳統的BERT的cross-encoder做法,可以直接在兩個句子上做Attention,而SBERT不行,他要先將一個未知topic的句子映射到向量空間才能做比較。作者認爲可能需要更多的訓練以滿足“遷移”的性能。

 

                                                                                                        圖3

實驗三 消融實驗

                                                                                                        圖4

如圖4所示,本實驗檢測了不同pooling方法和不同特徵concat手段對結果的影響。最終發現,特徵concat方式對結果有較大的影響,而pooling方法影響不大。特別的是,加上u*v這個特徵後,效果反而會有所下降。

實驗四 計算開銷試驗

                                                                                                        圖5

如圖5所示,該實驗衡量了不同的句子Embedding生成方法的速度。從圖中可以看出,在CPU上運行時,InferSent的速度比SBERT大約快65%;但切換到可並行的GPU後,transformer可並行的優勢就顯現出來,當SBERT採用聰明的batch size時,它的速度比InferSent快~9%。

總結

總的來說,本文是一篇BERT工程實踐方面的論文。本文所提到的sentence-BERT的方法,可以快速生成大量無限複用的效果不錯的sentence Embedding,得以進行聚類、相似度計算等任務。它的存在,可以讓BERT在生產環境中的使用得以實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章