5-7-2 Attentionが解決したこと

前の章では、Attentionを、たくさんの情報の中から、今大事なところに目を向ける仕組みとして見てきました。
では、なぜそんな仕組みが必要になったのでしょうか。
その理由は、これまでよく使われていたRNNやSeq2Seqの苦しさと深く関係しています。

RNNは、文章や音声のような「順番が大事なデータ」を扱うために生まれたネットワークでした。
前の情報を少し覚えながら、次の情報を読む。
この考え方はとても自然です。
でも、ここに難しさもありました。
RNNは、流れてくる情報を、ひとつの状態の中に順番に押し込んでいくようなところがあります。
たとえば長い手紙を読んでいて、その内容をずっと頭の中だけで覚えておこうとすると、どうなるでしょう。
最初のほうに書いてあった大事な一文が、後になるほどあいまいになってしまうことがありますよね。
RNNも同じで、系列が長くなると、昔の情報が薄れてしまう、どこが大事だったのか見えにくくなる、最後の出力に必要な情報がうまく届かない、という問題が起こりやすかったのです。

Seq2Seq

この問題が特にはっきり見えたのが、
Seq2Seq(Sequence to Sequence)のようなモデルです。

Seq2Seqは、ひとつの系列を、別の系列へ変換するモデルです。

たとえば、

・英語の文を読んで、日本語の文に訳す
・音声を聞いて、文字列に変える
・文章を読んで、要約を書く

といった場面で使われます。

Seq2Seq を理解するには、二つの塔を想像するとわかりやすいです。

Encoder(エンコーダ)→ 入力系列を読む 「読む塔」
Decoder(デコーダ)→ 出力系列を書く 「書く塔」

まず読む塔が、入力された系列を順番に読みながら意味をまとめます。
そして書く塔が、そのまとめられた意味をもとに、新しい系列を一語ずつ書いていきます。
つまりSeq2Seqは、読んで、理解して、書き直すという流れを持ったモデルなのです。

この発想はとても美しかったのですが、初期のSeq2Seqには苦しさもありました。
それは、読む塔で読んだ内容を、ひとつのベクトルにぎゅっと押し込めてから、書く塔へ渡そうとしていたことです。

これはたとえるなら、長い手紙を全部読んで、その内容を一行のメモにしてから返事を書くようなものです。
短い手紙なら、まだなんとかなるかもしれません。
でも長い手紙だと、細かな内容が落ちてしまいそうですよね。
実際、長い文になるほど、初期のSeq2Seqは苦しくなりやすかったのです。

ここで研究者たちは考えました。
問題は、全部を一つの記憶に押し込めようとしていることではないか。
本当に必要なのは、ずっと全部を同じように抱え込むことではなく、今必要な情報を、そのつど見に行けることなのではないか。
この発想から生まれたのがAttentionです。

Attentionは、長い系列の情報を一つの小さな箱に無理やり押し込めるのではなく、必要な場面で、必要な場所へ目を向けることを可能にしました。

ここでもう一度、長い手紙のたとえで考えてみましょう。
あなたは誰かから長い手紙を受け取り、それに返事を書こうとしています。
でも、返事を書くときに、最初から最後までの内容を、全部きれいに一度で覚えておくのは大変です。
そこであなたは、返事を書きながら必要に応じて手紙を見返します。

・この場面では、冒頭の出来事を読み返す
・ここでは最後のお願いを確認する
・この一文を書くときは、真ん中の説明を見直す

つまり、今書いている内容に合わせて、必要な箇所をそのつど参照するわけです。
Attentionは、まさにこれに似ています。
出力を作るとき、入力全体を同じように扱うのではなく、今の出力に関係が深い部分へ強く注目するのです。

Source-Target Attention

この考え方は、特にSource-Target Attention(Encoder-Decoder Attention)でよく表れます。

・Source→ 入力側の系列
・Target→ 出力側の系列

たとえば英文を日本語に翻訳する場合、

・Source = 英文
・Target = 日本語文

になります。

Source-Target Attentionでは、日本語の一語を出力するときに、英文全体の中から、今この語を出すのに関係が深い場所に注目します。
つまり、書く塔が、読む塔の中を見ながら必要な情報を拾っているのです。
だから長い文でも、「全部を覚え続ける」よりずっと柔軟に扱いやすくなります。

Attentionが解決したことを、やさしく言い換えるとこうです。
RNNや初期のSeq2Seqは、長い流れをひとつながりに覚え続けようとして苦しくなることがありました。
Attentionは、その代わりに、必要な情報にそのつど目を向けるというやり方を持ち込みました。
その結果、

・長い系列でも必要な情報を拾いやすい
・昔の大事な情報を見失いにくい
・翻訳や要約のようなタスクで性能が上がりやすい

という利点が生まれました。

つまりAttentionは、RNNやSeq2Seqの「記憶の苦しさ」を、注目の力でやわらげたのです。

「全部を覚える」から「必要なところを見る」へ……ここが、Attention のいちばん大きな転換点です。
以前の発想は、できるだけ全部をうまく持ち続けようでした。
でもAttentionの発想は、全部を同じ重さで持つのではなく、必要なところを見に行こう、です。
この違いはとても大きいです。
それは、記憶の量を増やすというより、注意の向け方を変えることで問題を解こうとしたからです。

next ▶ Self-Attention と Source-Target Attention