梯度方向是函数局部上升最快的方向
定义
- 对函数\(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\)加上正则项.最后在直接求导即可得到梯度下降法的更新表达式