Attention (G検定)

Attention

1. 定義と概要

Attention とは、モデルが入力データの中でどの部分が出力に重要かを重みとして自ら学習し、その重みに基づいて出力を計算する仕組みです。2014年に Bahdanau・Cho・Bengio の3氏が機械翻訳向けの論文でこの仕組みを提案したのが起点です。

2015年には Luong・Pham・Manning の3氏が、計算方法を整理し発展させました。具体的には、global attention(入力側の全ての位置を参照する方式)や local attention(入力側の一部の位置に絞って参照する方式)を提案しています。

背景にあるのは、RNN(リカレントニューラルネットワーク。系列データを順番に読み込みながら処理するニューラルネットワークの一種)を用いたエンコーダ-デコーダモデル(Seq2Seq)です。エンコーダ-デコーダモデル(Seq2Seq)とは、入力の系列をいったん要約し、その要約から出力の系列を作り直す2段構えの構造を指します。

従来のこの構造は、入力文の情報をいったん1つの固定長ベクトルに圧縮し、それだけをデコーダに渡す仕組みでした。文が長くなるほど1つのベクトルに情報を収めきれず、翻訳精度が急激に落ちるボトルネック問題を抱えていました。

Bahdanau 氏らは、デコーダの各時刻でエンコーダの隠れ状態(モデルが入力の各位置を処理した際に内部に持つ、その位置の情報を表す数値の並び)すべてを参照し、必要な部分に重みづけしてアクセスする仕組みを提案しました。これが Attention の起点にあたります。たとえば英語から日本語への翻訳では、出力する日本語の単語ごとに、注目すべき入力側の英単語の位置が変わります。

2. 試験対策ポイント

Attention の仕組みの中心は、エンコーダの各時刻の隠れ状態に対して重みを計算し、その重みつき和(複数の値それぞれに重みをかけて足し合わせた合計値)をデコード時の参照情報として使う点です。重みは入力側の位置ごとに異なる値を取り、重要な位置ほど大きな重みが割り当てられます。固定長ベクトル1つに頼らず、入力全体の中から必要な部分に都度アクセスできる点が、従来の Seq2Seq との分かれ目です。

重みを可視化すると、モデルが出力の各時点で入力のどの位置に着目していたかを人間が確認できます。翻訳タスクでは、出力単語と対応する入力単語の結びつき、いわゆるアラインメント(出力側の要素と入力側の要素の対応関係)が浮かび上がる形で示され、判断根拠を示す副次的な利点として整理されています。

Attention には大きく2つの形があり、名称の違いを整理しておきたいところです。1つは Self-Attention(同じ系列の中で要素どうしの関係を見る Attention の形)にあたります。

もう1つは Source-Target Attention(Encoder-Decoder Attention。異なる2つの系列の間で関係を見る Attention の形)です。Source-Target Attention と Encoder-Decoder Attention は同じ仕組みを指す別名で、別物として並べる必要はありません。それぞれの内部構造には、ここでは立ち入りません。

3. 関連概念との比較・相違点

Attention を持たない Seq2Seq との最大の違いは、入力全体をひとつの固定長ベクトルに圧縮してから渡すか、エンコーダの隠れ状態全体に重みづけしてアクセスするかという点にあります。前者は文が長くなるほど情報が失われやすく、後者は必要な部分に都度アクセスできるため、長文でも精度が落ちにくい関係にあります。固定長ベクトルという単一の窓口に頼らない設計こそが、Attention 登場の要点です。

Self-Attention と Source-Target Attention(Encoder-Decoder Attention)の最大の違いは、関係を見る対象が同じ系列の中か、異なる2つの系列の間かという点です。Self-Attention は同じ系列の中の要素どうしを見る形、Source-Target Attention(Encoder-Decoder Attention)は、異なる2つの系列の間を見る形にあたります。

文中の語どうしの関係を捉えたいときは、Self-Attention が使われる場面として整理されています。原文と訳文のように異なる系列間の対応を捉えたいときは、Source-Target Attention(Encoder-Decoder Attention)が使われる場面です。二つの形を並べると、次のように整理できます。

形 関係を見る対象 使われる場面
Self-Attention 同じ系列の中の要素どうし 文中の語どうしの関係を捉えたいとき
Source-Target Attention(Encoder-Decoder Attention) 異なる2つの系列の間 原文と訳文のような系列間の対応を捉えたいとき

いずれも Attention の具体的な形にあたり、名称は違っても、重みを計算しその重みつき和を参照情報とする基本の仕組みは共通する点です。内部構造の詳細は、それぞれ別のテーマとして扱われます。

4. ビジネス・実務での活用シナリオ

機械翻訳サービスでは、長い文でも入力全体の必要な部分を都度参照できるため、訳文の精度低下が抑えられます。文全体を一つのベクトルに圧縮していた従来方式では、文が長くなるほど意味を失いやすい課題がありました。

対話・生成AI(入力された文に応じて新しい文章を作り出す AI)では、やり取りの中で関連する発言に重みを置いて応答を組み立てる基盤の一部です。直前の発言だけでなく、それ以前の発言にも重みを置いて参照できるため、会話の流れを踏まえた応答につながります。

画像認識・キャプション生成の分野でも、画像のどの領域に注目したかを重みとして可視化でき、判断根拠の説明に使われています。出力した説明文の各語がどの画像領域と対応しているかを示せる点が、モデルの判断過程を人が確認する手がかりです。

いずれの分野でも、入力のどこを見るかをモデル自身に選ばせる発想が共通の土台になっています。

5. 要点まとめ

  • Attention は、入力のどの部分に重みを置くかをモデル自身が学習し、その重みつき和を出力に反映する仕組みです。
  • 従来のエンコーダ-デコーダモデル(Seq2Seq)は入力全体を固定長ベクトルに圧縮していました。この制約を解消するために2014年に Bahdanau 氏らが提案し、2015年に Luong 氏らが計算方法を整理しました。
  • Attention には同じ系列内で関係を見る Self-Attention と、異なる2系列間で関係を見る Source-Target Attention(Encoder-Decoder Attention)の2つの形があります。いずれも別のテーマとして扱われます。

6. 確認問題

問1Attention は、エンコーダの各時刻の隠れ状態に重みを計算し、その重みつき和をデコード時の参照情報として利用する仕組みである。

解答・解説をみる

○ 正しい

重みつき和を参照情報として使う点が Attention の中心的な仕組みです。固定長ベクトル1つに頼らない設計へと発展した経緯とあわせて押さえておきたいところです。

問2Attention を導入したエンコーダ-デコーダモデルでも、入力文の情報は1つの固定長ベクトルに圧縮してからデコーダに渡す仕組みが維持されている。

解答・解説をみる

× 誤り

正しくは、固定長ベクトルへの圧縮という制約を解消するために Attention が導入されました。エンコーダの隠れ状態全体に重みづけしてアクセスする点が、従来モデルとの違いの核心です。

問3Attention には、同じ系列の中で要素どうしの関係を見る形と、異なる2つの系列の間で関係を見る形の2種類がある。

解答・解説をみる

○ 正しい

前者は Self-Attention、後者は Source-Target Attention(Encoder-Decoder Attention)と呼ばれる形にあたり、内部構造にはここでは立ち入りません。