淺談 Transformer 模型中的位置表示

公衆號關注 “ML_NLP”

作者:哈工大 SCIR 徐嘯

  1. 何爲位置信息 =========

首先簡單談一下位置信息。一般將位置信息簡單分爲絕對位置信息相對位置信息,並且前者對句子語義的影響不大,更爲重要的是後者。

以情感分析 (Sentiment Analysis) 爲例:

don’tlike 的相對位置不同(包括相對距離不同和方向不同),決定了這兩句話的情感取向是一正一負的,可見單詞的相對位置語義有關鍵性影響。不過,在傳統詞袋(Bag-Of-Words, BOW)模型中,這兩句話得到的句子表徵卻是一致的。

再以命名實體識別 (Named Entity Recognition, NER) 爲例 [4]:

圖 1 命名實體識別示例

一般而言,在 Inc. 之前的單詞爲ORG ,而在 in 之後爲 TIMELOC 。但是同爲 Louis Vuitton ,與 Inc. 相距較遠的爲PER,指的是創立者這一實體,而相距較近的爲ORG,指的是組織(公司)這一實體。可見,單詞之間的相對位置NER 任務中是十分重要(敏感)的。

需要注意的是,相對位置是具有方向性的,即 Inc.in 的相對距離爲 -1,1854in 的相對距離爲 1

那麼,如何對位置信息進行表示呢?

下文結合 Transformer 的位置表示、RPR、Transformer-XL 以及 Complex Embeddings,試解釋位置信息的表示問題。

  1. Transformer 的位置表示 ====================

原始 Transformer[1] 中使用 Positional Encoding 生成固定的位置表示。

其中,pos 指的是 token 的位置。設句子長度爲 L,那麼。i 是維詞向量的某一維,例如時,。因此,藉助上述正餘弦公式,我們可以爲每個位置生成維的位置向量。

圖 2 以爲例,橫座標爲位置表示的維數,縱座標爲位置 pos 。不難發現,當維數逐漸從 0 變爲 127,週期相應的從 2π 變爲 2π*10000,不同位置之間的差異性變得越來越模糊。

圖 2 正弦位置編碼可視化 [10]

爲什麼會選擇如上公式呢?作者表示:

We chose this function because we hypothesized it would allow the model to easily learn to attend by relative positions, since for any fixed offset k,  can be represented as a linear function of 

已知三角函數公式如下:

結合公式 (1) (2) 可得

由於相對距離 k 爲常數,那麼均爲常數,分別簡寫爲

 u, v 可得下式:

因此,可以將可以表示爲的線性表示。作者希望藉助上述絕對位置的編碼公式,讓模型能夠學習到相對位置信息

接着我們來看,兩個不同位置的位置嵌入之間的點積。推導可得,其點積雖然能夠反映相對距離,但它缺乏方向性,並且這種特性(相對距離)會被原始 Transformer 的注意力機制破壞 [4]:

基於公式 (1) ,pos 位置的位置嵌入可以表示爲:

其中,d 表示位置嵌入的維度,表示由 i 決定的常量,由可推得:

因此,對於給定的位置 pos 和 偏移量 k 而言,只取決於偏移量 k,內積會隨着相對位置的遞增而減小。因此兩者的點積可以反映相對距離 k。如圖 3 所示,點積的結果是對稱的,並且隨 |k| 增加而減少(但並不單調)。

圖 3 TENER[4] 中對點積結果的可視化

此外,由於點積結果只依賴於 k,那麼令,可以由公式 (3) 可得:

那麼,對於給定的位置 pos 和偏移量 k 而言:

也即兩者的點積無法反映方向性

如圖 4 所示,兩者點積的結果是對稱的,並且隨着位置的增大而減小。

圖 4 Sinusoidal position encoding 點積可視化 [10]

但是在 Transformer 中,由於需要經過映射,即兩者間的點積實際是並可以視爲,然而如圖 5 所示,此時並沒有看到相對距離 k 的清晰模式。

圖 5 TENER[4] 中對包括映射矩陣後的點積結果的可視化

另外,Transformer 之前的 ConvSeq[5] 以及之後的 BERT[6] 都沒有選擇使用 Positional Encoding 的方式生成位置表示,而是採取了所謂的 learned and fixed 的可學習的 Position embedding。也就是去訓練一個位置嵌入矩陣,大小爲,這裏暫且按下不表。

  1. 相對位置表示 =========

Relative Position Representations[2](下文簡稱爲 RPR) 一文中認爲,RNN 通常依靠其循環機制,結合 t 時刻的輸入和前一時刻的隱層狀態計算出,直接通過其順序結構沿時間維度捕獲相對和絕對位置。而非 RNN 模型不需要順序處理輸入,則需要顯式編碼才能引入位置信息。

Transformer 中的 Self-attention 機制如下,輸入,輸出

RPR 不在輸入時將位置表示與 token 表示相加,而是選擇對 self-attention 進行改動:

這裏的 (不是) 的計算方式如下:

因此,模型學習相對位置表示 (同理),同一層的 attention heads 之間共享,但是在不同層之間是不同的。

此處公式有些晦澀,故此舉一實例 [7] 加以解釋:

當 k=4 時,,那麼 WK 的每一行則分別對應的是位置 i 與位置之間的相對位置表示。以輸入 “I think therefore I am” 爲例:

如圖 6 所示,“I” 使用的是,“think” 使用的是,因爲 “think” 在第一個 “I” 的右邊第一個,對應的是 i+1 的情況。也即,Query 爲 “I”,Key 爲 “think” 時,有 i=0, j=1 ,由公式 (4) 可知,,那麼此時

圖 6 RPR 示例 1

如圖 7 所示,“I” 使用的是,“think” 使用的是 (因爲 “think” 在第二個 “I” 的左邊第二個,對應的 i-2 的情況)。

圖 7 RPR 示例 2

另外,作者認爲精確的相對位置信息在超出了一定距離之後是沒有必要的,並且截斷後會使得模型的泛化效果好,即可以更好的泛化到沒有在訓練階段出現過的序列長度上。

這裏試舉一例幫助理解。當輸入句子長度爲 12 且 k = 4 時, RPR 的嵌入矩陣如圖 8 所示:

圖 8:RPR 嵌入矩陣

不過,論文在對機器翻譯任務進行消融實驗(表 1 所示)時發現,可能並不是必要的。第 3 節中的 Transformer-XL 也略去了這一項。

表 1 RPR 消融實驗結果

此外,RPR 一文並未開源代碼,這裏給出 Github 上 TensorFlow (https://github.com/THUNLP-MT/THUMT/blob/d4cb62c215d846093e5357aa17b286506b2df1af/thumt/layers/attention.py) 和 PyTorch (https://github.com/MjolnirX/relative-position-pytorch/blob/master/relative_position.py) 兩個版本的實現。

  1. Transformer-XL =================

Transformer-XL 一文並沒有採用 RPR 中的相對位置表示方式,而是開創性的在片段循環機制下提出了 Relative Positional Encodings,實現僅在隱藏狀態中對相對位置信息進行編碼。

儘管 Al-Rfou et al. (2018)[8] 成功地在字符級語言建模中訓練了深度 (64 層) Transformer 網絡,效果超越了 LSTM,但是其輸入爲分離的、固定長度(幾百個字符) 的片段,並且沒有跨片段的信息傳遞。由於固定的上下文長度,模型無法捕獲超出預定義的上下文長度的任何長期依賴。另外,固定長度的片段是通過選擇連續的字符塊而創建的,並未考慮句子邊界或任何其他語義邊界。因此,該模型缺乏必要的上下文信息來較好地預測最初的幾個字符,這會導致無效的優化和較差的性能。

作者將此問題稱爲上下文碎片 (context fragmentation)。如果給定無限的存儲和計算能力,一個簡單的解決方案就是使用無條件的 Transformer 解碼器來處理整個上下文序列,類似於前饋神經網絡。然而在實踐中由於資源有限,通常是不可行的。爲了解決這一問題,作者提出了片段循環機制 (segment-level recurrence) 和新的相對位置嵌入 (Relative Positional Encodings)。

首先深入探究 Al-Rfou 等人的做法,下文將其稱爲原始模型。如圖 9.a 所示, 原始模型將整個語料庫拆分爲長度受限的片段,並且只在每個片段內訓練模型,忽略了來自先前片段的所有上下文信息。這使得訓練過程中(圖 10),信息不會在 forward 或 backward  過程中跨片段流動,而且這使得最大依賴長度受到了片段長度的限制 (這本是 Self-attention 的優勢)。其次,雖然可以通過 padding 來考慮句子邊界或任何其他語義邊界,但是在實踐中直接簡單分塊已成爲提高效率的標準做法。這也就是作者說的上下文碎片問題。

圖 9 原始模型訓練與評估流程可視化(片段長度爲 4)

圖 10 動態演示: vanilla model 的訓練過程 [9]

在評估過程中(圖 11),原始模型也在每一步中消耗與訓練中相同長度片段,但僅在最後一個位置進行預測。然後,在下一步僅將片段向右移動一個位置,並且重新進行計算。如圖 9.b 所示,如此可確保每一步預測都能利用訓練期間暴露的最長可能上下文,並且還緩解了訓練中遇到的上下文碎片問題。但是,這種評估過程太過昂貴。

圖 11 動態演示: vanilla model 的評估過程 [9]

這裏我們先來看 Transformer-XL 中的片段循環機制。引入循環機制,在訓練過程中,前一片段中的隱藏狀態序列 (每一層都) 會被固定並緩存,以便在處理下一片段時使用其作爲「擴展上下文」。如圖 12.a 所示,綠色部分表示當前片段使用的擴展上下文。對於每一層而言,輸入爲前一片段以及當前片段的前一層的輸出,從而可以保證對長期依賴的建模能力並避免了上下文碎片問題(圖 13)。

圖 12 Transformer-XL 模型訓練與評估流程可視化(片段長度爲 4)

圖 13 動態演示: Transformer-XL 的訓練過程 [9]

下面用公式表達上述過程。第 𝛕 與 𝛕+1 個長度爲 L 的連續片段表示爲,由生成的第 n 層隱藏狀態序列稱爲,那麼的計算過程如下:

其中,表示 stop-gradient 函數,表示沿長度維度將兩個隱層狀態序列進行連接,W 表示模型參數。第一行公式得到包含擴展上下文的作爲新的輸入,第二行與 vanilla Transformer 中類似,只是 keyvalue 均使用

藉助片段循環機制,可以使隱藏狀態做到片段級循環,這實際上使得有效的上下文可以遠遠超過兩個片段。注意,這裏的之間的循環依賴是每段向下移動一層的,這與 RNN-LM 中的同一層循環是不同的。因此,最大可能依賴長度是關於層數和片段長度線性增長的(例如),如圖 12.b 中的陰影區域所示。

採用片段循環機制,不僅可以獲得更長的上下文從而解決上下文碎片問題,而且可以加快評估速度。在評估過程中,XL 可以重複使用先前片段中的表示,不需要像 vanilla model 那樣重新計算(圖 14)。最後,理論上講,可以在 GPU 內存允許的範圍內緩存儘可能多的片段作爲擴展的上下文,並將可能跨越了多個片段的舊隱藏狀態稱爲 Memory 。在論文的實驗中,M 在訓練時設置爲片段長度,評估過程中則會增加。

圖 14 動態演示: Transformer-XL 的評估過程 [9]

在藉助上述文字充分理解片段循環機制後,再來看爲了在 Transformer 中實現這一機制而提出的 Relative Positional Encodings。

在片段循環機制中,有一個重要問題沒有得到解決:如何保證在循環時,位置信息的連貫性?具體而言,vanilla Transformer 中使用 positional encodings 獲得,其第 i 行表示的是片段內的絕對位置 i ,則規定了建模的最大長度。之後將單詞嵌入和位置編碼逐元素相加,如果直接在片段循環機制中使用如上位置表示方式,那麼隱藏狀態序列的計算過程如下:

其中,是序列的詞嵌入表示,f 表示變換函數。此時,無論是還是都使用同樣的位置編碼。因此,對於任意,模型沒有任何信息能用來區分之間的位置差異,從而導致了性能損失。

爲了避免上述問題的出現,論文提出了僅在隱藏狀態中對相對位置信息進行編碼。

Conceptually, the positional encoding gives the model a temporal clue or “bias” about how information should be gathered, i.e., where to attend.

從概念上講,位置編碼爲模型提供了關於如何理解信息 (關注哪裏) 的時間線索或時間偏差 / 傾向。爲此,可以在每一層的 attention score 中引入相同的信息,而不是將 “bias” 靜態放入初始嵌入中。更重要的是,以相對方式定義的時間偏差是更爲直觀和可概括的。例如,查詢向量和鍵向量運算時,並不需要知道每個鍵向量的絕對位置來分辨其時間順序,只要知道每個之間的相對距離即可,即 i-j。

因此,可以創建一組相對位置編碼表示的是相對距離爲 i 時的情況。將相對距離動態引入至 attention score 中,使查詢向量可以分辨之間的位置差異,從而使片段循環機制有效。另外,作者認爲這樣不會損失任何時間信息,因爲可以從相對位置遞歸地得到絕對位置。

爲了理解如何動態引入相對位置信息,我們首先將同一片段內的之間的注意力得分 (即 RPR 中的) 分解爲:

Transformer-XL 基於僅依賴相對位置信息的思想,提出如下改動:

下面對改動進行一一解釋。

Transformer-XL 認爲此時的公式中的每一項都尤其直觀含義:

與 RPR 相比,RPR 僅僅只有 (a) 與 (b) 兩項,並且將合併爲可訓練的矩陣,這放棄了 vanilla Transformer 中的正弦位置編碼中內置的歸納偏置。相反,Transformer-XL 的 R 很好地保留了歸納偏置,並且獲得了能夠將基於定長 memory 訓練的模型在評估時自動泛化至更長的 memory 的好處。

結合上述兩種機制,就得到了 Transformer-XL 的體系結構。對於一個單注意力頭的 N 層 Transformer-XL 而言,對於

其中,初始化爲詞嵌入序列

這裏需要補充的是,Transformer-XL 所採用的相對距離表示方法是不具有方向性的,即,做的是自迴歸的語言建模任務;而 RPR 中採用的相對距離是具有方向性的,做的機器翻譯任務。不過其實由於,(i-j) 的定義域變爲例如時,其實是可以爲 attention score 帶來方向信息的 [4]。

  1. Complex Embeddings =====================

上述兩篇工作都是從 Attention 計算的角度出發,嘗試在計算點積時融入相對位置信息。而 Encoding word order in complex embeddings[11] 一文則從單詞嵌入和位置嵌入相結合的角度出發,設計了關於位置變量的連續函數,並擴展到了複數域,獲得了更豐富的表示。

Complex Embbdeeings 一文認爲,當前的神經網絡使用位置嵌入來對單詞位置進行建模,問題在於位置嵌入捕獲單個單詞的位置,而不捕獲單詞位置之間的有序關係(例如相鄰或前序)。例如 ConvSeq 中的位置嵌入假設單個單詞位置是獨立的,並且不考慮相鄰單詞位置之間的關係。作者認爲,單詞的全局絕對位置及其內部順序和相鄰關係在語言上都是至關重要的。這一點也在 RPR 和 Transformer-XL 兩篇文章中有提及,展示了對序列元素之間的距離進行建模的重要性,並明確使用額外的相對位置編碼來捕獲單詞的相對距離關係。文中提出的解決方案,將以前定義爲獨立向量的詞嵌入,推廣爲關於位置變量的連續函數。位置變量的連續函數的好處是單詞表示會隨着位置的增加而平滑地移動。因此,處於不同位置的單詞表示可以以連續函數彼此相關。爲了更豐富的表示,這些函數的通用解決方案擴展到了複數值域。

首先,詞嵌入 WE 通常定義爲一個將離散的詞索引映射到一個 D 維實值向量的映射函數

類似的,位置嵌入 PE 定義了另一個將一個離散的位置索引映射到一個向量的映射函數。單詞(給定詞表中的第 j 個詞)在一個句子的 pos-th 位置時的最終嵌入通常通過求和來構建:

由於單詞嵌入映射和位置嵌入映射僅將整數值用作單詞索引或位置索引,單個單詞或位置的嵌入矢量是單獨訓練的。每個單詞向量的獨立訓練是合理的,因爲單詞索引基於給定任意詞彙的順序,並且不捕獲與其相鄰單詞的任何特定順序關係。

但是,位置索引捕獲了一個有序的關係,例如相鄰關係或前序關係,現在的做法導致在各個位置上位置嵌入是相互獨立的。位置之間的有序關係未建模。作者將此稱爲位置獨立性問題 (position independence problem)

在位置不敏感的神經網絡中使用位置嵌入時,此問題變得尤爲重要,例如 FastText,ConvSeq 和 Transformer,因爲它對於具有原始位置嵌入的對位置不敏感的神經網絡而言,很難推斷出位置 pos 的接近位置 pos+1 的,或者之前(即之前提到相鄰或前序);相反,只能推斷位於不同的位置,而它們之間的相對距離幾乎是未知的。因此,原始位置嵌入無法完全捕捉語言的順序方面。

在等式 (5) 裏的通用定義中,每個維度的位置嵌入是基於離散位置索引 {0, 1, 2, …, pos, …} 獲得的。這使得很難建模位置之間的有序關係。該問題的一種解決方案是在位置索引上構建連續函數,以表示特定單詞的單個維度。形式上,我們將通用嵌入定義爲:

其中的縮寫,表示關於位置索引 pos 的 D 個函數,而是從單詞索引到 D 個函數的映射。那麼 pos 位置的單詞的 D 維向量表示可以擴展寫爲:

其中是位置索引 pos 在複數域上的函數(下文在不混淆的情況下會將簡寫爲 g )。此時要將單詞從當前位置 pos 移動到另一個 pos’,只需將變量 pos 替換爲 pos’,而無需更改

上述函數應當滿足以下屬性:

  1. **位置無關的偏移轉換 (Position-free offset transformation) **:

    對於所有的,存在函數滿足。也就是說同一單詞在不同位置的表示,可以通過一個只和相對距離 n 有關的變換函數進行轉換。

  2. **有界性 (Boundedness) **:

    關於位置變量的函數應有界,即

爲了降低難度,作者假設變換函數是線性變換。隨後證明了在複數域上,函數是有界並且線性證明的位置無關的偏移轉換,當且僅當(推導參見原文)。

那麼對於任意,結合歐拉公式,我們可以寫成,這裏的 i 是虛數單位。因此我們有:

在實現中,上述 g 的定義將會帶來一個關於限制的優化問題。

一個自然且簡單的避免這一問題的方法是固定

因此可以簡化形式寫爲,並且可以將 g 視爲以固定週期在半徑爲 r 的複數圓上逆時針嵌入位置( r 是振幅項,θ 是初始相位項,是頻率,是週期)。

那麼現在我們可以定義複數域詞嵌入 g 是從詞索引 j 和詞位置索引 pos 到的映射。對於在位置 pos 的單詞,通用複數域嵌入被定義爲的 D 維向量,代入公式 7 擴展爲:

振幅週期和初相都是維度 d 的可學習參數。

在圖 15 中,每個維度都表示爲一個波,該波由振幅,週期 / 頻率和初始相位參數化。嵌入的可訓練參數是振幅向量,週期或頻率相關的權重和初相向量

圖 15 (單個單詞在不同位置的 3 維 複數嵌入。三個波函數(將初始相位設置爲零)顯示了嵌入的實部;虛部具有π/2 的相位差,並顯示與實值對應的相同曲線。x 軸表示單詞的絕對位置,y 軸表示單詞向量中每個元素的值。顏色標記了嵌入的不同維度。函數和每條垂直線之間的三個交叉點(對應於特定位置 pos)表示該單詞在第 pos 個位置的嵌入。) 本圖用三維複數值嵌入說明了這種類型的單詞表示,其中振幅 {r1, r2, r3} 表示對應於經典單詞向量的語義方面,而週期 {p1, p2, p3} 表示這個詞對位置信息有多敏感。

我們可以觀察到:

那麼可以認爲,不同於以往對位置嵌入進行的加性操作,作者將單詞嵌入和位置嵌入通過逐元素乘法在某種程度上解耦,因此頻率 / 週期項(與有關)可以自適應地調整每個單詞和每個單詞的語義和位置信息之間的重要性尺寸。

此外,原文中還描述了降低參數量的技巧,以及如何在 CNN、RNN 和 Transformer 中使用 Complex Embeddings。在附錄中,還介紹了與原始 Transformer 位置嵌入的關係。

  1. 小結與展望 ========

本文主要對原始 Transformer[1]、RPR[2]、 Transformer-XL[3] 以及 Complex Embeddings[11] 中使用的位置表示方法,進行了較爲詳細的介紹。從最初的絕對位置編碼與單詞嵌入相加作爲第一層的輸入,再到 RPR 提出直接在注意力分數的計算中引入相對位置信息,並學習相對距離的表示矩陣 (長度固定),再到 Transformer-XL 中引入偏置信息,並重新使用 Transformer 中的編碼公式生成相對距離的表示矩陣,使長度可泛化,最後到 Complex Embeddings 中通過複數域的連續函數來編碼詞在不同位置的表示。

我們可以將 BERT 中使用的 Learned Positional Embedding(LPE),Sinusoidal Position Encoding(SPE),RPR 以及 Complex Embeddings(CE) 進行對比:

那麼未來,我們還需要對位置表示做怎樣的工作呢?比如目前位置信息的定義僅限於絕對位置與相對位置,而類似句法信息這樣細粒度、結構化的依存句法信息和語義依存信息,是作爲外部知識引入的,並且已經有很多工作通過設計 Probe 任務,證明了 ELMo、BERT 等模型學習得到的表示,隱式建模了句法信息等信息。有沒有可能在位置信息中直接引入類似的先驗信息,幫助模型在對這些先驗信息敏感的任務上取得更好的結果呢?

讓我們拭目以待~

參考文獻

[1] Vaswani, Ashish et al. “Attention is All you Need.” NIPS (2017). https://arxiv.org/abs/1706.03762

[2] Shaw, Peter et al. “Self-Attention with Relative Position Representations.” NAACL-HLT (2018). https://arxiv.org/abs/1803.02155

[3] Dai, Zihang et al. “Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context.” ACL (2019). https://arxiv.org/abs/1901.02860

[4] Yan, Hang et al. “TENER: Adapting Transformer Encoder for Named Entity Recognition.” ArXiv abs/1911.04474 (2019): n. pag. https://arxiv.org/abs/1911.04474

[5] Gehring, Jonas et al. “Convolutional Sequence to Sequence Learning.” ArXiv abs/1705.03122 (2017): n. pag. https://arxiv.org/abs/1705.03122

[6] Devlin, Jacob et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” ArXiv abs/1810.04805 (2019): n. pag. https://arxiv.org/abs/1810.04805

[7] How self-attention with relative position representations works https://medium.com/@init/how-self-attention-with-relative-position-representations-works-28173b8c245a

[8] Al-Rfou, Rami et al. “Character-Level Language Modeling with Deeper Self-Attention.” AAAI (2019). https://arxiv.org/abs/1808.04444

[9] Google AI Blog https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html

[10] Transformer Architecture: The Positional Encoding https://kazemnejad.com/blog/transformer_architecture_positional_encoding/#what-is-positional-encoding-and-why-do-we-need-it-in-the-first-place

[11] Wang, Benyou et al. “Encoding word order in complex embeddings.” ArXiv abs/1912.12333 (2019): n. pag. https://openreview.net/forum?id=Hke-WTVtwr

本期責任編輯:丁   效

本期編輯:顧宇軒

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/QAwHPkXb29_Y1u9I9gDokw