結論
LSTMはRNNの一種で、隠れ状態だけで過去の情報を受け渡す単純なRNNに、記憶セルと3つのゲートを加え、情報の書き込み・保持・読み出しを調整できるようにしたものです。記憶セルを足し算で更新する経路があるため、単純なRNNで起きやすい勾配消失が緩和され、時間的に離れた入力との関係を学習しやすくなります。
比較表
| 観点 | RNN | LSTM |
|---|---|---|
| 英語 | recurrent neural network | long short-term memory |
| 代表例・提案 | エルマンネットワーク(1990年)、ジョルダンネットワーク | 1997年にHochreiterとSchmidhuberが提案。忘却ゲートは2000年の研究で追加 |
| 過去の情報を保つ場所 | 隠れ状態だけ | 隠れ状態と、それとは別の記憶セル |
| 時刻ごとの更新 | 前の隠れ状態と入力にそれぞれ重みを掛けて足し、tanh関数などに通して隠れ状態を作り直す | 記憶セル=忘却ゲート×前の記憶セル+入力ゲート×新しい候補。隠れ状態=出力ゲート×tanh(記憶セル) |
| ゲート | なし | 入力ゲート・忘却ゲート・出力ゲート(シグモイド関数で0から1の割合を出す) |
| 長期の依存関係 | BPTTで重みと微分が繰り返し掛かり、勾配消失が起きやすい。遠い過去の入力との関係を学びにくい | 記憶セルを通る足し算の経路で誤差が伝わりやすく、離れた時刻の関係も学びやすい |
| 勾配爆発 | 起こりうる。勾配クリッピングで抑える | 起こりうる。勾配クリッピングを併用することが多い |
| パラメータ数(入力と隠れ状態の大きさが同じとき) | 重みとバイアスが1組 | 3つのゲートと新しい候補の分で4組(単純なRNNの約4倍) |
| 学習方法 | BPTT | BPTT(同じく時間方向に展開して誤差逆伝播法を適用する) |
| シラバス項目 | 技術分野 項目22 回帰結合層 | 技術分野 項目22 回帰結合層(CECは項目27 自然言語処理のキーワード) |
| G検定での問われ方 | 隠れ状態の受け渡し、BPTT、勾配消失・勾配爆発の原因、エルマンネットワークとジョルダンネットワークの違い | 3つのゲートの役割、記憶セルの更新計算、CECが勾配消失を防ぐ理由、GRUとの違い |
それぞれの説明
単純なRNN
RNNは、各時刻の隠れ状態を次の時刻へ持ち越して、時系列データの前後関係を扱うネットワークです。ゲートを持たない基本の形を、LSTMなどと区別して単純なRNNと呼びます。各時刻では、前の隠れ状態と現在の入力にそれぞれ重みを掛けて足し、tanh関数などに通して、隠れ状態を毎回作り直します。
学習には、時間方向に展開して誤差逆伝播法を適用するBPTTを使います。誤差が時刻をさかのぼるたびに、同じ重みと活性化関数の微分が掛け合わされます。掛かる値が1より小さい状態が続くと勾配は急速に0に近づき(勾配消失)、1より大きい状態が続くと発散します(勾配爆発)。そのため、遠い過去の入力と現在の出力の関係を学習しにくいという弱点があります。
LSTM
LSTMは、この弱点を補うために1997年に提案されたRNNの一種です。隠れ状態とは別に記憶セルを持ち、現在広く使われる形では、入力ゲート・忘却ゲート・出力ゲートの3つで情報の出し入れを調整します。忘却ゲートは、2000年の研究で加わりました。各ゲートはシグモイド関数で0から1の割合を出し、その値を情報に掛けます。
記憶セルは、忘却ゲートで調整した前の内容に、入力ゲートで調整した新しい情報を足し算で加えて更新されます。毎時刻すべてを作り直す単純なRNNと違い、内容を保ったまま運ぶ経路があるので、誤差も過去へ伝わりやすくなります。1997年の元の論文は、記憶セルが重み1の自己結合で内容を運ぶ部分をCECと呼び、誤差を減衰させずに過去へ伝える仕組みとして説明しています。
違いのまとめ方
構造の差は「記憶セルとゲートがあるか」、効果の差は「長い期間の依存関係を学べるか」です。代償として、LSTMは入力と隠れ状態の大きさが同じなら重みが約4倍になり、計算も重くなります。勾配爆発はLSTMでも起こりうるので、勾配クリッピングを併用します。ゲートを2つに減らし、記憶セルを隠れ状態にまとめた簡略版がGRUです。
見分けるコツ
- LSTMはRNNと対立する手法ではなく、RNNの一種です。「RNNとLSTMの違い」は、正確には「単純なRNNとLSTMの違い」を指します。
- 「長期の依存関係を学習したい」「勾配消失を緩和したい」という場面なら、ゲート機構を持つLSTMやGRUが答えの候補です。勾配爆発への対策は勾配クリッピングで、ゲートとは分けて考えます。
- 前の記憶セルをどれだけ残すかは忘却ゲート、新しい候補をどれだけ書き込むかは入力ゲート、記憶セルの内容をどれだけ隠れ状態として出すかは出力ゲートが決めます。ゲートの名前だけで判断せず、どの値に掛かるかで確かめます。
◯×チェック
-
単純なRNNでも、LSTMの記憶セルと同じく、前の時刻の隠れ状態をそのまま残し、そこに新しい情報を足し算で加えて次の隠れ状態を作る。
答えを見る
答え × 誤り
単純なRNNは、前の隠れ状態に重みを掛け、入力と合わせてtanh関数などに通すので、毎時刻すべてを作り直します。前の内容を残したまま足し算で更新するのは、LSTMの記憶セルです。この経路が勾配を過去へ伝えやすくします。
-
単純なRNNの隠れ層の活性化関数をReLU関数に替えれば、時刻をさかのぼる勾配の大きさは常に一定に保たれるので、長い系列でもLSTMを使う必要はなくなる。
答えを見る
答え × 誤り
ReLU関数の微分は正の範囲で1ですが、BPTTでは時刻ごとに同じ再帰の重みも掛かります。重みの大きさしだいで勾配はやはり消失や爆発を起こし、負の範囲では微分が0にもなります。
-
入力の次元数と隠れ状態の次元数をそろえて比べると、LSTM層の学習可能なパラメータの数は、単純なRNN層の約4倍になる。
答えを見る
答え ◯ 正しい
LSTMは、入力ゲート・忘却ゲート・出力ゲートと新しい候補の4か所で、単純なRNNと同じ形の重みとバイアスを1組ずつ持つためです。その分、1時刻あたりの計算も重くなります。
関連問題
出典と作成について
作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)
公開日: 最終更新日: 最終確認日:
対応シラバス:シラバス第1.4版 技術22
出典
- G検定 試験出題範囲(シラバス2024)第1.4版(技術分野 項目22 回帰結合層)2026年11月1日閲覧
- G検定 試験出題範囲(シラバス2024)第1.4版(技術分野 項目27 自然言語処理)2026年11月1日閲覧
- Jeffrey L. Elman, Finding Structure in Time, Cognitive Science 14(2), 179–211 (1990)2026年11月1日閲覧
- Yoshua Bengio, Patrice Simard, Paolo Frasconi, Learning long-term dependencies with gradient descent is difficult, IEEE Transactions on Neural Networks 5(2), 157–166 (1994)2026年11月1日閲覧
- Sepp Hochreiter, Jürgen Schmidhuber, Long Short-Term Memory, Neural Computation 9(8), 1735–1780 (1997)2026年11月1日閲覧
- Felix A. Gers, Jürgen Schmidhuber, Fred Cummins, Learning to Forget: Continual Prediction with LSTM, Neural Computation 12(10), 2451–2471 (2000)2026年11月1日閲覧
ほかの違い比較51件
- アジャイルとウォーターフォールの違い
- 赤池情報量規準(AIC)とベイズ情報量規準(BIC)の違い
- バギングとブースティングの違い
- バッチ正規化とレイヤー正規化の違い
- バッチ学習・ミニバッチ学習とオンライン学習の違い
- BERTとGPTの違い
- CBOWとスキップグラムの違い
- 分類問題と回帰問題の違い
- CNN・RNNとTransformerの違い
- 協調フィルタリングとコンテンツベースフィルタリングの違い
- 共分散と相関係数の違い
- データ汚染とAdversarial Attackの違い
- 決定木とランダムフォレストの違い
- 深さ優先探索と幅優先探索の違い
- 営業秘密と限定提供データの違い
- Faster R-CNNとYOLOの違い
- GANと拡散モデル(Diffusion Model)の違い
- GANとVAEの違い
- GDPRと個人情報保護法の違い
- 勾配降下法と誤差逆伝播法の違い
- グリッドサーチとランダムサーチの違い
- ホールドアウト検証と交差検証の違い
- 画像分類(物体識別)と物体検出の違い
- 委託・第三者提供と共同利用の違い
- k-means法と階層的クラスタリングの違い
- 個人情報・個人データと保有個人データの違い
- 個人情報と個人識別符号の違い
- L1正則化とL2正則化の違い
- 最小二乗法と最尤法の違い
- LIMEとSHAPの違い
- LSTMとGRUの違い
- 機械学習とディープラーニングの違い
- 平均絶対値誤差(MAE)と平均二乗誤差(MSE)の違い
- 正規化と正則化の違い
- 主成分分析(PCA)と特異値分解(SVD)の違い
- 主成分分析(PCA)とt-SNEの違い
- 適合率と再現率の違い
- プルーニング・量子化と蒸留の違い
- Q学習とSARSAの違い
- Self-AttentionとSource-Target Attentionの違い
- セマンティック・インスタンスとパノプティックの違い
- 新規性と進歩性の違い
- シグモイド関数とソフトマックス関数の違い
- ソフトローとハードローの違い
- 強いAIと弱いAIの違い
- 教師あり学習・教師なし学習と強化学習の違い
- 特許権と著作権の違い
- 匿名加工情報と仮名加工情報の違い
- 転移学習とファインチューニングの違い
- 請負契約と準委任契約の違い
- Zero-shotとFew-shotの違い