記法

本ドキュメントは以下の記法で統一しています。

記号 意味
$\cdot$ 行列のドット積(行列積)
$\odot$ 要素積(アダマール積、element-wise product)

単純 RNN の順伝播

中間変数 $a$ を定義(活性化関数への入力):

\[a = h_{t-1} \cdot W_h + x_t \cdot W_x + b\] \[h_t = \tanh(a)\]

逆伝播と勾配消失のメカニズム

連鎖律を適用した逆伝播:

\[\frac{\partial L}{\partial h_{t-1}} = \frac{\partial L}{\partial h_t} \odot \underbrace{(1 - h_t^2)}_{\tanh の微分} \cdot W_h^\top\]

[!NOTE]
️ ここの $W_h^\top$ は 転置( T 乗ではない)

T ステップ遡るとこの積が T 回繰り返される:

\[\frac{\partial L}{\partial h_0} \propto \frac{\partial L}{\partial h_T} \cdot (W_h)^T\]

[️!NOTE]
ここの $(W_h)^T$ は T 回掛ける(転置ではない)

[!NOTE]
$\propto$ は「比例する」の意味。他の係数を省略して本質的な部分だけ示している

勾配消失の 2 つの要因

要因 値の範囲 問題
$\tanh$ の微分 $(1 - h_t^2)$ 1 常に $[0, 1]$ 掛けるたびに小さくなる
$W_h$ のスペクトル半径 $\rho < 1$ 固有値の絶対値 < 1 T 乗で 0 に収束

表記の注意:T 乗 と 転置

表記 意味
$W^T$(イタリック) T 回掛ける(T はステップ数)
$W^\top$(立体) 転置行列

固有値

定義

  • 固有値は 正方行列全体 に対して定義される(各要素ではない)
  • $n \times n$ 行列には n 個の固有値がある

固有値・固有ベクトルの式

\[A \mathbf{v} = \lambda \mathbf{v}\]
記号 意味
$\mathbf{v}$ 固有ベクトル(掛けても方向が変わらない特別なベクトル)
$\lambda$ 固有値(その方向に何倍伸び縮みするか)

具体例

\[A = \begin{pmatrix} 2 & 0 \\ 0 & 3 \end{pmatrix}\]
  • $\mathbf{v} = \begin{pmatrix} 1 \ 0 \end{pmatrix}$ → 固有値 $\lambda = 2$(2倍に伸びる)
  • $\mathbf{v} = \begin{pmatrix} 0 \ 1 \end{pmatrix}$ → 固有値 $\lambda = 3$(3倍に伸びる)

固有値と勾配消失・爆発の関係

スペクトル半径 $\rho(W_h) = \max_i \lambda_i $(最大固有値の絶対値)
条件 $W_h^T$ の挙動 結果
$\rho < 1$(全固有値の絶対値 < 1) $\to 0$ 勾配消失
$\rho = 1$ 安定 安定
$\rho > 1$(ある固有値の絶対値 > 1) $\to \infty$ 勾配爆発

[!NOTE]
消失と爆発は 同時に起きうる(ある成分は 0 へ、別の成分は $\infty$ へ)

勾配消失は逆伝播の問題

  順伝播 逆伝播
何をするか 予測値を計算する 勾配を計算して重みを更新する
勾配消失 発生しない ここで発生する

[!NOTE]
順伝播の構造が逆伝播の経路を決めるため、順伝播の設計が解決策になる

LSTM による解決策

LSTM のセル状態更新(順伝播)

\[c_t = \underbrace{f_t \odot c_{t-1}}_{\text{過去を保持}} + \underbrace{i_t \odot \tilde{c}_t}_{\text{新情報を追加}}\]

逆伝播の計算

$c_{t-1}$ で微分すると:

\[\frac{\partial c_t}{\partial c_{t-1}} = f_t\]
  • $f_t \odot c_{t-1}$ を $c_{t-1}$ で微分 : $f_t$ が残る
  • $i_t \odot \tilde{c}t$ を $c{t-1}$ で微分 : $c_{t-1}$ を含まないので 0 になる(加算項は消える)

T ステップ展開すると:

\[\frac{\partial L}{\partial c_0} = \frac{\partial L}{\partial c_T} \cdot f_T \cdot f_{T-1} \cdots f_1\]

単純 RNN との比較

  単純 RNN LSTM
逆伝播で掛かるもの 固定の $W_h$(変えられない) 時刻ごとに異なる $f_t$(学習で制御できる)
値の範囲 固有値に依存 sigmoid なので $(0, 1)$
制御 困難 $f_t \approx 1$ に学習できる
長期依存 学習困難 学習できる

LSTM が勾配消失に強い理由

理由 1. $f_t$ が時刻ごとに独立(異なる値)

  • 単純 RNN は 同じ $W_h$ の T 乗:固有値に支配される
  • LSTM は 毎時刻異なる $f_t$ の積:固有値問題が起きない

理由 2. $f_t$ を学習で制御できる

$f_t$ は sigmoid なので値の範囲は $(0, 1)$

[!IMPORTANT]

  • f_t ≈ 1 に学習:勾配がほぼそのまま過去へ流れる(長期記憶を保持)
  • f_t ≈ 0 に学習:意図的に過去の情報を遮断できる(忘却)

[!NOTE] この仕組みを定常誤差カルーセル( CEC: Constant Error Carousel )** と呼ぶ

  1. tanh の値域は 0 > y < 1 。よって $1-h_t^\top$ は常に [0, 1] 。