始めに

こんにちは!自然言語処理(NLP)・自然言語生成(NLG)の解説記事を書いている、すえつぐです!
自然言語処理ライブラリの解説などで度々見かける「Attention」。(Attention機構とも呼ばれます)
Attentionは自然言語界のブレイクスルーと言われ、BERTやGPT-3といった最先端技術を理解する上で必須の仕組みです。
このページでは「Attention」についてわかりやすく、そして深く解説していきます。
ATTENTIONをわかりやすく図解
ATTENTIONとは?
Attentionを英訳タスクで解説
Attentionは非常に人間の考え方と近く、直感的に理解しやすいです。具体例で理解していきましょう。
例えば、下の文章のような日本文を英訳するタスクがあったとします。
英訳タスク日本文
エミリーは岩手のりんご農家で生まれ育ったため、毎日りんごを食べていたし、もちろんエミリーはりんごが好きだ。
翻訳文
Emily was born and raised in an apple farm in Iwate, Japan, so she ate apples every day, and of course Emily ( ) apples.
上の空白部分を英訳してみてください。
もちろん答えは「likes」です。みなさんは頭の中でどうやって翻訳しましたか?
①日本文の「好きだ」が英訳する場所だと判断。好きを「like」に英訳。
②主語がエミリーで三人称単数だから「likes」が答えになる。
というように「likes」を導き出したのではないでしょうか。
「日本文のエミリーはりんごが好きだ。しか翻訳に必要ないじゃん。」と思った方は非常に鋭いです。
それがAttentionの非常に重要なポイントです。
人間が無意識に行なっている、「このタスクではこの部分が重要だな。」ということをAIに理解させる仕組みが、Attentionなのです。(今回の例では「エミリーはリンゴが好きだ」の部分が重要)
Attentionと従来手法の比較
Attentionの概要がわかったところで、従来手法とAttentionを使用したモデルを比較してみましょう。
図解のように、従来手法は文をそのまま処理します。短い文は正確に翻訳できますが、今回のような長文では精度が落ちてしまいます。
論文でも従来手法は30文字を超えると急激に精度が落ちることが指摘されていました。
一方、Attentionを使用したモデルは「エミリー」と「好きだ」を重要単語としてハイライトします。
これによって重要な単語に注目(Attention)でき、長文であっても正確に翻訳することができます。
POINT・AttentionはAIに「そのタスクには、どの単語が重要か、注目(Attention)すべきか」を教える仕組み。
・この仕組みのおかげで長文でも精度が落ちなくなった。
ATTENTIONが自然言語界のブレイクスルーと言われている理由
Attentionの仕組みがわかったと思います。
AttentionがなぜNLPで重要なのでしょうか?ここからはNLPにおけるAttentionの重要性について解説していきます!
近年のNLPの急発展の根底にあるのがAttention
AttentionがNLPのブレイクスルーと言われる理由は、BERT、GPT-3などの最先端ライブラリに繋がる重要な仕組みだからです。
Attentionは2015年に発表。そこから自然言語処理界は一気に発展していきます。
発表されて2年後にはAttentionを元にして作られた「Transformer」が発表されました。
Transformerの論文タイトルは「Attention Is All You Need」。Attentionのみを使用した高性能モデルが提案されました。
ご存知の方も多いかもしれませんが、このTransformerを基に強力なライブラリ、BERTやGPT-3が誕生しました。
こういった近年のNLPの急発展の根底にあるのがAttentionです。そのため、Attentionは自然言語界のブレイクスルーと言われているのです。
Transformerの解説記事Transformerに関してはこの記事で解説しています。この記事を読んだ後に読むと、より分かりやすいと思います。
NLPの発展を図解
この自然言語界の発展は、移動手段の発展に例えると直感的にわかりやすいと思います。ぜひ、読んでみてください。
Attention以前のモデルは「長文では精度が落ちる」という欠点がありました。
その問題をAttentionという仕組みを新たに組み込むことで克服。
さらに、それまで翻訳方法として主流だった統計的翻訳と同程度の翻訳精度を発揮しました。
このAttentionを元にTransformerが数年後に開発されます。
そしてTransformerを組み込んだ様々な強力なモデルが誕生しました。この強力なモデルが普段我々が使っている、BERTやGPT-3、PaLmなどなわけです。
POINTAttentionが自然言語界のブレイクスルーと言われている理由は、近年のNLPの急発展の根底にあるのがAttentionだから。
原論文を元に、数式でATTENTIONの仕組みを深く解説
ここまでで、Attentionの概要は理解できたと思います。
ここからは原論文を元に、Attentionを理解する上で重要な数式を解説していきます。 もちろん、本章は少し難しい内容になりますが、数学のバックグラウンドがない方々でも理解できるようになっています。
本章をしっかり読み理解することができれば、Attentionを数式で理解・説明することができるようになるはずです。
また研究などで原論文を読む予定の方は、原論文を読む前に本章を読むことで、大まかな内容を理解でき原論文をスムーズに読むことができると思います。
流れとしては以下のように解説していきます。
①全体の流れについて解説
②Attentionの肝となる部分に注目して解説
この章を理解すれば数式でAttentionを理解・説明できるようになるはずです。
ATTENTIONの全体的な流れ
まず、Attentionの全体の流れを解説していきます。
原論文で紹介された、Attentionを組み込んだモデルは「RNNsearch」と呼ばれます。このモデルは先行研究のシンプルなEncoder-Decoderモデル、「RNN Encoder-Decoder」をベースとして作られました。
つまり、先行研究の「RNN Encoder-Decoder」を改善しつつ、Attentionを追加したモデルが「RNNsearch」というわけです。
RNNsearchとはAttentionの少しややこしいところは、Attention自体はNLPモデルではないということです。Attentionは仕組み(アーキテクチャ)であり、それを組み込んだモデルが「RNNsearch」となっています。
簡単なおさらい:Encoder、DecoderとはEncoder:入力された文や単語などをAIが処理できるように変換する
EncoderとDecoderに分けてAttentionの仕組みを解説
ここからは、EncoderとDecoderに分けて先行研究とAttentionのモデルを比較して解説していきます。(原論文と同じように翻訳タスクを使います)
先行研究:RNN Encoder-Decoder
- Encoder 入力単語(x)をRNNで**固定次元の意味ベクトル(c)**に変換
- Decoder 意味ベクトル(c)と隠れ層(Si)とそれまでの単語(yi-1)を入力に、RNNで単語(p(yi))を出力する
原論文:RNNsearch
- Encoder
入力(x)をBiRNN(双方向RNN)で前後の文脈を加味した単語ベクトル(hi)に変換 - Decoder
Attention機構で単語ベクトル(hi)を文脈ベクトル(ci)に変換。「どの単語に注目(Attention)すべきか」を重み付け(α)する。これこそがAttention。原論文から引用 文脈ベクトル(ci)、隠れ層(Si)、それまでの単語(yi-1)を入力に、RNNで単語確率(p(yi))を出力する
従来のRNNモデルとAttentionを組み込んだRNNモデルの違い
まとめると、先行研究では全ての単語に同じ固定次元の意味ベクトル(c)を作り、そのままRNNに使用していました。
それに対して、
Attentionのモデルでは単語ごとに、どの単語に注目するべきかを加味した文脈ベクトル(ci)を作り、RNNに使用しています。
この意味ベクトル(c)を文脈ベクトル(ci)に変更することで、それまでの課題だった「長文になると精度が落ちる」という課題を克服しました。
次の章ではこの文脈ベクトル(ci)について数式で理解してきます。
ci:文脈ベクトル
文脈を加味して、「そのタスクにはどの単語が重要か」という情報が入っている。翻訳の場合、「好きだ」を訳すためには「主語」と「好きだ」が重要であるという情報が入っているイメージ。
αij:単語の重要度
その単語がそのタスクに対して、どれくらいの重要かを表す重み。0〜1の値を持つ。詳しくは後述。
hj:単語ベクトル
Encoderの双方向RNNによって、その単語だけでなく前後の単語の情報も入っているベクトル。
つまり文脈ベクトル(ci)を求めるために、
「単語ベクトル(hj)に、その単語の重要度(αij)を重み付けした値の総和(Σ)を出す」
ということです。
補足:ΑIJ(単語の重要度)の式の解説
補足としてαijについても簡単に解説していきます。αijの式は以下のようになっています。
これはSoftmaxの式なので、eijをsoftmaxで計算していることがわかります。
(softmaxについてはこのページで解説しています)
そしてそのeijは、隠れ層(Si-1)と単語ベクトル(hj)を計算し「単語j付近の入力と単語iの出力がどの程度一致しているかのスコア」を出しています。
また、eijの式など、より詳しく学びたい方は原論文を読んでみてください。(リンクは下の方に添付しています)
POINT・従来のRNNモデルを改善するために、RNNモデルにAttention機構を追加した。
・従来は各単語で同じ意味ベクトル(c)を使用。Attentionでは各単語ごとに文脈ベクトル(ci)を使用する。
・文脈ベクトル(ci)は単語に対してαで重要度の重み付けをしたもの。
全体まとめ
- AttentionはAIに「そのタスクには、どの単語が重要か」を教える仕組み。この仕組みのおかげで長文でも精度が落ちなくなった。
- Attentionが自然言語界のブレイクスルーと言われる理由は、近年のNLPの急発展の根底にあるのがAttentinだから。
- 従来は各単語で同じ意味ベクトル(c)を使用。Attentionは各単語ごとに文脈ベクトル(ci)を使用する。
- 文脈ベクトル(ci)は単語に対してαで重要度の重み付けをしたもの。
参考資料・おすすめの参考書
おすすめの参考書
残念ながら、Attentionだけに関する書籍はありません。
以下の書籍でAttentionとTransformer両方を学ぶことができます。
原論文
Neural Machine Translation by Jointly Learning to Align and Translate
このサイト、Twitterについて
このサイトでは、NLP関係の解説記事をわかりやすく図解していきます。
「他のサイトの解説は難しすぎる」「もっと直感的に理解したい」という方々の役に立てるように解説していきます。
是非、お気に入り登録、Twitterのフォローをお願いします。Twitterでは、投稿のお知らせ、NLPの最新情報などを発信しています。