G検定(ジェネラリスト検定)
いちえんこーでぃんぐ
位置エンコーディング
Positional Encoding
再帰も畳み込みも持たないTransformerに系列の順序を伝えるため、トークンの位置の情報を入力の埋め込みに加算するベクトル。原論文では周波数の異なる正弦波で作る。
詳しい説明
なぜ位置の情報が必要か
Transformerには、RNNのように時刻を順にたどる再帰の仕組みも、畳み込みもありません。そのため、入力をそのまま渡しただけでは、系列の順序を利用する手がかりがモデルにありません。系列の順序を使うには、トークンの相対的または絶対的な位置の情報を外から注入する必要があります。この役割を担うのが位置エンコーディングです。
どこにどう入れるか
位置エンコーディングは、エンコーダとデコーダそれぞれのスタックの最下部で、入力の埋め込みに加算されます。足し合わせられるように、位置エンコーディングは埋め込みと同じ d_model 次元を持ちます。別の次元として連結するのではなく、同じ次元のベクトルどうしを足す点を押さえておきましょう。
位置エンコーディングの作り方には、学習して得るものと固定の式で決めるものなど、多くの選択肢があります。
正弦波による定義
原論文では、周波数の異なる正弦関数と余弦関数を使います。
- PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
- PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
pos は位置、i は次元を表します。偶数番目の次元には sin、奇数番目の次元には cos が割り当てられ、位置エンコーディングの各次元が1つの正弦波に対応します。波長は 2π から 10000・2π までの等比数列をなしており、次元によって波の細かさが異なります。
なぜこの関数を選んだのか
任意の固定のオフセット k について、PE(pos+k) は PE(pos) の線形関数として表せます。この性質によって、モデルが相対的な位置にもとづいて注意を向けることを学習しやすくなるだろう、という仮説のもとでこの関数が選ばれました。効果が示されたと断定されているのではなく、仮説として述べられている点に注意してください。
学習可能な位置埋め込みとの比較
正弦波の代わりに、位置ごとのベクトルをパラメータとして学習させる学習可能な位置埋め込み(learned positional embeddings)も試され、2つの方式はほぼ同じ結果になりました。それでも正弦波の方式が採用されたのは、訓練中に出会った系列より長い系列長に対しても外挿できる可能性があるためです。こちらも可能性として述べられている理由です。
まとめ
位置エンコーディングは、順序の情報を持たない注意の仕組みに位置を教えるための追加の信号です。必要な理由、加算で入れること、正弦波の式、学習可能な位置埋め込みとの比較の4点をセットで理解しておくと、Transformerの全体像が整理しやすくなります。
試験で問われること
G検定
- Transformerは再帰も畳み込みも持たないため、系列の順序を利用するにはトークンの相対的または絶対的な位置の情報を注入する必要があり、その手段が位置エンコーディングである。
- 位置エンコーディングは入力の埋め込みと同じd_model次元を持ち、エンコーダとデコーダの各スタックの最下部で、連結ではなく埋め込みへの加算によって入力に組み込まれる。
- 原論文の式はPE(pos,2i) = sin(pos/10000^(2i/d_model))とPE(pos,2i+1) = cos(pos/10000^(2i/d_model))で、posは位置、iは次元を表し、各次元が1つの正弦波に対応する。
- 波長は2πから10000・2πまでの等比数列をなし、固定のオフセットkについてPE(pos+k)がPE(pos)の線形関数で表せるため、相対位置に注意を向ける学習がしやすいという仮説で選ばれた。
- 学習可能な位置埋め込みとの比較ではほぼ同じ結果が得られたが、訓練時より長い系列長へ外挿できる可能性があるという理由で、正弦波を使う方式が採用された。
最終更新日: 2026/09/23