Self-Attention with Relative Position Representations(2018)
August 19, 2023Self-Attention with Relative Position Representationsは、TransformerのQKV注意機構に系列の要素間の相対位置をあたえる手法である。 Transformerは、RNNやCNNとはちがい、要素の位置をモデルにあたえる決まった方法をもたない。 Transformerの原論文は、正弦関数で要素の位置からベクトルを計算し、それを埋め込みベクトルに加算することで、位置情報をエンコードする。 正弦関数を使う理由は、訓練データにない長さの系列に対する汎化性能を周期性で上げられると仮定したからである。 提案手法は、この仮定を継承し、要素間の相対位置で位置情報をエンコードすることで、訓練データにない系列長の入力に対する汎化性能の向上をはかる。
長さ\(n\)の系列\(x=(x_1,\dots ,x_n)\)を入力されたQKV注意機構は、系列\((z_1 ,\dots , z_n)\)を出力する。 \(x_i\), \(z_i\)の次元を\(d_x\), \(d_z\)とすると、クエリー、キー、バリューのパラメタ\(W^Q, W^K, W^V\)のサイズは\(d_x\times d_z\)である。 このときのQKV注意機構の計算は以下の式になる。
$$ \begin{align} z\_i&=\sum^n\_{j=1}\alpha\_{ij}(x\_jW^V)\\\\ \alpha\_{ij}&=\frac{\exp e\_{ij}}{\sum^n\_{k=1}\exp e\_{ik}}\\\\ e\_{ij}&=\frac{(x\_iW^Q)(x\_jW^K)^T}{\sqrt{d\_z}} \end{align} $$提案手法は、相対位置のための\(\mathbb{R}^{d_a}\)のパラメタ\(w^V_{\text{clip}(j-i,k)}\)と\(w^K_{\text{clip}(j-i, k)}\)を導入し、\((1)\)と\((3)\)に以下の式におきかえる。
$$ \begin{align} z\_i&=\sum^n\_{j=1}\alpha\_{ij}(x\_jW^V+w^V\_{\text{clip}(j-i,k)})\\\\ e\_{ij}&=\frac{(x\_iW^Q)(x\_jW^K+w^K\_{\text{clip}(j-i, k)})^T}{\sqrt{d\_z}} \end{align} $$\(\text{clip}\)関数は以下の式であり、\(i\)と\(j\)がハイパーパラメタ\(k\)よりも離れていれば、正確な相対位置を不要とみなす。
$$ \text{clip}(x, k)=\max(-k, \min(k, x)) $$\(\text{clip}(x, k)\)のとりえる範囲より、\(w^K_i,w^V_i\in \mathbb{R}^{d_a}\), \(w^K=(w^K_{-k},\dots ,w^K_{k})\), \(w^V=(w_{-k}^V,\dots w_k^V)\)である。
雑記
訓練データにない入力長の系列に対する汎化性能が低くなることを問題にしている。 正弦関数によるエンコードの場合、訓練データにある入力長の系列の予測であっても、先頭からの絶対的な距離が大きく違う要素があれば、予測がうまくいかないようにみえる。 だから、相対位置でエンコードするのは、入力長に対する汎化性能を上げるためというよりも、単語の位置の影響を弱めたいというほうが正確に思える。