
書記が数学やるだけ#800 RNN,ゲート付きRNNの構造
今回はRNNの構造を理解していく。
問題

説明
RNN(Recurrent neural network)は,「可変長の系列データ」の変化具合を潜在変数モデルの遷移として学習するモデルで,自然言語処理や音声処理などに幅広く用いられている。ここで,再帰型の潜在変数を採用することで同じ重みを再利用することができる。

RNNは長期記憶に弱いという欠点があり,これを克服するためにLSTM(Long short-term memory)やGRU(Gated recurrent unit)が採用される。


言語モデルへの応用について簡単に見ていく。
RNN以前は,単純なニューラルネットワークを用いたモデルが用いられていた。
例:Bengio, Y., Ducharme, R., Vincent, P., & Janvin, C. (2003). A neural probabilistic language model. The journal of machine learning research, 3, 1137-1155.

2010年のMikolovらの論文には,RNNLM(RNN言語モデル)が従来のモデルに比べ性能が高いことが示されている。
T. Mikolov, M. Karafiat, L. Burget, J. Cernocky and S. Khudanpur. Recurrent neural network based language model. In INTERSPEECH, 2010.

解答
RNNレイヤの構造は以下の通り。次の隠れ状態が,前の状態と今の状態の関数で表され,これが入れ子構造となっている。

計算グラフで書くと以下のようになる。

まずGRUについて,更新ゲートとリセットゲートの2つからなる。更新ゲートの項では1個前の状態をどれだけ更新するか,が反映される。また,現地点の候補は,リセットゲートにより前までの状態をどれだけ残すかが決められる。

次にLSTMについて。まず長期記憶を司る部分cについて,忘却ゲート×前の長期記憶と入力ゲート×セルゲートから構成される。忘却ゲートは,前の記憶をどれだけ用いるか反映する。一方でセルゲートは新しい記憶を反映し,入力ゲートは新しい記憶をどれだけ用いるか反映する。最後に,短期記憶は長期記憶に出力ゲートをかけたもので表され,これは現在の記憶をどれだけ使うかを示す。

次に勾配消失問題・勾配爆発問題について。RNNでは,入れ子構造であることから以下のようにノルムが0or無限大に近づきやすい,tanhにより1より小さい数が乗算される,などの理由から特に勾配消失問題・勾配爆発問題が生じやすい。対策として,上にあげたゲート構造や,勾配クリッピングにより全ての勾配を用いたL2ノルムが閾値を越えないよう調整することなどが挙げられる。

最後にCNNとRNNを比較してみる。実用上は適用するタスクで分類することが多いが,理論上は層の使い回しの有無が重要である。
共通点:
・多層構造により関数を表現して,特徴マップを変換する
・文字データは1次元配列,画像データは2次元(or3次元)配列とみなせば,CNNでもRNNでも学習は可能
相違点
・CNNでは層の使い回しがなく各層ごとにパラメータを設定するが,RNNでは層を使い回し共通のパラメータを設定する
・CNNは畳み込み層とプーリング層により主に空間パターンを捉えるが,RNNは潜在変数を用いることで主に時系列パターンを捉える

本記事のもくじはこちら: