固有値 | 数学
記法
本ドキュメントは以下の記法で統一しています。
| 記号 | 意味 |
|---|---|
| $\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 )** と呼ぶ
-
tanh の値域は 0 > y < 1 。よって $1-h_t^\top$ は常に [0, 1] 。 ↩