バックプロパゲーションと連鎖律 (シグモイド関数)
損失 \(L\) の入力 \(z\) に関する勾配 \(\frac{\partial L}{\partial z}\) を求めるには、連鎖律を適用します。
$\frac{\partial L}{\partial z} = \frac{\partial L}{\partial \sigma} \times \frac{d \sigma}{d z}$
ここで、\(\frac{\partial L}{\partial \sigma}\) は上流から伝わってきた勾配、\(\frac{d \sigma}{d z}\) はシグモイド関数のローカルな勾配(微分値)です。
ステップ1: ローカル勾配 (\(\frac{d \sigma}{d z}\)) の計算
シグモイド関数 \(\sigma(z) = \frac{1}{1 + e^{-z}}\) の微分は、その出力値 \(\sigma(z)\) を使って簡単に計算できるという便利な性質があります。
$\frac{d \sigma}{d z} = \sigma(z) (1 - \sigma(z))$
問題文より、順伝播時の出力は \(\sigma(z=0.4) \approx 0.5987\) です。この値を使って、\(z=0.4\) における微分値を計算します。
$\frac{d \sigma}{d z}\bigg|_{z=0.4} \approx 0.5987 \times (1 - 0.5987)
\approx 0.5987 \times 0.4013 \
\approx 0.240318..$
ステップ2: 連鎖律の適用
上流からの勾配 \(\frac{\partial L}{\partial \sigma} = -1.2\) と、計算したローカル勾配 \(\frac{d \sigma}{d z} \approx 0.2403\) を用いて、\(\frac{\partial L}{\partial z}\) を計算します。
$\frac{\partial L}{\partial z} = \frac{\partial L}{\partial \sigma} \times \frac{d \sigma}{d z} \
\approx -1.2 \times 0.2403 \
\approx -0.28836...$
したがって、入力 \(z\) に関する損失 \(L\) の勾配を小数点以下4桁まで求めると、約 -0.2884 です。
シグモイド関数の勾配の特徴
- シグモイド関数の微分値 \(\sigma(z)(1 - \sigma(z))\) は、\(z=0\) のとき最大値 0.25 をとり、\(|z|\) が大きくなるにつれて 0 に近づきます。
- この性質により、バックプロパゲーションで層を遡るごとに勾配が小さくなりやすく、勾配消失問題を引き起こす一因となります。