梯度下降和牛顿法的推导均与泰勒公式有关,所以先介绍泰勒展开公式:
基本形式:
上面这个迭代形式将应用到下面的梯度下降和牛顿法中。
一、梯度下降
梯度下降法应用一阶泰勒展开,假设L(θ)代表损失函数,目标:最小化损失函数,θ是需要更新的模型参数。下面公式中alpha是步长(学习率),可以直接赋值一个小的数,也可以通过line search。
二、牛顿法
牛顿法应用二阶泰勒展开,目标:最小化损失函数
g定义为雅克比矩阵,矩阵中各元素对应一阶偏导数
Hessian矩阵中各元素对应二阶偏导数。Hessian矩阵的逆同比于梯度下降法的学习率参数alpha,Hessian的逆在迭代中不断减小,起到逐渐缩小步长的效果。
优缺点对比:
1.梯度下降法:通过梯度方向和步长,直接求解目标函数最小值时的参数。
越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。
2.牛顿法:
优点:通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。收敛速度很快。海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。
缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。
牛顿法:二阶收敛,梯度下降:一阶收敛,所以牛顿法更快。
比如想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更长远,所以少走弯路;梯度下降法只考虑局部最优,没有全局思想。)
从几何说,牛顿法是用一个二次曲面拟合你当前所处位置的局部曲面,梯度下降法是用一个平面去拟合当前局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
拟牛顿法
解决牛顿法计算比较复杂的问题,使用正定矩阵近似Hessian矩阵的逆,简化了运算的复杂度。
常用的拟牛顿算法:DFP算法和BFGS算法