【Pytorch】6. 反向传播

前向反馈

前向反馈是神经网络用来将输入变成输出的流程。如下图,利用输入向量,对其应用一系列模型和sigmoid函数,这些图组合后成为高级的非线性图

在这里插入图片描述

再看一遍这个过程,对输入向量先应用W1,然后进行sigmoid,再应用W2,再进行sigmoid,然后最后W3,sigmoid,就得到了y^,这个过程就是前向反馈

在这里插入图片描述

反向传播

和之前一样,神经网络将产生误差函数,最终我们需要最小化该误差函数。

现在,我们准备好训练神经网络了。为此,我们将使用一种方法,叫做反向传播。简而言之,反向传播将包括:

  • 进行前向反馈运算。
  • 将模型的输出与期望的输出进行比较。
  • 计算误差。
  • 向后运行前向反馈运算(反向传播),将误差分散到每个权重上。
  • 更新权重,并获得更好的模型。
  • 继续此流程,直到获得很好的模型。

听起来比较复杂,实际上要简单些。

例如图中蓝色的点就是一次前向反馈中的到的点,反向传播就像是问这个点,“你希望我做什么?”点说“我希望这条分界线离我近一点”,表现在权重上就是更新权重,得到w1’ w2’。
在这里插入图片描述

这个过程就像是从误差之巅下来,每次下来一点就得到一个更好一点的模型。
在这里插入图片描述

对于更复杂的神经网络来说,这个过程是这样的,输入向量经过两个模型的预测(这部分参考前面的【Pytorch】5. 神经网络结构),然后结合之后预测为蓝色的点,但是这个预测结果并不好,我们希望这条线能更往点那边靠靠,可以看到上面哪个模型的预测效果并不好,我们要做的就是减小来自上面这个模型的权重

在这里插入图片描述

对于一个多层感知机,也就是神经网络来说,它的反向传播的梯度如下

在这里插入图片描述

链式法则

链式法则就是用于复合函数的求导,它就是一系列倒数的乘积。这个法则的作用就是帮助我们进行反向传播计算梯度。因为前向反馈就是多种函数的复合,反向传播就是计算出每一步的导数,也就是把每一层的偏导数求出来,然后相乘就可以了

在这里插入图片描述

再重复一下,前向反馈的过程:

在这里插入图片描述

反向传播就是计算出误差函数对于每个权重的导数,试着计算一下W11的偏导,如图:

在这里插入图片描述

然后顺便提一下,sigmoid 函数有一个完美的导数,我们可以在下面的计算中看到。这将使我们的反向传播步骤更加简洁。

在这里插入图片描述

练习代码:

git clone https://github.com/udacity/deep-learning-v2-pytorch.git

打开 intro-neural-networks > student_admissions 文件夹中的 StudentAdmissions.ipynb

本系列笔记来自Udacity课程《Intro to Deep Learning with Pytorch》

全部笔记请关注微信公众号【阿肉爱学习】,在菜单栏点击“利其器”,并选择“pytorch”查看

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值