機械学習の勉強を進めていると突き当たるリカレントニューラルネットワーク(RNN)という単語。よく分からなくて避けている、または使ってはいるけど何をしているのか分からない、調べてみても「セル」、「再帰」、「時系列データ」とか、よくわからない言葉ばかりで嫌になってしまいますよね。でも、安心してください。リカレントニューラルネットワーク(RNN)はニューラルネットワークの一種類で、通常のニューラルネットワークと大きく異なるような高度な物ではありません。
そこで今回は、リカレントニューラルネットワーク(RNN)が何者かについて解説をしましょう。
リカレントニューラルネットワーク(RNN)とは
リカレントニューラルネットワーク(RNN)とは、時系列データを取り扱えるようにニューラルネットワークにセル(Cell)というものを付けたもの。と言っても、リカレントニューラルネットワーク(RNN)の中心概念、”時系列データ”が普通のデータとどのように違うのか、一見するとわかりにくいですよね。「セル」が普通の伝搬と何が違うのかを理解する為に、リカレントニューラルネットワーク(RNN)による文章生成を見てみましょう。
文章生成とはその字面の通り、人工知能(AI)に文章を生成させるものです。例えば、夏目漱石の”吾輩は猫である”の文体を学習した人工知能(AI)に、適当な冒頭の1単語を与えると文章を生成しましょう。例えば「吾輩」という単語を「吾輩は猫である」を学習した人工知能(AI)入力すると、「は」と次の単語を予測して出力します。そして、「は」という出力を次の入力として再度、次の単語を推測して「猫」や「ここで」、「藁」といった”それらしい単語”を出力します。これが文章生成の基本です。
この種の普通のデータとは異なり、過去のデータに大きく影響されますよね。このように過去のデータが将来のデータに影響を及ぼすデータを、時系列データと呼びます。
そして、リカレントニューラルネットワーク(RNN)は時系列データを扱うために”セル(Cell)”というものを利用します。リカレントニューラルネットワーク(RNN)の中間層は、通常の入出力の他に、ループ状の入出力を持ちます。単語予測の時に、中間層の出力を二つ用意し、片方は通常の単語予測の為の出力、もう片方は次の単語予測の時の為の出力します。
普通のニューラルネットワークとリカレントニューラルネットワーク(RNN)の唯一にして最大の違いとは、セル(Cell)があることです。セル(Cell)とは、今回の出力の計算過程を、次回の計算に利用するループ状のニューラルネットの構造の事です。文章生成においては、次の単語予測の為の出力が、次の単語予測の時に通常の入力と併せて中間層に入力される事により、過去の中間層の状態を考慮した予測を実現するのに使われます。このループ状の中間層の構造を、”セル(Cell)”と呼びます。
リカレントニューラルネットワーク(RNN)と畳み込みニューラル ネットワーク (CNN) の違い
皆さんの中には畳み込みニューラルネットワーク(CNN)という言葉を知っている人もいるかもしれません。”RNN”と”CNN”は確かに字面は似ています。しかし、この二つは根本的に違う物。今度は畳み込みニューラルネットワーク(CNN)について見ていきましょう。
畳み込みニューラルネットワーク(CNN)は主に画像認識という分野で用いられています。画像認識とは、画像を入力として”ここに写っているものは猫であるか、そうでないか”といった事を推論します。これが”画像認識”。
リカレントニューラルネットワーク(RNN)のメリット
リカレントニューラルネットワーク(RNN)のメリットは、時系列を考慮できる事にほかなりません。先ほど例に挙げたように、時系列を考慮しなくては「吾輩は吾輩」というヘンな文章が生成されてしまいます。さらには、「吾輩は吾輩」から普通のニューラルネットワークを用いて文章生成の続きを行うと、最後の単語である”吾輩”から次の単語を予測する事となり、単語生成がループして「吾輩は吾輩は吾輩は……」という無限ループに陥ってしまいます。
これを解決する為に、リカレントニューラルネットワーク(RNN)は”セル(Cell)”を用います。つまり、過去の中間層の状態を次の入力に利用します。そうする事で人工知能(AI)は「吾輩は」の次の文章を”過去にどのような予測・計算が行われたか”という”時系列”を考慮して予測し、適切に「猫」や「藁」といった単語の生成が可能となります。
リカレントニューラルネットワーク(RNN)の主な活用方法
リカレントニューラルネットワーク(RNN)は文章生成の他にも、株価変動や天気予報などの、時系列を考慮しなくてはいけないタスクに活用されています。
これらもリカレントニューラルネットワーク(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(人工知能)開発への一歩を踏み出しましょう。