神经网络反向传播推导
时间: 2023-12-16 22:02:39 浏览: 93
神经网络反向传播是一种常用的训练神经网络的方法,其核心思想是通过计算误差梯度来更新神经网络的权重和偏置。下面是神经网络反向传播的推导过程:
假设我们有一个三层神经网络,其中输入层有 $i_l$ 个神经元,隐含层有 $j_m$ 个神经元,输出层有 $k_n$ 个神经元。我们用 $w_{ji}$ 表示连接输入层第 $i$ 个神经元和隐含层第 $j$ 个神经元之间的权重,用 $w_{kj}$ 表示连接隐含层第 $j$ 个神经元和输出层第 $k$ 个神经元之间的权重。用 $b_j$ 表示隐含层第 $j$ 个神经元的偏置,用 $b_k$ 表示输出层第 $k$ 个神经元的偏置。用 $a_j$ 表示隐含层第 $j$ 个神经元的输入,用 $z_j$ 表示隐含层第 $j$ 个神经元的输出,用 $a_k$ 表示输出层第 $k$ 个神经元的输入,用 $z_k$ 表示输出层第 $k$ 个神经元的输出。用 $y_k$ 表示输出层第 $k$ 个神经元的期望输出,用 $o_k$ 表示输出层第 $k$ 个神经元的实际输出。用 $E$ 表示网络的误差。
1.计算输出层误差
$$
\delta_k = \frac{\partial E}{\partial a_k} = \frac{\partial E}{\partial o_k} \frac{\partial o_k}{\partial a_k} = (y_k - o_k) f'(a_k)
$$
其中,$f'(a_k)$ 表示输出层第 $k$ 个神经元的激活函数的导数。
2.计算隐含层误差
$$
\delta_j = \frac{\partial E}{\partial a_j} = \frac{\partial E}{\partial z_j} \frac{\partial z_j}{\partial a_j} = \sum_{k=1}^{k_n} \delta_k w_{kj} f'(a_j)
$$
3.计算输出层权重和偏置的梯度
$$
\frac{\partial E}{\partial w_{kj}} = \delta_k z_j \\
\frac{\partial E}{\partial b_k} = \delta_k
$$
4.计算隐含层权重和偏置的梯度
$$
\frac{\partial E}{\partial w_{ji}} = \delta_j x_i \\
\frac{\partial E}{\partial b_j} = \delta_j
$$
5.更新权重和偏置
$$
w_{kj} \leftarrow w_{kj} + \eta \frac{\partial E}{\partial w_{kj}} \\
b_k \leftarrow b_k + \eta \frac{\partial E}{\partial b_k} \\
w_{ji} \leftarrow w_{ji} + \eta \frac{\partial E}{\partial w_{ji}} \\
b_j \leftarrow b_j + \eta \frac{\partial E}{\partial b_j}
$$
其中,$\eta$ 表示学习率。
阅读全文