Back Propagation Through Time (BPTT)
解説:時間を「巻き戻して」犯人を探す
BPTT(時間方向の誤差逆伝播法)は、RNNを学習させるための専用アルゴリズムです。名前の通り、「時間の流れを遡って(Back Through Time)、誤差を伝えていく」手法です。
通常のニューラルネットワークと違い、RNNは「ループ構造(自分への戻り)」を持っています。このままでは計算ができないため、以下のような工夫を行います。
🎞️ BPTTの3ステップ
- 展開(Unroll):
ループ構造を無理やり引き伸ばし、「過去から現在へと続く、一直線の長いネットワーク」に見立てます。
(例:10秒間のデータなら、10個の層が横に並んでいるとみなす) - 逆伝播(Backprop):
現在発生した誤差(予測ミス)を、現在(t) → 1秒前(t-1) → 2秒前(t-2)… と、過去に向かって順番に伝えていきます。 - 更新:
「あの時の判断が今のミスにつながったんだな」と特定し、重みを修正します。
長すぎる過去は「忘れる」問題
BPTTには致命的な弱点があります。遡る時間が長くなればなるほど、掛け算の回数が増え、誤差の情報が途中で消えてしまう「勾配消失問題」が起きやすいのです。
これに対処するため、ある程度の長さ(例:10ステップ分)で過去への遡りをバッサリ打ち切る手法を「Truncated BPTT(打ち切りBPTT)」と呼びます。
| 手法 | 特徴 |
|---|---|
| 通常の誤差逆伝播法 (Backpropagation) |
層の「深さ」方向に遡る。 画像認識(CNN)などで使用。 |
| BPTT | 層の「時間」方向に遡る。 時系列データ(RNN)で使用。 ※計算コストが高く、勾配消失しやすい。 |

G検定対策
出題ポイント
- キーワード:RNNの学習には、ネットワークを時間方向に「展開(Unroll)」して計算するBPTTが使われる。
- 問題点:層が深くなるのと同じ状態になるため、「勾配消失・勾配爆発」が起きやすい。
- 対策:計算を途中で区切る「Truncated BPTT」が実用的によく使われる。
ひっかけ対策
- × BPTTを使えば、どんなに長い文脈も学習できる
(解説)理論上は可能ですが、実際には勾配消失により、遠い過去の記憶は失われます。それを防ぐにはLSTMなどの構造が必要です。 - × CNNの学習に使われる
(解説)CNNは「画像(空間)」なので通常のバックプロパゲーションです。BPTTは「RNN(時間)」です。
