牛顿法
⽜顿法是梯度下降法的进一步发展,梯度下降法利用目标函数的一阶偏导数信息、以负梯度方向作为搜索方向,只考虑目标函数在迭代点的局部性质;而牛顿法不仅使用目标函数的一阶偏导数,还进一步利⽤了目标函数的二阶偏导数,这样就考虑了梯度变化的趋势,因⽽而能更全面地确定合适的搜索方向加快收敛,它具有二阶收敛速度。
但牛顿法主要存在以下两个缺点:
1. 对目标函数有较严格的要求。函数必须具有连续的一、二阶偏导数,海森矩阵必须正定。
2. 计算相当复杂,除需要计算梯度以外,还需要计算二阶偏导数矩阵和它的逆矩阵。计算量、存储量均很⼤,且均以维数N的平⽅增加,当N很⼤时这个问题更加突出。
2. 计算相当复杂,除需要计算梯度以外,还需要计算二阶偏导数矩阵和它的逆矩阵。计算量、存储量均很⼤,且均以维数N的平⽅增加,当N很⼤时这个问题更加突出。
⽜顿法虽然收敛速度快,但是计算过程中需要计算目标函数的二阶偏导数,计算复杂度较⼤。而且有时目标函数的海森矩阵无法保持正定,从而使⽜顿法失效。为了克服这两个问题,⼈们提出了拟⽜牛顿法。这个方法的基本思想是:不⽤⼆阶偏导数而构造出可以近似海森矩阵或者海森矩阵的逆的正定对称阵,在拟⽜顿的条件下优化⽬目标函数。不同的构造⽅法就产生了不同的拟牛顿法。也有人把“拟牛顿法”翻译成“准牛顿法”,其实都是表示“类似于牛顿法”的意思,因此只是对算法中用来计算搜索方向的海森矩阵(或海森矩阵的逆)作了近似计算罢了。
拟牛顿法
当特征特别多的时候,求海森矩阵的逆矩阵,运算量是非常大且慢,考虑用一个n阶矩阵来替代,这就是拟牛顿法的基本思路。