5-7-1 Attentionとは何か

長い手紙を読んでいる場面を想像してみてください。
手紙には、いろいろなことが書かれています。
昨日の出来事……子どものころの思い……今の気持ち……最後に伝えたいお願い……。
この手紙を読んで、たとえば「この人はいちばん何を伝えたかったのだろう」と考えるとき、私たちは手紙のすべての文を同じ重さで受け取っているわけではありません。
ある部分はさらっと読み、ある部分では立ち止まり、「ここが大事そうだ」と感じたところに、自然と目を向けますよね。
最後に伝えたいお願いよりも、今の気持ちの方に注目してみたり。

Attentionとは、ディープラーニングにそうした「今、この場面で大事なところに注目する力」を与える仕組みです。

これまでのニューラルネットワークでは、たくさんの情報を受け取って処理するとき、どうしても「全部をまとめて扱う」場面が多くありました。
でも実際には、情報にはその場その場で重要さの差があります。

たとえば文章なら、
・主語が大事なとき
・直前の単語が大事なとき
・ずっと前に出てきた名前が大事なとき
があります。

音声でも同じです。
・今の音を理解するには、直前の音が大事なこともある
・少し前の強いアクセントが手がかりになることもある

つまり、理解のためには、どの情報をどれくらい重く見るかを、そのつど決める必要があるのです。
Attentionは、その「重みづけ」を動的に行う仕組みだと考えるとわかりやすいです。

もう少し別のたとえで考えてみましょう。
あなたが図書館で、「赤毛の女の子が主人公で、庭のある家に引っ越してくる物語を探しています」と司書さんに相談したとします。
図書館にはたくさんの本がありますが、司書さんは全部を同じように見るのではなく、

・主人公の特徴
・舞台
・物語の流れ

といった手がかりをもとに、今必要な情報に近い本を探してくれます。

Attention もこれに少し似ています。
ネットワークの中にあるたくさんの情報の中から、今の処理にとって、どの情報が大事かを見つけて、そこに重みをつけるのです。
つまりAttentionは、情報の海の中から、今必要な手がかりを探し出す司書さんのような存在とも言えます。

ここで大事なのは、Attentionは全部を均等に覚えようとする発想ではないということです。
むしろ逆で、全部を同じように抱え込むのではなく、必要な場所に注目するという発想です。

これは、人間の読み方や考え方にもよく似ています。
私たちは長い文章を読むとき、一字一句をまったく同じ重さで頭に入れているわけではありません。
今の文を理解するために必要な部分に、自然と目を向けています。
Attentionは、その「目の向け方」をモデルの中に取り入れたものなのです。

Attentionでは、たくさんの情報それぞれに対して、

・ここはかなり大事
・ここは少し参考になる
・ここは今はあまり重要ではない

というふうに、重みをつけます。
そして、その重みに応じて情報を受け取り直します。
つまり、Attentionは情報をただ受け取るのではなく、重要さに応じて見直す仕組みなのです。

たとえるなら、長い手紙の中で重要なところに線を引きながら読むようなものです。
全部を同じ濃さで読むのではなく、今必要なところに印をつける。
それによって、意味が見えやすくなる。

Attentionが重要なのは、長い系列や複雑な情報を扱うとき、「全部を一つの記憶に押し込める」やり方には限界があるからです。
特に文章や音声のように、順番の中で意味が決まるデータでは、今の単語に関係あるのは、少し前の語かもしれない、ずっと前の主語が大事かもしれない、離れた場所にある情報が鍵になるかもしれない……ということが起こります。
そんなとき、必要な情報にそのつど目を向けられるAttentionは、とても強い力を持ちます。

ここまでをまとめると、Attentionとは、たくさんの情報の中から、今の処理にとって大事な部分に注目する仕組みです。

・全部を同じように見るのではない
・その場その場で、見るべき場所を決める
・重要なところを重く扱う

それによって、長い文章や複雑な情報の中でも、必要な手がかりを見つけやすくなるのです。

next ▶ Attentionが解決したこと