テクノロジー

リカレントニューラルネットワーク(RNN)とは何か解説【初心者向け】

リカレントニューラルネットワーク(RNN)とは何か解説【初心者向け】

機械学習の勉強を進めていると突き当たるリカレントニューラルネットワーク(RNN)という単語。よく分からなくて避けている、または使ってはいるけど何をしているのか分からない、調べてみても「セル」、「再帰」、「時系列データ」とか、よくわからない言葉ばかりで嫌になってしまいますよね。でも、安心してください。リカレントニューラルネットワーク(RNN)はニューラルネットワークの一種類で、通常のニューラルネットワークと大きく異なるような高度な物ではありません。

リカレントニューラルネットワークをを理解するキーワードは2つです。前の出力を次の計算に利用するセル(Cell)。単語が一直線に並んだ文章や、順次変化する株価変動などの、一列に並んだ時系列データという概念。通常のニューラルネットワークはこの時系列データを取り扱うことが難しい、あるいはできないのですが、リカレントニューラルネットワーク(RNN)は、セル(Cell)というものを利用する事で時系列データを取り扱う事ができます。そのため時系列データを扱う場合は、この記事の内容をしっかり頭に入れておく必要があるでしょう。

そこで今回は、リカレントニューラルネットワーク(RNN)が何者かについて解説をしましょう

リカレントニューラルネットワーク(RNN)とは

リカレントニューラルネットワークのイメージ
リカレントニューラルネットワーク(RNN)とは、時系列データを取り扱えるようにニューラルネットワークにセル(Cell)というものを付けたもの。と言っても、リカレントニューラルネットワーク(RNN)の中心概念、”時系列データ”が普通のデータとどのように違うのか、一見するとわかりにくいですよね。「セル」が普通の伝搬と何が違うのかを理解する為に、リカレントニューラルネットワーク(RNN)による文章生成を見てみましょう。

文章生成とはその字面の通り、人工知能(AI)に文章を生成させるものです。例えば、夏目漱石の”吾輩は猫である”の文体を学習した人工知能(AI)に、適当な冒頭の1単語を与えると文章を生成しましょう。例えば「吾輩」という単語を「吾輩は猫である」を学習した人工知能(AI)入力すると、「は」と次の単語を予測して出力します。そして、「は」という出力を次の入力として再度、次の単語を推測して「猫」や「ここで」、「藁」といった”それらしい単語”を出力します。これが文章生成の基本です。

まず、文章生成を用いて時系列データを考えてみましょう。仮に「吾輩は猫である」という文章を見てみると、”吾輩”、”は”、”猫”、”で”、”ある”という5つの単語が連なったデータであると考えることができます。そして、この4つの単語には順列性があります。”吾輩”の後に続くのはいわゆる”てにをは”である格助詞でなければいけません。そして”吾輩”、”は”と続いた後にまた”吾輩”が出てきては”吾輩は吾輩”となってしまって、文法的には間違っていなくてもヘンテコな文章になってしまいます。

この種の普通のデータとは異なり、過去のデータに大きく影響されますよね。このように過去のデータが将来のデータに影響を及ぼすデータを、時系列データと呼びます。

そして、リカレントニューラルネットワーク(RNN)は時系列データを扱うために”セル(Cell)”というものを利用します。リカレントニューラルネットワーク(RNN)の中間層は、通常の入出力の他に、ループ状の入出力を持ちます。単語予測の時に、中間層の出力を二つ用意し、片方は通常の単語予測の為の出力、もう片方は次の単語予測の時の為の出力します。

普通のニューラルネットワークとリカレントニューラルネットワーク(RNN)の唯一にして最大の違いとは、セル(Cell)があることです。セル(Cell)とは、今回の出力の計算過程を、次回の計算に利用するループ状のニューラルネットの構造の事です。文章生成においては、次の単語予測の為の出力が、次の単語予測の時に通常の入力と併せて中間層に入力される事により、過去の中間層の状態を考慮した予測を実現するのに使われます。このループ状の中間層の構造を、”セル(Cell)”と呼びます。

リカレントニューラルネットワーク(RNN)と畳み込みニューラル ネットワーク (CNN) の違い

違いのイメージ
皆さんの中には畳み込みニューラルネットワーク(CNN)という言葉を知っている人もいるかもしれません。”RNN”と”CNN”は確かに字面は似ています。しかし、この二つは根本的に違う物。今度は畳み込みニューラルネットワーク(CNN)について見ていきましょう。

畳み込みニューラルネットワーク(CNN)は主に画像認識という分野で用いられています。画像認識とは、画像を入力として”ここに写っているものは猫であるか、そうでないか”といった事を推論します。これが”画像認識”。

画像というのは大した事ないように見えて、実は巨大なデータの塊です。例えば画像が横600ピクセル、縦400ピクセルだとしたら、600かける400の24万ピクセルについて人工知能(AI)は考慮しなくてはいけません。これを解決する為に、”畳み込み”という”画像の特徴的な部分だけを抽出する計算”によって画像データを圧縮し、推論しやすいようにする必要があります。
つまり、畳み込みニューラルネットワーク(CNN)は”データの特徴的な部分を抽出する為の物”で、リカレントニューラルネットワーク(RNN)は”データの時系列を考慮する為の物”という事です。

リカレントニューラルネットワーク(RNN)のメリット

メリットのイメージ
リカレントニューラルネットワーク(RNN)のメリットは、時系列を考慮できる事にほかなりません。先ほど例に挙げたように、時系列を考慮しなくては「吾輩は吾輩」というヘンな文章が生成されてしまいます。さらには、「吾輩は吾輩」から普通のニューラルネットワークを用いて文章生成の続きを行うと、最後の単語である”吾輩”から次の単語を予測する事となり、単語生成がループして「吾輩は吾輩は吾輩は……」という無限ループに陥ってしまいます。

これを解決する為に、リカレントニューラルネットワーク(RNN)は”セル(Cell)”を用います。つまり、過去の中間層の状態を次の入力に利用します。そうする事で人工知能(AI)は「吾輩は」の次の文章を”過去にどのような予測・計算が行われたか”という”時系列”を考慮して予測し、適切に「猫」や「藁」といった単語の生成が可能となります。

リカレントニューラルネットワーク(RNN)の主な活用方法

活用方法のイメージ
リカレントニューラルネットワーク(RNN)は文章生成の他にも、株価変動や天気予報などの、時系列を考慮しなくてはいけないタスクに活用されています。

しかし、リカレントニューラルネットワーク(RNN)の主な活用分野は文章生成です。今回は夏目漱石を例としましたが、シェイクスピアっぽい詩や、ハリーポッターの次回作に近い小説を自動生成させる事などが試みられています。どちらも同じ手法を用いていて、例えばシェイクスピアに関してはシェイクスピアの作品を収録したデータセットを利用して人工知能(AI)を学習させた後、その人工知能(AI)に適当な単語や文章を与えて次の単語を予測させるというものです。

これらもリカレントニューラルネットワーク(RNN)を活用しています基本概念として使っています。また、Googleが開発しているGPT-3も文章生成の一分野ですが、これは文章によって説明された機能を実装するHTMLコードとCSSコードを生成するという事も成し遂げています。例えば、「黄色いボタン」という物を入力すると、人工知能(AI)がHTMLとCSSを用いて実際に黄色いボタンを実装するコードを生成できるとのこと。

リカレントニューラルネットワーク(RNN)の活用で注意すること

注意点のイメージ
リカレントニューラルネットワーク(RNN)は時系列を考慮する関係上、長い文章を処理しようとすると、後半になるにつれて最初の方の文章を忘却する事があります。例えば「吾輩は猫である」を使って、以下の文章を生成するとしましょう。

「(前略)吾輩は藁の上から急に笹原の中へ棄てられた。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである」」

この時、「吾輩は藁の上から急に笹原の中へ棄てられた」まで生成したものの、過去の文章がどういったものかを忘却してしまい、「られた」につながる単語として「ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである」を参考に「時」を出力し、「吾輩は藁の上から急に笹原の中へ棄てられた時何だかフワフワした感じがあったばかりである」というようなヘンな文章を生成してしまう場合があります。

これを解決する為に、リカレントニューラルネットワーク(RNN)の拡張であるLong shot-term memory(LSTM)では”セル(Cell)”に改善を加え、メモリを持たせて記憶を実現する事で、長い文章も問題なく処理できるようにしました。現在は研究、開発、どのような分野であれLong shot-term memory(LSTM)のようなリカレントニューラルネットワーク(RNN)の進化系を用いる事が普通です。特に理由がなければ、リカレントニューラルネットワーク(RNN)よりもLong shot-term memory(LSTM)を用いましょう。

※LSTMについて詳しく知りたい方はこちら

まとめ
さて、今回はリカレントニューラルネットワーク(RNN)について解説しました。

リカレントニューラルネットワーク(RNN)は”時系列データ”を扱うために”セル(Cell)を用いるニューラルネットワークの一種。畳み込みニューラルネットワーク(CNN)は”畳み込み”という”画像の特徴的な部分だけを抽出する計算”によって画像データを圧縮し、推論しやすいようにするものであり、この二つは根本的に用途が異なるという事。そして、リカレントニューラルネットワーク(RNN)の拡張・改善としてLong shot-term memory(LSTM)のような新技術です。

文章生成や文章翻訳は”自然言語処理”というジャンルで、突き詰めればとても深いものですが、リカレントニューラルネットワーク(RNN)の事が分かった皆さんは、既にその入口を突破しているといえるでしょう。自信を持ってリカレントニューラルネットワーク(RNN)を用いたAI(人工知能)開発への一歩を踏み出しましょう。

トップへ戻る
タイトルとURLをコピーしました