1行定義
BPTTとは、RNNを時刻ごとに展開して1つの深いネットワークとみなし、誤差逆伝播法で時間をさかのぼりながら勾配を計算する学習方法のことです。
くわしく
BPTT(Backpropagation Through Time)は、RNNを学習させるための誤差逆伝播法です。日本語では通時的誤差逆伝播法とも呼ばれます。
しくみ
RNNは、前の時刻の隠れ層の状態を、次の時刻の計算に加えて使います。このような帰還のある構造には、通常の誤差逆伝播法をそのまま使えません。そこで、時刻1、時刻2、…と各時刻の計算を横に並べて書き出します。これを「時間方向に展開する」といいます。展開すると、RNNは系列の長さと同じ数の層を持つ、深いネットワークとして扱えます。
この展開したネットワークに誤差逆伝播法を使い、最後の時刻から最初の時刻へとさかのぼりながら勾配を計算するのがBPTTです。展開した各時刻の層は同じ重みを共有しています。そのため、時刻ごとに求めた勾配を足し合わせて、1つの重みを更新します。
長い系列で起きる問題
さかのぼる時刻が増えるほど、同じ重みに関わる微分を何度も掛け合わせることになります。そのため、勾配が急速に小さくなる勾配消失問題や、急激に大きくなる勾配爆発問題が起きやすくなります。結果として、遠い過去の情報が学習に反映されにくくなります。また、逆伝播のために全時刻の途中の値を保存しておく必要があり、系列が長いほど多くのメモリを使います。
主な対策
- 打ち切り型BPTT(truncated BPTT):さかのぼる時刻の数を一定で打ち切り、計算量とメモリを抑えます。ただし、打ち切った範囲より前との関係は学習しにくくなります。
- 勾配クリッピング:勾配の大きさに上限を設け、勾配爆発を防ぎます。
- LSTM・GRU:ゲート機構で情報を長く保ち、勾配消失を起こしにくくします。
覚え方
「BPTTは、RNNを横に広げてから逆伝播」と覚えます。
G検定での出題
出題のされ方
RNNを時間方向に展開して誤差逆伝播法を使う仕組みと、長い系列で勾配消失・勾配爆発が起きる理由が問われます。LSTMやGRU、勾配クリッピングなどの対策との関係も問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
BPTTでは、展開した各時刻の層が同じ重みを共有しているため、各時刻で求めた勾配を足し合わせて重みを更新する。
答えを見る
答え ◯ 正しい
時刻ごとに別の重みがあるわけではありません。1つの重みが全時刻で使われるため、各時刻の寄与を合計します。
-
BPTTでさかのぼる時刻の数を増やすほど、計算に必要なメモリは少なくなる。
答えを見る
答え × 誤り
逆伝播のために各時刻の途中の値を保存しておく必要があるため、さかのぼる時刻が多いほどメモリを多く使います。
-
打ち切り型BPTTは、さかのぼる時刻の数を一定で区切ることで、計算量とメモリの使用量を抑える方法である。
答えを見る
答え ◯ 正しい
その代わり、区切った範囲より遠い過去との関係は学習しにくくなります。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目22 回帰結合層)
- Paul J. Werbos, Backpropagation through time: what it does and how to do it, Proceedings of the IEEE 78(10), 1550–1560 (1990)
- Yoshua Bengio, Patrice Simard, Paolo Frasconi, Learning long-term dependencies with gradient descent is difficult, IEEE Transactions on Neural Networks 5(2), 157–166 (1994)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (10.2.2 Computing the Gradient in a Recurrent Neural Network)