導讀 :今天分享一篇華人學者發表在頂會ICLR 2020上的論文《Encoding Word Order in Complex Embeddings 》,主要對序列建模的位置信息編碼方法進行研究。可以閱讀先前的文章《一文讀懂Transformer模型中的位置編碼 》對其中的一種位置信息編碼方式的深入分析。本文認爲先前的方法需要獨立訓練每個位置向量,而且也不能建模序列的鄰接或者優先關係。本文把這種問題稱之爲position independence problem 。爲此,本文提出了一種新穎的方法Complex-order 來解決這樣的問題。
點評 :本文的idea非常簡單清晰,帶來的效果提升也非常明顯,文中的證明推導也非常棒,研究工作非常具有創新性,值得一讀。作者開源了實現代碼 ,有興趣的朋友可以跑一邊實驗。
研究背景及動機
語言是有順序的。神經網絡在建模這種順序結構時,因爲難以並行化處理,使得計算代價變得非常地高。通過在特徵級別上添加position embeddings而不是在神經網絡架構上對詞的順序進行建模已經可以減輕這樣的問題(參考對位置編碼的詳細解讀),比如Gehring等人的ConvSeq與Vaswani等人著名的Transformer模型。先前的研究工作通過引入額外的位置編碼,在Embedding層將詞向量與位置向量相加進行融合:
f ( j , p o s ) = f w e ( j ) + f p e ( p o s )
f(j, pos) = f_{we}(j)+f_{pe}(pos)
f ( j , p o s ) = f w e ( j ) + f p e ( p o s )
但是,這種方法只接受整型數值作爲詞索引或位置索引,每個詞或位置都只能通過獨立訓練得到。這對每個詞向量是合理的,因爲詞的索引是建立在給定的詞典的順序之上的。但這種方法不能捕捉 ordered relationship(鄰接或優先關係),會導致每個位置上的位置向量是彼此獨立的,作者稱之爲position independence problem 。這種問題對於位置不敏感的神經網絡(如FastText,ConvSeq及Transformer)來說變得尤爲重要。
研究內容及方法
本文主要對序列建模的位置信息編碼進行研究,針對先前的研究方法可能導致的position independence problem ,本文提出了一種非常新穎的改進方法——Complex order ——對詞的這種全局絕對位置及它們的內在順序及鄰接關係進行建模。這樣的話,Gehring等人提出的_position-independent_的位置向量可以被認爲是該方法在獨立變量上的特例。
作者將每個詞嵌入擴展爲一個自變量爲位置 p o s pos p o s 的一個連續函數,好處在於詞表示可以隨着位置的變化而平滑地移動,不同位置上的詞表示就可以互相關聯起來。函數定義如下:
f ( j , p o s ) = g j ( p o s ) ∈ R D
f(j, pos)=\textbf{g}_j(pos)\in \mathbb{R}^D
f ( j , p o s ) = g j ( p o s ) ∈ R D
其中,f ( j , p o s ) f(j,pos) f ( j , p o s ) 表示此表中序號爲 j j j 的單詞在位置 p o s pos p o s 上的單詞向量,g j \mathbf{g}_j g j 是 g w e ( j ) ∈ ( F ) D \mathbf{g}_{we}(j)\in(\mathcal{F})^D g w e ( j ) ∈ ( F ) D 的縮寫,D D D 表示函數集合,g w e ( ⋅ ) g_{we}(\cdot) g w e ( ⋅ ) :N → ( F ) D \mathbb{N} \rightarrow \mathcal(F)^D N → ( F ) D 表示單詞索引到函數的映射。展開爲:
[ g j , 1 ( p o s ) , g j , 2 ( p o s ) , ⋯ , g j , D ( p o s ) ] ∈ R D
[g_{j,1}(pos),g_{j,2}(pos),\cdots,g_{j,D}(pos)] \in \mathbb{R}^D
[ g j , 1 ( p o s ) , g j , 2 ( p o s ) , ⋯ , g j , D ( p o s ) ] ∈ R D
對於任意的 g j , d ( ⋅ ) ∈ F g_{j,d}(\cdot) \in \mathcal{F} g j , d ( ⋅ ) ∈ F : N → R \mathbb{N} \rightarrow \mathbb{R} N → R ,d ∈ { 1 , 2 , ⋯ , D } d \in \{1, 2, \cdots, D\} d ∈ { 1 , 2 , ⋯ , D } ,都是關於位置索引p o s pos p o s 的一個函數。在無需改變函數 g j \mathbf{g}_j g j 的情況下,只需要替換一下變量 p o s pos p o s 就可以實現把詞 w j w_j w j 從當前位置 p o s pos p o s 移動到另一個位置 p o s ′ pos^{\prime} p o s ′ 。
爲了達到上述要求,函數需要滿足以下兩條性質:
Property 1. Position-free offset transformation :
存在變換函數Transform : N × C → C \mathbb{N}\times \mathbb{C} \rightarrow \mathbb{C} N × C → C ,使得對於任意位置 p o s ∈ N pos \in \mathbb{N} p o s ∈ N 和 n > 1 n > 1 n > 1 ,Transformn ( ⋅ ) _n(\cdot) n ( ⋅ ) =Transform( n , ⋅ ) (n, \cdot) ( n , ⋅ ) 滿足:
g ( p o s + n ) = Transform n ( g ( p o s ) )
g(pos+n) = \text{Transform}_n(g(pos))
g ( p o s + n ) = Transform n ( g ( p o s ) )
作者把這樣的函數Transform稱之爲witness 。論文只考慮線性變換,即每個Transformn _n n 是一個線性函數。
Property 2. Boundedness :
關於位置變量的函數應該是有界的,也就是:
∃ δ ∈ R + , ∀ pos ∈ N , ∣ g ( pos ) ∣ ≤ δ
\exist\delta \in \mathbb{R}^+, \forall \text{pos} \in \mathbb{N}, |g(\text{pos})| \leq \delta
∃ δ ∈ R + , ∀ pos ∈ N , ∣ g ( pos ) ∣ ≤ δ
作者給出了滿足上述兩條性質的解函數的形式:
g ( p o s ) = z 2 z 1 p o s f o r z 1 , z 2 ∈ C w i t h ∣ z 1 ∣ ≤ 1
g(pos) = z_2z_1^{pos} \ for \ z_1,z_2 \in \mathbb{C} \ with |z_1| \leq 1
g ( p o s ) = z 2 z 1 p o s f o r z 1 , z 2 ∈ C w i t h ∣ z 1 ∣ ≤ 1
證明 如下:
對於任意位置 n 1 , n 2 ∈ N n_1,n_2 \in \mathbb{N} n 1 , n 2 ∈ N ,有
w ( n 1 ) w ( n 2 ) g ( p o s ) = w ( n 2 ) g ( p o s + n 1 ) = g ( p o s + n 1 + n 2 ) = Transform n 1 + n 2 ( g ( p o s ) ) = w ( n 1 + n 2 ) g ( p o s )
\begin{array}{l}
w(n_1)w(n_2)g(pos) &= &w(n_2)g(pos+n_1) \\
& = & g(pos+n_1+n_2) \\
& = & \text{Transform}_{n_1+n_2}(g(pos)) \\
& = & w(n_1+n_2)g(pos)
\end{array}
w ( n 1 ) w ( n 2 ) g ( p o s ) = = = = w ( n 2 ) g ( p o s + n 1 ) g ( p o s + n 1 + n 2 ) Transform n 1 + n 2 ( g ( p o s ) ) w ( n 1 + n 2 ) g ( p o s )
因此有 w ( n 1 + n 2 ) = w ( n 1 ) w ( n 2 ) w(n_1+n_2) = w(n_1)w(n_2) w ( n 1 + n 2 ) = w ( n 1 ) w ( n 2 ) 。令 w ( 1 ) = z 1 w(1) = z_1 w ( 1 ) = z 1 ,g ( 0 ) = z 2 g(0) = z_2 g ( 0 ) = z 2 ,因爲 n 1 n_1 n 1 ,n 2 n_2 n 2 是任意的,因此對於所有的 n ∈ N n \in \mathbb{N} n ∈ N ,都有
w ( n ) = ( w ( 1 ) ) n = z 1 n
w(n) = (w(1))^n = z_1^n
w ( n ) = ( w ( 1 ) ) n = z 1 n
g ( p o s + n ) = w ( n ) g ( p o s ) = z 1 n g ( p o s )
g(pos+n) = w(n)g(pos) = z_1^ng(pos)
g ( p o s + n ) = w ( n ) g ( p o s ) = z 1 n g ( p o s )
而且,當 p o s ≥ 1 pos \geq 1 p o s ≥ 1 ,我們有 g ( p o s ) = g ( 1 + p o s − 1 ) = w ( p o s ) g ( 0 ) = z 1 p o s z 2 = z 2 z 1 p o s g(pos) = g(1+pos - 1) = w(pos)g(0) = z_1^{pos}z_2=z_2z_1^{pos} g ( p o s ) = g ( 1 + p o s − 1 ) = w ( p o s ) g ( 0 ) = z 1 p o s z 2 = z 2 z 1 p o s 。對於 p o s = 0 pos=0 p o s = 0 ,g ( 0 ) = z 2 = z 2 z 1 0 g(0)=z_2=z_2z1^0 g ( 0 ) = z 2 = z 2 z 1 0 ,因此有 g ( p o s ) = z 2 z 1 p o s g(pos) = z_2z_1^{pos} g ( p o s ) = z 2 z 1 p o s 。
當 ∣ z 1 ∣ > 1 |z_1| > 1 ∣ z 1 ∣ > 1 ,g ( p o s ) g(pos) g ( p o s ) 就不是有界函數,因此限制 ∣ z 1 ∣ ≤ 1 |z_1| \leq 1 ∣ z 1 ∣ ≤ 1 ,此時,∣ g ( p o s ) ∣ ≤ ∣ z 2 z 1 p o s ∣ ≤ ∣ z 2 ∣ ∣ z 1 p o s ∣ ≤ ∣ z 2 ∣ |g(pos)| \leq |z_2z_1^{pos}| \leq |z_2||z_1^{pos}| \leq |z_2| ∣ g ( p o s ) ∣ ≤ ∣ z 2 z 1 p o s ∣ ≤ ∣ z 2 ∣ ∣ z 1 p o s ∣ ≤ ∣ z 2 ∣ ,函數 g g g 就是有界的。
又由 w ( n ) = z 1 n w(n) = z_1^n w ( n ) = z 1 n 和 Transformn ( p o s ) = w ( n ) p o s _n(pos)=w(n)pos n ( p o s ) = w ( n ) p o s ,對所有的位置 p o s pos p o s ,得
g ( p o s + n ) = z 2 z 1 p o s + n = z 2 z 1 p o s z 1 n = g ( p o s ) z 1 n = Transform n ( g ( p o s ) )
g(pos + n) = z_2z_1^{pos + n} = z_2z_1^{pos}z_1^n = g(pos)z_1^n = \text{Transform}_n(g(pos))
g ( p o s + n ) = z 2 z 1 p o s + n = z 2 z 1 p o s z 1 n = g ( p o s ) z 1 n = Transform n ( g ( p o s ) )
得證。
對於任意的 z ∈ C z \in \mathbb{C} z ∈ C ,我們可以寫成 z = r e i θ = r ( cos θ + i sin θ ) z = r e^{i\theta} = r(\cos\theta + i \sin\theta) z = r e i θ = r ( cos θ + i sin θ ) 。因此,可以簡化爲
g ( p o s ) = z 2 z 1 p o s = r 2 e i θ 2 ( r 1 e i θ 1 ) p o s = r 2 r 1 p o s e i ( θ 2 + θ 1 p o s ) s u b j e c t t o ∣ r 1 ∣ ≤ 1
g(pos) = z_2z_1^{pos} = r_2 e^{i\theta_2}(r_1e^{i\theta_1})^{pos} = r_2r_1^{pos}e^{i(\theta_2+\theta_1pos)} \quad subject \ to \ |r_1| \leq 1
g ( p o s ) = z 2 z 1 p o s = r 2 e i θ 2 ( r 1 e i θ 1 ) p o s = r 2 r 1 p o s e i ( θ 2 + θ 1 p o s ) s u b j e c t t o ∣ r 1 ∣ ≤ 1
在實現過程中,由於上述 ∣ r 1 ∣ ≤ 1 |r_1| \leq 1 ∣ r 1 ∣ ≤ 1 的限制,函數g g g 的上述定義會導致優化問題,因此一種自然而簡單的避免這個問題的方法就是固定 r 1 = 1 r_1 = 1 r 1 = 1 ,那麼 ∣ e i x ∣ ≡ 1 |e^{ix}|\equiv1 ∣ e i x ∣ ≡ 1 ,上式就可以簡化爲:
g ( p o s ) = r e i ( w pos + θ )
g(pos) = r e^{i(\mathcal{w} \text{pos} + \theta)}
g ( p o s ) = r e i ( w pos + θ )
最終的embedding表示爲:
f ( j , p o s ) = g j ( p o s ) = r j e i ( w j p o s + θ j ) = [ r j , 1 e i ( w j , 1 p o s + θ j , 1 ) , ⋯ , r j , 2 e i ( w j , 2 p o s + θ j , 2 ) , ⋯ , r j , D e i ( w j , D p o s + θ j , D ) ]
\begin{array}{c}
f(j, pos) &=& \mathbf{g}_j(pos) = \mathbf{r}_je^{i(w_j \ pos+\theta_j)} \\
&=& [r_{j,1}e^{i(w_{j,1} \ pos +\theta_{j,1})}, \cdots,r_{j,2}e^{i(w_{j,2} \ pos + \theta_{j,2})}, \cdots, r_{j,D}e^{i(w_{j,D} \ pos + \theta_{j, D})}]
\end{array}
f ( j , p o s ) = = g j ( p o s ) = r j e i ( w j p o s + θ j ) [ r j , 1 e i ( w j , 1 p o s + θ j , 1 ) , ⋯ , r j , 2 e i ( w j , 2 p o s + θ j , 2 ) , ⋯ , r j , D e i ( w j , D p o s + θ j , D ) ]
其中,每個座標點 d ( 1 ≤ d ≤ D ) d (1 \leq d \leq D) d ( 1 ≤ d ≤ D ) 都有各自的參數:振幅 r j , d r_{j,d} r j , d 、週期 p j , d p_{j,d} p j , d 、初相 θ j , d \theta_{j,d} θ j , d ,這三個參數都是需要學習的參數。表示作者將這種新的編碼方式稱爲 general complex-valued embedding (通用複數值嵌入)。
實驗及結果
作者主要在文本分類、機器翻譯及語言建模三個任務上對這種新的位置編碼進行了評估。
1. 文本分類
實驗設置
數據集:採用CR、MPQA、SUBJ、MR、SST、TREC等五個常用數據集,數據集統計如下:
基準方法:選擇Fasttext、CNN、LSTM、Transformer等四種神經網絡模型,爲每個模型分別進行以下四種配置:(1)不使用位置編碼;(2)Gehring等人的Vanilla Position Embeddings (PE);(3)Vaswani等人的Trigonometric Position Embeddings (TPE);(4)Wang等人的Complex-vanilla word embeddings;(5)本文提出的位置感應的複數值詞嵌入Complex-order 。
實驗結果如下:
時間消耗對比結果如下:
作者還在Transformer模型上進行了消融性測試,結果如下表所示:
2. 機器翻譯
數據集:WMT 2016 English-German數據集
基準方法:(1)basic Attentional encoder-decoder (AED);(2)AED with Byte-pair encoding (BPE) subword segmentation for open-vocabulary translation;(3)AED with extra linguistic features;(4)本文的Transformer Complex-order
3. 語言建模
數據集:text8(English Wikipedia articles)
基準方法:BN-LSTM,LN HM-LSTM RHN,Large mLSTM
實驗結果如下:
想要了解更多的自然語言處理最新進展、技術乾貨及學習教程,歡迎關注微信公衆號“DestinedAI”或掃描二維碼添加關注。