TensorFlow入門(6)

TensorFlow入門(6)

RNN(Recurrent Neural Network)の概要を理解しよう(TensorFlow編)

Tutor 2018年4月25日

時系列データの予測でよく使われるディープラーニングの代表的手法「RNN」を解説。そもそも時系列データとは何か? RNNの特徴や、通常のニューラルネットワークの相違点についても押さえよう。

安部晃生 DATUM STUDIO株式会社 安部 晃生

時系列データとは

 時系列データとは、特定の情報について、時間順序を追って取得されたデータのことだ。典型的なものとしては、年度ごとのA社の売上高、1時間ごとの東京都の降水量、地球上で発生した地震の時刻と場所、震度などの記録、といったものが挙げられる。

 時系列データのデータ分析上の特徴としては、データポイントそれぞれを独立したものと見なすのではなく、「ある時点のデータが、それ以降に発生するデータに何らかの影響を及ぼしている」と考えることである。この意味においては、自然言語も時系列データとしての性質を持っているといえる。例えば文章中で最初に「私」という単語が来たら、その次に来るのは「は」や「の」といった助詞が来ると予想できる。

RNNとは

時系列データとニューラルネットワーク

 与えられた時系列データから、次に得られるであろうデータを予測する方法はいろいろあるが、ニューラルネットワークを使うこともできる。

 時系列データの予測においては、入力もおのおのが独立した入力ではなく「一連の入力データ」として扱われ、それぞれに対する一連の出力データが必要となる。単純なニューラルネットワークでは、出力は最後の層からのみ発生するため、一連の入力のおのおのに対して出力を生成することはできない。それではどうすればよいのだろうか。

 Recurrent Neural NetworkRNN)は、これに単純な回答を与えている。通常のニューラルネットワークでは、ある層の出力は、次の層の入力に利用されるのみである。しかしRNNでは、ある層の出力は、次の層の入力として利用されるだけでなく、一般的なニューラルネットワークの最後の層のような(中間データではないユーザーが利用可能な)出力としても利用される。また、各層の入力として、前の層の入力のみではなく、時系列のデータポイントも入力とする。図に表すと図1のようになる。

図1 時系列データに対応したニューラルネットワーク

時系列のデータポイントは、各層の入力として利用される。各層の出力は、次の層の入力として利用される。

 このように、ニューラルネットワークの出力を別のネットワークの入力として利用するような再帰的構造を持ったニューラルネットワークのことをRecursive Neural Networkと呼ぶ(こちらもRNNと略すが、本稿では「RNN」といえば「Recurrent Neural Network」を指すものとする)。

 Recursive Neural Networkの中でも、図1のように隠れ層同士の結合が時系列に沿って直線的であり、かつその隠れ層が同一構造のものであるような場合を「RNN」という。これを表現したのが図2である。RNNでは、再帰的に出現する同一のネットワーク構造(図2中では黒四角で表現される)のことをセルcell)と呼ぶ。

図2 RNN

黒四角はセルを示し、実際はニューラルネットワークの構造である。

 繰り返しになるが、RNNの大きな特徴の一つは「ある時点の入力が、それ以降の出力に影響を及ぼす」ということである。言い換えれば、「過去の情報を基に予測できる」ということである。これは図1を見ればほぼ明らかであろう。 \(x_{1}\) の矢印をたどっていくと、 \(y_{1}\) から \(y_{n}\) まで到達する。つまり \(x_{1}\) は、 \(y_{1}\) から \(y_{n}\) に影響する。同様に \(x_{2}\) は \(y_{2}\) から \(y_{n}\) に影響し、 \(x_{n}\) は \(y_{n}\) にのみ影響する。

 詳細は省くが、RNNのような再帰的な構造を持つデータフローグラフを構築するのは単純な話ではない。TensorFlowでは、このような再帰構造を表現するためのクラス群をtf.nn.rnn_cellモジュールで定義している。

 以上、今回はコンパクトな解説になったが、RNNの概念を理解するための基礎を説明した。次回はRNNを使って深層学習を試してみる。

【TL;DR】CNNで行う画像認識

  • 時系列データ: 特定の情報について、時間順序を追って取得されたデータ
  • 自然言語: 「ある時点のデータが、それ以降に発生するデータに何らかの影響を及ぼしている」という意味で、時系列データの一種として扱える
  • RNN(Recurrent Neural Network): 時系列データに対応したニューラルネットワーク。時系列のデータポイントは、各層の入力として利用される。また、各層の出力は、次の層の入力としてだけでなく、ユーザーが使用可能な出力としても利用される
  • Recursive Neural Network: 再帰的構造を持つニューラルネットワークのこと。上記のRNN(Recurrent Neural Network)もその一種
  • セル: RNNの隠れ層において、再帰的に出現する同一のネットワーク構造のこと
  • tf.nn.rnn_cellモジュール: TensorFlowが提供する、再帰構造を表現するためのクラス群
  • このエントリーをはてなブックマークに追加

※以下では、本稿の前後を合わせて5回分(第4回~第8回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載目次]を参照してください。

TensorFlow入門(6)
4. CNN(Convolutional Neural Network)を理解しよう(TensorFlow編)

画像認識でよく使われるディープラーニングの代表的手法「CNN」を解説。「畳み込み」「プーリング」「活性化関数」「CNNのネットワーク構成」「ソフトマックス関数」といった基礎と、注意点を押さえよう。

TensorFlow入門(6)
5. 画像認識を行う深層学習(CNN)を作成してみよう(TensorFlow編)

ディープラーニングの代表的手法「CNN」により画像認識を行う機械学習モデルを構築してみる。CNNによる深層学習がどのようなものか体験しよう。

TensorFlow入門(6)
6. 【現在、表示中】≫ RNN(Recurrent Neural Network)の概要を理解しよう(TensorFlow編)

時系列データの予測でよく使われるディープラーニングの代表的手法「RNN」を解説。そもそも時系列データとは何か? RNNの特徴や、通常のニューラルネットワークの相違点についても押さえよう。

TensorFlow入門(6)
7. 時系列データの予測を行う深層学習(RNN)を作成してみよう(TensorFlow編)

ディープラーニングの代表的手法「RNN」により時系列データの予測を行う機械学習モデルを構築してみる。RNNによる深層学習がどのようなものか体験しよう。

TensorFlow入門(6)
8. TensorBoardとは? スカラー値やデータフローグラフの可視化

TensorFlowを活用するうえで、TensorBoardは非常に役立つツールだ。スカラー値やデータフローグラフをログファイルとして出力し、可視化する方法を説明する。

Deep Insider の SNS :