Attentionとは

アテンションattention mechanism別名 注意機構、アテンション機構

1行定義

Attentionとは、クエリと入力の各要素との関連度から重みを求め、その重みで情報を加重和して、必要な部分に注目する仕組みのことです。

くわしく

Attention(注意機構)は、たくさんある情報の中から、いま必要なものに重点を置いて取り出す仕組みです。人が長い文を訳すとき、訳している箇所に対応する原文の単語に目を向けるのに似ています。

生まれた背景

RNNを使ったSeq2Seqでは、エンコーダが入力文全体を1つの固定長のベクトルにまとめていました。文が長くなるほど、このベクトルに情報が収まりきらず、翻訳の精度が下がります。2014年にBahdanauらは、デコーダが単語を出力するたびに、エンコーダの各時刻の隠れ状態を見直し、関係の深い位置に重みを置いて情報を集める方法を提案しました。

計算の流れ

Attentionは、クエリ・キー・バリューの3つで説明できます。

  1. クエリ(何を探しているか)と、各要素のキー(見出し)を比べ、関連度のスコアを求めます。内積で計算する方法や、小さなニューラルネットワークで計算する方法があります。
  2. スコアをソフトマックス関数に通し、合計が1になる重みに変えます。
  3. その重みで各要素のバリュー(中身)を加重和し、出力とします。

重みは固定ではなく、入力のたびに計算されます。同じモデルでも、文が変われば注目する位置が変わります。

種類

クエリとキー・バリューをどこから作るかで、呼び方が変わります。

  • Source-Target Attention:クエリを出力側(デコーダ)から、キーとバリューを入力側(エンコーダ)から作ります。Bahdanauらの方式も、この形です。
  • Self-Attention:3つとも同じ系列から作り、系列の中の要素どうしの関係を捉えます。

2017年のTransformerは、RNNを使わずにAttentionを中心にモデルを組み立て、BERTやGPTなどの土台になりました。

覚え方

「関連度を測り、ソフトマックスで重みにし、バリューを加重和する」の3段階で覚えます。

G検定での出題

クエリ・キー・バリューの役割、重みをソフトマックス関数で求めてバリューを加重和する計算、Seq2Seqの固定長ベクトルの弱点を補った経緯、Self-AttentionやSource-Target Attentionとの関係が問われます。

混同しやすい用語

用語意味
Self-Attention系列の各要素が同じ系列内のすべての要素との関連度を求め、その重みで情報を集めて文脈を反映した表現を作る仕組み

◯×チェック

  1. Attentionの重みは、学習で1通りに固定される値ではなく、入力が変わるたびにクエリとキーから計算し直される。

    答えを見る

    答え ◯ 正しい

    学習で決まるのは、クエリやキーを作る変換の重みなどです。注目の度合いはそのつど計算されるので、文が変われば注目する位置も変わります。

  2. Attentionは、2017年のTransformerの論文で初めて提案された仕組みである。

    答えを見る

    答え × 誤り

    2014年にBahdanauらが、RNNを使った機械翻訳にAttentionを導入しています。Transformerの新しさは、RNNを使わずAttentionを中心にモデルを組み立てた点です。

  3. 機械翻訳のAttentionの重みを可視化すると、訳語を出力するときに入力文のどの単語を重視したかの手がかりが得られる。

    答えを見る

    答え ◯ 正しい

    Bahdanauらの論文でも、重みを図にすると、対応する単語どうしに大きな重みが付く様子が示されました。ただし、重みがそのまま判断の理由を表すとは限りません。

練習問題

Attentionの問題(8問)
  1. Seq2Seqの固定長ベクトルの限界
  2. Attentionの出力の計算
  3. 内積をスケーリングする理由
  4. スケーリング後のスコアと重み
  5. 注意の重みのヒートマップ
  6. クエリ・キー・バリューの作り方
  7. 推論時の生成手順の比較
  8. Seq2Seqの出力長の決まり方

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

出典と作成について

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

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

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

改訂履歴

表示設定

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