推导多层网络的反向传播算法权重参数更新迭代公式
时间: 2023-06-17 09:08:41 浏览: 196
假设我们有一个 $L$ 层的神经网络,第 $l$ 层的神经元数量为 $n^{[l]}$,输入为 $a^{[l-1]}$,输出为 $a^{[l]}$。我们需要计算每个神经元的权重和偏置参数的梯度,以便更新它们。为了方便,我们用 $z^{[l]}$ 表示第 $l$ 层神经元的加权和,用 $W^{[l]}$ 和 $b^{[l]}$ 分别表示第 $l$ 层神经元的权重和偏置,用 $\sigma^{[l]}$ 表示第 $l$ 层神经元的激活函数。
对于一个训练样本 $(x,y)$,我们定义代价函数为 $J(W,b;x,y)$,其中 $W$ 和 $b$ 分别表示所有神经元的权重和偏置,$x$ 和 $y$ 分别表示输入和输出。我们的目标是最小化代价函数 $J$。
反向传播算法的核心是计算代价函数的梯度。假设我们已经计算出了代价函数 $J$ 对于输出层的加权和 $z^{[L]}$ 的梯度 $\frac{\partial J}{\partial z^{[L]}}$,我们可以通过链式法则依次计算出前面各层的梯度。具体来说,我们需要计算以下梯度:
$$
\frac{\partial J}{\partial z^{[l]}} \quad \text{for} \quad l = L, L-1, ..., 2
$$
根据链式法则,我们有:
$$
\frac{\partial J}{\partial z^{[l]}} = \frac{\partial J}{\partial a^{[l]}} \frac{\partial a^{[l]}}{\partial z^{[l]}}
$$
其中,$\frac{\partial J}{\partial a^{[l]}}$ 表示代价函数 $J$ 对于 $a^{[l]}$ 的梯度,$\frac{\partial a^{[l]}}{\partial z^{[l]}}$ 表示 $a^{[l]}$ 对于 $z^{[l]}$ 的梯度。这两个梯度分别可以用以下公式计算:
$$
\frac{\partial J}{\partial a^{[l]}} = \frac{\partial J}{\partial z^{[l]}} \frac{\partial z^{[l]}}{\partial a^{[l]}} = W^{[l+1]T} \frac{\partial J}{\partial z^{[l+1]}}
$$
$$
\frac{\partial a^{[l]}}{\partial z^{[l]}} = \frac{\partial \sigma^{[l]}(z^{[l]})}{\partial z^{[l]}}
$$
其中,$\frac{\partial z^{[l]}}{\partial a^{[l]}} = W^{[l]}$ 表示 $a^{[l]}$ 对于 $z^{[l]}$ 的梯度。
最终,我们可以得到代价函数 $J$ 对于 $W^{[l]}$ 和 $b^{[l]}$ 的梯度:
$$
\frac{\partial J}{\partial W^{[l]}} = \frac{\partial J}{\partial z^{[l]}} \frac{\partial z^{[l]}}{\partial W^{[l]}} = \frac{\partial J}{\partial z^{[l]}} a^{[l-1]T}
$$
$$
\frac{\partial J}{\partial b^{[l]}} = \frac{\partial J}{\partial z^{[l]}} \frac{\partial z^{[l]}}{\partial b^{[l]}} = \frac{\partial J}{\partial z^{[l]}}
$$
其中,$\frac{\partial z^{[l]}}{\partial W^{[l]}} = a^{[l-1]}$ 和 $\frac{\partial z^{[l]}}{\partial b^{[l]}} = 1$ 分别表示 $W^{[l]}$ 和 $b^{[l]}$ 对于 $z^{[l]}$ 的梯度。
最后,我们可以利用梯度下降算法来更新权重和偏置参数:
$$
W^{[l]} = W^{[l]} - \alpha \frac{\partial J}{\partial W^{[l]}}
$$
$$
b^{[l]} = b^{[l]} - \alpha \frac{\partial J}{\partial b^{[l]}}
$$
其中,$\alpha$ 表示学习率,它决定了参数更新的步长。这样,我们就完成了多层神经网络的反向传播算法的权重参数更新迭代公式的推导。
阅读全文