全2719文字

 前回は、畳み込みニューラルネットワークについて解説した。今回は再帰型ニューラルネットワーク、長・短期記憶について解説する。

再帰型ニューラルネットワーク

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

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

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

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

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

図1 RNN言語モデルの構造
図1 RNN言語モデルの構造
RNNによる言語処理モデルの構造。t番目までの単語系列からt+1番目に出現する単語の出現確率を推定する。各時刻における入力と1時刻前の中間層の出力によって、その時刻の中間層の出力が決定される。(作成:筆者)
[画像のクリックで拡大表示]

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

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

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