淺談 Transformer 模型中的位置表示
公衆號關注 “ML_NLP”
作者:哈工大 SCIR 徐嘯
- 何爲位置信息 =========
首先簡單談一下位置信息。一般將位置信息簡單分爲絕對位置信息和相對位置信息,並且前者對句子語義的影響不大,更爲重要的是後者。
以情感分析 (Sentiment Analysis) 爲例:
-
I like that you don’t have a lot of money.
[Positive]
-
I don’t like you because you have a lot of money.
[Negative]
don’t 與 like 的相對位置不同(包括相對距離不同和方向不同),決定了這兩句話的情感取向是一正一負的,可見單詞的相對位置對語義有關鍵性影響。不過,在傳統詞袋(Bag-Of-Words, BOW)模型中,這兩句話得到的句子表徵卻是一致的。
再以命名實體識別 (Named Entity Recognition, NER) 爲例 [4]:
圖 1 命名實體識別示例
一般而言,在 Inc. 之前的單詞爲ORG
,而在 in 之後爲 TIME
或 LOC
。但是同爲 Louis Vuitton ,與 Inc. 相距較遠的爲PER
,指的是創立者這一實體,而相距較近的爲ORG
,指的是組織(公司)這一實體。可見,單詞之間的相對位置在 NER 任務中是十分重要(敏感)的。
需要注意的是,相對位置是具有方向性的,即 Inc. 與 in 的相對距離爲 -1,1854 與 in 的相對距離爲 1
那麼,如何對位置信息進行表示呢?
下文結合 Transformer 的位置表示、RPR、Transformer-XL 以及 Complex Embeddings,試解釋位置信息的表示問題。
- Transformer 的位置表示 ====================
原始 Transformer[1] 中使用 Positional Encoding 生成固定的位置表示。
其中,pos 指的是 token 的位置。設句子長度爲 L,那麼
圖 2 以
圖 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 表示位置嵌入的維度,
因此,對於給定的位置 pos 和 偏移量 k 而言,
圖 3 TENER[4] 中對點積結果的可視化
此外,由於點積結果只依賴於 k,那麼令
那麼,對於給定的位置 pos 和偏移量 k 而言:
也即兩者的點積無法反映方向性。
如圖 4 所示,兩者點積的結果是對稱的,並且隨着位置的增大而減小。
圖 4 Sinusoidal position encoding 點積可視化 [10]
但是在 Transformer 中,由於需要經過映射,即兩者間的點積實際是
圖 5 TENER[4] 中對包括映射矩陣後的點積結果的可視化
另外,Transformer 之前的 ConvSeq[5] 以及之後的 BERT[6] 都沒有選擇使用 Positional Encoding 的方式生成位置表示,而是採取了所謂的 learned and fixed 的可學習的 Position embedding。也就是去訓練一個位置嵌入矩陣,大小爲
- 相對位置表示 =========
Relative Position Representations[2](下文簡稱爲 RPR) 一文中認爲,RNN 通常依靠其循環機制,結合 t 時刻的輸入和前一時刻的隱層狀態
Transformer 中的 Self-attention 機制如下,輸入
RPR 不在輸入時將位置表示與 token 表示相加,而是選擇對 self-attention 進行改動:
這裏的
因此,模型學習相對位置表示
此處公式有些晦澀,故此舉一實例 [7] 加以解釋:
當 k=4 時,
如圖 6 所示,“I” 使用的是
圖 6 RPR 示例 1
如圖 7 所示,“I” 使用的是
圖 7 RPR 示例 2
另外,作者認爲精確的相對位置信息在超出了一定距離之後是沒有必要的,並且截斷後會使得模型的泛化效果好,即可以更好的泛化到沒有在訓練階段出現過的序列長度上。
這裏試舉一例幫助理解。當輸入句子長度爲 12 且 k = 4 時, RPR 的嵌入矩陣如圖 8 所示:
圖 8:RPR 嵌入矩陣
不過,論文在對機器翻譯任務進行消融實驗(表 1 所示)時發現,
表 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) 兩個版本的實現。
- 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)
在評估過程中(圖 11),原始模型也在每一步中消耗與訓練中相同長度片段,但僅在最後一個位置進行預測。然後,在下一步僅將片段向右移動一個位置,並且重新進行計算。如圖 9.b 所示,如此可確保每一步預測都能利用訓練期間暴露的最長可能上下文,並且還緩解了訓練中遇到的上下文碎片問題。但是,這種評估過程太過昂貴。
這裏我們先來看 Transformer-XL 中的片段循環機制。引入循環機制,在訓練過程中,前一片段中的隱藏狀態序列 (每一層都) 會被固定並緩存,以便在處理下一片段時使用其作爲「擴展上下文」。如圖 12.a 所示,綠色部分表示當前片段使用的擴展上下文。對於每一層而言,輸入爲前一片段以及當前片段的前一層的輸出,從而可以保證對長期依賴的建模能力並避免了上下文碎片問題(圖 13)。
圖 12 Transformer-XL 模型訓練與評估流程可視化(片段長度爲 4)
圖 13 動態演示: Transformer-XL 的訓練過程 [9]
下面用公式表達上述過程。第 𝛕 與 𝛕+1 個長度爲 L 的連續片段表示爲
其中,
藉助片段循環機制,可以使隱藏狀態做到片段級循環,這實際上使得有效的上下文可以遠遠超過兩個片段。注意,這裏的
採用片段循環機制,不僅可以獲得更長的上下文從而解決上下文碎片問題,而且可以加快評估速度。在評估過程中,XL 可以重複使用先前片段中的表示,不需要像 vanilla model 那樣重新計算(圖 14)。最後,理論上講,可以在 GPU 內存允許的範圍內緩存儘可能多的片段作爲擴展的上下文,並將可能跨越了多個片段的舊隱藏狀態稱爲 Memory
圖 14 動態演示: Transformer-XL 的評估過程 [9]
在藉助上述文字充分理解片段循環機制後,再來看爲了在 Transformer 中實現這一機制而提出的 Relative Positional Encodings。
在片段循環機制中,有一個重要問題沒有得到解決:如何保證在循環時,位置信息的連貫性?具體而言,vanilla Transformer 中使用 positional encodings 獲得
其中,
爲了避免上述問題的出現,論文提出了僅在隱藏狀態中對相對位置信息進行編碼。
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” 靜態放入初始嵌入中。更重要的是,以相對方式定義的時間偏差是更爲直觀和可概括的。例如,查詢向量
因此,可以創建一組相對位置編碼
爲了理解如何動態引入相對位置信息,我們首先將同一片段內的
Transformer-XL 基於僅依賴相對位置信息的思想,提出如下改動:
下面對改動進行一一解釋。
-
首先將 (b), (d) 中用於計算鍵向量的絕對位置編碼
替換爲相對位置編碼 。注意這裏的 R 不是可學習的,而是和 vanilla Transformer 中類似的正弦編碼矩陣,只要將其公式中的 pos 替換爲 i-j 即可。(這裏的 ,因爲模型是自迴歸的) -
接着引入可訓練參數
來代替 (c) 中原來的 ,這使得所有查詢位置 i 的查詢向量都是相同的,所以不管查詢位置是什麼,對不同單詞的注意偏差都是相同的。類似的,引入 來代替 (d) 中的 。 -
最後,將原來的
分爲兩個權重矩陣 ,分別生成基於內容的和基於位置的鍵向量。
Transformer-XL 認爲此時的公式中的每一項都尤其直觀含義:
-
(a) 表示基於內容的處理(content-based addressing)
-
(b) 表示基於內容的位置偏差(content-dependent positional bias)
-
(c) 表示整體內容偏差(global content bias)
-
(d) 表示整體位置偏差 (global positional bias)
與 RPR 相比,RPR 僅僅只有 (a) 與 (b) 兩項,並且將
結合上述兩種機制,就得到了 Transformer-XL 的體系結構。對於一個單注意力頭的 N 層 Transformer-XL 而言,對於
其中,
這裏需要補充的是,Transformer-XL 所採用的相對距離表示方法是不具有方向性的,即
- Complex Embeddings =====================
上述兩篇工作都是從 Attention 計算的角度出發,嘗試在計算點積時融入相對位置信息。而 Encoding word order in complex embeddings[11] 一文則從單詞嵌入和位置嵌入相結合的角度出發,設計了關於位置變量的連續函數,並擴展到了複數域,獲得了更豐富的表示。
Complex Embbdeeings 一文認爲,當前的神經網絡使用位置嵌入來對單詞位置進行建模,問題在於位置嵌入捕獲單個單詞的位置,而不捕獲單詞位置之間的有序關係(例如相鄰或前序)。例如 ConvSeq 中的位置嵌入假設單個單詞位置是獨立的,並且不考慮相鄰單詞位置之間的關係。作者認爲,單詞的全局絕對位置及其內部順序和相鄰關係在語言上都是至關重要的。這一點也在 RPR 和 Transformer-XL 兩篇文章中有提及,展示了對序列元素之間的距離進行建模的重要性,並明確使用額外的相對位置編碼來捕獲單詞的相對距離關係。文中提出的解決方案,將以前定義爲獨立向量的詞嵌入,推廣爲關於位置變量的連續函數。位置變量的連續函數的好處是單詞表示會隨着位置的增加而平滑地移動。因此,處於不同位置的單詞表示可以以連續函數彼此相關。爲了更豐富的表示,這些函數的通用解決方案擴展到了複數值域。
首先,詞嵌入 WE 通常定義爲一個將離散的詞索引映射到一個 D 維實值向量的映射函數
類似的,位置嵌入 PE 定義了另一個將一個離散的位置索引映射到一個向量的映射函數
由於單詞嵌入映射
但是,位置索引捕獲了一個有序的關係,例如相鄰關係或前序關係,現在的做法導致在各個位置上位置嵌入是相互獨立的。位置之間的有序關係未建模。作者將此稱爲位置獨立性問題 (position independence problem)。
在位置不敏感的神經網絡中使用位置嵌入時,此問題變得尤爲重要,例如 FastText,ConvSeq 和 Transformer,因爲它對於具有原始位置嵌入的對位置不敏感的神經網絡而言,很難推斷出位置 pos 的
接近位置 pos+1 的 ,或者 在 之前(即之前提到相鄰或前序);相反,只能推斷 和 位於不同的位置,而它們之間的相對距離幾乎是未知的。因此,原始位置嵌入無法完全捕捉語言的順序方面。
在等式 (5) 裏的通用定義中,每個維度的位置嵌入是基於離散位置索引 {0, 1, 2, …, pos, …} 獲得的。這使得很難建模位置之間的有序關係。該問題的一種解決方案是在位置索引上構建連續函數,以表示特定單詞的單個維度。形式上,我們將通用嵌入定義爲:
其中
其中
上述函數應當滿足以下屬性:
-
**位置無關的偏移轉換 (Position-free offset transformation) **:
對於所有的
,存在函數 滿足 。也就是說同一單詞在不同位置的表示,可以通過一個只和相對距離 n 有關的變換函數進行轉換。 -
**有界性 (Boundedness) **:
關於位置變量的函數應有界,即
爲了降低難度,作者假設變換函數
那麼對於任意
在實現中,上述 g 的定義將會帶來一個關於限制
一個自然且簡單的避免這一問題的方法是固定
因此可以簡化形式寫爲
那麼現在我們可以定義複數域詞嵌入 g 是從詞索引 j 和詞位置索引 pos 到
振幅
在圖 15 中,每個維度都表示爲一個波,該波由振幅,週期 / 頻率和初始相位參數化。嵌入的可訓練參數是振幅向量
圖 15 (單個單詞在不同位置的 3 維 複數嵌入。三個波函數(將初始相位設置爲零)顯示了嵌入的實部;虛部具有π/2 的相位差,並顯示與實值對應的相同曲線。x 軸表示單詞的絕對位置,y 軸表示單詞向量中每個元素的值。顏色標記了嵌入的不同維度。函數和每條垂直線之間的三個交叉點(對應於特定位置 pos)表示該單詞在第 pos 個位置的嵌入。) 本圖用三維複數值嵌入說明了這種類型的單詞表示,其中振幅 {r1, r2, r3} 表示對應於經典單詞向量的語義方面,而週期 {p1, p2, p3} 表示這個詞對位置信息有多敏感。
我們可以觀察到:
-
所有位置上的
的平均值與振幅嵌入線性相關。 並且振幅嵌入 只依賴於單詞(和維度 d ),而不是單詞的位置,那麼我們可以將向量 視爲 “純” 位置嵌入。因此,我們的複數嵌入可以被視爲單詞嵌入 與位置嵌入 之間的逐元素乘法: -
週期 / 頻率確定單詞對位置的敏感程度:在極長的週期內(即
非常小),對於所有可能的 pos 值,複數值嵌入近似恆定,因此近似於標準詞嵌入。相反,如果週期短,則嵌入將對位置參數高度敏感。
那麼可以認爲,不同於以往對位置嵌入進行的加性操作,作者將單詞嵌入和位置嵌入通過逐元素乘法在某種程度上解耦,因此頻率 / 週期項(與
此外,原文中還描述了降低參數量的技巧,以及如何在 CNN、RNN 和 Transformer 中使用 Complex Embeddings。在附錄中,還介紹了與原始 Transformer 位置嵌入的關係。
- 小結與展望 ========
本文主要對原始 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) 進行對比:
-
從可解釋性 / 可理解性上來說,我認爲後三者基於公式構造的方式是優於 LPE 的,尤其是 CE 通過優美的數學證明爲我們提供了表示能力更好的複數域表示,並且語義信息和位置信息的重要性尺寸是自適應學習的。
CE 還在附錄中證明了其特定情況與 Transformer 使用的位置編碼之間存在直接的聯繫。
-
從可擴展性上來說,後三者的可擴展性優於 LPE,因爲 LPE 受限於最大序列長度,一旦需要擴展到更長的序列上,就必須重新訓練。
-
從參數量上來說,LPE 的參數量與其設置的最大序列長度線性相關,SPE 與 RPR 不會引入額外的參數,而 CE 在不進行參數優化時的參數量是原 Word Embedding 的三倍。
-
從實驗效果上來說,在 SPE 提出後,Transformer 原文表示 LPE 和 SPE 的效果並無明顯差別,而後續工作也基本是結果導向的。
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