Attention(シラバス 技術23)

1行の定義と◯×チェックは用語『Attention』の解説にあります。

学習目標

入力のどこに注目するかを重みとして計算するAttentionの仕組みと役割を理解し、RNNを使ったSeq2Seqの弱点をどう補うか、Attentionを中心に組み立てたTransformerの構成、Self-AttentionとSource-Target Attentionの違いを説明できるようにします。

要点

Seq2Seqと固定長の壁

Seq2Seqは、エンコーダが入力系列を読み込み、デコーダが別の系列を出力するモデルで、機械翻訳が代表的な用途です。初期のSeq2SeqはRNNで作られ、入力文全体を1つの固定長のベクトルにまとめてデコーダへ渡していました。そのため、入力が長いと情報が収まりきらず、精度が落ちました。

Attentionの考え方

Attentionは、出力を作るたびに、入力のどの部分に注目するかを重みとして計算する仕組みです。デコーダは各時刻で、エンコーダの全時刻の状態に重みを付けて足し合わせ、必要な情報を取り出します。翻訳では、いま訳している語に対応する原文の語に大きな重みが付きます。

クエリ・キー・バリュー

Attentionの計算は、辞書を引く操作にたとえられます。

  • クエリ:探したい内容を表すベクトルです。
  • キー:各要素の見出しにあたり、クエリと照らし合わせます。
  • バリュー:各要素から実際に取り出す中身です。

クエリとキーの内積などで類似度を求め、ソフトマックス関数で合計1の重みに変えます。その重みでバリューを足し合わせたものが出力です。Transformerでは softmax(Q・K^T / √d_k)・V のように、内積をキーの次元数の平方根で割ってから重みにします。

2種類のAttention

  • Source-Target Attention:クエリを出力側(デコーダ)から、キーとバリューを入力側(エンコーダ)から作り、入力と出力の対応をとります。Encoder-Decoder Attentionとも呼ばれます。
  • Self-Attention:クエリ・キー・バリューをすべて同じ系列から作ります。同じ文の語どうしの関係を、離れた位置でも直接とらえます。

Transformer

Transformerは、2017年の論文「Attention Is All You Need」で提案されました。RNNも畳み込みも使わず、Attentionを中心に組み立てたモデルです。エンコーダはSelf-Attentionと全結合層の組を重ねます。デコーダは、まだ生成していない後ろの語を見ないようにマスクしたSelf-Attentionと、Source-Target Attentionを使います。各位置を同時に計算できるため、1時刻ずつ処理するRNNより並列化しやすく、学習が速く進みます。

  • Multi-Head Attention:クエリ・キー・バリューを異なる重みで複数組に変換し、並列にAttentionを計算して結合します。種類の異なる関係を同時にとらえられます。
  • 位置エンコーディング:Self-Attentionだけでは語の並び順を区別できません。そこで、位置ごとに異なるベクトルを語の埋め込みに足します。元の論文では周期の違う正弦波と余弦波を使っています。

現在の大規模言語モデルの多くも、Transformerを土台にしています。

G検定で問われる深さ

行列計算を手で追う必要はありません。クエリ・キー・バリューの役割、2種類のAttentionでそれぞれがどこから来るか、Multi-Head Attentionと位置エンコーディングが必要な理由、RNNより並列計算しやすい理由を説明できれば十分です。

つまずきやすい点

  • Self-Attentionはクエリ・キー・バリューをすべて同じ系列から作り、Source-Target Attentionはクエリをデコーダ側、キーとバリューをエンコーダ側から作る点
  • 重みはクエリとキーの類似度から計算し、その重みで足し合わせる対象はバリューである点
  • Self-Attentionだけでは語順を区別できないため、Transformerは位置エンコーディングで位置の情報を加えている点
  • TransformerはRNNを使わないため各位置を並列に計算できるが、Attentionの計算量は系列の長さの2乗に比例して増える点

シラバスのキーワード

Attention、Multi-Head Attention、Self-Attention、Seq2Seq、Source-Target Attention、Transformer、位置エンコーディング、キー、クエリ、バリュー

練習問題

  1. Seq2Seqの固定長ベクトルの限界
  2. Attentionの出力の計算
  3. Transformer内の注意機構
  4. 位置エンコーディングの必要性
  5. 内積をスケーリングする理由
  6. Self-Attentionの計算量
ほかの5問
  1. Multi-Headのヘッドの分け方
  2. スケーリング後のスコアと重み
  3. 注意の重みのヒートマップ
  4. クエリ・キー・バリューの作り方
  5. 推論時の生成手順の比較

混同しやすい用語

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術23

改訂履歴

ディープラーニングの要素技術の中項目
  1. 全結合層
  2. 畳み込み層
  3. 正規化層
  4. プーリング層
  5. スキップ結合
  6. 回帰結合層
  7. Attention
  8. オートエンコーダ
  9. データ拡張

表示設定

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