第6回 RNN(Recurrent Neural Network)の概要を理解しよう(TensorFlow編)TensorFlow入門

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

» 2018年04月25日 05時00分 公開
[安部晃生DATUM STUDIO]
「TensorFlow入門」のインデックス

連載目次

ご注意:本記事は、@IT/Deep Insider編集部(デジタルアドバンテージ社)が「deepinsider.jp」というサイトから、内容を改変することなく、そのまま「@IT」へと転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

時系列データとは

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

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

RNNとは

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

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

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

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

図1 時系列データに対応したニューラルネットワーク 図1 時系列データに対応したニューラルネットワーク
時系列のデータポイントは、各層の入力として利用される。各層の出力は、次の層の入力として利用される。

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

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

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

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

 詳細は省くが、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が提供する、再帰構造を表現するためのクラス群

「TensorFlow入門」のインデックス

TensorFlow入門

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。