Backpropagation
誤差逆伝播法
DEFINITION
ニューラルネットの全パラメータに対する損失関数の勾配を、計算グラフの **連鎖律** を用いて出力側から入力側へ逐次計算するアルゴリズムです。1986 年に Rumelhart 氏らによって深層学習文脈で再発見されました(数学的本質は古典的な自動微分です)。前向き計算 (forward pass) で各層の出力を保存し、後ろ向き計算 (backward pass) で勾配 $\partial L / \partial \theta_i$ をすべて 1 回で得られる点が決定的に重要です。これにより数百万〜数千億パラメータのモデルでも勾配降下が実用時間で実行可能になりました。現代の深層学習フレームワーク(PyTorch / TensorFlow / JAX)はこれを自動化し、人類のコードはたいてい本質を意識せずに済んでいます。論理的には連鎖律の繰り返し適用に過ぎませんが、人類の機械学習史を書き換えた基礎技術です。
§01 押さえるべき要点
- 連鎖律 $\partial L / \partial \theta = (\partial L / \partial y)(\partial y / \partial \theta)$ を計算グラフに沿って自動適用
- Forward pass: 各層の出力を保存。Backward pass: 出力から逆順に勾配を集約
- 1 ステップで全パラメータの勾配を一度に得る(計算量は forward と同じオーダー)
- PyTorch / TensorFlow / JAX が自動微分エンジンとして抽象化
- Reverse-mode autodiff の特殊例。一般の関数微分にも応用可能