赞
踩
反向传播(Back Propagation)是一种用于训练神经网络的算法,通过计算神经网络的参数对损失函数的梯度(偏导数),然后通过反向传播,以更新神经网络的权重和偏差,以最小化损失函数,提高神经网络的性能。
以下是反向传播的主要步骤:
1、前向传播(Forward Propagation):通过神经网络的前向传播计算,将输入样本沿着网络的神经元进行计算,最终得到输出结果。这部分不了解可以参考笔者的前一篇文章:机器学习基础之前向传播(Forward Propagation)原理简述_liuqs2023的博客-CSDN博客
2、计算损失函数(Lost Function):将网络的输出结果,与真实标签(Label)进行比较,计算出损失函数的值。损失函数存在多个种类,不同的机器学习任务和模型类型可能会使用不同的损失函数:以下是一些常见的损失函数:
①,均方误差(Mean Square Error,MSE):
计算公式:MSE = (1/N) * Σ(y - y_pred)^2
②,平均绝对误差(Mean Absolute Error,MAE):
计算公式:MAE = (1/N) * Σ|y - y_pred|
③,交叉熵损失(Cross-Entropy Loss):
计算公式(二分类问题):
Cross-Entropy Loss = - (y * log(y_pred) + (1 - y) * log(1 - y_pred))
计算公式(多分类问题,使用softmax激活函数):
Cross-Entropy Loss = - Σ(y * log(y_pred))
以上损失函数计算公式中,y是真实标签,y_pred是模型的预测值。
3、反向传播梯度计算(Backward Propagation of Gradients):从损失函数开始,通过链式法则,将梯度从输出层像输入层反向传播。在每个节点处,计算出每个权重和偏置对损失函数的影响,即损失函数对该参数的梯度。
下图为一个简单的神经网络:仅有一个隐藏层,一个输出层,激活函数为ReLU。
这里通过前向传播计算出成本函数之后,反向计算每一层对应的偏导数(即梯度)。
4、权重与偏差更新:根据计算得到的权重和偏置的梯度,采用梯度下降法来更新网络中的权重与偏置。
梯度下降法(Gradient Descent):是一种常用的优化算法,用于求解损失函数的最优解。它通过沿着损失函数梯度的反方向来更新参数,逐步调整网络中节点的权重和偏差值,直至达到停止条件(如最大迭代次数或梯度变化很小)
梯度下降法的基本思想是先随机初始化参数,然后计算当前参数下的损失函数梯度,并沿着梯度的反方向以一定的步长(学习率)更新参数。这个过程在模型训练过程中不断重复,直到达到停止条件。
5、重复迭代:重复执行上述步骤,直到达到预定的训练停止条件。
反向传播算法的关键是通过链式法则(Chain Rule)来计算每个权重对误差的贡献。它利用网络的层级结构,从输出层向输入层逐层传播梯度,相对较浅的层会受到更早层传来的梯度影响。
通过不断地迭代反向传播算法,神经网络可以不断地调整权重,以最小化损失函数并提高对输入样本的预测准确性。
反向传播算法通过计算损失函数对网络参数的梯度,实现了有效的参数更新。它将梯度从输出层反向传播到网络的每一层,根据每个节点的梯度和操作,更新每个节点的参数。这样,在每次迭代中,网络的参数都会根据损失函数的梯度进行微调,逐渐朝着损失函数最小化的方向更新,从而提高网络的性能。
反向传播算法是深度学习中训练神经网络的核心算法之一,可以用于多层感知机(MLP)、卷积神经网络(CNN)、循环神经网络(RNN)等各种类型的神经网络。现代的深度学习框架已经内置了反向传播算法的实现,使得开发者可以方便地使用并优化神经网络模型。
我是一名神经网络的初学者,以上为本人对反向传播算法的部分解释,如有不准确的地方请见谅,部分解读参考了吴恩达老师的机器学习课程与网络相关资料。
最后,推荐机器学习初学者可以学习吴恩达老师的神经网络课程,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。