前向传播(Forward Propagation) 和 后向传播(Backward Propagation) 是神经网络训练的两个关键步骤,它们共同作用来调整网络中的权重,从而最小化误差。让我们分开解释这两个概念:
1. 前向传播(Forward Propagation)
前向传播是神经网络从输入到输出的计算过程。在这个过程中,输入数据逐层通过网络中的神经元和激活函数,最终生成输出结果。
流程:
- 输入层:接收输入数据。
- 隐藏层:每个神经元根据输入数据、相应的权重和偏置计算出一个线性组合的结果,并通过激活函数得到非线性输出。
- 输出层:网络最后一层输出预测值。
例如,对于简单的二分类问题,输出可能通过 sigmoid
函数得到一个介于0和1之间的概率值。
例子:
设一个简单的神经网络有一层隐藏层,激活函数使用 sigmoid
函数:
- 计算隐藏层:
z1 = W1 * x + b1
,a1 = sigmoid(z1)
- 计算输出层:
z2 = W2 * a1 + b2
,y_hat = sigmoid(z2)
前向传播的目的是通过当前的权重和偏置计算出网络的输出。
2. 后向传播(Backward Propagation)
后向传播是在前向传播之后进行的,它是用来计算损失函数关于神经网络中每个参数的梯度,以便更新权重。通过后向传播,网络调整自身权重以最小化输出误差。
流程:
- 损失函数:首先,根据前向传播得到的输出和真实标签计算损失(例如,均方误差、交叉熵等)。
- 计算梯度:从输出层开始,逐层计算每个权重和偏置的梯度。通过链式法则,梯度会反向传播到每一层。
- 更新权重:使用优化算法(如梯度下降)根据计算出的梯度更新网络的权重和偏置。
例子:
如果损失函数为 L
,神经网络的权重为 W
,那么后向传播的目的是计算:
这些梯度用于更新参数:
其中 η
是学习率。
3. 前向传播与后向传播的关系
- 前向传播:根据当前权重计算出网络的预测结果。
- 后向传播:通过损失函数计算误差,使用链式法则反向传播误差,计算出每个参数的梯度,并更新权重。
这两个步骤在每次迭代中循环进行,直到损失函数达到一个理想的值,也就是网络收敛为止。
总结:
- 前向传播:数据从输入到输出,计算神经网络的预测值。
- 后向传播:计算误差,反向计算梯度,用于调整网络权重,使得网络的预测更加准确。