LSTMは長い系列を覚えられるって言われるけど、ふつうのRNNと何が違うん?
CECってのも出てくる
【疑問】LSTMのゲートとCECって何してるん?GRUとはどう違う?【G検定】
前提のおさらい。ふつうのRNNは、時刻をさかのぼるたびに傾きを掛け算するから、遠い過去ほど勾配が消える。 の微分は1以下やから、長い系列ではなおさら
>>1
LSTMは、隠れ状態とは別に「セル」という記憶の通り道を持ってる
に忘却ゲート を掛けて残し、新しい候補 に入力ゲート を掛けて足す。出力ゲート は、セルのどれだけを外に出すかを決める
ゲートはどれもシグモイド関数で0〜1の値をとる、蛇口みたいなもの
>>3
CEC(Constant Error Carousel)は、このセルの通り道のこと。セルは掛け算や活性化関数を通らずに次の時刻へ流れるから、誤差がほぼそのまま回り続ける
忘却ゲートが1なら、セルの値も誤差もそのまま次に渡る。 なら次も2
>>4
数字で比べると、毎時刻0.25ずつ縮む流れなら10時刻で 。忘却ゲートが0.9なら も残る
>>5
忘れるゲートがあったら、むしろ覚えられなくなるんちゃうの?
>>6
いらんことを忘れられるのが大事。文が終わったら主語の記憶を消す、みたいに、ゲートを0に近づけて記憶をリセットできる
実は最初のLSTM(ホフライターとシュミットフーバーの1997年の論文)には忘却ゲートがなかった。後から足されて今の形になった
GRUは、LSTMを簡単にしたもの。チョーらの2014年の論文
ゲートは2つ。更新ゲート(前の状態をどれだけ残すか)とリセットゲート(前の状態をどれだけ使って候補を作るか)
セルと隠れ状態を分けずに1本にまとめてある
>>8
パラメータ数で比べる。入力64次元・隠れ状態128次元なら、ゲート1つ分の重みとバイアスは
LSTMは4組で98816個、GRUは3組で74112個。GRUのほうが4分の3で済む
>>9
軽いならGRUだけでええんちゃう?
>>10
精度はタスクによって勝ったり負けたりで、どっちがいつも上ということはない。データが少ないときや速さが欲しいときはGRU、を試す価値がある、くらいの使い分け
管理人のひとこと
- LSTMはセル を持ち、忘却・入力・出力の3つのゲート(シグモイドで0〜1)で流れを調節する。
- CECはセルの通り道で、掛け算や活性化関数をほとんど通らないので誤差が保たれる。0.25ずつ縮むと10時刻で約0.00000095だが、忘却ゲート0.9なら約0.35残る。
- 忘却ゲートは記憶をリセットするためにある。最初のLSTM(1997年の論文)にはなく、後から足された。
- GRU(チョーら、2014年の論文)は更新ゲートとリセットゲートの2つ。入力64・隠れ128ならLSTM 98816個に対してGRU 74112個。