モデルのしくみ 上級

誤差逆伝播法

Backpropagation

ニューラルネットワークの出力の誤差を、出力側から入力側へさかのぼって伝え、各パラメータをどちらにどれだけ直せばよいかを効率よく求める方法です。現在の深層学習の学習の基本です。

例学習がうまく進まないときは、逆伝播で求めた勾配が極端に小さくなっていないかを確認する。

詳しく

誤差逆伝播法(バックプロパゲーション)は、ニューラルネットワークの学習で使われる計算方法です。ネットワークの出力と正解とのずれ(誤差)を、出力側から入力側へ逆向きにたどりながら、数百万〜数千億個あるパラメータのそれぞれを「どちらにどれだけ変えると誤差が減るか」を求めます。1980年代に広く知られるようになり、現在の深層学習を支えています。

しくみ

学習は、次の流れを繰り返します。

  • 順伝播:入力をネットワークに通し、予測を出す。
  • 誤差の計算:予測と正解の違いを損失関数で数値にする。
  • 逆伝播:その誤差を、出力層から入力層へ層ごとに逆にたどり、各パラメータが誤差に与えた影響(勾配)を計算する。
  • 更新:勾配降下法で、誤差が減る向きにパラメータを少しだけ動かす。

数学的には微分の連鎖律(合成関数の微分)を使っています。何層も重なったネットワークでも、後ろの層の計算結果を再利用しながら前へ進むため、全パラメータの勾配を、順伝播と同じ程度の計算量で求められる点が決定的に重要です。もし1つずつパラメータを動かして誤差の変化を調べていたら、現実的な時間では終わりません。

具体例

大きなグループで作った料理が、客に不評だったとします。味の責任を探るとき、最後の仕上げ担当だけを責めても意味がありません。最後の工程から前の工程へ「この味付けが原因でこのくらいずれた」と順にさかのぼれば、各担当に必要な修正量を伝えられます。逆伝播は、ネットワークの各層に対してこの責任の割り振りを行うようなものです。

使うときの注意・よくある誤解

  • 脳の仕組みの再現ではない:逆伝播は数学的な計算手法で、人間の脳が同じ方法で学習していると確認されているわけではありません。
  • 勾配が消える・爆発する問題:層が深いと、逆向きに伝わる間に勾配が極端に小さく、または大きくなることがあります。活性化関数の選び方、正規化、残差接続などの工夫は、この問題への対策としても発展しました。
  • 学習時にだけ必要:逆伝播は学習の計算です。学習済みのモデルを使うだけ(推論)の場合は順伝播だけで済みます。そのため、学習には推論よりずっと多くのメモリと計算が必要になります。
  • 実務では、PyTorch などのライブラリが自動微分として逆伝播を自動で行うので、利用者が手計算することはほとんどありません。

関連する考え方

逆伝播が求めるのは「向き」であり、実際にパラメータを動かす手続きが勾配降下法です。どの値の誤差を測るかは損失関数が決めます。これらが組み合わさって、ニューラルネットワークの学習が成り立ちます。

あわせて知りたい言葉

「モデルのしくみ」の言葉をすべて見る