BPTTとは
Backpropagation Through Time / 通時的誤差逆伝播法
RNNを時間方向に展開した計算グラフに対して誤差逆伝播法を適用し、各時刻の重みを学習するアルゴリズム
ひとことで言うと
時系列データを扱うAIモデルを、時間をさかのぼって学習させる計算方法。
概要
BPTT(Backpropagation Through Time、通時的誤差逆伝播法)とは、RNNのように同じ重みを時刻ごとに繰り返し適用するネットワークを、時間方向に展開した計算グラフとみなし、通常の誤差逆伝播法を適用して重みを学習するアルゴリズム。 各時刻の出力の誤差を、時間をさかのぼりながら過去の時刻へ伝播させ、全時刻分の勾配を合計して重みを更新する。 系列が長くなるほど逆伝播する時間ステップ数は増え、勾配消失・勾配爆発が起きやすくなるため、一定時間分だけ逆伝播させる「打ち切りBPTT(Truncated BPTT)」が実用上よく使われる。
背景
RNNは同じ重みを全時刻で共有しながら系列を処理するため、通常の誤差逆伝播法をそのまま適用できず、時間方向の依存関係を考慮した学習アルゴリズムが必要だった。 BPTTは、RNNを時間方向に展開したネットワークとみなし、既存の誤差逆伝播法の枠組みを時系列データの学習に転用する手法として考案された。
歴史
1990年: Werbosが、RNNの学習にBPTTという名称と手法を適用する論文を発表し、時系列データを扱うニューラルネットワークの学習手法として定着した。
ワークフロー
系列を先頭から末尾まで1タイムステップずつ順伝播させ、各時刻の隠れ状態と出力を保持する → 最終時刻(または各時刻)の誤差を計算する → 誤差を末尾から先頭へ、時間をさかのぼりながら逆伝播させる → 各時刻で得られた勾配を合計し、共有された重みを1回だけ更新する。
利点
欠点
- 系列が長くなるほど逆伝播するステップ数は増え、勾配消失・勾配爆発が起きやすくなる
- 全時刻分の中間状態を保持する必要があり、系列が長いほどメモリ使用量が増加する
- 打ち切りBPTTで一部の時刻のみ逆伝播させる場合、打ち切り範囲を超えた依存関係は学習に反映されない
比較
関連用語
よくある質問
打ち切りBPTT(Truncated BPTT)とは?
系列全体ではなく、直近の一定タイムステップ分だけ逆伝播させる手法。長い系列でも計算量・メモリ使用量を抑えられるが、打ち切った範囲より前の依存関係は学習されない。
TransformerはBPTTを使う?
使わない。Transformerは時刻をまたいで重みを共有する再帰構造を持たず、系列全体を並列に処理するため、通常の誤差逆伝播法で学習できる。