【NLP系列】Bert詞向量的空間分佈

語言: CN / TW / HK

作者:京東零售 彭馨

1. 背景

我們知道Bert 預訓練模型針對分詞、ner、文字分類等下游任務取得了很好的效果,但在語義相似度任務上,表現相較於 Word2Vec、Glove 等並沒有明顯的提升。有學者研究發現,這是因為 Bert 詞向量存在各向異性(不同方向表現出的特徵不一致),高頻詞分佈在狹小的區域,靠近原點,低頻詞訓練不充分,分佈相對稀疏,遠離原點,詞向量整體的空間分佈呈現錐形,如下圖,導致計算的相似度存在問題。

 

2. 問題分析

為什麼Bert詞向量會呈現圓錐形的空間分佈且高頻詞更靠近原點?

查了一些論文發現,除了這篇 ICLR 2019 的論文《Representation Degeneration Problem in Training Natural Language Generation Models》給出了一定的理論解釋,幾乎所有提及到 Bert 詞向量空間分佈存在問題的論文,都只是在引用該篇的基礎上,直接將詞向量壓縮到二維平面上進行觀測統計(肉眼看的說服力明顯不夠😂)

圖中(b)(c)可以看出原生 Word2Vec 和分類任務的詞向量經 SVD 投影,分佈在原點周圍,而原生 Transformer 則分佈在圓錐形區域,且任意兩個詞向量都正相關,會降低模型效能,這種現象被稱為表徵退化問題

  • ①造成這種現象的直觀解釋是:在模型訓練過程中,真詞的embedding會被推向隱藏狀態的方向,而其他詞會被推向其負方向,結果是詞彙表中大多數單詞的嵌入將被推向與大多數隱藏狀態負相關的相似方向,因此在嵌入空間的區域性區域中聚集在一起。

  • ②理論解釋則是分析未出現詞的嵌入,發現表徵退化和隱藏狀態的結構有關:當隱藏狀態的凸包不包含原點時,退化出現,並且當使用層歸一化進行訓練時,很可能發生這種情況。並發現低頻詞很可能在優化過程中被訓練為彼此接近,因此位於區域性區域。

論文將對理論解釋部分給出證明,下面從我的理解,來解讀一下😂,最後再簡單說一下另外兩篇對 Bert 詞向量觀測統計的論文。
 

3. 理論解釋

在介紹之前,先熟悉幾個關於凸優化問題的概念(不知道其實也問題不大😂):

  • 凸集:

  • 凸包:
    點集Q的凸包是指一個最小凸多邊形,滿足Q中的點或者在多邊形邊上或者在其內。(最小的凸集)

  • 錐:

  • 凸錐:
    如果一個集合既是錐,又是凸集,則該集合是凸錐。

1)未出現詞

因為不容易直接分析高、低頻詞,作者另闢蹊徑,選擇和低頻詞比較相似的未出現詞來分析目標函式。

因為其他引數固定,則上式等價於:

文中說定理1 中的 A 顯而易見,那就只能大家自行理解這個凸集了。B 則是對上面最小化公式的求解,下面給出證明

證明:

證明:

以上還是很好理解的,定理1說明未出現詞的向量會被優化無窮遠,遠離原點(模越來越大)。定理2則是說明詞向量的分佈不包含原點,而是在原點的一側

2)低頻詞

低頻詞的分析則是在未出現詞的基礎上,因為分析低頻詞的embedding對損失函式的影響,將損失函式分為了兩部分:

總損失函式為:

原來定理3 才是理解路上的最大絆腳石!

下面簡述一下對詞向量進行觀測統計的論文

論文1《On the Sentence Embeddings from Pre-trained Language Models

其實這篇論文就是位元組的 Bert-flow(不熟悉 Bert-flow 可見《對比學習——文字匹配》)。論文計算了詞嵌入與原點的平均l2距離,並根據詞頻做了排序(詞頻越高排名越靠前,第0位詞頻最高),得出高頻詞靠近原點、低頻詞遠離原點的結論,如下表上半部分:
image.png
表的下半部分則為詞嵌入和它的k個近鄰之間的平均l2距離和點積,可以看出低頻詞相較於高頻詞,和它們的k近鄰距離更遠,說明低頻詞相對高頻詞分佈更稀疏。

論文2《Learning to Remove: Towards Isotropic Pre-trained BERT Embedding

該論文則是通過隨機計算兩個詞的相似度,發現都遠大於0(說明詞向量的方向基本都一致,不一致不會都遠大於0),以此說明詞向量不是均勻分佈在向量空間中,而是分佈在一個狹窄的圓錐體中。
image.png
 

4. 總結

都有理論解釋了,結論自然就是 Bert 詞向量確實存在表徵退化問題,詞向量存在各向異性,高頻詞距離原點更近,低頻詞訓練不充分,遠離原點,整體分佈呈現圓錐形,導致其不適用於語義相似度任務。不過不知道該理論解釋有沒有說服你😄😄😄,有不同見解或疑問,歡迎前來交流。
針對此類問題,可以採用一下方法對其進行糾正,如論文[1]中加入cos正則,論文[2]中將錐形分佈轉化為高斯分佈。因為詞向量有問題,句向量自然跑不了,所以《對比學習——文字匹配》中的演算法其實也都是為了解決這個問題。

 
附:(定理3證明)
image.png
image.png