next up previous contents
Next: seq2seq Up: ニューラルネットワーク Previous: RNN   目次

LSTM

RNNの過去の出力は時刻$t$が進んでいく(ニューラルネットの層が深くなる)と,古い過去の出力が 反映されなくなる.長期にわたり過去の出力を保持するための方法の1つがLSTMである. 図2.2にLSTMの内部構造を示す. 中央にメモリセル(図中記号a)がある.メモリセルは状態$s^{t}$を保持し,1時刻を隔てて メモリセル自身に$s_{t}$(帰還時は$s_{t-1}$)を帰還させる. 周囲に5つのユニット(図中記号b〜f)と3つのゲート(入力ゲート,忘却ゲート,出力ゲート)がある. ユニットc,d,fは,$s_{t}$$s_{t-1}$にパラメータ(重み)を掛け, 外部からの入力$u_{I}$$u_{F}$$u_{O}$と足しあわせ,活性化関数(ロジスティックシグモイド関数)$f$を適用したものを 各ゲートに出力する. ユニットbは前の層からの入力$u_{P}$を受けとり,活性化関数$f$を適用する. 入力$u_{P,I,F,O}$は以下の式で表される.$W_{R}$は帰還値の重みである.

\begin{displaymath}u_{k} = W_{n}x_t + W_{R,k}z_{t-1}\ \ \ \ \ (k=P,I,F,O;n=1,2,3,4)\end{displaymath}

ゲートはそれぞれゲート値を持つ.ゲート値は活性化関数$f$により値域を[0,1]に制約され, この値が1の時にデータが伝達される. 各ゲートの出力値は以下の式で表される.

\begin{displaymath}g_{I} = f(u_{I} + w_{I}s_{t-1}) = f(W_{2}x_t + W_{R,I}z_{t-1} + w_{I}s_{t-1})\end{displaymath}


\begin{displaymath}g_{F} = f(u_{F} + w_{F}s_{t-1}) =f(W_{3}x_t + W_{R,F}z_{t-1} + w_{F}s_{t-1})\end{displaymath}


\begin{displaymath}g_{O} = f(u_{O} + w_{O}s_{t}) = f(W_{4}x_t + W_{R,O}z_{t-1} + w_{O}s_{t})\end{displaymath}

ユニットeはメモリセルの出力に活性化関数$f$を適用する. 状態$s_{t}$と出力$z_{t}$は以下のように表される[3].

\begin{displaymath}s_{t} = g_{F}s_{t-1} + g_{I}f(u_{P}) \end{displaymath}


\begin{displaymath}z_{t} = g_{O}f(s_{t}) \end{displaymath}

図 2.2: LSTM内部構造
\includegraphics[width=14cm]{LSTM.eps}



2018-02-28