誤差逆伝播法とは
Backpropagation / バックプロパゲーション
出力の誤差を出力層から入力層へ逆向きに伝播させ、各重みの勾配を効率的に計算するニューラルネットワークの学習アルゴリズム
ひとことで言うと
AIの答えが間違っていた分を後ろから前へ伝えていき、どこをどれだけ直せばよいかを計算する仕組み。
概要
誤差逆伝播法(Backpropagation)は、ニューラルネットワークの出力と正解との誤差を、連鎖律(chain rule)を用いて出力層から入力層へ向かって逆向きに伝播させ、各層の重みが誤差に与える影響(勾配)を効率的に計算するアルゴリズム。 計算された勾配は、勾配降下法などの最適化アルゴリズムに渡され、誤差を減らす方向へ重みを更新するために使われる。 全結合層だけでなく、CNNの畳み込み層やRNNの再帰構造(BPTT)、Transformerの各層にも同じ考え方が適用でき、現代の深層学習モデルの学習手法の基盤になっている。 手動で各重みの勾配を導出する代わりに、計算グラフに沿って自動的に微分する「自動微分」の仕組みとして、PyTorchやTensorFlowなどの主要フレームワークに標準実装されている。
背景
多層のニューラルネットワークを学習させるには、出力層から遠い層の重みが最終的な誤差にどう影響するかを求める必要がある。 誤差逆伝播法は、この勾配計算を連鎖律により層ごとに再利用可能な形で分解することで、多層ネットワークでも現実的な計算量で学習を可能にした。
歴史
1986年: Rumelhart、Hinton、Williamsが論文「Learning representations by back-propagating errors」で多層ネットワークへの適用を広め、以後の名称として定着(手法自体の原型はそれ以前から複数分野で独立に発見されていた)。 1980年代後半-1990年代: 多層パーセプトロンやCNN(LeNet)の学習に応用。 2010年代: GPUによる並列計算と組み合わさり、深層学習の実用化を支える基盤技術に。
アーキテクチャ
順伝播でネットワークの出力と損失関数の値を計算した後、損失に対する出力層の勾配を求め、連鎖律を使って1つ手前の層、さらにその手前の層へと勾配を逐次計算していく。 各層では、その層の重みに対する勾配と、さらに手前の層へ伝える勾配の両方を計算する。 この過程を計算グラフ上でたどることから「自動微分の逆モード」とも呼ばれる。
利点
- 多層のネットワークでも、全パラメータの勾配を1回の逆方向計算でまとめて求められる
- 計算グラフさえ定義すれば勾配計算をフレームワークが自動化でき、手動で微分を導出する必要がない
- 全結合層・畳み込み層・再帰層・Attention層など、幅広い構造に同じ枠組みを適用できる
欠点
- 層が深くなるほど勾配が極端に小さく(勾配消失)、あるいは大きく(勾配爆発)なりやすい
- 全てのパラメータの勾配を保持するため、モデルが大きいほど学習時のメモリ消費が増える
- 局所最適解や鞍点に収束し、真の最適解に到達しない場合がある
比較
- 勾配降下法 — 誤差逆伝播法は勾配を計算する手法であり、勾配降下法はその勾配を使って重みを更新する最適化手法
- ニューラルネットワーク — 誤差逆伝播法はニューラルネットワークを学習させるための標準的なアルゴリズム
- BPTT — BPTTは誤差逆伝播法をRNNの時間方向の展開に適用したもの
関連用語
よくある質問
誤差逆伝播法と勾配降下法の違いは?
誤差逆伝播法は各重みの勾配を効率的に計算する手法で、勾配降下法はその勾配を使って実際に重みを更新する最適化アルゴリズム。両者は組み合わせて使われる。
参考文献
- Research PaperLearning representations by back-propagating errors