誤差逆伝播はなぜ逆方向に進むのか

Why back propagation goes backward

誤差逆伝播はなぜ逆方向に進むのか

ニューラルネットワークの学習に使われる誤差逆伝播法は、なぜ逆方向に誤差を伝播するのか。合成関数の微分をチェインルールで計算するなら、順方向でもよさそうに思える。しかし、順方向で同じ項を何度も計算すると計算量がノード数の二乗に膨らむ。逆方向に進めば各ノードが局所的な項を一度だけ伝えるだけで済み、線形時間で勾配が求まる。この記事は、順方向が非効率である理由を明らかにし、逆伝播の必然性を基礎から説明する。

各ノードは上流の隣人に自分が何を間違えたかを伝える。しかし、このアルゴリズムがこうなっている理由は、素朴な順方向伝播の解だとノード数の二乗の実行時間になってしまうからだ。
  1. omnicognate

    ニューラルネットワークにおける誤差逆伝播の詳細には詳しくないのですが、私の理解ではこれは自動微分/アルゴリズム微分の応用であり、それにはフォワードモードとリバースモードの2つがあります。

    リバースモードは計算を通じて状態を保持する必要があるため実装が難しいですが、スケーリングの仕方が異なります。フォワードモードはO(入力数)であるのに対し、リバースモードはO(出力数)です。ニューラルネットワークの訓練では、入力が膨大で通常は出力が1つ(訓練対象の損失)なので、リバースモードが望ましいのは明らかでしょう。

    (実際、記事が別の言葉で言っているのもまさにこれのようです。)

  2. akssri

    ここでの直感は悪くないのですが、数学は「爆発」といった不正確な用語を使った手ぬるいものです。

    しかし、最適性を意味すると取るなら、その主張もまた正しくありません。リバースモードAD(誤差逆伝播)は一般にスカラー出力に対して非常に効率的ですが(より一般的には n_inputs >> n_outputs の場合)、この特定のスカラー出力ケースでさえ厳密に最適というわけではありません。

    例えば、次元が (1, N, 1, N, 1) の4層MLPを考えてみましょう。ここでのリバースモードは約3N回の乗算を行いますが、最適は約2Nです。勾配蓄積の最適な順序は一般のDAG上では実際NP困難ですが、そのような「クロスモード」ADは実装がかなり難しく、わずかな利得のためにあまり見られないようです。

    Griewank-Waltherの優れた書籍は、これとさらに多くのことについて優れた参考文献です。

    https://epubs.siam.org/doi/book/10.1137/1.9780898717761

    彼らはまた、混合モードを備えたADOL-Cというライブラリも持っていました。

  3. dkrylov

    本当の理由は、誤差逆伝播が基本的に行列の乗算であり、左から右へ掛ける方が右から左へ掛けるよりずっと安上がりだからです。左側にはスカラーの損失項があり、右側から行列同士の乗算を行う代わりに、ネットワークを通じてベクトルと行列の乗算を続けることになるからです。

この日のほかの記事

2026-09-21