【ディープラーニング基礎⑨】リカレントニューラルネットワークの勾配問題とゲート機構
はじめに
リカレントニューラルネットワークには勾配消失/勾配爆発という問題が起きます。これを解消するために生まれたゲート機構について解説します。
リカレントニューラルネットワークとは
回帰結合層を持ち、時系列データや系列データ(例: テキスト、音声)の依存関係を捉えるために使用されます。過去の情報を保持しながら、現在のデータを処理する循環構造を持ちます。
リカレントニューラルネットワーク(RNN)での内部状態の更新式
概要
中間ユニットの値+過去の内部情報を新しい内部情報にする
数式
RNNの内部状態
-
: 現在の内部状態(隠れ状態)。h_t -
: 現在の入力データ。x_t -
: 前時刻の内部状態。h_{t-1} -
: 入力データに対する重み行列。W_x -
: 内部状態に対する重み行列。W_h -
: バイアス項。b -
: 活性化関数(一般にtanhやReLU)。f
勾配消失と勾配爆発の発生
概要
RNNでは、出力誤差を各層に逆伝播させる際、勾配(誤差)が次々と乗算されます。時系列が長い場合、この連続的な乗算が問題を引き起こします。難しいことを書いていますが、スカラーで考えれば、べき乗になってしまうのが問題だというわけです。なぜならば1より小さい場合には0に収束し、大きい場合は無限に発散するからです。
数式
勾配の逆伝播
誤差はチェーンルールに従って伝播します。内部状態における勾配は以下のように計算されます:
-
がキーとなる項で、これはおおよそ\frac{\partial h_t}{\partial h_{t-1}} の固有値や活性化関数の導関数によってスケールされます。W_h
勾配消失
-
が1未満の場合、時系列が長くなるにつれて勾配は指数的に小さくなります。これが勾配消失です。\frac{\partial h_t}{\partial h_{t-1}} - 結果として、モデルは過去の情報をほとんど学習できなくなります。
勾配爆発
-
が1を大きく超える場合、時系列が長くなるにつれて勾配は指数的に大きくなります。これが勾配爆発です。\frac{\partial h_t}{\partial h_{t-1}} - 計算が不安定になり、モデルが発散します。
ゲート機構による解決(LSTMとGRU)
LSTM(Long Short-Term Memory)やGRU(Gated Recurrent Unit)は、RNNの弱点である勾配消失問題を解決するために開発されました。これらはゲート機構を導入して、重要な情報を選択的に保持・忘却できるようにしています。
1. LSTM(長短期記憶ネットワーク)
概要
LSTMは「情報を選択的に記憶・忘却する仕組み」を持っています。
LSTMには3つの「ゲート」があり、これらを使って情報を操作します:
- 忘却ゲート: 過去の情報の中で不要なものを忘れる。
- 入力ゲート: 新しい情報をどれだけ記憶するかを決める。
- 出力ゲート: 次の層に出力する情報を選択する。
数式
-
忘却ゲート (
)f_t
どの情報を「忘れる」かを制御します。f_t = \sigma(W_f [h_{t-1}, x_t] + b_f) -
入力ゲート (
)i_t
どの情報を「記憶」に追加するかを制御します。i_t = \sigma(W_i [h_{t-1}, x_t] + b_i) 記憶の候補値:
\tilde{C}_t = \tanh(W_C [h_{t-1}, x_t] + b_C) -
出力ゲート (
)o_t
どの情報を「出力」として使うかを制御します。o_t = \sigma(W_o [h_{t-1}, x_t] + b_o)
状態の更新
-
セル状態 (
):C_t C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t -
内部状態 (
):h_t h_t = o_t \cdot \tanh(C_t)
この仕組みにより、LSTMは必要な情報を長期間にわたって保持し、不必要な情報を忘れることで、長期依存問題を緩和します。
2. GRU(ゲート付き回帰ユニット)
概要
GRUでは、「忘却ゲート」と「入力ゲート」を統合し、2つのゲートだけを使用します。LSTMよりもパラメータが高速です。:
- 更新ゲート: 過去の情報をどれだけ保持するか決める。
- リセットゲート: 過去の情報をどれだけ無視するか決める。
数式
-
更新ゲート (
)z_t
過去の情報をどれだけ保持するかを制御します。z_t = \sigma(W_z [h_{t-1}, x_t] + b_z) -
リセットゲート (
)r_t
過去の情報をどれだけ無視するかを制御します。r_t = \sigma(W_r [h_{t-1}, x_t] + b_r)
状態の更新
-
新しい内部状態 (
):\tilde{h}_t \tilde{h}_t = \tanh(W [r_t \cdot h_{t-1}, x_t] + b) -
最終的な内部状態 (
):h_t h_t = z_t \cdot h_{t-1} + (1 - z_t) \cdot \tilde{h}_t
GRUは計算がLSTMより軽量で、ほぼ同等の性能を発揮します。
LSTM/GRUのメリット
- ゲート機構により、重要な情報を保持しつつ不必要な情報を忘れるという制御が可能。
- 勾配消失を防ぎ、長期依存関係を学習できる。
- GRUはLSTMに比べて構造が簡単で計算効率が良い。
結論
- RNNは内部状態の再帰構造により、時系列依存を捉えるが、勾配消失/爆発が起きやすい。
- LSTMやGRUはゲート機構を導入し、必要な情報を選択的に保持・忘却することで、これらの問題を解決し、長期依存問題に強いモデルとして活用されています。
Discussion