反向传播是一种用于训练人工神经网络的有效算法,特别是在前馈神经网络中。通过确定应调整哪些权重和偏差,有助于最小化成本函数。在每个时期,模型都会通过调整权重和偏差进行学习,通过向下移动到误差的梯度来最小化损失。因此,它涉及两种最流行的优化算法,例如梯度下降或随机梯度下降。计算反向传播算法中的梯度有助于最小化成本函数,并且可以通过使用微积分中称为链式法则的数学规则来导航神经网络的复杂层来实现。

mermaid-diagram-2024-08-29-220245.png

反向传播算法通过两个不同的通道工作,它们是:前传、后传。

假设神经元具有 sigmoid 激活函数,在网络上执行前向和后向传递。同时假设 y 的实际输出为 0.5,学习率为 1。现在使用反向传播算法执行反向传播。

mermaid-diagram-2024-08-29-220356.png

实现前传:

在开始计算前向传播之前,我们需要知道两个公式:$a_j=\sum\left(w_i, j * x_i\right)$

$y_j=F\left(a_j\right)=\frac{1}{1+e^{-a j}},y _{ i }-$为输出值,F表示激活函数【sigmoid激活函数为此处使用),它将加权和转换为输出值。为了计算前向传播,我们需要计算 $y_3$、$y_4$ 和 $y_5$ 的输出。

如上图中,$y_3$是 $h_1$,$y_4$ 是 $h_2$,$y_5$是$O_3$

$a_j=\sum\left(w_{i, j} * x_i\right)$ 为了找到 $y_3$,我们需要考虑它的传入边及其权重和输入。这里的传入边来自 $X_1$ 和 $X_2$。

在$h_1$节点,$\begin{aligned} a_1 & =\left(w_{1,1} x_1\right)+\left(w_{2,1} x_2\right) \\ & =(0.2 * 0.35)+(0.2 * 0.7) \\ & =0.21\end{aligned}$

一旦我们计算了 $a_1$ 值,我们现在可以继续查找 $y_3$ 值:

$$ \begin{aligned} & y_j=F\left(a_j\right)=\frac{1}{1+e^{-a j}} \\ & y_3=F(0.21)=\frac{1}{1+e^{-0.21}} \\ & y_3=0.56 \end{aligned} $$

同样,在 $h_2$ 处查找 $y_4$ 的值,在 $O_3$ 处查找 $y_5$ 的值,

$$ \begin{aligned} & a 2=\left(w_{1,2} * x_1\right)+\left(w_{2,2} * x_2\right)=(0.3 * 0.35)+(0.3 * 0.7)=0.315 \\ & y_4=F(0.315)=\frac{1}{1+e^{-0.315}} \\ & a 3=\left(w_{1,3} * y_3\right)+\left(w_{2,3} * y_4\right)=(0.3 * 0.57)+(0.9 * 0.59)=0.702 \\ & y_5=F(0.702)=\frac{1}{1+e^{-0.7012}}=0.67 \end{aligned} $$

请注意,我们的实际输出是 0.5,但我们得到的是 0.67。为了计算误差,我们可以使用以下公式: