Backpropagation Details
反向传播(Backpropagation)
反向传播是一种用于训练人工神经网络的算法,特别是在深度学习中很常用。它通过计算神经网络的预测结果与实际结果之间的误差,进而调整网络中的权重和偏置,以最小化预测误差。
工作原理:
前向传播:将输入数据传递到网络的每一层,经过一系列的线性变换和非线性激活函数,最终输出预测结果。
计算误差:将预测结果与实际结果进行比较,计算损失函数(如均方误差或交叉熵)的值,即误差。
反向传播误差:通过链式法则(链式求导),将误差从输出层逐层向回传播,计算每个神经元对最终误差的贡献(即偏导数)。
更新权重:根据计算出的偏导数,使用梯度下降算法或其他优化方法调整网络的权重和偏置,以减少误差。
例子:
假设我们有一个简单的三层神经网络用于分类任务:
输入层:有两个节点,表示两个输入特征。
隐藏层:有两个节点。
输出层:有一个节点,表示二分类问题的预测结果。
步骤:
前向传播:
输入两个特征 ()。
权重 和偏置 (b) 将输入线性组合后传递给隐藏层节点,并应用激活函数(如 ReLU 或 Sigmoid)。
隐藏层输出传递给输出层,再次经过线性组合和激活函数后,输出预测值 。
计算误差:
使用损失函数计算实际值 和预测值 之间的误差。例如,如果损失函数是均方误差(MSE),则误差为:
反向传播误差:
通过链式求导,计算输出层到隐藏层、再到输入层的各个权重的偏导数。这些偏导数表示每个权重对最终误差的贡献。
更新权重:
使用梯度下降法调整权重: 其中, 是学习率。
通过不断进行多次前向传播和反向传播,神经网络会逐步学会减少误差,从而提高预测的准确性。
这个过程可以扩展到更深的神经网络和更多的复杂问题。
如何计算
在反向传播中,(即损失函数对权重 的偏导数)是通过链式法则计算得出的。这个偏导数告诉我们权重的变化会对损失函数产生多大的影响,从而帮助我们更新权重,减小误差。
1. 损失函数对输出的导数
假设我们使用均方误差(MSE)作为损失函数,定义为:
其中, 是神经网络的预测值, 是真实值。
对 求导数,得到:
2. 输出对权重的导数
假设神经网络输出 是通过线性组合输入和权重得到的,即:
其中, 是权重, 是输入, 是偏置。
现在,我们对 求导数:
这意味着输出 对权重的导数等于输入 。
3. 链式法则
现在,我们可以通过链式法则,将损失函数对权重的偏导数计算出来:
代入之前的公式,得到:
这表示,权重的更新是基于预测误差 和输入 之间的乘积。
4. 权重更新
最后,使用梯度下降法更新权重:
其中, 是学习率,决定了权重更新的步长。
总结
可以通过以下步骤得出:
先计算损失函数对输出的导数 。
再计算输出对权重的导数 。
最后通过链式法则将这两个导数相乘,得到损失函数对权重的偏导数。
这个过程可以扩展到更加复杂的神经网络,每一层的权重都可以通过类似的方式进行更新。
Last updated