LSTMとRNNの違いは何ですか? と言われてもシンプルに説明できない。
LSTMもRNNも「記憶を保持したい」「連続・シリアルなデータを処理したい」「時系列データを処理したい」など目的は変わりません。
また、出力を入力に回わすことも変わりません。
では何が違うのか?
RNNをざっくり説明すると
RNNは、出力を入力に回すことにより、値(内部状態)を保持する。
やっていることはコンピュータ入門に出てくるシンプルな記憶素子であるフリップフロップ回路に近い。
キャッシュで使われているSRAメモリに近い。
対して、LSTMの場合、セルを持つことにより値(内部状態)を保持している。
やっていることは、値(内部状態)を直接保持しているのでDRAMやフラッシュメモリに近い。
では、値(内部状態)を保持する機能はセルに移ったのに、RNN的要素である出力を入力に回すのは、どんな機能をやっているかというと。
出力ゲート、入力ゲート、忘却ゲートといったゲートの開け閉めの処理だったりします。
通常のRNNでは値(内部状態)を保持だったのに、LSTMではゲートの開け閉めの処理に主たる役割が変わっているんですね。