100天搞定机器学习|day37 无公式理解反向传播算法之精髓

image  100天搞定机器学习(Day1-34)算法

image

100天搞定机器学习|Day35 深度学习之神经网络的结构网络

image

100天搞定机器学习|Day36 深度学习之梯度降低算法机器学习

本篇为100天搞定机器学习之第37天,亦为3Blue1Brown《深度学习之反向传播算法》学习笔记。函数

上集提到咱们要找到特定权重和偏置,从而使代价函数最小化,咱们须要求得代价函数的负梯度,它告诉咱们如何改变连线上的权重偏置,才能让代价降低的最快。反向传播算法是用来求这个复杂到爆的梯度的。image学习

上一集中提到一点,13000维的梯度向量是不可思议的。换个思路,梯度向量每一项的大小,是在说代价函数对每一个参数有多敏感。以下图,咱们能够这样里理解,第一个权重对代价函数的影响是是第二个的32倍。image3d

咱们先不要管反向传播算法这一堆公式,当咱们真正理解了这算法,这里的每一步就会无比清晰了。imagecdn

咱们来考虑一个尚未被训练好的网络。咱们并不能直接改动这些激活值,只能改变权重和偏置值。但记住,咱们想要输出层出现怎样的变更,仍是有用的。咱们但愿图像的最后分类结果是2,咱们指望第3个输出值变大,其他输出值变小,而且变更的大小应该与如今值和目标值之间的差成正比。举个例子,增大数字2神经元的激活值,就应该比减小数字8神经元的激活值来得重要,由于后者已经很接近它的目标了。imageblog

进一步,就来关注数字2这个神经元,想让它的激活值变大,而这个激活值是把前一层全部激活值的加权和加上偏置值。要增长激活值,咱们有3条路能够走,一增长偏置,二增长权重,或者三改变上一层的激活值。先来看如何调整权重,各个权重它们的影响力各不相同,链接前一层最亮的神经元的权重,影响力也最大,由于这些权重与大的激活值相乘。增大这几个权重,对最终代价函数形成的影响,就比增大链接黯淡神经元的权重所形成的影响,要大上好多倍。imageget

请记住,说到梯度降低的时候,咱们并不仅看每一个参数是增大仍是变小,咱们还看改变哪一个参数的性价比最大。image深度学习

第三个能够增长神经元激活值的方法是改变前一层的激活值,若是全部正权重连接的神经元更亮,全部负权重连接的神经元更暗的话,那么数字2的神经元就会更强烈的激发。咱们也要依据对应权重的大小,对激活值作成比例的改变,咱们并不能直接改变激活值,仅对最后一层来讲,记住咱们期待的变化也是有帮助的。image

不过别忘了,从全局上看,只只不过是数字2的神经元所期待的变化,咱们还须要最后一层其他的每一个输出神经元,对于如何改变倒数第二层都有各自的想法。image

咱们会把数字2神经元的期待,和别的输出神经元的期待所有加起来,做为如何改变倒数第二层的指示。这些期待变化不只是对应的权重的倍数,也是每一个神经元激活值改变量的倍数。image

这其实就是在实现反向传播的理念了,咱们把全部期待的改变加起来,获得一串对倒数第二层改动的变化量,而后重复这个过程,改变倒数第二层神经元激活值的相关参数,一直循环到第一层。咱们对其余的训练样本,一样的过一遍反向传播,记录下每一个样本想怎样修改权重和偏置,最后再去一个平均值。image

这里一系列的权重偏置的平均微调大小,不严格地说,就是代价函数的负梯度,至少是其标量的倍数。神奇吧?image

若是梯度降低的每一步都用上每个训练样本计算的话,那么花费的时间就太长了。实际操做中,咱们通常这样作:首先把训练样本打乱,而后分红不少组minibatch,每一个minibatch就当包含了100个训练样本好了。而后你算出这个minibatch降低的一步,这不是代价函数真正的梯度,然而每一个minibatch会给一个不错的近似,计算量会减轻很多。image

image

能够这样比喻:沿代价函数表面下山,minibatch方法就像醉汉漫无目的的溜下山,可是速度很快。而以前的方法就像细致入微的人,事先准确的算好了下山的方向,而后谨小慎微的慢慢走。image

这就是随机梯度降低image

总结一下:反向传播算法算的是单个训练样本怎样改变权重和偏置,不只说每一个参数应该变大仍是变小,还包括这些变化的比例是多大才能最快地下降cost。真正的梯度降低,对好几万个训练范例都这样操做,而后对这些变化取平均值,这样计算太慢了,咱们要把全部样本分到各个minibatch中,计算每一个minibatch梯度,调整参数,不断循环,最终收敛到cost function的局部最小值上。理解是一回事,如何表示出来又是另外一回事,下一期,咱们一块儿将反向传播算法用微积分的形式推导出来,敬请期待!

image

相关文章
相关标签/搜索