誤差逆伝播法(Backpropagation)は、多層ニューラルネットワークにおける損失関数の勾配を効率的に計算するアルゴリズムであり、連鎖律(chain rule)に基づく自動微分の一形態として理解される。その本質は、合成関数として表現されるネットワークに対して、出力層から入力層へと誤差を逆向きに伝播させることで、各パラメータに関する偏微分を再帰的に求める点にある。これにより、パラメータ数が非常に多いモデルに対しても計算量を線形時間に抑えつつ学習が可能となる。
入力 $x \in \mathbb{R}^{d_0}$ に対し、$L$ 層からなるニューラルネットワークを考える。各層 $l=1,\dots,L$ において
\[z^{(l)} = W^{(l)} h^{(l-1)} + b^{(l)}, \quad h^{(l)} = \sigma^{(l)}(z^{(l)})\]
とする。ただし $h^{(0)} = x$ であり、$\sigma^{(l)}$ は活性化関数である。最終出力を $h^{(L)}$ とする。
教師信号 $y$ に対し、損失関数
\[\mathcal{L} = \ell(h^{(L)}, y)\]
を定義する。
学習はパラメータ $\theta = \{W^{(l)}, b^{(l)}\}_{l=1}^L$ に関する最適化問題
\[\min_\theta \mathcal{L}\]
として定式化される。このためには各パラメータに対する勾配
\[\frac{\partial \mathcal{L}}{\partial W^{(l)}}, \quad\frac{\partial \mathcal{L}}{\partial b^{(l)}}\]
を効率的に計算する必要がある。
誤差逆伝播法では、各層において
\[\delta^{(l)} := \frac{\partial \mathcal{L}}{\partial z^{(l)}}\]
を定義する。この量は「誤差の感度」を表す。
出力層では
\[\delta^{(L)}= \frac{\partial \mathcal{L}}{\partial h^{(L)}}\odot \sigma'^{(L)}(z^{(L)})\]
が成立する。
中間層に対しては連鎖律により
\[\delta^{(l)}= (W^{(l+1)})^T \delta^{(l+1)}\odot \sigma'^{(l)}(z^{(l)})\]
が成り立つ。すなわち、誤差は後ろの層から前の層へと線形変換と要素ごとの積により伝播する。
誤差項 $\delta^{(l)}$ を用いると、パラメータ勾配は
\[\frac{\partial \mathcal{L}}{\partial W^{(l)}}= \delta^{(l)} (h^{(l-1)})^T\]
\[\frac{\partial \mathcal{L}}{\partial b^{(l)}}= \delta^{(l)}\]
と簡潔に表される。
ニューラルネットワークは有向非巡回グラフ(DAG)として表現できる。誤差逆伝播法はこの計算グラフに対する逆モード自動微分(reverse-mode automatic differentiation)に一致する。順伝播で値を計算し、逆伝播で勾配を計算する二段階構造を持つ。
ナイーブに各パラメータごとに微分を計算すると計算量は膨大になるが、誤差逆伝播法では中間結果を再利用することで、勾配計算の計算量は順伝播と同程度($O(\text{パラメータ数})$)に抑えられる。
シグモイド関数やtanh関数では、導関数が小さくなるため
\[\prod_l \sigma'(z^{(l)})\]
が指数的に小さくなり、勾配消失が生じる。一方、ReLUはこの問題を緩和する。
逆に、重み行列のスペクトルノルムが大きい場合には勾配爆発が起こる。この対策として
が用いられる。
誤差逆伝播法は勾配を計算する手法であり、実際の学習は
\[\theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L}\]
により行われる。ここで $\eta$ は学習率である。ミニバッチSGDやAdamなどと組み合わせて用いられる。
誤差逆伝播法はニューラルネットワークに限らず、任意の合成関数
\[f = f_L \circ f_{L-1} \circ \cdots \circ f_1\]
に対して適用可能である。この意味で、現代のディープラーニングフレームワークにおける自動微分の基礎をなす。
誤差逆伝播は、関数空間におけるフレシェ微分の計算としても解釈できる。すなわち、損失関数はパラメータ空間上の汎関数であり、その勾配は線形作用素として表される。
誤差逆伝播法は、連鎖律に基づき合成関数の勾配を効率的に計算するアルゴリズムであり、多層ニューラルネットワークの学習を可能にする中核的技術である。計算グラフと自動微分の枠組みにより一般化され、勾配消失・爆発といった問題への対策とともに、現代の深層学習の基盤を構成している。
Mathematics is the language with which God has written the universe.