学习《机器学习100天》第29天 反向传播法究竟做什么? | 深度学习,第3章

github上的项目,跟着一起学习

项目地址    https://github.com/MLEveryday/100-Days-Of-ML-Code

Youtube频道3Blue1Brown关于神经网络的第3部分,这个视频主要介绍了偏导数和反向传播法。

B站视频在这里。(https://www.bilibili.com/video/av16577449)

    以下是视频笔记:

反向传播算法,是用来求上一期讲到的复杂到爆的梯度的

梯度向量每一项的大小,是在告诉大家,代价函数对每个参数有多敏感。

学习《机器学习100天》第29天 反向传播法究竟做什么? | 深度学习,第3章

假设想要最后的输出为2,增加2的**值(前一层所有**值的加权和,加上一个偏置,再通过sigmoid这类的函数),

学习《机器学习100天》第29天 反向传播法究竟做什么? | 深度学习,第3章

想增加**值,有三个方法:增加偏置、增加权重,改变上一层的**值

学习《机器学习100天》第29天 反向传播法究竟做什么? | 深度学习,第3章

想要最后输出2,还需要最后一层其他数字的**变弱,每个数字想**变弱,就需要调整上一层,每个数字期待的上一层调整方式是不同的,把所有这些调整加起来。得到一串对倒数第二层改动的变化量。重复这一过程,改变影响倒数第二层神经元**值的相关参数。

从后一层到前一层,一直循环到第一层

放眼大局,我们只是在讨论,单个训练样本对所有权重偏置的影响

如果我们只关注“2”的要求,会导致把所有数字识别为2,所以需要对其他所有的训练样本,同样地过一遍反向传播,记录下每个样本想怎样修改权重与偏置,求平均值,微调大小,不严格来说,是上期中的代价函数的负梯度

样本太多,梯度下降每迈出一步,用到所有样本太慢,所以把样本分成minibatch(含有一部分样本),计算一个minibatch来作为梯度下降的一步。