RNNの「忘れっぽさ」を克服する:グローバル・アテンションの仕組み
投稿日:2026年5月5日 | カテゴリ:機械学習 / NLP
1. 従来のRNNが抱えていた「ボトルネック」
深層学習において文字を学習するエンべディングの手段としてSeq2Seq(系列変換モデル)があります。しかし、この初期のSeq2Seqでは、エンコーダが読み込んだ情報を最終的に「一つの固定長ベクトル」に無理やり詰め込み、それをデコーダに渡していました。
しかし、この方法には致命的な弱点がありました。文章が長くなればなるほど、最初の方に入力された情報が薄まり、デコーダに届く頃には失われてしまうのです。これを「長期依存性の問題」と呼びます。

2. 「すべてを見る」という解決策:グローバル・アテンション
2015年にLuongらによって提案されたグローバル・アテンション(Global Attention)は、「最後の一言だけを聞く」のではなく、「エンコーダのすべての時刻の状態を常に見渡す」という発想の転換を行いました。
デコーダが次の言葉を生成する際、エンコーダの各状態 h_s に対して「今の自分にとってどれくらい重要か」を計算し、必要な情報を動的にピックアップします。


Decoderの計算式の説明:現在の隠れ状態(生成の意図)d_1 と、それに基づいて集められた情報ベクトル c_1 を連結(concatenate)(図のパズルピースが横にくっついている部分です)して1つの長いベクトルにします。その連結ベクトルに、重み行列 W_c を掛け(線形変換)、さらに非線形活性化関数の tanh(cdot) に入力することで、最終的なアテンション付き状態 tilde{h}_1 を作り出します。
3. 仕組みを支える3つのステップ
アテンションによる文脈ベクトル c_t の具体的な生成フローは以下の通りです:
- スコアの算出: デコーダの現在の状態 d_t と、エンコーダの各状態 h_s の「似ている度合い(スコア)」を計算します。
- 重みの決定(Softmax): スコアをSoftmax関数に通し、合計が1(100%)になるような重み a_{ts} に変換します。
- 文脈ベクトルの生成: 重みに基づいてエンコーダの各状態を足し合わせ(重み付き和)、その時刻に最適な「コンテキストベクトル c_t」を作り出します。

技術的な補足:実装時の次元計算 (N, T, H)
NumPyなどで実装する場合、エンコーダの状態 hs は (N, T, H) という3次元構造になります。ここで N はバッチサイズ、T は時系列長、H は隠れ層の次元です。axis=2(H次元)方向に和をとることで、各時刻のスコア (N, T) を算出するのがポイントです。
1. 固定長ベクトルのボトルネック(なぜ品定めが必要か)
- 初期のSeq2Seqは、エンコーダの情報を最後の一つのベクトルに押し込んでいたため、情報が失われやすかった。
- この「長期依存性の問題」により、長い文章の翻訳精度が著しく低下していた。
- アテンションは、必要な時に必要な情報へアクセス可能にすることでこの問題を解決した。
2. 「品定め」の論点:スコア関数による評価の多様性
デコーダがエンコーダの状態 h_s を評価する「品定め」の手法は主に4つあります:
- dot(内積):d_t と h_s の純粋な内積。シンプルで高速。
- general(一般化内積):重み行列 W_a を挟み、要素間の相関を学習可能にする。
- concat(連結):d_t と h_s を連結して非線形変換を行う。
- location(位置ベース):内容を見ず、デコーダの状態から注目位置を直接決める。
3. 「つまみ食い」の論点:文脈ベクトル ($c_t$) の生成
- 評価スコアを正規化し、各入力単語の重要度をパーセンテージ(a_{ts})で表す。
- 重要度が高い単語の情報を「濃く」取り出す重み付き平均により、最適なカンペ c_t を作成する。
4. 統合と進化:TransformerやChatGPTへの繋がり
- カンペ c_t とデコーダの状態 d_t を連結し、最終的な出力 tilde{h}_t を生成する。
- アテンション導入により、翻訳精度(BLEUスコア)が最大5.0ポイント向上した。
- この「情報の取捨選択」の思想が、のちのTransformer(Self-Attention)の爆発的な進化の礎となった。
4. 結論
アテンションは、一言で言えばデコーダ(出力側)がエンコーダ(入力側)の各ステップの隠れ状態(h_1, h_2, h_3...)を「品定め」する仕組みのことです。グローバル・アテンションでは、入力文のすべての単語を常に見渡して比較します。アテンション機構の導入により、AIは「情報の取捨選択」を学習できるようになりました。この「必要な時に、必要な場所へ注目する」という仕組みが、のちのTransformerやChatGPTのような大規模言語モデルの飛躍的な進化へと繋がっていったのです。