モデルのしくみ 上級
誤差逆伝播法
Backpropagation
ニューラルネットワークの出力の誤差を、出力側から入力側へさかのぼって伝え、各パラメータをどちらにどれだけ直せばよいかを効率よく求める方法です。現在の深層学習の学習の基本です。
例学習がうまく進まないときは、逆伝播で求めた勾配が極端に小さくなっていないかを確認する。
詳しく
誤差逆伝播法(バックプロパゲーション)は、ニューラルネットワークの学習で使われる計算方法です。ネットワークの出力と正解とのずれ(誤差)を、出力側から入力側へ逆向きにたどりながら、数百万〜数千億個あるパラメータのそれぞれを「どちらにどれだけ変えると誤差が減るか」を求めます。1980年代に広く知られるようになり、現在の深層学習を支えています。
しくみ
学習は、次の流れを繰り返します。
- 順伝播:入力をネットワークに通し、予測を出す。
- 誤差の計算:予測と正解の違いを損失関数で数値にする。
- 逆伝播:その誤差を、出力層から入力層へ層ごとに逆にたどり、各パラメータが誤差に与えた影響(勾配)を計算する。
- 更新:勾配降下法で、誤差が減る向きにパラメータを少しだけ動かす。
数学的には微分の連鎖律(合成関数の微分)を使っています。何層も重なったネットワークでも、後ろの層の計算結果を再利用しながら前へ進むため、全パラメータの勾配を、順伝播と同じ程度の計算量で求められる点が決定的に重要です。もし1つずつパラメータを動かして誤差の変化を調べていたら、現実的な時間では終わりません。
具体例
大きなグループで作った料理が、客に不評だったとします。味の責任を探るとき、最後の仕上げ担当だけを責めても意味がありません。最後の工程から前の工程へ「この味付けが原因でこのくらいずれた」と順にさかのぼれば、各担当に必要な修正量を伝えられます。逆伝播は、ネットワークの各層に対してこの責任の割り振りを行うようなものです。
使うときの注意・よくある誤解
- 脳の仕組みの再現ではない:逆伝播は数学的な計算手法で、人間の脳が同じ方法で学習していると確認されているわけではありません。
- 勾配が消える・爆発する問題:層が深いと、逆向きに伝わる間に勾配が極端に小さく、または大きくなることがあります。活性化関数の選び方、正規化、残差接続などの工夫は、この問題への対策としても発展しました。
- 学習時にだけ必要:逆伝播は学習の計算です。学習済みのモデルを使うだけ(推論)の場合は順伝播だけで済みます。そのため、学習には推論よりずっと多くのメモリと計算が必要になります。
- 実務では、PyTorch などのライブラリが自動微分として逆伝播を自動で行うので、利用者が手計算することはほとんどありません。
関連する考え方
逆伝播が求めるのは「向き」であり、実際にパラメータを動かす手続きが勾配降下法です。どの値の誤差を測るかは損失関数が決めます。これらが組み合わさって、ニューラルネットワークの学習が成り立ちます。
あわせて知りたい言葉
- 勾配降下法損失関数の値が小さくなる方向へ、パラメータを少しずつ動かして最適な値を探す方法です。ニューラルネットワークの学習で最も基本的に使われる手法で、山を下るような動きにたとえられます。
- 損失関数モデルの予測が正解からどれだけずれているかを、1つの数値で表す仕組みです。学習とは、この値をできるだけ小さくするようにパラメータを調整していく作業のことを指します。
- ニューラルネットワーク人間の脳の神経細胞のつながりをヒントにした、数値の計算を何層にも重ねて入力から出力を導くしくみです。現在の生成 AI を含む、ほとんどの AI モデルの土台になっています。
- ディープラーニング多くの層を重ねたニューラルネットワークで、データから特徴を自動的に学ぶ機械学習の手法です。画像認識、音声認識、文章生成など、近年の AI の進歩の中心になっています。