「犬が猫を追う」と「猫が犬を追う」——使われている単語は同じでも、語順が変われば意味は正反対です。ところがTransformerの心臓部であるSelf-Attentionは、そのままでは語順を認識できません。この弱点を補うのが位置エンコーディングです。
📖 ひと言でいうと
位置エンコーディングとは、Transformerに入力される各トークン(単語など)に「系列の何番目にあるか」という位置情報を付け加える手法です。各トークンの埋め込みベクトルに位置エンコーディングベクトルを加算することで、モデルが語順や位置関係を扱えるようになります。
例えるなら、バラバラにして机に広げた本のページに、あらかじめページ番号を振っておくようなものです。全ページを同時に(並列に)読んでも、番号があれば元の順序を復元して意味を正しく理解できます。
🖼 1枚でわかる位置エンコーディング
📘 公式テキストの説明
Transformerは、従来のリカレントニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)とは異なり、系列データの処理において自己注意機構(Self-Attention)を採用している。この自己注意機構は、入力データ内の各要素間の関係性を直接学習するが、位置情報を明示的に含まないため、入力データの順序や位置関係をモデルが認識できないという課題が生じる。この問題を解決するために、位置エンコーディングが導入される。位置エンコーディングは、各入力トークンにその位置情報を付加する手法であり、これによりモデルは系列内の要素の順序や位置関係を適切に捉えることが可能となる。具体的には、各トークンの埋め込みベクトルに対して、位置エンコーディングベクトルを加算することで、位置情報を組み込む。この位置エンコーディングベクトルは、サイン関数やコサイン関数などの周期的な関数を用いて計算され、異なる周波数の波長を持つ成分が組み合わされることで、各位置に固有のベクトルが生成される。位置エンコーディングの設計には、絶対位置エンコーディングと相対位置エンコーディングの2種類が存在する。絶対位置エンコーディングは、各トークンの絶対的な位置情報を表現する手法であり、Transformerの初期のモデルで採用された。一方、相対位置エンコーディングは、トークン間の相対的な位置関係を表現する手法であり、特に音声や画像、映像などのデータにおいて有効であるとされている。
理解の筋道は「なぜ必要か→どう実現するか→どんな種類があるか」の3段です。①Self-Attentionは単語同士の関係を直接計算する代わりに語順の情報を持たない、②そこで埋め込みベクトルに位置ベクトルを「加算」して位置情報を混ぜ込む、③表現方法には絶対位置と相対位置の2種類がある——という流れで押さえましょう。
🔍 しっかり理解する
なぜSelf-Attentionは語順が分からないのか
RNNは単語を先頭から順に処理するため、処理の順序そのものが語順の情報になっていました。一方Self-Attentionは、文中の全単語のペアについて関連度を一括計算します。この計算は「どの単語とどの単語が関係するか」だけを見ており、単語の並び順を入れ替えても計算のしくみ上は同じ扱いになってしまいます。並列処理という利点の代償として、語順という重要な手がかりが抜け落ちるのです。
「犬が猫を追う」と「猫が犬を追う」が区別できないままでは言語の理解になりません。そこで、単語ベクトルの段階で位置の痕跡を混ぜ込んでおくのが位置エンコーディングの発想です。RNNのように処理を逐次化して語順を守るのではなく、並列処理の利点を保ったまま、データ側に順序の情報を持たせる——ここがTransformerの設計思想らしい割り切りです。
どうやって位置情報を混ぜ込むのか
ポイントは、結合(連結)ではなく「加算」であることです。単語の意味を表す埋め込みベクトルと同じ次元の位置ベクトルを足し合わせるため、ベクトルの長さを増やさずに位置情報を組み込めます。
位置ベクトルの作り方として、Transformerの原論文ではサイン関数・コサイン関数が使われました。異なる周波数(波長)の波を複数組み合わせることで、1番目、2番目、3番目……のそれぞれに固有のパターンのベクトルが生成されます。時計に例えると、秒針・分針・時針という周期の異なる複数の針の組み合わせで一日のどの瞬間も一意に表せるのと似た仕組みです。厳密には、この方式には「学習が不要」「訓練時より長い系列にも位置を割り当てられる」といった利点があります。
絶対位置と相対位置——2つの設計
- 「先頭から何番目か」という絶対的な位置を表現
- Transformerの初期のモデルで採用
- ページ番号のようなイメージ
- 「トークン間がどれだけ離れているか」という相対関係を表現
- 音声・画像・映像などのデータで特に有効とされる
- 「2つ隣」「5つ前」のようなイメージ
絶対位置は「その単語がどこにあるか」、相対位置は「単語同士がどれだけ離れているか」に注目します。言語でも画像でも「近くにある要素ほど関係が深い」という性質は絶対番地より距離で表す方が自然な場合があり、相対位置エンコーディングは音声・画像・映像などで有効とされています。
💡 具体例で考える
語順が意味を決める文
「彼女だけがそれを知っていた」と「彼女がそれだけを知っていた」は、「だけ」の位置が違うだけで意味が変わります。位置エンコーディングがなければ、Self-Attentionにとってこの2文は同じ単語の集合にすぎません。位置情報が加わって初めて、「だけ」がどの語に係るのかをAttentionの計算に反映できます。
ViTにおける位置エンコーディング
画像認識モデルのVision Transformer(ViT)でも位置エンコーディングは不可欠です。画像をパッチに分割してTransformerに与えると、そのままでは「どのパッチが画像のどこにあったか」が失われ、顔のパーツがバラバラの福笑い状態になってしまいます。各パッチに位置情報を付加することで、空間的な配置を踏まえた認識が可能になります。系列(1次元)以外のデータでは相対的な位置関係の表現が有効とされる点も、この文脈で理解できます。
⚠️ よくある誤解・紛らわしい用語
- 「Transformer自体が語順を理解できる」は誤り — Self-Attentionは位置情報を明示的に含みません。語順の扱いは位置エンコーディングという追加の仕組みで実現されています。
- 「位置ベクトルは埋め込みに連結する」は誤り — 公式テキストの記述は「加算」です。埋め込みベクトルに同次元の位置ベクトルを足し合わせます。
- 単語埋め込み(分散表現)との混同 — 埋め込みは「単語の意味」を、位置エンコーディングは「単語の位置」を表します。両者を加算したものがTransformerへの入力です。
- 絶対と相対の取り違え — 初期のTransformerで採用されたのは絶対位置エンコーディング、音声・画像・映像で有効とされるのは相対位置エンコーディングです。
📝 試験でのポイント
- 「Self-Attentionは位置情報を含まない→その解決策が位置エンコーディング」という課題と解決の対応関係が最重要の出題ポイントです。
- 「埋め込みベクトルに位置エンコーディングベクトルを加算する」という組み込み方法の記述は正誤判定で狙われます。
- 「サイン関数・コサイン関数などの周期的な関数」「異なる周波数の成分の組み合わせ」という生成方法のキーワードを覚えておきましょう。
- 絶対位置/相対位置の2種類の区別と、それぞれの特徴(初期モデルで採用/音声・画像・映像で有効)を問う対比問題が想定されます。
📚 まとめ
- 位置エンコーディングは、語順を認識できないSelf-Attentionの弱点を補うため、各トークンに位置情報を付加する手法です。
- 各トークンの埋め込みベクトルに、位置エンコーディングベクトルを加算して組み込みます。
- 位置ベクトルはサイン・コサインなどの周期関数から作られ、各位置に固有のパターンを持ちます。
- 設計には絶対位置エンコーディングと相対位置エンコーディングの2種類があり、後者は音声・画像・映像で有効とされています。
