位置エンコーディング
位置エンコーディングは Transformer に token の位置を与えます。元の正弦方式は位置ごとに複数周波数の sin/cos ベクトルを作り、埋め込みへ足します。同じ token でも位置が違えば入力を変えられます。
the cat saw the dog の二つの the は静的埋め込みが同じで、位置は 0 と 3 です。文脈を混ぜる前に区別を用意します。
共通埋め込みと位置の加算
埋め込みを E(the)、実際の位置寄与を A(p) とします。
x(p) = E(the) + A(p)
オンは A(p) = PE(p)、オフ対照は 0。切替は加えるかを決め、式は変えません。
PE(p)[2i] = sin(p / 10000^(2i/d))
PE(p)[2i + 1] = cos(p / 10000^(2i/d))
p は位置、d は幅、i は成分対で、角度はラジアン。偶数が sin、奇数が同じ角度の cos で、両方 [−1,1] です。
本課の d = 8 は分母 1、10、100、1000 の四対です。後の対ほど遅く変わります。位置を割って周波数を変え、振幅を変えたり token ごとに別の位置番号を割り当てたりはしません。
同じ幅の八成分を足して出力も八成分です。連結なら十六になり、入力構造の変更が必要です。元 Transformer は埋め込みを先に √d 倍し、ここでは E に含めます。原論文 3.4–3.5 節も参照してください。
ステップ実行
既定は 位置 0 と 3 の the、八成分、オンです。間の token は作業台で展開しません。
- 埋め込みだけ:両方 E で差はゼロ。具体的な重みは不要です。
- 第一対:分母 1、角度 0 と 3。sin は
0.000000、0.141120、cos は1.000000、−0.989992。位置ゼロは[0,1]で、全ゼロではありません。 - 第二対:分母 10、角度 0 と 0.3。sin は
0.000000、0.295520、cos は1.000000、0.955336。位置は同じで波は遅く、振幅範囲は同じです。 - 残り二対:分母 100、1000 で計算します。
| 成分 | 関数 | PE(0) | PE(3) |
|---|---|---|---|
| 0 | sin(p) | 0.000000 | 0.141120 |
| 1 | cos(p) | 1.000000 | −0.989992 |
| 2 | sin(p/10) | 0.000000 | 0.295520 |
| 3 | cos(p/10) | 1.000000 | 0.955336 |
| 4 | sin(p/100) | 0.000000 | 0.029996 |
| 5 | cos(p/100) | 1.000000 | 0.999550 |
| 6 | sin(p/1000) | 0.000000 | 0.003000 |
| 7 | cos(p/1000) | 1.000000 | 0.999996 |
- 成分ごとに加算:先頭は
e₀ + 0.000000とe₀ + 0.141120、他も同様です。 - 位置だけを差で取り出す:
x(3) − x(0)
= (E + PE(3)) − (E + PE(0))
= PE(3) − PE(0)
丸め前の差ベクトルのユークリッド長は約 2.017479。八成分の二乗和の平方根で、位置差の 3 や意味スコアではありません。0 は全座標一致、正なら少なくとも一つが違います。
- オフ対照:両方
E+0で差長は 0。終点に二結果を並べます。比較位置は整数 1–32、プリセットは証拠へ直接移動します。
複数周波数の区別
sin/cos 一対は角度 2π で一周して繰り返します。整数位置は通常ぴったり一周にはならなくても近づきます。
位置 6、または「Fast pair nearly repeats」では、最速対と位置ゼロの距離が約 0.282240。第二対はまだ 0.6 ラジアンで約 0.591040。一周波数の差が小さくても別対が区別を残します。
距離は位置間隔に単調ではありません。位置 6 の全差長 0.657741 は位置 3 の 2.017479 より小さいものです。周期性があり、間の語数や意味距離として読めません。
固定相対移動は三角加法公式で、元の sin/cos 対の線形変換として表せます。モデルが相対位置へ使える構造ですが、実際に学ぶ保証ではありません。
費用と実装確認
n 位置、d 幅を作る時間・空間は O(nd)、一位置は O(d)。学習する位置表ではなく固定式で、注意の費用は含みません。
token のスロットで PE を選び同じ幅にします。同じ語を二位置へ置き、入力差と PE(q) − PE(p) を比べれば、埋め込みが未知でも位置経路を検査できます。全位置へ同じ PE を配る誤りも分かります。
境界ケース
- オフ:この対照の反復 token は同入力ですが、使わない PE 候補は計算・表示できます。
- 位置ゼロ:全 sin は 0、全 cos は 1 です。
- 小さな表示差:遅い cos は同値に丸められても、計算とノルムは元精度を使い、焦点表示は桁を増やします。
- 長文:訓練範囲外でも式は計算できますが、有効な挙動の保証はありません。32 は UI の範囲です。
- 他の順序源:マスクも位置もない自己注意は置換同変です。因果マスクも順序構造を与え、回転やバイアスもあります。この加算だけの停止で全モデルの順序情報なしとは結論できません。
よくある間違い
- 位置 p と成分
2i、2i+1を混同する。 - 一対の sin/cos に別分母を与える。
- 位置で振幅を掛ける。変えるのは角度で値は有界です。
- 全 token に
PE(0)を足す。同じ語の比較では共通項が消えます。 - 連結して次層幅を変えない。
- 入力が違えば語順を理解したと主張する。位置信号の存在だけで、利用はモデルと学習次第です。
モデルの範囲
元の加算正弦式、八次元、二箇所、記号の共通埋め込みです。注意、学習、正規化、dropout、意味予測はありません。単語埋め込み、注意機構、Transformer ブロックへ続けます。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
鍵マークのあるレッスンの操作には有料アクセスが必要です。解説はすべて無料で読めます。
誤りや気になる点を見つけましたか? フィードバックを送る。