1行定義
連鎖律とは、関数の中に別の関数が入った合成関数の微分を、外側の関数の微分と内側の関数の微分の積として求める規則のことです。
くわしく
連鎖律は、高校数学で習う「合成関数の微分」の規則です。ニューラルネットワークの学習で使う誤差逆伝播法は、この規則を繰り返し使って勾配を求めます。
規則の中身
yがuの関数で、uがxの関数のとき、xを少し動かしたときのyの変化の割合は、次の積で求めます。
dy/dx = (dy/du) × (du/dx)
歯車にたとえてみます。xの歯車が1回転するとuの歯車が3回転し、uが1回転するとyが2回転するとします。このときxが1回転すると、yは3 × 2 = 6回転します。変化の倍率が掛け算で伝わる、というのが連鎖律です。
計算例
y = (2x + 1)²を、x = 1のときについて微分します。u = 2x + 1とおくと、y = u²です。
dy/du = 2uです。x = 1のときu = 3なので、6です。du/dx = 2です。- よって
dy/dx = 6 × 2 = 12です。
展開したy = 4x² + 4x + 1を微分するとdy/dx = 8x + 4で、x = 1を入れても12になり、結果が一致します。
ニューラルネットワークでの使われ方
ニューラルネットワークは、層ごとの計算を何重にも重ねた大きな合成関数です。誤差逆伝播法は、出力層の誤差から出発し、各層の微分を順に掛けながら入力層側へ勾配を伝えます。途中の結果を使い回すので、すべての重みの勾配を効率よく求められます。PyTorchなどのフレームワークは、この計算を自動で行います(自動微分)。
一方で、勾配が微分の積になることは弱点にもなります。1より小さい値を何度も掛けると勾配消失問題が、1より大きい値を掛け続けると勾配爆発問題が起きます。
覚え方
「変化の倍率は掛け算でつながる」と覚えます。
G検定での出題
出題のされ方
誤差逆伝播法が連鎖律で出力層側から勾配を求める流れ、各層の微分の積になるため勾配消失問題や勾配爆発問題が起きる理由、簡単な合成関数の微分の計算が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| 連鎖律このページの用語 | 関数の中に別の関数が入った合成関数の微分を、外側の関数の微分と内側の関数の微分の積として求める規則 |
| 誤差逆伝播法 | ニューラルネットワークの出力の誤差をもとに、連鎖律を使って出力層側から入力層側へ順に、各重みの勾配を効率よく計算する方法 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
y = 3u、u = x²のとき、x = 3におけるyのxについての微分dy/dxの値は18である。
答えを見る
答え ◯ 正しい
連鎖律より、dy/dx = (dy/du) × (du/dx) = 3 × 2xです。x = 3を入れると3 × 6 = 18になります。
-
連鎖律では、合成関数の微分を、外側の関数の微分と内側の関数の微分の和として求める。
答えを見る
答え × 誤り
和ではなく積です。dy/dx = (dy/du) × (du/dx)のように、各段階の変化の倍率を掛け合わせます。
-
PyTorchなどの深層学習のフレームワークは、順伝播の計算の過程を記録し、連鎖律を使って勾配を自動で計算する。
答えを見る
答え ◯ 正しい
自動微分と呼ばれる機能です。計算の過程を計算グラフとして記録し、逆向きにたどりながら各段階の微分を掛け合わせて勾配を求めます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目15 誤差逆伝播法)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (6.5.1 Computational Graphs、6.5.2 Chain Rule of Calculus)
- David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, Learning representations by back-propagating errors, Nature 323, 533–536 (1986)
- PyTorch Tutorials, A Gentle Introduction to torch.autograd