梯度下降

机器学习中很多其他技术也是基于梯度下降,梯度下降不仅是神经网络的基础。

目标实现手写数字识别

  • (28 * 28 像素的矩阵 = 784 个网络输入层神经元)
  • 每个像素的灰度值在0~1之间,决定了784个神经元的激活值。
  • 下一层神经元的激活值=上一层中所有激活值的加权和 + bias
  • 最后把这个作为参数传给sigmoid之类的压缩函数

图像分类,大量数据学习—>实际上是在找某个函数的最小值。

权重与偏差bias

  • 权重像连接的强弱
  • 偏置bias表明神经元是否更容易被激活

单个样本

  • 开始,完全随机地初始化所有的权重和偏置值,网络的表现会很糟糕

  • 这时,你需要定义一个cost function(代价函数)来告诉电脑 差的平方的和,称之为训练单个样本的代价

    image-20200525183747949

  • 网络对图像正确分类时,这个平方和就很小。

多个样本

  • 接下来你要考虑几万个样本中,代价的平均值—平均代价用来平均网络有多遭,电脑应该有多内疚

要记得,网络本身不过是个函数,有784个输入值,即像素的灰度,最后的输出值是10个数字。

所有的权重和偏置值为函数的参数

代价函数

image-20200525184329829

怎么优化网络?

只告诉它有多遭没用,还得告诉它,怎么改变这些权重和偏置值,才能有进步?
  • 一元函数时,求导直接算出来
  • 多元函数时,怎么办?
    • 此时要问,在输入空间内沿哪个方向走,输出才下降的最快?哪个方向下山最快
  • 对于13000元的代价函数时,还求导吗?怎么办?
    • 先随机选1个值,考虑往哪边,函数值才会变小,只能得到局部最小。
    • image-20200525184835146

函数的梯度指出了函数的最陡增长方向 ,是说按梯度的方向走,函数值增长得越快,反之,降低得最快

梯度向量的长度代表了最陡的斜坡到底有多陡

我们有办法能算出这个梯度向量,它能够指出哪个方向下山最快 。(知道了这一点,具体细节掌握不牢靠也无所谓)

image-20200525185524882

你只要懂得让函数值最小的方法,不过是先计算梯度,再按梯度反方向走一小步下山,然后循环。

处理13000个参数的函数也是一个道理

想象把想象把13000个权重和偏置值都放到一个列向量里,那么代价函数的负梯度也不过是个向量。

image-20200525185903663

负梯度

  • 正负号表示输入向量的这一项该调大还是调小
  • 每一项的相对大小告诉我们改变哪个值的影响更大

调整某个权重,对输出的影响就比调整别的权重大得多。

代价函数的梯度向量

神经网络本身是一个带784个输入和10个输出的函数,由各种加权和定义的。

反向传播

这个计算梯度的算法是神经网络的核心,我们叫做反向传播back propagation(下个视频的内容)

单个训练数据会具体让每个权重和每个偏置产生怎样的变化?

网络学习,实质上就是让代价函数的值最小

梯度下降法:按照负梯度的倍数,不停调整函数输入值的过程。是一种让你收敛到代价函数图中某1个局部最小值的地方。

负梯度的每1项告诉了我们2件事情:

  • image-20200525190651388

  • 每一项的相对大小更告诉了我们改变哪个值的影响较大。

函数的梯度向量,可以理解为各个权重偏置的相对重要度。标记出了改变哪个参数 性价比最高。改变了哪些权重,影响力最大。

https://www.bilibili.com/video/BV1Ux411j7ri