BPTT(BackPropagation Through Time) (G検定)

BPTT(BackPropagation Through Time)

1. 定義と概要

BPTT(BackPropagation Through Time)とは、RNNを学習させるためのアルゴリズムです。RNNは、時刻をまたいで同じ重み(ニューロン同士のつながりの強さを表す数値)を繰り返し使い回すループ構造を持つ点が特徴です。

BPTTでは、このループ構造を時刻ごとに横一列に複製して並べる「展開」(同じループ構造を時刻の数だけ複製して横一列に並べること)を行います。展開したあとのネットワークに通常の誤差逆伝播法(出力側で生じた誤差を逆向きに伝えながら各層の重みを調整する学習手法)をそのまま当てはめるのが、BPTTの仕組みです。

通常のニューラルネットワークであれば、層の深さ方向にだけ誤差をさかのぼって伝えれば済みます。しかしRNNは同じ重みを時刻をまたいで使い回すループ構造を持つため、通常の誤差逆伝播法をそのままの形では適用できませんでした。

この課題を解決したのがBPTTです。ループ構造を時刻の数だけ複製して横一列に並べる展開の考え方に置き換えれば、通常の誤差逆伝播法がそのまま使える普通の多層ネットワークの形になります。学習の手順を新しく作り直すのではなく、ネットワークの見方を変えることで既存の手順を使えるようにした、という発想が土台にあります。

2. 試験対策ポイント

まず押さえておきたいのは、展開そのものの考え方です。RNNの1つのループを時刻1から時刻Tまで複製して一列に並べ、各時刻の層が同じ重みを共有する通常の多層ネットワークとみなすことで、はじめて誤差逆伝播法が適用できる形になります。

BPTTはRNNというネットワーク構造の名前ではなく、そのRNNをどう学習させるかを示すアルゴリズムの名前である点も取り違えやすいところです。RNNのループ構造自体は、別のテーマとして扱われます。

もうひとつの論点は、計算コストとメモリの増大という制約です。展開後のネットワークの深さは、系列(時間の順序に沿って並んだ一連のデータ)の長さそのものに等しくなります。順伝播の際には各時刻の中間状態をすべて保持しておく必要があり、系列が長いほど計算量とメモリ消費は増えていきます。

勾配(重みをどの向きにどれだけ変えれば誤差が小さくなるかを示す値)との関係も整理しておきたいところです。誤差を1時刻さかのぼるたびに繰り返し掛け合わされるのは、重みと活性化関数(各ニューロンの出力を、次の層へ渡す前に変換する関数)の勾配です。

そのため系列が長いほど、勾配消失問題(誤差を何度もさかのぼって伝えるうちに勾配がどんどん小さくなり、学習がほとんど進まなくなる現象)が起きやすくなります。反対に、勾配爆発問題(誤差をさかのぼって伝えるうちに勾配が大きくなりすぎて学習が不安定になる現象)も、掛け算が繰り返されるという同じ理由から生じます。

この現象への対処は、ネットワークの構造側からのものと、学習アルゴリズムであるBPTT側からのものに分かれます。両者を並べると次のように整理できます。

対処の位置 代表的な手法 狙い
ネットワーク構造側 ゲート機構を持つLSTM・GRU 長期の依存関係を学習しやすくする
BPTT側 打ち切りBPTT 計算コストと勾配の不安定さを緩和する

構造側にあたるLSTM(情報の保持・忘却を調整するゲート機構を持ち、長期の依存関係を学習しやすくしたRNNの一種)やGRU(LSTMを簡略化した、ゲート機構を持つRNNの一種)については、内部の仕組みは別記事のテーマです。BPTT側にあたるのが打ち切りBPTT(Truncated BPTT。全ての時刻をさかのぼらず、一定の時間ステップで逆伝播を止める手法)で、計算コストと勾配の不安定さを緩和する目的で使われます。

3. 関連概念との比較・相違点

BPTTの位置づけは、通常の誤差逆伝播法と打ち切りBPTTの間に置くとつかみやすくなります。3つを、時間方向を扱うかどうかと、誤差をさかのぼる範囲という軸で並べると次のとおりです。

手法 時間方向を扱うか 誤差をさかのぼる範囲
通常の誤差逆伝播法 扱わない 層の深さ方向のみ
BPTT 時間方向に展開して扱う 系列の最初の時刻まですべて
打ち切りBPTT 時間方向に展開して扱う 一定の時間ステップで止める

通常の誤差逆伝播法とBPTTの最大の違いは、誤差をさかのぼる対象です。通常の誤差逆伝播法は層の深さ方向にのみ誤差をさかのぼって重みの勾配を求めるのに対し、BPTTはRNNのループ構造を時間方向に展開したうえで同じ考え方を適用します。展開してしまえば計算そのものは通常の誤差逆伝播法と変わらず、異なるのはさかのぼる対象が層から時刻へ広がる点です。

打ち切りBPTTとの最大の違いは、誤差をさかのぼる範囲です。通常のBPTTは系列の最初の時刻まですべてさかのぼって誤差を伝えるのに対し、打ち切りBPTTは一定の時間ステップで逆伝播を止めます。

通常のBPTTは遠い過去の依存関係まで学習できる可能性がある一方で計算コストとメモリが大きく、打ち切りBPTTは軽量な代わりに打ち切った範囲より遠い過去の依存関係を学習しにくくなります。両者は、計算コストと精度の折り合いという関係です。

4. ビジネス・実務での活用シナリオ

自然言語処理(人間が日常的に使う言葉をコンピュータに処理させる技術分野)は、文章のように順序のあるデータを扱うモデルの学習でBPTTが使われる代表的な分野です。文章生成や翻訳のタスクでは、文章が長くなるほど展開後のネットワークが深くなり、学習に必要なメモリと時間が増えていきます。実務では、系列の長さと計算資源のバランスを見ながら打ち切りBPTTのような手法が選ばれます。

音声認識や時系列予測の分野でも、連続する音声データやセンサーの数値、売上といった時間とともに変化するデータを扱うモデルの学習で、時間方向へ誤差を伝えるBPTTの考え方が土台です。系列が長い実務データほど、勾配消失・勾配爆発への対処として打ち切りBPTTやゲート機構を持つ構造の採用が組み合わされます。

モデル開発の計画や予算の見積もりの場面でも、BPTTの性質は有用な判断材料です。非エンジニアが開発チームと学習にかかる時間やコストを議論する際、系列の長さが学習の計算コストに直結する性質を知っていれば、長い時系列データの学習に時間がかかる理由や打ち切りが行われる理由を共有できます。

5. 要点まとめ

  • BPTTは、RNNのループ構造を時刻ごとに展開し、展開後のネットワークに通常の誤差逆伝播法を適用してRNNを学習させるアルゴリズムです。
  • 展開後のネットワークの深さは系列の長さに等しく、系列が長いほど計算コストとメモリが増え、勾配消失・勾配爆発も起きやすくなります。
  • 打ち切りBPTTは一定の時間ステップで逆伝播を打ち切ることで計算コストと勾配の不安定さを抑える手法ですが、打ち切った範囲より遠い過去の依存関係は学習しにくくなります。

6. 確認問題

問1BPTTとは、RNNのループ構造を時刻ごとに複製して展開し、その展開後のネットワークに通常の誤差逆伝播法を適用してRNNを学習させるアルゴリズムである。

解答・解説をみる

○ 正しい

時間方向への展開と、その後の通常の誤差逆伝播法の適用という二段構えが、BPTTの定義そのものにあたります。展開によってRNNが普通の多層ネットワークとみなせる形になる点が根拠です。

問2打ち切りBPTT(Truncated BPTT)は、全ての時刻をさかのぼって誤差を伝える通常のBPTTよりも、遠い過去の依存関係を正確に学習できる手法である。

解答・解説をみる

× 誤り

打ち切りBPTTは一定の時間ステップで逆伝播を止めるため、打ち切った範囲より遠い過去の依存関係はむしろ学習しにくくなります。正しくは、計算コストとメモリを抑えられる代わりに精度面で折り合いをつける手法であり、設問はメリットとデメリットを反対にした記述です。

問3系列が長くなるほどBPTTで展開されるネットワークは深くなり、誤差を時刻方向にさかのぼって伝える際に勾配消失・勾配爆発が起きやすくなる。

解答・解説をみる

○ 正しい

系列の長さが展開後の深さに直結し、重みと活性化関数の勾配が時刻をまたいで繰り返し掛け合わされる仕組みが根拠になります。この掛け算の繰り返しが、勾配消失・勾配爆発の起きやすさにつながります。