0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゼロつく②第6章 メモ

0
Posted at

 ①LSTMレイヤ
❓なぜRNNでは結果がうまくいかないのか
RNNは勾配消失が起こりやすく、長期記憶ができない
➡ 勾配消失を解決するために作られたのがLSTM

〇 第5章RNNとの比較
・RNNレイヤ
入力:$x_t$(入力データ)と$h_{t-1}$(1つ前の隠れ状態)
出力:$h_t$(現在の隠れ状態)

・LSTMレイヤ
入力:$x_t$と$h_{t-1}$に加えて、$c_{t-1}$(1つ前の記憶セル
出力:$h_t$に加えて、$c_t$(現在の記憶セル

〇 セル状態$c_t$の仕組み
・中に入っている情報は、加工や変形をせず、過去から未来へ渡っていく
・これは、他のレイヤには出力せず、LSTMレイヤ内だけで情報を伝えていくもの

❓記憶セル$c_t$と隠れ状態$h$の違いは?
LSTMで求める$h_t$は、新しく計算された記憶セル$c_t$を$tanh$関数に通したもの

❓LSTMレイヤの4つのゲートの意味
この4つのゲートは、テキストを読んでも分からなかったので、調べながら紙に書いて理解しました。4つのゲートの理解のステップをまとめます。

①忘却ゲート(forgetゲート)
➡ 1つ前の記憶$c_{t-1}$にforgetゲート「$f$」を要素ごとにかけ算する

$f$ $=$ $\sigma$$(x_tW_f + h_{t-1}W_h + b_f)$

次のステップへ残す記憶 $=$ $c_{t-1}$ $\odot$ $f$

<忘却ゲートの目的>
過去の記憶セルからいらなくなった情報を消去すること

②入力ゲート(inputゲート)
➡ 今回新しく沸き上がった記憶の種$g$に対し、入力ゲートを掛ける
➡ ①で求めた「次のステップへ残す記憶」に足して$tanh$に通す前の長期記憶$c_t$を作成する

$i$ $=$ $\sigma$$(x_tW_i + h_{t-1}W_h + b_i)$

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

<入力ゲートの目的>
新しく入ってきた情報をどれくらい追加するか

③出力ゲート(outputゲート)
➡長期記憶$c_t$に$tanh$を通す

$o$ $=$ $\sigma$$(x_tW_o + h_{t-1}W_h + b_o)$

$h_t$ = $tanh$$(c_t)$ $\odot$ $o$

<出力ゲートの目的>
長期記憶の中から必要な情報だけを厳選すること

これらのステップを通して、LSTMレイヤの出力である$C_t$と$h_t$を求めることができます。

最初に第6章をやった時、第5章のRNNを一通り理解してから、第6章のLSTMに入ったのですが、レイヤの出力が1つから2つに増えたことで、今までやってきたことと別物のように感じてしまい、実装に入る前のゲートの計算グラフから理解するのにとても苦労しました。
分からないまま進めるのではなく、一度第5章に戻り、RNNモデルの流れを紙に書きながら1つずつ整理する時間を設けた結果、二度目のLSTMの勉強では変数の意味に混乱することもなく、スムーズに流れを理解することができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?