このページは、BPTT の定着と勾配消失 を、初学者向けに短く整理するノートです。時系列の背景は 単純リカレントと誤差逆伝播史 を参照してください。
1990 年ごろ、BPTT(Backpropagation Through Time) として、系列をステップごとに展開したネットワークに 誤差逆伝播 を適用する学習が定着しました。これにより長さの違う系列も同じ枠組みで学習しやすくなった一方、ステップが離れるほど勾配が弱くなる 勾配消失 が、単純 RNN の限界として共有されるようになりました。
なぜ BPTT と呼ぶか(名前の由来)
BPTT は Backpropagation Through Time(時間方向への誤差逆伝播)の略です。誤差逆伝播とは別アルゴリズム ではなく、RNN を 時間展開 したときに、勾配を ステップの並び方向にも 逆に流す誤差逆伝播の 呼び名 です。
| 部分 | 意味 |
|---|---|
| Backpropagation | いつもの 誤差逆伝播(損失から連鎖律で勾配を求める) |
| Through Time | 時間(=ステップ (t) の並び)方向を通って 逆に伝える |
ここでの Time は壁時計の秒・分だけを指すわけではなく、overview の「まず『時間』とは何を指すか」 と同様、読み進める順のインデックス (t=1,2,\ldots) です。
フィードフォワード だけのネットでは、逆伝播は主に 層の深さ方向(出力側 → 入力側)に流れます。RNN は同じ重み (W, U) を各ステップで共有するため、学習時にループを 横に並べた長いネット と見立てます。そのとき勾配は 層・重みの方向 に加え、(t=T \to T-1 \to \cdots \to 1) の 時間方向 にも必要になる、というのが Through Time の理由です。
| 用語 | 範囲 |
|---|---|
| 誤差逆伝播 | 多層ネット全般 |
| BPTT | それを 展開した RNN に適用したときの名称 |
損失は 設計した位置(「損失を付ける位置」)で一度(または数箇所で)計算し、逆に流すのは勾配 です(各 (h_t) を正解ベクトルとステップごとに比べ直す手続きではない)。
ざっくりいうと
- BPTT:系列を「横に長いフィードネット」と見なし、逆伝播 で重みを更新する方法。
- 時間方向:ここでの「時間」= ステップの並び方向(overview の説明 参照)。
- 勾配消失:遠い過去のステップへの勾配が指数的に小さくなり、長距離依存 が学習しにくい現象。
- Truncated BPTT:系列を途中で切って BPTT する実務的な近似(のちの定番)。
BPTT の定着と勾配消失で何をしているか
たとえば 10 ステップの文を学習するとき、ネットワークは 10 段つながった同じ重み共有セルとして展開されます。最後のステップの誤差から勾配を 逆向き に流すと、各ステップの重み更新に使われます。しかし掛け算が続くと勾配が小さくなり、文頭の単語の影響 が末尾の誤差まで届きにくい、というのが勾配消失の直感です。
- 系列を (t=1,\ldots,T) のステップに展開する。
- 各ステップで順伝播し、損失を計算する。
- (t=T) から (t=1) へ誤差を伝播(BPTT)。
- 共有重み (W, U) などを更新する。
- 長すぎる (T) では Truncated BPTT や勾配クリッピングを検討する。
強みと限界(短く)
強み
- 可変長系列を エンドツーエンド で学習する標準手続きになった。
- 勾配消失を問題として明示し、LSTM などの改良 への動機を与えた。
限界
- 単純 RNN + BPTT だけでは、非常に長い系列 の依存は依然として難しい。
- 計算グラフがステップ数に比例して長くなり、メモリ・時間コストが増える。