Transformer Assemble(PART III)

本文首發於微信公衆號:NewBeeNLP,歡迎關注獲取更多幹貨資源。

這一期魔改Transformers主要關注對原始模型中位置信息的討論與優化,

  • Self-Attention with RPR from Google,NAACL2018
  • Self-Attention with SPR from Tencent,EMNLP 2019
  • TENER from FDU
  • Encoding Word Order in Complex Embedding,ICLR2020

1、Self-Attention with Relative Position Representations

一篇短文不是很難理解,文章要解決的痛點也非常清晰:self-attention機制在處理序列輸入時無法編碼位置信息。在原始Transformer裏是採取sin/cos函數顯示地引入位置信息,考慮的是絕對位置:
PE(pos,2i)=sin(pos1000002i/dnodd)PE( pos ,2i+1)=cos( pos 100002i/dnodd) \begin{aligned} &P E(\text {pos}, 2 i)=\sin \left(\frac{\text {pos}}{100000^{2 i / d_{\text {nodd}}}}\right)\\ &P E(\text { pos }, 2 i+1)=\cos \left(\frac{\text { pos }}{10000^{2 i / d_{\text {nodd}}}}\right) \end{aligned} 其中,pospos表示token在序列中的位置,ii表示position embedding的第ii維,總共有dmodeld_{model}維。另外,作者在原文中指出,sin/cos函數的週期性形式可以允許模型進一步學習到相對位置的信息。但是這種方式學習到的相對位置信息仍然是存在較大缺陷的,參考文章【淺談 Transformer-based 模型中的位置表示】

正對以上問題,這篇論文提出一種相對位置信息引入Transformer的方法。

Vanilla Transformer

爲了方便兩者的對比,給出原始Transformer裏self-attention的計算:
zi=j=1nαij(xjWV) z_{i}=\sum_{j=1}^{n} \alpha_{i j}\left(x_{j} W^{V}\right) αij=expeijk=1nexpeik \alpha_{i j}=\frac{\exp e_{i j}}{\sum_{k=1}^{n} \exp e_{i k}} eij=(xiWQ)(xjWK)Tdz e_{i j}=\frac{\left(x_{i} W^{Q}\right)\left(x_{j} W^{K}\right)^{T}}{\sqrt{d_{z}}}

eije_{ij}: the scaled dot product of token ii and token jj;
αij\alpha_{ij}: the weight coefficient of token ii and token jj;
ziz{i}: the output representation of token ii

Relative Position Representations

輸入被看成是有向全連接圖,兩個token xix_{i}xjx_{j}之間的邊設置了權重aijV,aijKRdaa_{i j}^{V}, a_{i j}^{K} \in \mathbb{R}^{d_{a}},用做attention時key-value對添加相對位置信息。
在這裏插入圖片描述
作者認爲,在token之間超過一定距離之後相對位置信息就沒有意義,因此設置了一個最大截斷kk,且截斷可以更好地提升模型泛化能力。計算公式如下:
aijK=wclip(ji,k)KaijV=wclip(ji,k)Vclip(x,k)=max(k,min(k,x)) \begin{aligned} a_{i j}^{K} &=w_{\operatorname{clip}(j-i, k)}^{K} \\ a_{i j}^{V} &=w_{\operatorname{clip}(j-i, k)}^{V} \\ \operatorname{clip}(x, k) &=\max (-k, \min (k, x)) \end{aligned} 其中,上面的aijKa_{i j}^{K}aijVa_{i j}^{V}都是需要學習的,即需要學習的爲wK=(wkK,,wkK) and wV=(wkV,,wkV) w^{K}=\left(w_{-k}^{K}, \ldots, w_{k}^{K}\right) \text { and } w^{V}=\left(w_{-k}^{V}, \ldots, w_{k}^{V}\right) 公式可能不好理解,舉個栗子,假設序列長度N=9,截斷窗口k=3,則RPR嵌入的lookup表如下圖,感覺跟滑動窗口有點像:
wK=(w4K,,w4K) w^{K}=\left(w_{-4}^{K}, \ldots, w_{4}^{K}\right) wV=(w4V,,w4V)w^{V}=\left(w_{-4}^{V}, \ldots, w_{4}^{V}\right) 在這裏插入圖片描述

Relation-aware Self-Attention

理解上面RPR之後,就可以對原始self-attention進行改寫,將相對位置信息融入進去:
zi=j=1nαij(xjWV+aijV) z_{i}=\sum_{j=1}^{n} \alpha_{i j}\left(x_{j} W^{V}+a_{i j}^{V}\right) eij=xiWQ(xjWK+aijK)Tdz e_{i j}=\frac{x_{i} W^{Q}\left(x_{j} W^{K}+a_{i j}^{K}\right)^{T}}{\sqrt{d_{z}}}
雖然論文基本概念相對簡單(自注意力機制中包含了相對位置信息),但是它極大地提高了兩個機器翻譯任務的翻譯質量。

Reference


Self-Attention with Structural Position Representations

不管是transformer原文的絕對位置編碼還是上文引入的相對位置編碼,都屬於sequential information。作者從Hewitt和Manning發表的論文中得到啓發:句子的潛在結構可以通過結構深度和距離來捕獲,於是他們提出了absolute structural position來編碼元素在句法樹種深度,relative structural position來編碼元素之間的距離。
在這裏插入圖片描述
上圖左邊屬於兩種序列位置編碼表示,具體在上一節已經有介紹;右邊是本文提出的結構位置編碼,分爲兩種:

  • Absolute Structural Position:把句子的主要動詞(如上圖"held")作爲origin,然後通過計算句法樹中目標詞語origin之間的距離作爲絕對結構位置信息:
    absstru(xi)=distancetree(xi,origin) \operatorname{abs}_{\operatorname{str} u}\left(x_{i}\right)=\operatorname{distance}_{\operatorname{tree}}\left(x_{i}, \text {origin}\right)
  • Relative Structural Position:相對位置信息考慮的單詞對之間的關係,
    • 如果單詞xix_{i}xjx_{j}在句法樹的同一條邊上,則相對位置即爲絕對位置之差:
      relstru(xi,xj)=absstru(xi)absstru(xj) r e l_{s t r u}\left(x_{i}, x_{j}\right)=a b s_{s t r u}\left(x_{i}\right)-a b s_{s t r u}\left(x_{j}\right)
    • 如果在不同的邊上,相對位置爲絕對位置之和乘上一個係數fstru(x)f_{s t r u}(x)
      relstru(xi,xj)=fstru(ij)(absstru(xi)+absstru(xj)) r e l_{s t r u}\left(x_{i}, x_{j}\right)=f_{s t r u}(i-j) *\left(a b s_{s t r u}\left(x_{i}\right)+a b s_{s t r u}\left(x_{j}\right)\right) 當兩個單詞正序時係數爲1;相同時係數爲0;逆序時係數爲-1:
      fstru(x)={1x>00x=01x<0 f_{s t r u}(x)=\left\{\begin{array}{ll} {1} & {x>0} \\ {0} & {x=0} \\ {-1} & {x<0} \end{array}\right.

接下去就是將結構位置信息整合進SAN,

  • 對於絕對位置,通過一個非線性函數將序列位置和結構位置融合得到位置表示:
    asb(xi)=fabs(ABSPE(absseq),ABSPE(absstru))\operatorname{asb}\left(x_{i}\right)=f_{a b s}\left(\mathrm{ABSPE}\left(a b s_{s e q}\right)\right.,\left.\mathrm{ABSPE}\left(a b s_{s t r u}\right)\right)
  • 對於相對位置,採用同上一篇論文一致的方法

一點疑問
簡單看了一下《A Structural Probe for Finding Syntax in Word Representations》,也就是作者在文章裏說給了他們motivation的論文,大概說的是通過structural probe檢測像BERT這樣的模型學到的context represetation是否包含了syntax tree信息,結論是可以學到句法樹的結構信息。那這樣爲啥還要加structural position representation呢?


TENER: Adapting Transformer Encoder for Named Entity Recognition

針對命名實體識別任務的一個工作,雖然Transformer系在NLP很多領域都取得了非常大的進步,但是在NER任務上表現不佳。作者分析了注意力機制與特定的NER任務,發現原始實現中的位置信息編碼注意力稀疏性方面不太適用於NER。

位置信息編碼
  • 距離性
    vanilla transformer中位置信息使用sin/cos函數嵌入,由公式定義
    PEt,2i=sin(t100002i/d)PEt,2i+1=cos(t100002/d) \begin{aligned} P E_{t, 2 i}=& \sin \left(\frac{t}{10000^{2 i / d}}\right) \\ P E_{t, 2 i+1} &=\cos \left(\frac{t}{10000^{2 / d}}\right) \end{aligned}可以推導出PEtTPEt+k=j=0d21[sin(cjt)sin(cj(t+k))+cos(cjt)cos(cj(t+k))]=j=0d21cos(cj(t(t+k)))=j=0d21cos(cjk) \begin{aligned} P E_{t}^{T} P E_{t+k} &=\sum_{j=0}^{\frac{d}{2}-1}\left[\sin \left(c_{j} t\right) \sin \left(c_{j}(t+k)\right)+\cos \left(c_{j} t\right) \cos \left(c_{j}(t+k)\right)\right] \\ &=\sum_{j=0}^{\frac{d}{2}-1} \cos \left(c_{j}(t-(t+k))\right) \\ &=\sum_{j=0}^{\frac{d}{2}-1} \cos \left(c_{j} k\right) \end{aligned} 可見兩個元素的點積只與它們之間的距離kk有關(距離敏感),但是進一步研究可以發現,當position embedding被映射到自注意力的鍵值對時,其就會失去距離敏感性,如下圖,最上面的曲線表示PEtTPEt+kP E_{t}^{T} P E_{t+k},可以反映對稱性;下面兩條曲線表示PEtTWPEt+kP E_{t}^{T}W PE_{t+k},無距離特性。
    在這裏插入圖片描述

論文中說PEtTWPEt+kP E_{t}^{T}W PE_{t+k}中的WW是隨機的,但是這個參數是可學習的,在模型訓練之後會不會效果變好?

  • 方向性
    此外,由上述推導可知,令j=tkj=t-k,有
    PEtTPEt+k=PEjTPEj+k=PEtkTPEt P E_{t}^{T} P E_{t+k}=P E_{j}^{T} P E_{j+k}=P E_{t-k}^{T} P E_{t} 因此這也是方向不敏感

由上分析可知該種嵌入方式並不能反映方向性和距離性,但是對於NER任務而言距離和方向都是尤爲重要的。爲此本文對注意力分數計算進行改進,將絕對位置改成相對位置:Q,K,V=HWq,Hdk,HWvQ, K, V=H W_{q}, H_{d_{k}}, H W_{v} Rtj=[,sin(tj100002idk)cos(tj100002idk),]T {R_{t-j}=\left[\ldots, \sin \left(\frac{t-j}{10000^{2 i} d_{k}}\right) \cos \left(\frac{t-j}{10000^{2 i} d_{k}}\right), \ldots\right]^{T}} Atjrel=QtTKj+QtTRtjuTKj+vTRtj {A_{t j}^{r e l}=Q_{t}^{T} K_{j}+Q_{t}^{T} R_{t-j} u^{T} K_{j}+v^{T} R_{t-j}} Attn(Q,K,V)=softmax(Arel)V {A t tn(Q, K, V)=\operatorname{softmax}\left(A^{r e l}\right) V} 與transformer-xl裏的比較像。

注意力稀疏

注意到修改後的Attention計算最後沒有用到scaling係數d\sqrt{d},這是因爲對於NER任務只需要attend幾個相對重要的context就足夠了,scaled後的attention分佈過於平滑會引入噪音。

這篇論文感覺主要重點在工程意義,在NER任務達到最好的效果;針對NER任務做了專門的修改,除了上面的相對位置信息和係數注意力,由於NER數據集相對較小,也減少了模型的可學習參數避免過擬合。

reference


Encoding Word Order in Complex Embedding

比較有意思的工作,關注的點也是在序列建模的位置信息編碼。先前的方法通過引入額外的位置編碼,在embedding層將詞向量和位置向量通過加性編碼融合,
f(j,pos)=fwe(j)+fpe(pos) f(j, p o s)=f_{w e}(j)+f_{p e}(p o s) 但是該種方式每個位置向量是獨立訓練得到的,並不能建模序列的order relationship(例如鄰接或優先關係),作者將此稱爲the position independece problem

針對該問題提出了一種新的位置編碼方式,將獨立的詞向量替換成自變量爲位置的函數,於是單詞表示會隨着位置的變化而平滑地移動,可以更好地建模單詞的絕對位置和順序信息。
f(j, pos )=gj( pos )CD f(j, \text { pos })=g_{j}(\text { pos }) \in \mathbb{C}^{D} 其中,f(j, pos )f(j, \text { pos })表示此表中序號爲jj的單詞在位置pospos時的單詞向量,DD表示函數集合,gwe():N(F)Dg_{w e}(\cdot):\mathbb{N} \rightarrow(\mathcal{F})^{D}表示單詞到函數的映射,展開即爲,[gj,1(pos),gj,2(pos),,gj,D(pos)]CD \left[g_{j, 1}(\mathrm{pos}), g_{j, 2}(\mathrm{pos}), \ldots, g_{j, D}(\mathrm{pos})\right] \in \mathbb{C}^{D}
爲了達到上述要求,函數應該滿足以下兩個條件:

Property 1. Position-free offset transformation

對於任意位置pos和n>1n>1,存在變換Transform n()=_{n}(\cdot)= Transform (n,)(n, \cdot)滿足,g(pos+n)= Transform n(g(pos)) g(\mathrm{pos}+n)=\text { Transform }_{n}(g(\mathrm{pos})) 特別地,論文考慮Transform爲線性變換

Property 2. Boundedness

函數應該是有界的,
δR+, pos N,g(pos)δ \exists \delta \in\mathbb{R}^{+}, \forall \text { pos } \in \mathbb{N},|g(\operatorname{pos})| \leq \delta
接下去,論文證明了滿足上述兩個條件的解函數形式爲,
g(pos)=z2z1pos for z1,z2C with z11 g(p o s)=z_{2} z_{1}^{p o s} \text { for } z_{1}, z_{2} \in \mathbb{C} \text { with }\left|z_{1}\right| \leq 1

貼一下論文給的證明:(看不看無所謂,能用就行haha)
假設函數gg滿足上述兩個條件,則對於任意位置n1,n2Nn_{1}, n_{2} \in \mathbb{N},有
w(n1)w(n2)g( pos )=w(n2)g( pos +n1)=g( pos +n1+n2)= Transform n1+n2(g( pos ))=w(n1+n2)g( pos ) \begin{aligned} w\left(n_{1}\right) w\left(n_{2}\right) g(\text { pos }) &=w\left(n_{2}\right) g\left(\text { pos }+n_{1}\right)=g\left(\text { pos }+n_{1}+n_{2}\right) \\ &=\text { Transform }_{n_{1}+n_{2}}(g(\text { pos }))=w\left(n_{1}+n_{2}\right) g(\text { pos }) \end{aligned} 因此有w(n1+n2)=w(n1)w(n2)w\left(n_{1}+n_{2}\right)=w\left(n_{1}\right) w\left(n_{2}\right)。我們令w(1)=z1w(1)=z_{1}以及g(0)=z2g(0)=z_{2},由於n1,n2Nn_{1}, n_{2} \in \mathbb{N}是任意的,有
w(n)=(w(1))n=z1nw(n)=(w(1))^{n}=z_{1}^{n}g( pos +n)=w(n)g( pos )=z1ng( pos ) g(\text { pos }+n)=w(n) g(\text { pos })=z_{1}^{n} g(\text { pos }) 當pos 1\geq 1時,有
g( pos )=g(1+ pos 1)=w( pos )g(0)=z1pos z2=z2z1pos g(\text { pos })=g(1+\text { pos }-1)=w(\text { pos }) g(0)=z_{1}^{\text {pos }} z_{2}=z_{2} z_{1}^{\text {pos }}
當pos =1=1時,有g(0)=z2=z2z10 g(0)=z_{2}=z_{2} z_{1}^{0} 綜上,將上述所有情況綜合有g( pos )=z2z1pos  g(\text { pos })=z_{2} z_{1}^{\text {pos }} 發現當z1>1\left|z_{1}\right|>1g( pos )g(\text { pos })就不是有界的了,因此限制z11\left|z_{1}\right| \leq 1後,有
g( pos )z2z1pos z2z1pos z2 | g(\text { pos })|\leq| z_{2} z_{1}^{\text {pos }}|\leq| z_{2}|| z_{1}^{\text {pos }}|\leq| z_{2} | 這樣就滿足有界性的條件了;
又由w(n)=z1nw(n)=z_{1}^{n}和Transform n( pos )=w(n)_{n}(\text { pos })=w(n) pos得對所有的位置pos,g( pos +n)=z2z1ps+n=z2z1posz1n=g( pos )z1n=Transformn(g( pos ))g(\text { pos }+n)=z_{2} z_{1}^{\mathrm{ps}+n}=z_{2} z_{1}^{\mathrm{pos}} z_{1}^{n}=g(\text { pos }) z_{1}^{n}=\text{Transform}_{n}(g(\text { pos }))
得證

根據歐拉公式,可以將上式轉化爲,
g( pos )=z2z1pos =r2eiθ2(r1eiθ1)pos =r2r1pos ei(θ2+θ1 pos ) subject to r11 g(\text { pos })=z_{2} z_{1}^{\text {pos }}=r_{2} e^{i \theta_{2}}\left(r_{1} e^{i \theta_{1}}\right)^{\text {pos }}=r_{2} r_{1}^{\text {pos }} e^{i\left(\theta_{2}+\theta_{1} \text { pos }\right)} \text { subject to }\left|r_{1}\right| \leq 1 在實現過程中,由於上述r11\left|r_{1}\right| \leq 1的限制會導致優化問題,因此一種自然而然的做法就是固定r1=1r_{1}=1,於是上式可以簡化爲,g( pos )=rei(ω pos +θ) g(\text { pos })=r e^{i(\omega \text { pos }+\theta)}
最終的embedding表示爲,
f(j, pos )=gj( pos )=rjei(ωj pos +θj) f(j, \text { pos })=\boldsymbol{g}_{j}(\text { pos })=\boldsymbol{r}_{j} e^{i\left(\boldsymbol{\omega}_{j} \text { pos }+\boldsymbol{\theta}_{j}\right)} 其中振幅rjr_{j}、角頻率wjw_{j}和初相θj\theta_{j}是需要學習的參數。

  • 振幅rjr_{j}只和單詞本身有關,即原本的詞向量;
  • 角頻率wjw_{j}決定單詞對位置的敏感程度。當角頻率非常小時(如下圖p1),單詞對於所有位置的詞向量基本保持不變,這就與標準詞向量一樣了;

在這裏插入圖片描述
簡單看一下文本分類任務的消融性分析結果:

  • 增加可學習初相之後效果比設置初相爲0差:

    “The negative effect of initial phases may be due to periodicity, and ww cannot be directly regularized with L2-norm penalties.”

  • 設置參數共享之後效果變差,可能是由於參數變少導致學習表徵能力下降;
    在這裏插入圖片描述

  1. 要用的話,計算量以及參數量是不是會很大呀
  2. 好像也沒跟其他relative position的模型比較

reference

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章