位置エンコーディング

Transformer が語順を知るための sin/cos 位置埋め込み。位置スライダーを動かすと、各次元(=各周波数)の波形上を点が走り、その位置の埋め込みベクトルが更新されます。波形上の点をドラッグして位置を直接指定することもできます。

8
16
50
12
位置 pos
次元数 d_model
最低周波数の波長
差 |pos − pos₂|
この位置の埋め込みベクトル PE(pos)(各次元の値)
PE ヒートマップ(縦=位置, 横=次元)と選択次元の波形
Transformer は単語を一度にまとめて読み込むため、そのままでは語順が分かりません。そこで各位置 pos に固有の数列を足します。これが位置エンコーディングです。
偶数次元は sin、奇数次元は cos を使い、次元 i が大きくなるほど周波数が下がります。低い次元=高周波(細かく振動・局所の位置差を区別)高い次元=低周波(ゆっくり変化・大局の位置を表す)
位置スライダーを動かすと、各波形の上を点が進み、その位置の縦スライス(埋め込みベクトル)が右の棒グラフに出ます。任意の2位置の相対的な関係(線形変換や内積)が位置に依らず一定であることも確かめましょう。

いま何が起きている?

ここがポイント