深層学習day3 Section2:LSTM

要点まとめ

RNNは時系列を遡るほど勾配が消失していき、長い時系列の学習が困難である。特に活性化関数にシグモイド関数を用いると、シグモイド関数微分の最大値が0.25なので、勾配消失問題が発生しやすくなる。

LSTM(Long Short Term Memory)は、勾配消失問題を発生しにくいようにした学習器である。

勾配消失や勾配爆発が起きないようにするためには、時間をいくら遡っても勾配が1であれば勾配は消失も爆発もしなくなる。 数式で表現すると、

 \displaystyle{
\newcommand{\partialdiff}[2] {\frac{\partial {#1}}{\partial{#2}}}
\delta^{t-z-1} = \delta^{t-z}{Wf'(u^{t-z-1})} = 1 \\
\partialdiff{E}{c^{t-1}} = \partialdiff{E}{c^{t}} \partialdiff{c^{t}}{c^{t-1}} = \partialdiff{E}{c^{t}} \partialdiff{}{c^{t-1}}\{a^{t}-c^{t-1}\}=\partialdiff{E}{c^{t}}
}

CEC

Constant Error Carousel. 過去の入力層や中間層を全て記憶するための部品。 重みが一律であるため、学習機能は存在しない。

入力ゲートと出力ゲート

入力ゲートは入力層からの入力に対して重みW_{i}を掛けたものと、前回の出力値に対して重みU_{i}を掛けたものを用いて、CECに対して出力には重みV_{i}を掛けて出力する。 出力ゲートも同様に入力層からの入力に対して重みW_{o}を掛けたものと、前回の出力値に対して重みU_{o}を掛けたものを用いて出力する。

忘却ゲート

過去の情報を不要になったタイミングで情報を忘却する機能。

覗き穴結合

入力ゲートや出力ゲートに対してもCECの情報を用いたら良いのではないかということで、試みられたがあまり効果が無かった。

実装演習

f:id:yui-gen-ron:20211228023201p:plain

確認テスト等考察

シグモイド関数微分の最大値は0.25。 これは、シグモイド関数微分sigmoid(x)(1-sigmoid(x))を考えると明らか。

追加演習