AI用語集・ディープラーニングの要素技術

位置エンコーディングとは

いちえんこーでぃんぐpositional encoding

別名:Positional Encoding、位置符号化

  • シラバス 技術23
  • ◯×チェック3問
  • 練習問題3問

最終更新日:作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合)人による確認:未出典

1行定義

位置エンコーディングとは、Transformerで、各単語の系列内の位置を表すベクトルを埋め込みベクトルに加え、語順の情報を与える仕組みのことです。

くわしく

位置エンコーディングは、Transformerに語順の情報を与えるための仕組みです。2017年にTransformerを提案した論文で使われ、広く知られるようになりました。

なぜ必要なのか

RNNは単語を先頭から順に処理するため、語順の情報が自然に含まれます。一方、Transformerは系列のすべての単語を同時に処理し、Self-Attentionで単語どうしの関係を計算します。Self-Attentionの計算そのものは並び順を区別せず、単語を並べ替えても各単語の出力の値は変わりません。このままでは「太郎が花子を呼んだ」と「花子が太郎を呼んだ」を区別できません。

そこで、各単語の埋め込みベクトルに、その単語の位置を表すベクトルを足し合わせてから、Transformerに入力します。

元のTransformerの計算方法

元の論文では、学習しない固定の値として、正弦関数と余弦関数で位置を表しました。位置をpos、ベクトルの次元の番号をi、ベクトルの次元数をdとすると、次のように計算します。

  • 偶数番目の次元:PE(pos, 2i) = sin(pos / 10000^(2i/d))
  • 奇数番目の次元:PE(pos, 2i+1) = cos(pos / 10000^(2i/d))

次元ごとに周期の違う波を使うため、位置ごとに異なるパターンのベクトルになります。埋め込みベクトルと同じ次元数で作るので、つなげるのではなく、要素ごとに足し合わせます。

学習で求める位置埋め込み

位置を表すベクトルを、ほかの重みと同じように学習で求める方法もあります。BERTや、画像を分割したパッチを並べて扱うVision Transformerは、この学習型の位置埋め込みを使っています。元の論文でも学習型を試してほぼ同じ結果を得ており、固定の方式は、学習時より長い系列にも対応できる可能性があるとして選ばれました。

覚え方

「Attentionは順番を知らない。だから位置を足して教える」と覚えます。

G検定での出題

出題のされ方

RNNやCNNを使わないTransformerで、語順の情報を補う目的が問われます。正弦関数・余弦関数による計算方法や、埋め込みベクトルに足し合わせる点、Vision Transformerでの使われ方も問われます。

◯×チェック

3問

次の文が正しいか、誤りかを選んでください。

  1. 元のTransformerでは、位置エンコーディングをエンコーダとデコーダの両方の入力に加える。

    答えを見る

    答え ◯ 正しい

    論文では、エンコーダとデコーダそれぞれの最初の層に入る埋め込みベクトルに足しています。出力の文を作るデコーダでも語順の情報が必要なためです。

  2. 元のTransformerの位置エンコーディングは、単語の埋め込みベクトルと連結して、入力ベクトルの次元数を2倍にする。

    答えを見る

    答え × 誤り

    位置エンコーディングは埋め込みベクトルと同じ次元数で作り、要素ごとに足し合わせます。入力の次元数は変わりません。

  3. 元のTransformerの位置エンコーディングでは、すべての次元で同じ周期の正弦波を使う。

    答えを見る

    答え × 誤り

    偶数番目の次元に正弦波、奇数番目の次元に余弦波を使い、次元の番号によって周期を変えています。そのため、位置ごとに異なるパターンのベクトルになります。

この用語の練習問題

3問
  1. #0058Seq2Seqの固定長ベクトルの限界難易度 標準・組合せ未回答
  2. #0193位置エンコーディングの必要性難易度 応用・単一選択未回答
  3. #0214ViTとCNNの性質の違い難易度 標準・単一選択未回答

出典

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合)人による確認:未 最終確認日: 対応シラバス:シラバス第1.4版 技術23

誤りを報告

表示設定

テーマ
文字の大きさ
問題演習