固定長ベクトルの呪縛を解く —— 論文「Neural Machine Translation by Jointly Learning to Align and Translate」解説
Category: 論文解説 Attention | Tags: Bahdanau Attention Transformer 機械翻訳
前回の記事では、双方向RNN(BiRNN)を使って「文脈を完全に理解した単語ベクトル」を作る仕組みについて解説しました。
今回は、そのベクトルを使って、現代のAI(Transformer/GPT)の基礎となった革命的技術「Attention Mechanism(注意機構)」がどのように生まれたのか、その原点となる論文 Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau et al., 2015) を解説します。
1. 従来の課題:固定長ベクトルのボトルネック
この論文が出る前(2014年頃まで)のニューラル翻訳モデル(Encoder-Decoder)には、致命的な欠点がありました。
それは、「どんなに長い小説でも、たった一つの固定長ベクトル(例:1000個の数字)に圧縮しなければならない」という制約です。
- 短い文:「I have a pen.」 → ベクトルAに圧縮(余裕)
- 長い文:「(50単語以上の長い契約書など)」 → ベクトルBに圧縮(情報が溢れて忘れてしまう!)
エンコーダが必死に圧縮した情報を、デコーダは無理やり解凍して翻訳していましたが、文が長くなると最初の方の内容を忘れてしまい、翻訳精度がガタ落ちしていたのです。
2. 解決策:圧縮をやめて「リスト」で渡す
この論文の著者は考えました。「無理に一つに圧縮するからダメなんだ。全部の単語の情報をそのままリストで渡して、翻訳するときに必要な場所をカンニング(検索)させればいいじゃないか」と。
パラダイムシフト
Before: エンコーダは文全体を一つのベクトルにする。
After: エンコーダは「単語ごとのベクトル(アノテーション)のリスト」を作る。
ここで登場するのが、前回解説したBiRNNで作った「アノテーション (h_j)」のリストです。
3. 仕組み:Attentionの数式解剖
デコーダは、翻訳する各ステップで、このリストの中から「今どこを見るべきか」を自動的に計算します。これを数式で追ってみましょう。
Step 1: 相性診断(エネルギー (e_{ij}))
デコーダの現在の状態((s_{i-1}))と、原文の各単語((h_j))の相性を計算します。
[ e_{ij} = a(s_{i-1}, h_j) ]
これは「今、翻訳したい単語にとって、原文の (j) 番目の単語はどれくらい重要?」というスコアを出しています。
Step 2: 確率への変換(重み (\alpha_{ij}))
スコアをSoftmax関数に通して、合計が100%になる確率(重み)に変換します。
[ \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k=1}^{T_x} \exp(e_{ik})} ]
例えば、「apple」を訳すときは原文の「りんご」への重みが0.9、「私は」への重みが0.05...といった具合になります。
Step 3: 情報のブレンド(コンテキストベクトル (c_i))
最後に、重み (\alpha) に従って、原文の情報を混ぜ合わせます。
[ c_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j ]
この (c_i) こそが、「今の翻訳に必要な情報だけを抽出したベクトル」です。デコーダはこれを使って次の単語を生成します。
4. アライメントの可視化(ヒートマップ)
この仕組みの素晴らしい点は、モデルがどこを見ているかが人間にも分かることです。以下は、論文中の実験結果を再現したヒートマップです。
原文(英): "European Economic Area" (欧州経済領域)
翻訳(仏): "zone économique européenne"
図:Attention重み((\alpha_{ij}))の可視化
| the | agreement | on | the | European | Economic | Area | |
| L' | |||||||
| accord | |||||||
| sur | |||||||
| la | |||||||
| zone | |||||||
| économique | |||||||
| européenne |
※色が濃い部分が、AIが翻訳時に注目している単語です。
"Area" → "zone", "European" → "européenne" と、語順が逆転しても正しく対応付いているのが分かります。
5. 結論:AIが「検索」を手に入れた日
この手法(RNNsearch)により、モデルは50単語を超える長文でも精度を落とさずに翻訳できるようになりました。なぜなら、最初からすべての情報を引き渡しておき、必要な時に必要な情報を自動的に取得(Search)するようになったからです。
この「クエリ(デコーダの状態)に合わせて、キー(原文)を検索し、バリュー(情報)を取り出す」という構造は、後にTransformerへと進化し、現在のChatGPTなどの大規模言語モデルの基礎となっています。
この論文は、単なる翻訳精度の向上だけでなく、ニューラルネットワークに「注意(Attention)」という認知機能を実装した、歴史的な転換点だったと言えるでしょう。
前回の記事:BiRNN完全解剖に戻る