Basics#
舊的 Position-agnostic 編碼法分別有:
- 絕對位置編碼
pi,2t=sin(k/100002t/d)
- 相對位置編碼
- e.g. Transformer-XL
- 但這種編碼只是把位置資訊加入上下文表示, 一樣不適用線性注意力架構:
=ϕ(qm)⊤(∑n=1Nϕ(kn))ϕ(qm)⊤(∑n=1Nϕ(kn)vn⊤)Transformer-XL 的相對位置編碼同時依賴 m 與 n:
qm⊤kn+qm⊤rm−n若使用線性注意力就沒辦法預先求出 ∑n:
n=1∑Nϕ(qm)⊤ϕ(kn+rm−n)vn所以最後又變回 O(N2)
基本定義#
輸入序列:
SN={wi}i=1N詞嵌入序列:
EN={xi}i=1N,xi∈RdSelf-Attention#
qm=fq(xm,m)kn=fk(xn,n)vn=fv(xn,n)am,n=∑j=1Nexp(qm⊤kj/d)exp(qm⊤kn/d)om=n=1∑Nam,nvnRoPE: 將 Query 與 Key 的內積轉為只有相對位置資訊:
⟨fq(xm,m),fk(xn,n)⟩=g(xm,xn,m−n)二維空間#
用複數的基本性質可以求得:
fq(xm,m)=(Wqxm)eimθfk(xn,n)=(Wkxn)einθg(xm,xn,m−n)=Re[(Wqxm)(Wkxn)∗ei(m−n)θ]f{q,k}(xm,m)=(cosmθsinmθ−sinmθcosmθ)(W{q,k}(11)W{q,k}(21)W{q,k}(12)W{q,k}(22))(xm(1)xm(2))一般化#
先把整個體分成 d/2 個二維空間:
f{q,k}(xm,m)=RΘ,mdW{q,k}xm旋轉矩陣:
RΘ,md=cosmθ1sinmθ100⋮00−sinmθ1cosmθ100⋮0000cosmθ2sinmθ2⋮0000−sinmθ2cosmθ2⋮00⋯⋯⋯⋯⋱⋯⋯0000⋮cosmθd/2sinmθd/20000⋮−sinmθd/2cosmθd/2其中的預定義參數:
Θ={θi=10000−2(i−1)/d,i∈[1,2,…,d/2]}套用 Attention:
qm⊤kn=(RΘ,mdWqxm)⊤(RΘ,ndWkxn)=xm⊤WqRΘ,n−mdWkxnRΘ,n−md=(RΘ,md)⊤RΘ,nd效能優化#
利用旋轉矩陣稀疏性實作高效能計算:
RΘ,mdx=x1x2x3x4⋮xd−1xd⊗cosmθ1cosmθ1cosmθ2cosmθ2⋮cosmθd/2cosmθd/2+−x2x1−x4x3⋮−xdxd−1⊗sinmθ1sinmθ1sinmθ2sinmθ2⋮sinmθd/2sinmθd/2
一些性質#
Long-term Decay#
(RΘ,mdWqxm)⊤(RΘ,ndWkxn)=Rei=0∑d/2−1q[2i:2i+1]k[2i:2i+1]∗ei(m−n)θi相對距離增加時, 內積值會衰減, 與自然語言的性質很類似
與線性注意力#
標準注意力:
Attention(Q,K,V)m=∑n=1Nsim(qm,kn)∑n=1Nsim(qm,kn)vn線性注意力:
Attention(Q,K,V)m=∑n=1Nϕ(qm)⊤φ(kn)∑n=1Nϕ(qm)⊤φ(kn)vnRoPE 保持向量範數不變, 因此可以與線性注意力結合:
Attention(Q,K,V)m=∑n=1Nϕ(qm)⊤φ(kn)∑n=1N(RΘ,mdϕ(qm))⊤(RΘ,ndφ(kn))vn靈活性#
使用乘法方式編碼位置, 不需要預定義最大序列長度, 且天然支持外推到更長序列
正交性#
旋轉矩陣是正交矩陣, 可以確保編碼的數值穩定性