Web教科書

位置エンコーディング

位置エンコーディング (Positional Encoding)

解説:バラバラの原稿に「ページ番号」を振る

位置エンコーディング(Positional Encoding)は、Transformer「単語の語順(位置情報)」を教えるための仕組みです。

TransformerのSelf-Attentionは、文章を頭から読むのではなく、全単語を「せーの」で一気に並列処理します。これは計算が爆速になる反面、「単語の順番がわからなくなる」という致命的な弱点を生みます。

🐈 語順がないとどうなる?以下の2つの文は、単語の成分だけ見れば全く同じです。

  • を 追いかける」
  • を 追いかける」

RNNは順番に読むので区別できましたが、Transformerはこのままだと両方を「猫・犬・追いかける」という同じ袋に入った集合(Bag of Words)として処理してしまいます。
そこで、各単語データに「これは1番目」「これは3番目」というタグ(位置情報)を埋め込むことで、順番を区別できるようにしました。

足し算で情報を合成する

具体的には、単語の意味を表すベクトル(単語埋め込み)に、位置を表すベクトル(位置エンコーディング)を「足し算(Add)」します。

位置ベクトルには、単純な整数(1, 2, 3…)ではなく、サイン(sin)やコサイン(cos)などの周期関数から作られた特殊な波のパターンが使われます。これにより、どんなに長い文章でも、独特な「位置の指紋」を付与することができます。

モデル 順序の認識方法 特徴
RNN 構造的に認識。
(順番に入力するから自然とわかる)
位置エンコーディングは不要
ただし並列処理ができない。
Transformer 位置エンコーディングで認識。
(入力データに順序情報を付加する)
並列処理のメリットを維持したまま、文脈(語順)を理解できる。
位置エンコーディングの加算イメージ

G検定対策

出題ポイント

  • 目的:並列処理によって失われる「単語の順序情報」を補うために導入された。
  • 方法:単語埋め込みベクトル(Word Embedding)に対し、位置情報を表すベクトルを「加算(要素ごとの足し算)」する。
  • 生成:一般的に「正弦波(sin/cos関数)」を用いて、位置ごとに異なるパターンを生成する。(※学習によって位置情報を獲得させる手法もある)

ひっかけ対策

  • × RNNで最も重要な技術である
    (解説)RNNは構造上、最初から順序を理解できます。これは「Transformer」や「CNNで自然言語を扱う場合」に必要な技術です。
  • × 位置情報と単語情報を『結合(Concat)』する
    (解説)基本的にはベクトルの次元を変えずに「加算(Add)」します。結合すると次元数が増えて計算コストが上がるためです。
タイトルとURLをコピーしました