深層学習の0、RNN~LSTM勾配消失なくなる

問題の提出

勾配がなくなると、ニューラルネットワーク層の重みが更新されなくなり、学習が停止する。逆に勾配発散により学習が不安定になり、パラメータの変化が大きくなりすぎて、最適なパラメータを取得できなくなる。

RNN勾配消失

時刻\(t\)におけるコスト関数\(L_t\)が重み\(W_x,W_o\)に関する偏微分つまり勾配が以下の式で表される。
$$ \frac{\partial L_t}{\partial W_x} = \sum_{k=0}^{t}\frac{\partial L_t}{\partial O_t} \frac{\partial O_t}{\partial S_t}(\prod_{j=k+1}^{t} \frac{\partial S_j}{\partial S_{j-1}}) \frac{\partial S_k}{\partial W_x} \\ \frac{\partial L_t}{\partial W_s} = \sum_{k=0}^{t}\frac{\partial L_t}{\partial O_t} \frac{\partial O_t}{\partial S_t}(\prod_{j=k+1}^{t} \frac{\partial S_j}{\partial S_{j-1}}) \frac{\partial S_k}{\partial W_s} \\ S_j = tanh(W_x X_j + W_s S_{j-1} +b)$$
よって、$$ D = \prod_{j=k+1}^{t} \frac{\partial S_j}{\partial S_{j-1}} = \prod_{j=k+1}^{t} W_s \cdot tanh’ $$
\(tanh\)の微分は常に1未満、\(W_s\)も0より大きく1より小さい値である場合、\(t\)が大きくなると、\(D\)は0に近くなり、勾配消失の問題につながる。\(W_s\)が大きい場合、\(D\)はますます大きくなり、勾配爆発が発生する。

LSTMに勾配消失問題が消える

LSTMの場合、活性化関数\(S_t\)は以下の式で表される。
$$ \small S_t = tanh(\sigma(W_f X_t + b_f)S_{t-1} + \sigma(W_i X_t + b_i)X_{t}) $$\(S_{j-1}\)に関する\(S_j\)の偏微分の総乗は以下の式で表される。
$$ \small \prod_{j=k+1}^{t} \frac{\partial S_j}{\partial S_{j-1}} = \prod_{j=k+1}^{t} \sigma(W_f X_t + b_f) \cdot tanh’ \doteq 0|1 $$
これにより、RNNの勾配消失、発散の問題がなくなったと見られる。

参考文献

LSTMネットワークを理解する(英文原稿)、Christopher Olah氏
その和訳その中訳

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア