機械学習には欠かせない、RNN(回帰型ニューラルネットワーク)とは | AIZINE(エーアイジン)
テクノロジー

機械学習には欠かせない、RNN(回帰型ニューラルネットワーク)とは

機械学習には欠かせない、RNN(回帰型ニューラルネットワーク)とは

機械学習の勉強をしていると必ずといってよいほど出てくるRNN(回帰型ニューラルネットワーク)。

RNNって大事な気がするけど難しそうなイメージありますよね。ニューラルネットワークまではわかったんだけど回帰型って何?どんなときに使えばいいの?時系列データを扱えるらしいんだけど、そもそも時系列データって何?こんな疑問を感じたことがあるでしょう。

RNNは、近年脚光を浴びているディープラーニングでも使われている基本的な技術で、応用範囲も広いです。RNNの仕組みを知れば、機械学習やAI(人工知能)開発に活用できるに違いありません。

そこで今回は、一見難しそうに思えるRNNをできるだけわかりやすく紹介します。それではまず、RNNとは何かについて解説から始めましょう。

RNN(回帰型ニューラルネットワーク)とは何か、解説しましょう

RNNのイメージ
まず初めに、フィードフォーワードニューラルネットワークについて解説します。フィードフォーワードニューラルネットワークは順伝搬型ニューラルネットワークとも呼ばれ、一方向にのみ信号が流れるニューラルネットワークのことです。

一般的なフィードフォーワードニューラルネットワークは入力層、隠れ層、出力層の三層から成り立っています。入力層へ入力された信号は隠れ層へと伝わり、最後に出力層から信号が出力されます。ただ、この仕組みでは過去、現在、未来といった時間を表現できません。

そこで登場したのがRNN。RNNはRecurrent Neural Networkの略で、日本語では回帰型ニューラルネットワークもしくは再帰型ニューラルネットワークと呼ばれています。RNNはその名前が示す通り、フィードフォワードニューラルネットワークにフィードバックループを持たせたものになります

※さらに簡単に解説した記事はこちらです

隠れ層の信号を再び入力層に戻すループを持ったものをエルマンネット、出力層の信号を再び出力層に戻すループを持ったものをジョーダンネットと呼びます。どちらのネットワークも一つ前の時間の信号を入力層に戻すことによって、時間的に変化する情報を扱えます。

エルマンネット

エルマンネット

ジョーダンネット

ジョーダンネット

例えば、ある時刻tにエルマンネットの入力層へ信号が入力されたとしましょう。フィードフォワードニューラルネットワークと同様に隠れ層、出力層へと信号が伝わります。次の時刻t+1では、入力層へ新たな信号が入力されます。このとき、時刻tの隠れ層の信号を合わせて、次の隠れ層、出力層へと信号を伝えます。

つまり、フィードバックループにより、現在の情報だけでなく過去の情報も使って未来を予測できるようになりました。

RNNができることとは

言語のイメージ
次にRNNではどんなことができるのか見ていきましょう。

RNNが最もよく使われるのは自然言語処理(NLP)です。皆さんの中にはSiriやAlexaといった音声アシスタントと話をしたことがある、Google翻訳を使ったことがある人もいますよね。このSiriやAlexaに使われている音声認識や対話システム、Google翻訳に使われている機械翻訳といった自然言語処理技術には、RNNが使われることが多いです。

※自然言語処理についての解説記事はこちら

また先ほど、RNNは時間的に変化する情報を扱うと言いましたが、言葉もそうなのか疑問ですよね。私たちが文書を読むとき、文の先頭から一文字ずつ順番に読みます。このため、言葉も時間的に変化する情報でしょう。RNNに言葉を処理させる場合は、入力層へ一文字ずつもしくは一単語ずつ入力していくことになります。

続いて、RNNは自然言語処理以外には何に使うことができるのか見ていきましょう。皆さんの中には株式投資をされている人もいるかもしれません。この、時々刻々と変化する株価の予測にもRNNが使われているのです。

また、Fitbitのようなウェアラブルデバイスには様々なセンサーが入っていて、そこから得られる情報も時間的に変化します。これらの情報を使って、人間がどのような行動をしているかの推定にもRNNを使うことができます。

RNNに欠かせない「時系列データ」についても知っておこう

データのイメージ
次に、時系列データについて紹介します。

RNNは時間的に変化する情報を扱えますが、それがいわゆる時系列データと呼ばれるものになります。例えば先ほど出てきた株価やセンサーデータ、気温、都市の人口、動画なども時系列データになります。

※時系列データはこちらの記事でも解説しています

RNNなどの機械学習を使うことで、時系列データの予測、分類、異常値検出などを行うことができます。先ほどの例にあった株価予測は時系列データの予測になります。センサーデータからの行動推定は時系列データの分類にあたります。他にも機械の異音から故障を検出するのいうのは異常値検出になります。

RNNはさまざまな時系列データを扱えることがわかりましたが、一つ注意事項があります。それは、一定の時間間隔でサンプリングしたデータを用意すること。世の中にある時系列データは必ずしも一定間隔で収集されたデータとは限りません。また、値が欠損している場合もあります。RNNに入力する場合は同じ時間間隔に揃え、欠損値を埋めたものを用意しましょう。欠損値の穴埋めには、前後の値で埋める方法や、前後の値を使った線形補完などがあります。

RNNと合わせて知っておきたい「LSTM」とは

メモリーのイメージ
最後に、RNNの発展形であるLSTM(Long Short-Term Memory)について紹介しましょう。

これまで紹介してきたRNNは、勾配消失問題や勾配爆発問題と呼ばれる問題を抱えています。勾配消失問題はネットワークの学習をした際に、活性化関数の勾配がゼロとなり、学習が進まなくなる問題のことで、勾配爆発問題は逆に、勾配が発散してしまい、学習が進まなくなる問題です。これらの問題により、RNNは時間が離れているデータ間の依存関係、すなわち長期依存関係の学習を苦手としています。

となると、RNNは近い過去の関係は学習できても、遠い過去の関係を学習することは難しいですよね。これらを克服するために開発されたのがLSTMです。

LSTMは近い過去を扱える短期記憶と遠い過去を扱える長記憶を備えるニューラルネットワークです。このLSTMはセルと入力ゲート、出力ゲート、忘却ゲートから成ります。セルは情報を記憶するメモリであり、各ゲートはセルへの情報の流れを制御します。

LSTM

LSTM

RNNでは、学習をする際に入力重み衝突と出力重みという問題がありました。これは、入出力信号の伝達と保護という矛盾する重み更新が同時に発生することで、学習が進まない問題です。この問題に対処するために、LSTMでは必要な信号だけが伝わるように入出力ゲートの開閉を行います。

更に、忘却ゲートは、セルで記憶した内容を忘れることを学習します。これにより、不要な情報をいつまでもセルに記憶することを防いでいます。

まとめ

さて、今回はRNNについてご紹介しました。RNNについてお伝えした内容は以下です。

  • RNNとフィードバックループを持ったニューラルネットワークである
  • RNNは自然言語処理をはじめ、時系列データの処理に使える
  • RNNでは時系列データの予測・分類・異常値検出ができる
  • LSTMはRNNの欠点である勾配消失問題・勾配爆発問題を克服するために開発された

近年、ディープラーニングではTransformerと呼ばれる時系列データを扱える新たな学習モデルが登場しました。これまで時系列データの処理にはLSTMやRNNが使われていたのですが、今はTransformerが使われることが多いです。とはいえ、RNNは、Transformerと比較して表現力が限られるものの、小規模なモデルで学習を行うことが可能で、ニューラルネットワークを支える基礎的な技術でもあります。これから機械学習の理解を深めるには重要でしょう。

 

参考文献
Wikipedia──回帰型ニューラルネットワーク
岡谷 貴之(2015)『深層学習 (機械学習プロフェッショナルシリーズ)』講談社.
トップへ戻る
タイトルとURLをコピーしました