LSTMをRNNと比較する
LSTMは、RNNの一種である。ただ、LSTMは、旧来の単純なRNNとは異なっている。ここでは、LSTMとかつてのRNNを比較してみようと思う。
かつてのRNN(以下、単にRNNと呼ぶことにする)は、次のような形をしていた。
かつてのRNN(以下、単にRNNと呼ぶことにする)は、次のような形をしていた。
両者の比較を図示すれば、次のようになる。
RNNでは、横の繋がり(展開形で)は、h層の一本だけだったのだが、LSTMでは、もう一本多く横のつながりを持つ。このc層は、LSTMで新たに付け加えられたものだ。あとで見るように、LSTMでは、この層が独自のとても大事な働きをすることになる。
この図では、入力は水色、出力は緑色で表されているのだが、RNNは、二つの入力 \(h_{t-1}\) 、\( x_t \) を持ち、二つの出力 \( h_t\) 、\( o_t \) を持つ。それに対して、LSTMは、三つの入力 \(h_{t-1}\) 、\( c_{t-1} \)、\( x_t \) を持ち、三つの出力 \( h_t\) 、\(c_t \)、\( o_t \) を持つ。
LSTMの内部を、簡単に見てみよう。(詳細な説明は、後にする。)基本的には、左の図に対応して、LSTMは、\( h_t \) を生成する層と、\( c_t \) を生成する層の二つからできている。
ここでは、次の二つのことに注意しよう。
第一に、LSTMの出力 \( o_t \)は、\( h_t \) と同じものである。先ほど、三つの出力があると書いたが、三つのうち二つは、同じ \( h_t \)である(右の図で、上方向と横方向の出力の \( h_t \) )。右と左の図を比べて、c層の位置とh層の位置が、上下反対のように見えるのは、h層が出力を行う層だからである。また、右図の大きな回り道は、\( h_t \) が、二箇所で利用されているからである。
第二に、それでは、情報の流れは、右の図の大きなノード間の、c層からh層への流れであって、左の図にあるような h層からc層の流れは、存在しないのであろうか? そうではない。h層への入力である \(h_{t-1}\) は、入力 \( x_t \) と合流して、それがc層に流れている。ここでは、二つの入力を合流させるのに、二つのベクトルを横に繋げて連結するという方法を取っている。(右図の下の方)
連結する(concatanate)とは、次のような処理である。
\( h_{t-1} = (h_1, h_2, h_3. \ldots , h_m) \) で、\(x_t = ( x_1, x_2, x_3. \ldots , x_n) \) なら、\( [ h_{t-1} , x_t ] = ( h_1, h_2, h_3. \ldots , h_m, x_1, x_2, x_3. \ldots , x_n) \) になるということである。



LSTM (Long Short-Term Memory) is a type of recurrent neural network (RNN) designed to process and learn from sequential data. Unlike traditional RNNs, LSTMs can remember important information for long periods while forgetting irrelevant details through special components called gates. This makes them highly effective for tasks such as speech recognition, language translation, text prediction, handwriting recognition, and time-series forecasting. Their ability to capture long-term dependencies has made LSTMs a fundamental model in deep learning applications.
返信削除