開発現場への応用が急速に進んでいる機械学習。その中で注目すべきものの1つが、現在話題のディープラーニング(深層学習)である。今回は再帰型ニューラルネットワークと長・短期記憶を取り上げ、ディープラーニングの活用のために重要と考えられるポイントについて解説を進める。

 今回取り上げるのは再帰型ニューラルネットワーク(RNN:Recurrent Neural Network)である。例えば音声や言語、動画像、センサーの信号などのような、順序があって並びに意味が隠れているようなデータに対しては、時系列を扱う必要がある。こうした時系列の学習に有効なのがRNNである。

RNNは多次元のベクトルに使うべきもの

 時系列をモデル化する目的には、段階がある。異常を検知すること、どんな異常がどの時点で発生しているかの区分化、一定時間後の出力予測、自動的な応答とその最適化という4つの段階である。技術的課題には、入力が多次元でありその同期と統合方法が重要であること、入力の絶対値だけでなく周波数特性にも意味があること、短時間と長時間の特徴が重畳していることなどが挙げられる。またモデル化においては、多数のサンプルからモデルを学習することや、連続的な時間との対応付けや内在しているモードの変化を扱う必要性がある。

 さて、RNNは内部に有向閉路(自分に戻る向きのあるループ)があり、記憶した情報をもとに振る舞いを動的に変化させる。履歴を利用して、モードの変化を反映させるような情報を扱える。典型的なモデルは1時刻前の中間層の出力を自分の入力に戻すという処理で、時刻tにおける入力(m次元)をxt、1つ前の時刻t-1における中間層の出力(k次元)をht-1とすると、時刻tにおける中間層の出力は以下のように記述できる。

 WとRはそれぞれ、k行m列、k行k列の重み行列、gは活性化関数である。これが一般的な再帰型ニューラルネットワークの式であり、非常にシンプルである。

 例として言語モデルへの応用を説明する。ネットワークの構造を図3に示す。言語モデルでは、1、2…とt番目まである単語系列から、t+1番目に出現する単語の確率を推定する。ここでone-hotベクトルで表現したt番目の単語をxtとし(辞書のサイズをmとするとm次元の確率)、t-1番目の中間層の出力をhtとする。これに中間層の出力に行列Vを掛け、ソフトマックス関数により全体が1になるように出力を定義する。ytが求める確率となる。

図3 RNN言語モデルの構造
RNNによる言語処理モデルの構造。t番目までの単語系列からt+1番目に出現する単語の出現確率を推定する。各時刻における入力と1時刻前の中間層の出力によって、その時刻の中間層の出力が決定される。
[画像のクリックで拡大表示]
one-hotベクトル=複数のデータの中で適合する値について1を、他は0を返す形式のベクトル。この場合は辞書の中のその単語のインデックスが1、残りは0という表現になる。
ソフトマックス関数=入力信号を指数関数で変換し、その総和が1になるように正規化することで確率として利用できるようにする変換関数。

 なお、RNNの逆伝播計算ではバックプロパゲーション・スルー・タイム(BPTT:BackPropagation Through Time)法がよく用いられる(図4)。再帰型ネットを展開し、すべての入力とすべての中間層の値を記憶しておいて、パラメーターを更新する方法である。すべての値が残っているため、これを用いて誤差を最小化するように計算する。

図4 RNNの逆伝播計算
バックプロパゲーション・スルー・タイム(BackPropagation Through Time)法の概念図。再帰型ニューラルネットワークを展開して、すべての入力とすべての中間層の値を記憶し、これを用いて誤差を最小化する。
[画像のクリックで拡大表示]

 再帰型ネットワークの例として言語モデルが多く紹介されるため、信号やセンサー情報の処理への適用がイメージしにくいかもしれない。しかし、実際には単語の系列は分散表現と呼ばれる多次元のベクトルの系列に変換されて、ネットワークに入力される。数値のセンサーデータの時系列と同じであり、再帰型ニューラルネットワークは信号をはじめ多次元のベクトルに使えるというより、使うべきものであることにご注意いただきたい。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら