你有嘗試從 BERT 提取編碼后的 sentence embedding 嗎?很多小伙伴的第一反應(yīng)是:不就是直接取頂層的[CLS] token的embedding作為句子表示嘛,難道還有其他套路不成?
nono,你知道這樣得到的句子表示捕捉到的語義信息其實很弱嗎?今天向大家介紹一篇來自于 CMU 和字節(jié)跳動合作,發(fā)表在 EMNLP2020 的 paper, 詳盡地分析了從預(yù)訓(xùn)練模型得到 sentence embedding 的常規(guī)方式的缺陷和最佳打開方式,是一篇非常實用、輕松幫助大家用BERT刷分的文章。論文質(zhì)量蠻高,分析和發(fā)現(xiàn)很有趣,通讀之后感覺收獲多多。
自2018年BERT驚艷眾人之后,基于預(yù)訓(xùn)練模型對下游任務(wù)進行微調(diào)已成為煉丹的標配。然而近兩年的研究卻發(fā)現(xiàn),沒有經(jīng)過微調(diào),直接由BERT得到的句子表示在語義文本相似性方面明顯薄弱,甚至?xí)跤贕loVe得到的表示。此篇論文中首先從理論上探索了masked language model 跟語義相似性任務(wù)上的聯(lián)系,并通過實驗分析了BERT的句子表示,最后提出了BERT-Flow來解決上述問題。
為什么BERT的句子Embeddings表現(xiàn)弱?
由于Reimers等人之前已實驗證明 context embeddings 取平均要優(yōu)于[CLS] token的embedding。因而在文章中,作者都以最后幾層文本嵌入向量的平均值來作為BERT句子的表示向量。
語義相似性與BERT預(yù)訓(xùn)練的聯(lián)系
為了探究上述問題,作者首先將語言模型(LM)與掩蓋語言模型(MLM) 統(tǒng)一為: 給定context(c)預(yù)測得到 token(x) 的概率分布,即
這里 是context的embedding, 表示 的word embedding。進一步,由于將 embedding 正則化到單位超球面時,兩個向量的點積等價于它們的cosine 相似度,我們便可以將BERT句子表示的相似度簡化為文本表示的相似度,即 。
另外,考慮到在訓(xùn)練中,當(dāng) c 與 w 同時出現(xiàn)時,它們對應(yīng)的向量表示也會更接近。換句話說,context-context 的相似度可以通過 context-words 之間的相似度推出或加強。
各向異性嵌入空間
Jun Gao, Lingxiao Wang 等人在近幾年的ICLR paper中有提到語言模型中最大似然目標的訓(xùn)練會產(chǎn)生各向異性的詞向量空間,即向量各個方向分布并不均勻,并且在向量空間中占據(jù)了一個狹窄的圓錐體,如下圖所示~
這種情況同樣也存在于預(yù)訓(xùn)練好的基于Transformer的模型中,比如BERT,GPT-2。而在這篇paper中,作者通過實驗得到以下兩個發(fā)現(xiàn):
詞頻率影響詞向量空間的分布:文中通過度量BERT詞向量表示與原點 l_2 距離的均值得到以下的圖表。我們可以看到高頻的詞更接近原點。由于word embedding在訓(xùn)練過程中起到連接文本embedding的作用,我們所需的句子表示向量可能會相應(yīng)地被單詞頻率信息誤導(dǎo),且其保留的語義信息可能會被破壞。
低頻詞分布偏向稀疏:文中度量了詞向量空間中與K近鄰單詞的 l_2 距離的均值。我們可以看到高頻詞分布更集中,而低頻詞分布則偏向稀疏。然而稀疏性的分布會導(dǎo)致表示空間中存在很多“洞”,這些洞會破壞向量空間的“凸性”。考慮到BERT句子向量的產(chǎn)生保留了凸性,因而直接使用其句子embeddings會存在問題。
Flow-based 生成模型
那么,如何無監(jiān)督情況下充分利用BERT表示中的語義信息?為了解決上述存在的問題,作者提出了一種將BERT embedding空間映射到一個標準高斯隱空間的方法(如下圖所示),并稱之為“BERT-flow”。而選擇 Gaussian 空間的動機也是因為其自身的特點:
標準高斯分布滿足各向同性
高斯分布區(qū)域沒有“洞”,即不存在破壞“凸性”的情況
上圖中 表示隱空間, 表示觀測到的空間,f: 是可逆的變換。根據(jù)概率密度函數(shù)中變量替換的定理,我們可以得到觀測變量的概率密度函數(shù)如下:
進一步,作者通過最大化BERT句子表示的邊緣似然函數(shù)來學(xué)習(xí)基于流的生成模型,即通過如下的公式來訓(xùn)練flow的參數(shù):
其中 表示數(shù)據(jù)集分布, 為神經(jīng)網(wǎng)絡(luò)。需要注意的是,在訓(xùn)練中,不需要任何人工標注!另外,BERT的參數(shù)保持不變,僅有流的參數(shù)進行優(yōu)化更新。其次,在實驗中,作者基于Glow (Dinh et al., 2015)的設(shè)計(多個可逆變換組合)進行改動,比如將仿射耦合(affine coupling)替換為了加法耦合(additive coupling)。
實驗及結(jié)果
論文的實驗部分在7個數(shù)據(jù)集上進行衡量語義文本相似性任務(wù)的效果。
實驗步驟:
通過句子encoder得到每個句子的向量表示。
計算句子之間的cosine similarity 作為模型預(yù)測的相似度。
計算Spearman系數(shù)。
實驗結(jié)果:
上圖匯報了sentence embeddings的余弦相似度同多個數(shù)據(jù)集上真實標簽之間的Spearman等級相關(guān)性得分(),其中flow-target 表示在完整的目標數(shù)據(jù)集(train+validation+test)上進行學(xué)習(xí),flow-NLI 表示模型在NLI(natual language inference)任務(wù)的測試,綠色箭頭表示相對于BERT的baseline,模型的效果有提升,紅色反之。
我們可以注意到模型的改進對于效果的提升還是很顯著滴!文章同樣還在無監(jiān)督問答任務(wù)證明模型的有效性,并將BERT-flow得到的語義相似度同詞法相似度(通過編輯距離來衡量)進行對比,結(jié)果同樣證明模型在引入流的可逆映射后減弱了語義相似性與詞法相似性之間的聯(lián)系!具體信息大家可查閱paper~
小結(jié)
總之,這篇paper探究了BERT句子表示對于語義相似性上潛在的問題,并提出了基于流的可逆映射來改進在對應(yīng)任務(wù)上的表現(xiàn)。想多了解的童鞋可以看看原文,相信你們也會喜歡上這篇paper!
原文標題:還在用[CLS]?從BERT得到最強句子Embedding的打開方式!
文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
計算機
+關(guān)注
關(guān)注
19文章
7500瀏覽量
88017 -
模型
+關(guān)注
關(guān)注
1文章
3248瀏覽量
48859
原文標題:還在用[CLS]?從BERT得到最強句子Embedding的打開方式!
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論