梯度
首先来看单变量连续函数导数的定义:
它表示函数f(x)在某点的切线斜率或者变化率。对于多变量的连续函数,我们则关注它的偏导数。我们以二元函数f(x,y)为例,
- 表示y保持不变,f(x,y)沿x轴的变化率;
- 表示x保持不变,f(x,y)沿着y轴的变化率。
- f(x,y)沿着方向的方向导数为:
记【梯度】、【方向向量】,则:
显然,当梯度方向与方向向量的方向平行(同向或者反向)时,方向导数的取大值或者最小值。具体地,梯度方向[同向]是函数f(x)增长最快的方向;负梯度方向[反向]则是函数f(x)减速最快的方向!
梯度下降法
梯度下降法(Gradient descent)又称为最速下降法(Steepest descent),是求解无约束最优化问题的一种常用的方法,在机器学习、深度学习领域有着广泛的应用。具体来说,假设f(x)是定义在上具有一阶连续偏导数的函数,对于如下的优化问题:
如果其存在closed-form解,则直接求解即可;否则一般可以采用梯度下降法进行求解,其更新过程为:
牛顿法
- 方程求解
并非所有的方程都存在求根公式,这种情况下可以利用牛顿法,通过迭代的方式来获取方程的数值解。假定我们要求解方程 :
其中f(x)是关于x的至少一阶可导的函数,它在点x0处的一阶泰勒展开式为:
方程f(x)=0,若忽略高阶小项,则等价于求解:
,
- 优化问题
假设f(x)是定义在上关于x的至少二阶可导的函数,对于如下的优化问题:
它在点x0处的二阶泰勒展开式为:
其中,H表示Hessian矩阵,其第i行第j列的元素为:
函数f(x)在定义域内存在极值的必要条件是:存在一点x,使得f '(x)=0。于是,若f(x)在定义域内某点取得极值,则必有:
Newton法迭代次数更少?
| 红色:牛顿法; 绿色:梯度下降法
- 从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
- 从直观理解,梯度下降法每次只从当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
- 从算法收敛的角度,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快!
参考文献
[1]. https://zhuanlan.zhihu.com/p/37524275
[2]. https://www.zhihu.com/question/19723347
[3]. https://en.wikipedia.org/wiki/Newton%27s_method