技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

LSTM の概要

時系列データを利用するDeepLearningの一種。

LSTM = Long short-term memory
以前やってた RNN の一種だけど、記憶のやり方が異なる。

RNN はこれね…

white-azalea.hatenablog.jp

LSTM は以下のようなセルとゲートがあり、それぞれのゲートに学習パラメータを持ってる。

f:id:white-azalea:20210927224336p:plain

  • 記憶セル : 過去の記憶を保持する
  • 忘却ゲート : 過去の記憶を消す割合を調整する
  • 入力ゲート : 新しい記憶を追加する割合を調整する
  • 出力ゲート : 記憶セルの内容を出力に反する割合を調整する

加えて記憶セル → 積の間の Tanh も学習パラメータがあるので、学習パラメータが計4か所もあるという…

忘却ゲート

忘却ゲートはこんな感じ


A^{(t)}_0 = \sigma ( X^{(t)} W_0 + Y^{(t-1)} V_0 + B_0 )
  •  A^{(t)}_0 は活性関数後の値。
  •  \sigma シグモイド関数
  •  X^{(t)} は現時点の入力。
  •  Y^{(t-1)} は前回の結果出力。

W,Bは重みとバイアス。これは前回までもそうだったので今更である。
入力ゲートと新しい記憶データの $Tanh$ はこんな感じになる

入力ゲート


A^{(t)}_1 = \sigma ( X^{(t)} W_1 + Y^{(t-1)} V_1 + B_1 )

まぁ内容は見たままやね。

新しい記憶データは


A^{(t)}_2 = tanh ( X^{(t)} W_2 + Y^{(t-1)} V_2 + B_2 )

こいつらって結構見たままなのよね

出力ゲート


A^{(t)}_3 = \sigma ( X^{(t)} W_3 + Y^{(t-1)} V_3 + B_3 )

というか活性関数通す連中だから基本楽ですよね。

しかしこれを微分するのか…気が滅入るな…