前の章では、回帰結合層が、少し前の情報を引き継ぎながら、次を考える仕組みであることを見てきました。
では、そんなRNNは、どんなデータを扱うのが得意なのでしょうか。
結論から言うと、RNNが得意なのは、順番や時間の流れが大切なデータです。
こうしたデータを、時系列データと呼びます。
時系列データとは、時間の順番に並んだデータのことです。
たとえば、
・毎日の気温
・1時間ごとの株価
・心電図の波形
・音声の波
・文章の単語の並び
などがそうです。
これらに共通しているのは、ただデータが並んでいるだけではなく、前に何があったかが、今の意味に関わるということです。
いちばんわかりやすいのは文章です。
たとえば、
「私は りんごを 食べた」
「りんごを 私は 食べた」
この二つは、似た単語を使っていますが、順番が変わると印象も少し変わります。
さらに、
「今日は とても」
「今日は とても 寒い」
「今日は とても 楽しい」
というように、前の言葉があるからこそ、次の言葉の意味が見えてきます。
もし単語を一つずつバラバラに見てしまったら、文章の意味はうまくつかめません。
RNNは、前の単語の情報を少し覚えながら、次の単語を読むことができるので、こうした文章の処理に向いています。
音声も、RNNが得意な代表例です。
人の声は、一瞬の音だけ切り取っても意味がわからないことがあります。
たとえば、ある音が
・前にどんな音が続いていたか
・後ろにどんな音が来るか
によって、聞こえ方や意味が変わることがあります。
音声認識では、音の流れ全体を見ながら「これは何という言葉か」を判断する必要があります。
RNNは、過去の音の情報を引き継ぎながら処理できるので、こうした連続した音の認識にも向いています。
文章や音声だけではありません。
たとえば、毎日の気温を考えてみましょう。
今日の気温を予測するとき、昨日や一昨日の気温はかなり参考になりますよね。
株価も同じです。今この瞬間の値だけを見るより、さっきどう動いていたか、昨日からどう変化してきたか、を見たほうが、流れがわかります。
こうしたデータでは、過去の値が今に影響しているため、RNNのように前の情報を引き継げるモデルが役立ちます。
ここで、画像認識との違いも少し見ておきましょう。
画像は、1枚の中に情報がまとまっています。
もちろん位置関係は大切ですが、基本的には「この1枚をどう読むか」という問題です。
それに対して文章や音声、株価は、一つひとつが流れの中に置かれているデータです。
つまり、
画像→ 空間的な関係が大事
RNNが扱うデータ→ 時間的な関係や順番が大事
という違いがあります。
だから、画像ではCNNが活躍し、文章や音声、時系列ではRNNが活躍するのです。
双方向RNN(Bidirectional RNN)
ここで、RNNをさらに発展させた
双方向RNN(Bidirectional RNN)にも触れておきましょう。
ふつうのRNNは、基本的に「前から後ろへ」情報を読んでいきます。
たとえば文章なら、
1語目
↓
2語目
↓
3語目
という順番です。
でも実際には、言葉の意味は「前に何があったか」だけでなく、後ろに何が来るかによっても決まることがあります。
日本語でも、言葉の意味は前後の文脈によって決まることがあります。
たとえば「はし」という音だけでは、「箸」「橋」「端」のどれなのかわかりません。
しかし、「はしでご飯を食べる」「川にかかるはしを渡る」「机のはしに置く」のように前後を見ると、意味がはっきりします。
双方向RNNは、このように前からの流れだけでなく、後ろの文脈も手がかりにしながら意味を捉えるのが得意です。
双方向RNNでは、
・前から読む流れ
・後ろから読む流れ
の両方を使います。
つまり、過去だけでなく、未来側の文脈も参考にして理解することができるのです。
物語を読むときにも、最後まで読んでから最初の場面の意味が深くわかることがありますよね。
双方向RNNは、少しそれに似ています。
まとめ
ここまでをまとめると、RNNが向いているのは、
・文章
・音声
・気温や株価のような時系列データ
・センサーの連続データ
など、順番や時間の流れが意味を持つデータです。
共通しているのは、今の情報だけでは足りず、前後の流れを見たほうが理解しやすいということです。
RNNは、そうした流れの中で意味を捉えるためのモデルなのです。
next ▶ RNNはどう学習するのか