バックプロパゲーションの数値計算
バックプロパゲーションは、ニューラルネットワークの学習において連鎖律を用いて各重みの勾配を効率的に計算する手法です。
ネットワーク構造
- 入力層:$x = 2$
- 隠れ層:$w_1 = 0.5$、$b_1 = 0.3$
- 出力層:$w_2 = 0.8$、$b_2 = 0.1$
- 目標値:$t = 1$
Step 1: 順伝播(Forward Propagation)
隠れ層の入力値:
$z_1 = w_1 \cdot x + b_1 = 0.5 \times 2 + 0.3 = 1.3$
隠れ層の出力値:
$h_1 = \sigma(z_1) = \frac{1}{1+e^{-1.3}} = \frac{1}{1+e^{-1.3}}$
$e^{-1.3} \approx 0.2725$ より:
$h_1 = \frac{1}{1+0.2725} = \frac{1}{1.2725} \approx 0.7858$
出力層の入力値:
$z_2 = w_2 \cdot h_1 + b_2 = 0.8 \times 0.7858 + 0.1 = 0.7286$
出力層の出力値:
$y = \sigma(z_2) = \frac{1}{1+e^{-0.7286}}$
$e^{-0.7286} \approx 0.4826$ より:
$y = \frac{1}{1+0.4826} = \frac{1}{1.4826} \approx 0.6745$
シグモイド関数の性質
シグモイド関数の微分は:
$\frac{d\sigma(z)}{dz} = \sigma(z)(1-\sigma(z))$
この性質を利用して効率的に勾配を計算できます。
Step 2: 誤差の計算
二乗誤差関数:
$E = \frac{1}{2}(y-t)^2 = \frac{1}{2}(0.6745-1)^2 = \frac{1}{2}(-0.3255)^2 = 0.0530$
Step 3: 逆伝播(Backpropagation)
出力層での誤差勾配:
$\frac{\partial E}{\partial y} = y - t = 0.6745 - 1 = -0.3255$
出力層の活性化関数の微分:
$\frac{\partial y}{\partial z_2} = y(1-y) = 0.6745 \times (1-0.6745) = 0.6745 \times 0.3255 = 0.2195$
出力層での局所勾配:
$\delta_2 = \frac{\partial E}{\partial z_2} = \frac{\partial E}{\partial y} \cdot \frac{\partial y}{\partial z_2} = -0.3255 \times 0.2195 = -0.0714$
連鎖律の適用
重み$w_2$の勾配は:
$\frac{\partial E}{\partial w_2} = \frac{\partial E}{\partial z_2} \cdot \frac{\partial z_2}{\partial w_2} = \delta_2 \cdot h_1$
Step 4: 重み$w_2$の勾配計算
出力層の入力$z_2 = w_2 \cdot h_1 + b_2$より:
$\frac{\partial z_2}{\partial w_2} = h_1 = 0.7858$
したがって:
$\frac{\partial E}{\partial w_2} = \delta_2 \cdot h_1 = -0.0714 \times 0.7858 = -0.0561$