コンテンツにスキップ

6.4.1 RNN ロードマップ:系列を順番に処理する

RNN は順序のあるデータに向いています。テキスト、時系列、クリック列、センサー値など、前のステップが後のステップに影響する入力です。

RNN 系列モデル章関係図

RNN 隠れ状態ローリングメモリマップ

概念最初の意味
sequence length時間ステップの数
input size各ステップの特徴数
hidden state流れていく記憶
LSTM / GRUゲート付き記憶制御
batch first[batch, seq_len, features] の形

rnn_first_loop.py を作り、torch をインストールしてから実行します。

import torch
sequence = torch.randn(2, 3, 5)
gru = torch.nn.GRU(input_size=5, hidden_size=4, batch_first=True)
outputs, hidden = gru(sequence)
print("sequence_shape:", tuple(sequence.shape))
print("outputs_shape:", tuple(outputs.shape))
print("hidden_shape:", tuple(hidden.shape))

出力:

sequence_shape: (2, 3, 5)
outputs_shape: (2, 3, 4)
hidden_shape: (1, 2, 4)

2つの系列、各3ステップ、各ステップ5特徴と読みます。GRU はサイズ 4 の隠れ表現を返します。

順番読む練習すること
16.4.2 RNN 基礎系列入力、隠れ状態、形
26.4.3 LSTM と GRUゲート、長期依存、記憶制御
36.4.4 系列モデリング実践スライディングウィンドウ、train/eval ループ

この小章を学んだら、次の sequence shape メモを残します。

入力形状
[batch, seq_len, features]
隠れ状態
正確な保存ではなく、流れる記憶
RNN 出力
各時刻ステップごとに1つの表現
最終隠れ状態
圧縮された系列要約
長文脈の制約
通常のRNNが忘れる場合は、LSTM/GRU またはアテンションを使う

[batch, seq_len, features] を読め、hidden state を流れていく記憶として説明でき、LSTM/GRU が長期依存のために導入されたことを説明できれば合格です。

確認の考え方と解説
  1. 合格レベルの答えでは、tensor、model layer、loss、backward()、optimizer update を1つの学習ループとしてつなげます。
  2. 証拠には、動く小さな実験、tensor shape の確認、説明できる loss または validation curve を含めます。
  3. shape mismatch、loss が下がらない、過学習、data leakage、Attention/Transformer の data flow を説明できない、といった失敗例を1つ言えればよいです。