Kerasにおける「LSTM(Long Short-Term Memory)」「GRU(Gated Recurrent Unit)」といった**再帰レイヤー(Recurrent Layers)**は、**時系列データや系列データ(シーケンスデータ)**の学習に特化したレイヤーです。自然言語処理、音声認識、株価予測など、過去の情報が現在に影響を与える問題に適しています。
1. 再帰レイヤー(RNN系レイヤー)の基本構造
RNN(Recurrent Neural Network)は、入力系列の時間的な依存関係を学習できるネットワークです。通常の全結合層と異なり、過去の出力を次の時刻に受け渡す構造を持ちます。
ただし、単純なRNNは「勾配消失」や「勾配爆発」などの問題があり、長期依存関係の学習が困難です。
2. LSTM(Long Short-Term Memory)
概要
LSTMは、標準的なRNNの問題を克服するために開発された構造で、長期依存性を保持することが可能です。セル状態(cell state)とゲート(入力ゲート、忘却ゲート、出力ゲート)により、必要な情報の選択的保持・除去を実現しています。
Kerasでの使用例
主な引数
-
units: 出力の次元数 -
return_sequences: Trueの場合、全時刻の出力を返す(多層LSTMで必要) -
return_state: Trueにすると、最後の状態を返す(状態保存に有用)
3. GRU(Gated Recurrent Unit)
概要
GRUはLSTMと同様にゲート構造を持ちますが、より簡略化された構造で計算効率が良いのが特徴です。忘却ゲートと入力ゲートをまとめた「更新ゲート」と、「リセットゲート」の2つのゲートで情報を制御します。
Kerasでの使用例
LSTMとの違い
| 特徴 | LSTM | GRU |
|---|---|---|
| ゲート構造 | 入力・出力・忘却ゲート | 更新ゲート・リセットゲート |
| 計算効率 | やや重い | 軽量 |
| 精度傾向 | 長期依存に強い | 中〜長期依存に適応 |
4. 活性化関数(Activation Function)
再帰レイヤーでは、通常以下の活性化関数が使用されます。
-
tanh: 状態更新に使用される活性化関数(セルの出力) -
sigmoid: ゲートの開閉に使用(0〜1で出力)
Kerasではこれらはデフォルトで内部的に設定されていますが、以下のように明示的に指定することも可能です。
5. 応用分野
-
自然言語処理(文章分類、機械翻訳、チャットボット)
-
音声認識(音声からテキストへの変換など)
-
時系列予測(株価、天気、IoTセンサーデータ)
-
動画フレーム解析(フレーム間の時間的関係)
まとめ
| レイヤー | 特徴 | 向いているタスク |
|---|---|---|
| LSTM | 長期依存の記憶が可能、高精度 | 複雑な時系列、自然言語処理など |
| GRU | 構造が簡易、学習速度が速い | 短〜中程度の時系列データ |
Kerasはこれらのレイヤーを簡単に利用でき、必要に応じて多層構成やBidirectional化(双方向RNN)も可能です。
生成日:2025/05/22