机器学习笔记二—梯度下降和反向传播

系列文章目录

  1. 机器学习笔记一—机器学习基本知识
  2. 机器学习笔记二—梯度下降和反向传播
  3. 机器学习笔记三—卷积神经网络与循环神经网络
  4. 机器学习笔记四—机器学习可解释性
  5. 机器学习笔记五—机器学习攻击与防御
  6. 机器学习笔记六—模型压缩

目录

  • 系列文章目录
  • 前言
  • 一、梯度
  • 二、梯度下降
    • 1.梯度下降的方法
    • 2.随机梯度下降(Stochastic Gradient Descent)
    • 3.小批量梯度下降(Mini-Batch Gradient Descent)
  • 三、反向传播(Backpropagation)
    • 1.链式法则(Chain Rule)
    • 2.前向传播(Forward pass)和反向传播(Backward pass)
  • 总结

前言

   在上一节中已经完成了机器学习的总体概念学习,这一节则具体学习一下梯度下降(Gradient Descent)和计算梯度的方法——反向传播


一、梯度

   一个函数某个点的梯度是来源于函数的导数或者偏导数
机器学习笔记二—梯度下降和反向传播_第1张图片
θ \theta θ0点的梯度为L对 θ \theta θ1 θ \theta θ2求导构成的二维向量

二、梯度下降

1.梯度下降的方法

   梯度下降是沿着梯度相反的方向走,即更新参数的时候是用原参数减去学习率乘以梯度

η \eta η为学习率
   由公式可知,当 η \eta η大的时候更新的幅度大, η \eta η小的时候更新的幅度较大,所以在实际做实验的时候我们要调整适当的学习率大小,学习率过小会导致损失函数下降缓慢,学习率过大会导致损失函数先大幅度下降然后逐渐趋于平稳或者来回震动,而当学习率特别大的时候甚至会让损失迅速上升。
机器学习笔记二—梯度下降和反向传播_第2张图片
   一般来说学习率设置为0.1或者0.01,比较好用的几个优化器:Adagrad,Adam等等他们可以在训练过程中自动调节学习率的大小
例如:Adagrad
机器学习笔记二—梯度下降和反向传播_第3张图片
机器学习笔记二—梯度下降和反向传播_第4张图片
其中 η \eta ηt是学习率

2.随机梯度下降(Stochastic Gradient Descent)

机器学习笔记二—梯度下降和反向传播_第5张图片    之前提到的梯度下降都是批量梯度下降(Batch Gradient Descent, BGD)的方法,更新参数的时候使用整个数据集(所有的example)去计算梯度,每次使用全部数据计算梯度去更新参数,批量梯度下降法梯度下降会较慢,而随机梯度下降的方法则是只随机选取一个数据计算梯度并更新参数,在选取一个数据更新参数,也就是一个example更新一次参数,梯度下降速度会较快,但效果不一定好。

3.小批量梯度下降(Mini-Batch Gradient Descent)

   小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中,也就是对于m个样本,我们采用x个example来迭代计算,更新参数,实际上我们现在常用的都是小批量梯度下降方法,也就是我们实际操作是使用的batch,当batch是整个数据集时就是批量梯度下降,当batch等于一时就是随机梯度下降,batch等于x是就是批量为x的小批量梯度下降。

三、反向传播(Backpropagation)

机器学习笔记二—梯度下降和反向传播_第6张图片

   根据前边的知识,我们可以很轻松的算出函数L的梯度,但是在实际的神经网络中参数量会非常巨大,计算梯度也会非常困难,所以我们采取反向传播的方式来迅速的计算梯度

1.链式法则(Chain Rule)

机器学习笔记二—梯度下降和反向传播_第7张图片

2.前向传播(Forward pass)和反向传播(Backward pass)

机器学习笔记二—梯度下降和反向传播_第8张图片

   C是损失函数的结果

   根据链式法则我们可以通过求z对w的偏导和C对z的偏导来求出C对与w的偏导,而对于z对于w的偏导是非常好计算的
机器学习笔记二—梯度下降和反向传播_第9张图片

   同理对于每一层来说z对于w的偏导计算都是非常简单的,就是这一层w对应的输入,这也就是 前向传播(Forward pass) 机器学习笔记二—梯度下降和反向传播_第10张图片

   而C对z的偏导相对来时是比较难计算的,这时我们可以在进一步做变换,将C对z的偏导进一步变换为:

∂ a ∂ z ∂ C ∂ a \frac{\partial a}{\partial z}\frac{\partial C}{\partial a} zaaC
   然后进行进一步的计算

机器学习笔记二—梯度下降和反向传播_第11张图片

   然后同样的出现一部分非常好计算的数据和一部分难以计算的部分,现在我们假设我们已知

∂ C ∂ z ′ 和 ∂ C ∂ z ′ ′ \frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}} zCzC
   那么我们能够很容易的计算得到
∂ C ∂ z \frac{\partial C}{\partial z} zC
所以问题是 ∂ C ∂ z ′ 和 ∂ C ∂ z ′ ′ \frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}} zCzC究竟该怎样计算。
   现在我们假设第二层已经是最后一层,那么计算 ∂ C ∂ z ′ 和 ∂ C ∂ z ′ ′ \frac{\partial C}{\partial z^{'}}{和}\frac{\partial C}{\partial z^{''}} zCzC就会变得很简单
机器学习笔记二—梯度下降和反向传播_第12张图片

   但是现在的问题是实际上这个第二层并不是最后一层,但是实际上这个网络一定有最后一层,即第n层,那么根据第n层我们就可以很简单的计算出第n-1层的偏导,根据第n-1我们就可以计算n-2直到我们计算到第一层,也就是我们要计算的

∂ C ∂ w \frac{\partial C}{\partial w} wC
   即梯度,也就是说我们计算的时候实际上是从后向前计算,将计算结果向初始反向传递,即反向传播(Backward pass)

总结

   对于梯度下降方法进行了进一步的学习明确了三种梯度梯下降方式和求梯度的方法——反向传播

你可能感兴趣的:(机器学习,机器学习,深度学习,人工智能)