位置エンコーディング
Transformer が語順を知るための sin/cos 位置埋め込み。位置スライダーを動かすと、各次元(=各周波数)の波形上を点が走り、その位置の埋め込みベクトルが更新されます。波形上の点をドラッグして位置を直接指定することもできます。
8
16
50
12
位置 pos
—
次元数 d_model
—
最低周波数の波長
—
差 |pos − pos₂|
—
この位置の埋め込みベクトル PE(pos)(各次元の値)
PE ヒートマップ(縦=位置, 横=次元)と選択次元の波形
Transformer は単語を一度にまとめて読み込むため、そのままでは語順が分かりません。そこで各位置
偶数次元は
位置スライダーを動かすと、各波形の上を点が進み、その位置の縦スライス(埋め込みベクトル)が右の棒グラフに出ます。任意の2位置の相対的な関係(線形変換や内積)が位置に依らず一定であることも確かめましょう。
pos に固有の数列を足します。これが位置エンコーディングです。偶数次元は
sin、奇数次元は cos を使い、次元 i が大きくなるほど周波数が下がります。低い次元=高周波(細かく振動・局所の位置差を区別)、高い次元=低周波(ゆっくり変化・大局の位置を表す)。位置スライダーを動かすと、各波形の上を点が進み、その位置の縦スライス(埋め込みベクトル)が右の棒グラフに出ます。任意の2位置の相対的な関係(線形変換や内積)が位置に依らず一定であることも確かめましょう。
いま何が起きている?
ここがポイント
- 偶数次元=sin・奇数次元=cos ── 各次元は周波数
1 / 10000^(2i/d)の正弦波で、値は常に −1〜+1 に収まる。 - 低次元は高周波・高次元は低周波 ── 低い次元は隣の位置でも大きく変わり局所差を、高い次元はゆっくり変わり大局の位置を表す。
- 位置をずらすと点が波の上を移動 ── 縦スライスが埋め込みベクトル。ヒートマップの縦縞は周波数の違いそのもの。
- 2位置の関係は相対的 ── PE(pos+k) は PE(pos) の線形変換(回転)で表せ、その変換関係や内積は位置によらず一定。だから相対位置を学習しやすい。