ニューラルネットワークは関数の連鎖。入力が第1層を通り、第2層を通り、... 最終的に出力になる。では、最初のパラメータを少し変えたら、最終出力はどれだけ変わるか?この問いに答えるのが連鎖律。深層学習の学習アルゴリズム全体が、この1つの公式に依存している。

連鎖律 チェーンルール 合成関数の微分 バックプロパゲーション

連鎖律とは

連鎖律(Chain Rule)

合成関数 y = f(g(x)) の微分:

dy/dx = (dy/du) × (du/dx)

ここで u = g(x)

「外側の微分」×「内側の微分」

y = (3x + 2)² を微分する

u = 3x + 2 とおくと y = u²

dy/du = 2u、du/dx = 3

dy/dx = 2u × 3 = 6(3x + 2)

多変数への拡張

多変数連鎖律

z = f(u, v)、u = g(x, y)、v = h(x, y) のとき

∂z/∂x = (∂z/∂u)(∂u/∂x) + (∂z/∂v)(∂v/∂x)

すべての経路を通じた影響を足し合わせる。

計算グラフ

連鎖律は計算グラフとして視覚化できる。各ノードが演算、エッジが値の流れを表す。

方向 名前 計算内容
入力→出力 フォワードパス 値の計算
出力→入力 バックワードパス 勾配の計算(連鎖律)

バックプロパゲーション

ニューラルネットワークの学習アルゴリズム。連鎖律を使って、出力層から入力層へ向かって勾配を逆伝播させる。

バックプロパゲーションの流れ

1. フォワードパス:入力から出力を計算

2. 損失計算:出力と正解の差を計算

3. バックワードパス:連鎖律で各パラメータの勾配を計算

4. 更新:勾配を使ってパラメータを更新

自動微分

PyTorch、TensorFlow などは自動微分(Automatic Differentiation)を実装している。計算グラフを記録し、連鎖律を自動適用して勾配を計算。

方式 説明
フォワードモード 入力から出力へ微分を伝播 入力変数が少ない場合に効率的
リバースモード 出力から入力へ微分を伝播 出力が少ない場合に効率的(ML向き)

実務での応用

WEB開発での応用

依存関係の追跡:変数の変更が他の変数にどう波及するか。

リアクティブプログラミング:値の変更を依存先に自動伝播(Vue, React)。

AI/MLでの応用

深層学習の学習:すべての勾配計算は連鎖律に基づく。

勾配消失/爆発:層が深いと連鎖律の積が極端に小さく/大きくなる問題。

残差接続:勾配の経路を追加して消失問題を緩和(ResNet)。

勾配チェックポイント:メモリ節約のため一部を再計算。

深掘りリンク