1 基本原理
1.1 目的と直感的理解
誤差逆伝播法の目的は、多層ニューラルネットワークの重みパラメータを効率的に調整し、ネットワーク全体の予測誤差を最小化することである。直感的には、出力層で生じた誤差(真の値と予測値の差)を各層のニューロンに逆向きに「配分」し、それぞれの重みがどれだけ誤差に寄与したかを計算する。これにより、一つの重みをわずかに変化させたときの誤差の変化率(勾配)を、すべての重みに対して同時に得ることができる。
1.2 連鎖律と勾配計算
連鎖律(チェインルール)は微分積分学の基本法則であり、複合関数の導関数を構成する各関数の導関数の積として計算することを可能にする。ニューラルネットワークでは、出力誤差は多数の重みと活性化関数の合成関数として表現される。誤差逆伝播法は、連鎖律を繰り返し適用することで、出力層から入力層に向かって各層の勾配を効率的に計算する。例えば、ある層の重みに対する誤差の偏微分は、その層以降のすべての層の微分係数の積として表される。
1.3 損失関数と勾配降下法
損失関数(誤差関数)は、ネットワークの出力と正解データとの間の不一致度を定量化する。代表的なものに、二乗誤差や交差エントロピー誤差がある。勾配降下法は、損失関数の勾配(各重みに関する偏微分)に基づいて、重みを勾配と逆方向に小さく更新することで損失を減少させる最適化手法である。誤差逆伝播法はこの勾配を計算するための手段として機能し、両者が組み合わさって学習が進行する。
2 数学的導出
2.1 単一ニューロンの誤差項
単一ニューロンにおいて、誤差項(デルタ)は、ニューロンの出力に対する損失関数の偏微分と、活性化関数の導関数の積として定義される。具体的には、\( \delta = \frac{\partial L}{\partial a} \cdot f'(z) \) と表される。ここで \(L\) は損失、\(a\) はニューロンの出力、\(z\) は活性化前の入力の重み付き和、\(f\) は活性化関数である。この誤差項は、そのニューロンが出力誤差にどれだけ寄与しているかを示す。
2.2 多層パーセプトロンへの一般化
多層パーセプトロン(MLP)では、各層が複数のニューロンを持ち、前層の出力が次層の入力となる。誤差逆伝播法は、出力層で計算された誤差項を、連鎖律を用いて前の層へ順次伝播させる。各層の誤差項は、次層の誤差項とその層の重み、および現在の層の活性化関数の導関数から計算される。
2.3 出力層から隠れ層への伝播
2.3.1 出力層のデルタ
出力層では、損失関数が直接出力ニューロンに依存するため、誤差項は比較的簡単に計算できる。例えば、二乗誤差と線形活性化関数の場合、出力層のデルタは予測値と目標値の差に等しくなる。交差エントロピー誤差とソフトマックス関数の組み合わせでも、同様に簡潔な形が得られる。
2.3.2 隠れ層のデルタ
隠れ層の誤差項は、次の層(出力層または別の隠れ層)のすべてのニューロンの誤差項を、その層から現在の層への重みで重み付けして総和し、現在の活性化関数の導関数を乗じることで得られる。すなわち、\( \delta^{(l)} = ( (W^{(l+1)})^T \delta^{(l+1)} ) \odot f'(z^{(l)}) \) と表される。この操作により、出力誤差が逆方向に伝播していく。
2.4 重み更新式
各層の重みは、その層の入力(前層の出力)と現在の層の誤差項の積によって勾配が計算される。すなわち、\( \frac{\partial L}{\partial W^{(l)}} = a^{(l-1)} \cdot (\delta^{(l)})^T \) となる。更新式は \( W^{(l)} \leftarrow W^{(l)} - \eta \cdot \frac{\partial L}{\partial W^{(l)}} \) で与えられる。ここで \(\eta\) は学習率である。
3 実装上の考慮点
3.1 活性化関数の選択
活性化関数は、誤差逆伝播法の挙動に大きな影響を与える。シグモイド関数やtanh関数は飽和領域で勾配がゼロに近づくため、勾配消失を引き起こしやすい。一方、ReLU関数は正の領域で勾配が常に1であるため、この問題を軽減する。ただし、ReLUは負の領域で勾配がゼロになる「ニューロンの死亡」問題があるため、Leaky ReLUやELUなどの変種も用いられる。
3.2 学習率と最適化手法
学習率は重み更新のステップサイズを決定する。値が大きすぎると発散し、小さすぎると収束が遅くなる。単純な確率的勾配降下法(SGD)に加え、モーメンタム、AdaGrad、RMSProp、Adamなどの適応的学習率最適化手法が広く使われる。これらは勾配の履歴やスケーリングを利用して、より安定かつ高速な収束を実現する。
3.3 初期化と正則化
3.3.1 重み初期化の影響
重みの初期値は学習の成功に重要な役割を果たす。すべての重みをゼロにすると対称性が破れず、学習が進行しない。また、値が大きすぎると勾配爆発、小さすぎると勾配消失を引き起こす。Xavier初期化(tanh/シグモイド向け)やHe初期化(ReLU向け)は、各層の入力数や出力数に応じて分散を調整することで、順伝播および逆伝播の値が適切な範囲を保つように設計されている。
3.3.2 過学習対策
過学習を防ぐため、L1/L2正則化(重み減衰)やドロップアウトが用いられる。L2正則化は損失関数に重みの二乗和を加え、重みを小さく保つ。ドロップアウトは学習時にランダムにニューロンを無効化することで、ネットワークの協調適応を防ぎ、汎化性能を向上させる。
4 利点と限界
4.1 主な利点
誤差逆伝播法の最大の利点は、多層ネットワークの勾配を計算機的に効率よく計算できる点である。全パラメータに対する勾配を一度の順伝播と逆伝播で得られるため、大規模ネットワークでも実用的な学習が可能。また、任意の微分可能な活性化関数や損失関数と組み合わせて使用でき、汎用性が高い。
4.2 勾配消失・爆発問題
深いネットワークでは、逆伝播の過程で勾配が指数関数的に減少(消失)または増加(爆発)する問題が生じる。これは連鎖律による微分値の積み重ねに起因する。勾配消失は学習の停滞を引き起こし、勾配爆発は数値的不安定性をもたらす。活性化関数の工夫や、バッチ正規化、残差接続などの手法で対処される。
4.3 計算効率と収束性
誤差逆伝播法は計算効率が高いものの、特に大規模データや深いネットワークでは学習に長い時間を要する。また、損失関数が非凸であるため、局所最適解や鞍点に陥る可能性がある。確率的勾配降下法を用いることで、ある程度これらの問題を緩和できるが、収束性は初期値やハイパーパラメータに依存する。
5 歴史と発展
5.1 初期の研究(1960-1980年代)
誤差逆伝播法の基礎となる連鎖律の応用は、1960年代に制御理論や最適化の分野で提案されていた。1970年代には、WerbosやParkerらによってニューラルネットワークへの適用が試みられたが、当時は計算資源の制約やシングル層パーセプトロンの限界から注目されなかった。1986年、Rumelhart、Hinton、Williamsによる論文「Learning representations by back-propagating errors」が発表され、このアルゴリズムが広く認知されるようになった。
5.2 現代の改良と応用
1990年代以降、勾配消失問題への対策(LSTM、ReLUなど)や、計算機性能の向上(GPU)により、誤差逆伝播法はディープラーニングの中核技術として確立された。AlexNet(2012)以降、画像認識、自然言語処理、音声認識など多様な分野で成功を収めている。近年では、自動微分フレームワーク(TensorFlow、PyTorchなど)により、実装の容易さと柔軟性が大きく向上した。
6 関連トピック
6.1 自動微分との関係
自動微分(Automatic Differentiation, AD)は、プログラムで定義された関数の微分を計算する手法であり、誤差逆伝播法はその一種である。ADは関数を基本演算に分解し、連鎖律を計算グラフ上で適用する。誤差逆伝播法は、逆モードの自動微分(reverse-mode AD)に対応し、多数の入力(重み)に対する少数の出力(損失)の勾配を効率的に計算する。現代の機械学習フレームワークは、この原理を用いてユーザーが定義した任意の微分可能なネットワークに対して自動的に勾配を計算する。
6.2 他の学習アルゴリズムとの比較
誤差逆伝播法以外の学習アルゴリズムとしては、進化的戦略(Evolutionary Strategies)、ヘッセ行列を用いた2次最適化(L-BFGSなど)、局所的なルールによる学習(ヘッブ則)などがある。進化的戦略は勾配を必要としないが、大規模パラメータには非効率的である。2次最適化は収束が速い場合があるが、計算コストが高い。誤差逆伝播法は、勾配を効率的に計算できる点で、特に大規模な深層学習において標準的な手法となっている。ただし、生体ニューラルネットワークの学習メカニズム(例えばSTDP)とは異なる点も指摘されている。