Transformer の処理/アルゴリズムのゴールは,所期の [ p_1, ‥‥, p_m ] を得ることである。
これは,つぎの流れになる:
テクストS
↓トークン分割
T = [ t_1, ‥‥, t_m ], m = LEN(S)
↓対応するトークン点
X = [ x_1, ‥‥, x_m ]
│← 位置エンコーディングを加算
│
├───────────┐
│ ( Self-Attention )
│ ┌──────┿──────┐
│ ↓線型変換 ↓ ↓
│ Q_i = x_i W_Q K_i = x_i W_K V_i = x_i W_V
│ └──┬───┘ │
│ ↓ │
│ α_i = sim( Q_i ; K_1, ‥‥, K_m ) │
│ │ │
│ └───┬──────┘
│ z_i = α_i V
│← Residual ─────┘
│
│← LayerNorm (正規化)
│
├───────────┐
│ ( FFN )
│ ↓
│ z'_i = σ( x_i W_1 + b_1) W_2 + b2
│← Residual ─────┘
│
│← LayerNorm
↓
X^(2) = [ x^(2)_1, ‥‥, x^(2)_m ]
↓
:
↓
X^(n+1) = O = [ o_1, ‥‥, o_m ]
↓
logis
↓
P = [ p_1, ‥‥, p_m ]
↓(誤差逆伝播)
- Self-Attention
x_i から
z_i = α_i V
を生成する行程を,Self-Attention という。
Self-Attention は,形式的にはつぎのことをしている:
- x_i それぞれに対し,
V_1j, ‥‥ V_mj
の加重平均 z_ij ( j = 1, ‥‥, D ) をつくる。
- その加重平均に使う確率分布 α_i を,
sim( Q_i ; K_1, ‥‥, K_m )
としてつくる。
"sim( Q_i ; K_1, ‥‥, K_m )" の記号 sim (similarity, 類似度) は,「よい定義を課題化している」の意趣である。
Transformer は,sim( Q_i, K_j ) をつぎのように定める:
α_i = sim( Q_i ; K_1, ‥‥, K_m )
= softmax( Q_i (K_1)^T/√D, ‥‥ , Q_i (K_m)^T/√D ) )
ここで, √D が「スケーリング因子」に相当。
そうすると,つぎが V_1j, ‥‥ V_mj の加重平均になる:
z_ij = α_i1 V_1j + ‥‥ + α_im V_mj
- Self-Attention は何をしているか
Self-Attention から重み行列を除くと,つぎのようになる:
( Self-Attention )
┌──────┿──────┐
↓ ↓ ↓
x_i x_i x_i
└──┬───┘ │
↓ │
α_i = sim( x_i ; x_1, ‥‥, x_m ) │
│ │
└───┬──────┘
z_i = ( Σα_ik x_k1, ‥‥ Σα_ik x_kD )
z_i は,x_i の移動ベクトル。
そしてこの内容は,つぎのようになっている:
- 移動を,次元ごとに同形式で調整する。
- その形式は, 《 x_1, ‥‥, x_m それぞれに対する x_i のいまの近さの程度 α_i を反映させる》。
- 通説の意味論を退ける
W_Q, W_K, W_V の Q, K, V は,それぞれ Query, Key, Value と読まれる。
通説は, Query, Key, Value を意味づけるが,本論考はこの立場を取らない。
通説の「Query・Key・Value」解釈
- 並列処理
Self-Attention は,x_1, ‥‥, x_m を並列に処理する:
|