Gradient——梯度的理解

梯度方向是函数局部上升最快的方向


定义

  • 对函数\(f(x, y, z)\)而言
  • 方向导数:各个方向的导数,函数,标量
    • 关于x, y, x的偏导数: \(\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y}, \frac {\partial f}{\partial z}\)
    • 对特定的某一点\((x_{0}, y_{0}, z_{0})\)而言,改点的偏导数是将对应的值带入后得到的数值,是一个确定的数值
  • 梯度:各个方向导数组成的向量,每一维为一个方向导数,矢量
    • 梯度: \((\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y}, \frac {\partial f}{\partial z}\)),一个向量
    • 梯度方向表示函数局部上升最快的方向
    • 梯度的模\(|\nabla f|\)表示变化率

直观理解

  • 一维函数中,代表参数(自变量)的点在一条直线上运动,所以梯度的方向有正向和负向
  • 二维函数中,代表参数(自变量)的点在一个平面上运动,所以梯度的方向有无数种,但都在二维平面上
  • 三维函数中,代表参数(自变量)的点在一个空间中运动,所以梯度的方向有无数种,但都在三维空间中
  • 无论何时,梯度方向是函数上升最快的方向,指明参数朝着这个方向移动时,函数上升的速度最快
  • 梯度下降法中,求取梯度的意义就在于知道函数上升或者下降最快的方向

关于梯度的模\(|\nabla f|\)

  • 梯度的方向与参数(自变量)的变化相关,梯度的模\(|\nabla f|\)与函数变化相关
  • 梯度的模可以理解为变化率,也就是在梯度对应的方向上移动单位长度后,函数能上升的数值大小为\(|\nabla f|\)(当然,这是按照当前点周围的极小的曲面拟合出来的平面计算得到的数值,不是真正的函数数值)
  • 梯度下降法中,梯度的方向指明了参数移动的方向,梯度的模暗示着参数移动时函数的增量大小
  • 但为什么梯度下降法中,保留着梯度的模?而不是将梯度向量变成单位向量?梯度的模有什么特殊的意义吗?
    • 一个猜想:在梯度下降法时,如果超参数步长\(\alpha\)不变的话,每次迭代时参数(自变量)真正移动的长度是\(\alpha\times |\nabla f|\),此时随着迭代次数的增加,\(|\nabla f|\)值会越来越小(可以证明,因为越来越接近最地点,函数变化率越来越小),这会导致\(\alpha\times |\nabla f|\)越来越小,从而减少震荡?
    • 梯度的模的意义可用数学证明,移动梯度的模的\(\alpha\)倍是最优的,详情参考我的博客ML——最优化方法-无约束参数优化方法中用一阶泰勒展开推导梯度下降法的过程
      • 基本思路,将函数在参数的某个值\(\theta_{t} + \delta\)处一阶泰勒展开,然后对\(\delta\)加上正则项.最后在直接求导即可得到梯度下降法的更新表达式

参考博客