LSTMのメモ[随時更新]

ディープラーニング




LSTM

単純なRNN(Elmanとも呼ぶ)では、勾配消失や勾配爆発の発生が問題となっています。
勾配消失には、勾配クリッピングが有効です。
勾配消失には、ゲート付きRNN(LSTMやGRU)が有効です。

LSTMには、”input”・”forget”・”output”の3つのゲートがあります。

LSTMの構造


ゲート

forget

勾配消失を防ぐために、誤差を内部にとどまらせるための記憶セルを用意しています。
必要な情報を必要なタイミングで保持させ、必要でない情報を必要なタイミングで忘却させるためのforgetゲートです。

$$
\mathbf{f}=\sigma\left(\mathbf{x}_{t} \mathbf{W}_{\mathbf{x}}^{(\mathbf{f})}+\mathbf{h}_{t-1} \mathbf{W}_{\mathbf{h}}^{(\mathbf{f})}+\mathbf{b}^{(\mathbf{f})}\right)
$$

input

入力重み衝突を防ぐため

$$
\begin{array}{l}i=\sigma\left(x_{t} W_{x}^{(i)}+h_{t-1} W_{h}^{(i)}+b^{(i)}\right) \\ g=\tanh \left(\mathbf{x}_{t} \mathbf{W}_{\mathbf{x}}^{(\mathbf{g})}+\mathbf{h}_{t-1} \mathbf{W}_{\mathbf{h}}^{(\mathbf{g})}+\mathbf{b}^{(\mathbf{g})}\right)\end{array}
$$

output

出力重み衝突を防ぐため

$$
\mathbf{o}=\sigma\left(\mathbf{x}_{t} \mathbf{W}_{\mathbf{x}}^{(\mathbf{o})}+\mathbf{h}_{t-1} \mathbf{W}_{\mathbf{h}}^{(\mathbf{o})}+\mathbf{b}^{(\mathbf{o})}\right)
$$

LSTMの出力

記憶せるの出力

$$
c_{t}=f \odot c_{t-1}+g \odot i
$$

隠れユニットの出力

$$
\mathbf{h}_{t}=\mathbf{o_t} \odot \tanh \left(\mathbf{c}_{t}\right)
$$

参考

https://amzn.to/318ghdo
Bitly

動画

タイトルとURLをコピーしました