什么是神经网络:反向传播如何更新网络参数

上一篇我们讲了神经网络的前向传播,但是前向传播里神经网络各层的权重参数w和偏置项b都是随机初始化的,这样初始化得到的f=w*x+b,再经由sigmoid(f)或者softmax(f)得到的概率与样本实际值y(x)是有偏差的,怎样能使预测值无限接近样本实际值呢?这时就需要用到反向传播来更新神经网络参数。反向传播主要是通过计算损失函数对网络参数的梯度,然后利用梯度下降等优化方法来更新参数,从而使网络逐步优化,降低预测误差。

反向传播流程如下所示:

1. 前向传播(Forward Propagation)

首先,对输入数据进行前向传播计算,得到网络的输出。这包括以下步骤:

  • 输入层:将输入数据传递给网络。

  • 隐藏层:通过激活函数对输入进行加权和求和,生成隐藏层的输出。

  • 输出层:将隐藏层的输出再次进行加权和求和再次通过激活函数,生成最终的输出。

2. 计算损失(Compute Loss)

使用损失函数(Loss Function)计算模型预测值与真实标签之间的误差。简单介绍一下几个损失函数:

    1) 均方误差(Mean Squared Error,MSE)

均方误差是用于回归任务的常见损失函数,计算预测值与真实值之间的平方差,然后取平均值。

图片

    2) 交叉熵损失(Cross-Entropy Loss)

交叉熵损失通常用于分类任务,特别是在多类别分类问题中。对于二分类问题,交叉熵损失定义如下:

图片

3. 反向传播(Backward Propagation)

反向传播是计算损失函数对网络中各层各个参数的梯度,从输出层向输入层逐层传播梯度的过程。我们的目的就是让损失函数尽可能地小,这样预测值才会无限逼近真实值,怎样让损失函数尽可能地小?求导求梯度,利用梯度下降法,沿着损失函数梯度的负方向更新网络参数,以减小损失函数的值。

3.1 计算输出层的梯度

首先计算输出层的梯度,即损失函数对输出的梯度。其实这里我们说的梯度就是公式里分母对分子的影响程度:

图片

3.2 播梯度至隐藏层

利用链式法则,将输出层的梯度向后传播至隐藏层,计算隐藏层的梯度:

图片

3.3 计算参数梯度

根据隐藏层的梯度,计算网络中所有参数的梯度,包括权重和偏置项。以权重为例,梯度的计算方式如下:

图片

4. 参数更新

利用计算得到的参数梯度,使用梯度下降等优化算法更新网络参数,减小损失函数的值,使得模型更加接近真实数据分布。

新参数=旧参数−学习率×参数梯度

其中,学习率(Learning Rate)是一个超参数,控制每次更新的步长,避免更新过大或过小。学习率过大可能直接跨过梯度最低点,学习率过小迭代次数又会过多影响学习效率。

5. 重复迭代

以上步骤构成了一次迭代。重复进行多次迭代,直到损失函数收敛或达到预设的停止条件,训练过程结束。

具体的有关于反向传播的实例可以看我之前的推送:《机器学习反向传播详细讲解》,这篇文章会带入具体的数值来详细的介绍每一个参数w是如何更新的,相信大家跟着算完一遍以后会对反向传播有一个更深层次的了解~

喜欢的话点个关注哦~会每天分享人工智能机器学习内容,回复关键字可获取相关算法数据及代码~

  • 47
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值