今回は、LSTMについて。
時系列などの規則性がある現象についての予測問題はアプローチとして有効かもしれない。
自分の理解のためのアウトプットなので、一旦は参考サイトをほぼトレースしている。
LSTM(Long Short-Term Memory)
ひとことでいうと、短期記憶で長期期間で活用して学習を進める。特徴がある。
LSTMの部分を図式化すると、以下になる。
htでの計算で、前の出力結果ht-1とXtを使い求める。htはht+1を求めるために使われるイメージ。
それぞれ、
・OutputGate
・Forget Gate
・Input Gate
・活性化関数部分
・Memory Cell
で成り立っている
###OutputGate
以下の矢印赤い部分。
Xtに対しての線形変換Wo、htに対しての線形変換Ro、バイアスBoを使い
Ot=σ(WoXt+Roht−1+Bo)
という計算が行われる。
ニューラルネットワークと同様の計算式。
###Forget Gate
OutputGateと同様、
Wf、Rf、Bfのパラメータがあり
ft=σ(WfXt+Rfht−1+Bf)
という計算が行われる。
###Input Gate
同様に、
it=σ(WiXt+Riht−1+Bi)
という計算が行われる。
####活性化関数部分
Zt=tanh(WzXt+Rzht−1+Bz)
活性化関数部分の計算式。
##Memory Cell付近の計算
###①Forget Gate側
ft=σ(WfXt+Rfht−1+Bf)とセル点線からのアウトプットCt-1により
Ct−1 ⊗ ft というアウトプット。
⊗ は要素ごとの積
###②Input Gate側
it=σ(WiXt+Riht−1+Bi)とZt=tanh(WzXt+Rzht−1+Bz)により、
it ⊗ Zt というアウトプット。
###③Cellの手前
①でのCt−1 ⊗ ft と②での it ⊗ Zt により
Ct = Ct−1 ⊗ ft + it ⊗ Zt
という計算が行われる。
###④出力付近
Memory Cell部分 Ct = it ⊗ Zt + Ct−1 ⊗ ft
OutputGate部分 Ot = σ(WoXt+Roht−1+Bo)
を使い
ht = Ot ⊗ tanh(Ct)
が行われる。
#LSTMのポイント
Ct = Ct−1 ⊗ ft + it ⊗ Zt
Ct−1 ⊗ ft Forget Gate部分で、Ct-1は過去の情報のパラメータをどれくらい反映するかを調整している。
it ⊗ Zt Input部分で、得られた入力値 it をどれだけ反映するか、を Zt 活性化関数により調整している。
参考
[今更聞けないLSTMの基本]
(https://www.hellocybernetics.tech/entry/2017/05/06/182757)