AI入门:反向传播和梯度下降

上一节中提到,分类函数是神经网络正向传播的最后一层。但是如果要进行训练,我们只有预测结果是不够的,我们需要拿预测结果跟真实值进行对比,根据对比结果判断我们的神经网络是不是够好。
也就是说我们需要在分类函数后面增加一层:计算损失值。计算损失值这一层才是神经网络真正的最后一层。有了损失值之后,我们反过来优化每一层的参数值----这就是反向传播。反向传播中的优化过程需要使用梯度下降算法。典型的梯度下降算法有SGD、Momentum、AdaGrad、RMSProp、Adam等,下面进行简单的描述:
1、SGD是最典型的梯度下降算法,但是如果函数的梯度比较小的时候,SGD算法就会变得很慢。
2、Momentum是在SGD上增加了动量。简单来说,开始的时候算法可能处于一个坡度比较大的位置,这时进行梯度下降会有一个比较快的“速度”,然后算法到了梯度很小的位置,Momentum算法会带着部分原有的“速度”,冲过这段梯度很小区域。
3、AdaGrad算法是梯度自适应算法。也就是在梯度很大的时候走慢一点,梯度小的时候走快一点。理论上AdaGrad算法是很好的,但实际表现不是很好。
4、RMSProp算法是Momentum和AdaGrad算法的集合体,不仅能自适应梯度,还增加了动量,所以实际效果是很好的。
5、Adam算法是RMSProp算法的改进版本。Adam算法是目前最常用的优化算法。

TensorFlow、PyTorch等机器学习软件框架都已经实现好了反向传播的功能,我们只需要调用这些优化算法即可。我们需要知道的是,反向传播是整个神经网络得以优化的前提。至此,我们介绍了一个最简单的神经网络的结构。下图就是该网络的总体结构。

在这里插入图片描述注:第一节中的两段代码对应的函数都是确定的,所以我们只是为了让x达到某个值,使y达到最小值。这个过程中不需要计算损失值,所以也就不需要反向传播。但PyTorch实现的代码中使用backward(),这只是计算导数罢了,跟反向传播时自动优化参数无关。但是对于一个未知的函数,我们用神经网络去模拟该函数,则要用损失值去判断该网络对未知函数的拟合程度。损失值越小,拟合的越好,准确率就越高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值