G検定(ジェネラリスト検定)
せるふあてんしょん
セルフアテンション
Self-Attention
キー・値・クエリのすべてを同じ場所、つまり同じ層の出力から取り出すアテンション。Transformerのエンコーダとデコーダの両方で使われ、系列内の位置どうしを一定回数の逐次演算で結びつける。
詳しい説明
同じ場所から来るアテンション
セルフアテンション(Self-Attention)は、アテンションに使うキー・値・クエリのすべてが同じ場所から来るアテンションです。Transformerでは、たとえばエンコーダの直前の層の出力という1つの場所から、この3つをすべて取り出します。系列の中の各位置が、同じ系列のほかの位置に注意を向けることで、系列の内部の関係を捉えます。
対比として、Transformerにはソースターゲットアテンション(原論文ではencoder-decoder attention)もあります。こちらはクエリがデコーダの前の層から、キーと値がエンコーダの出力から来るため、異なる2つの場所を結びつけます。セルフアテンションとの違いは、キー・値・クエリの出どころにあります。
エンコーダのセルフアテンション層
エンコーダはセルフアテンション層を含みます。この層では、キー・値・クエリのすべてがエンコーダの直前の層の出力から来ます。エンコーダの各位置は、直前の層のすべての位置に注意を向けることができます。つまり、ある位置から見て前にある位置も後ろにある位置も参照できます。
デコーダのセルフアテンション層とマスク
デコーダにもセルフアテンション層があります。ただし、デコーダの各位置が注意を向けられるのは、デコーダの中で、その位置自身を含むその位置までのすべての位置に限られます。
この制限は、自己回帰性(auto-regressive property)を保つためのものです。デコーダでは、左方向への情報の流れ、つまり後ろの位置の情報が前の位置へ流れ込むことを防ぐ必要があります。原論文では、スケール化ドット積アテンションの内部で、softmaxへの入力のうち不正な接続に対応する値をすべて負の無限大に設定してマスクすることで、これを実現しています。
エンコーダ側はすべての位置、デコーダ側はその位置までの位置、という参照できる範囲の違いを押さえておくことが大切です。
再帰層と比べた利点
セルフアテンション層は、一定回数の逐次的な演算ですべての位置を結びつけます。これに対して再帰層は、系列長をnとするとO(n)回の逐次演算を必要とします。系列が長くなっても、逐次に進める演算の回数が増えない点がセルフアテンション層の特徴です。
計算量の面では、系列長nが表現の次元dより小さいとき、セルフアテンション層は再帰層より高速です。原論文は、機械翻訳の最先端のモデルが使う文の表現では、多くの場合この条件が成り立つと述べています。
さらに副次的な利点として、セルフアテンションはより解釈しやすいモデルをもたらす可能性があるとされています。
整理のしかた
セルフアテンションを理解するときは、次の3点を分けて覚えると混乱しにくくなります。
- 定義: キー・値・クエリのすべてが同じ層の出力から来る
- 使われる場所: エンコーダでは直前の層のすべての位置、デコーダではその位置までの位置に注意を向ける
- 利点: 一定回数の逐次演算ですべての位置を結びつけ、nがdより小さいとき再帰層より高速で、解釈しやすさも期待できる
試験で問われること
G検定
- セルフアテンションは、キー・値・クエリのすべてが同じ場所、つまり同じ層の出力から来るアテンションであり、クエリとキー・値の出どころが異なるソースターゲットアテンションとはこの点で区別される。
- エンコーダのセルフアテンション層では、キー・値・クエリがすべてエンコーダの直前の層の出力から来て、エンコーダの各位置は直前の層のすべての位置に注意を向けることができる。
- デコーダのセルフアテンション層では、各位置が注意を向けられるのはその位置自身を含むその位置までのデコーダの位置に限られ、自己回帰性を保つために左方向への情報の流れを防いでいる。
- デコーダでの参照範囲の制限は、スケール化ドット積アテンションの内部で、softmaxへの入力のうち不正な接続に対応する値を負の無限大に設定してマスクすることで実現されている。
- セルフアテンション層は一定回数の逐次演算ですべての位置を結びつけ、再帰層はO(n)回の逐次演算を要するため、系列長nが表現の次元dより小さいときはセルフアテンション層の方が高速になる。
最終更新日: 2026/09/23