非线性最小二乘法
简单的最小二乘问题:
令目标函数的导数为零,然后解的最优值,就像求二元函数的极值一样:
它们可能是极大、极小或鞍点处的值。如果为简单的线性函数,那么这个问题就是简单的线性最小二乘问题,否则在无法知道目标函数全局性质的情况下可以采用迭代的方式:
- 给定某个初始值
- 对于地
次迭代,寻找一个增量
,使得
达到极小值
- 若
足够小则停止
- 否则,令
,返回第二步
一阶和二阶梯度法
考虑次迭代,假设在
处,想要得到增量
,那么最直接的方式就是将目标函数在
附近进行泰勒展开:
其中是
关于
的一阶导数(雅可比(Jacobian)矩阵),
则是二阶导数(海塞(Hessian)矩阵)
如果保留泰勒展开的一阶梯度,那么取增量为反向的梯度,即可保证函数下降:
当然这只是个方向,通常我们还要再指定一个步长。
保留二阶梯度信息的情况下,增量方程为:
求右侧等式关于的导数并令它为零,得到:
求解这个线性方程,就得到了增量,称为牛顿法。
高斯牛顿法
思想是将进行一阶泰勒展开,不是目标函数
而是
,否则就变成牛顿法了
这里为
关于
的导数,为
的列向量。根据前面的框架,当前的目标是寻找增量
,使得达到最小。为了求
,我们需要解一个线性的最小二乘问题:
将上述目标函数对求导:
求上式关于的导数,并令其为零:
得到:
这个方程是关于变量
的线性方程组,我们称它为增量方程。把左边的稀疏定义为
,右边的定义为
,那么上式变为:
对比牛顿法,高斯牛顿法用作为牛顿法中二阶Hessian矩阵的近似,从而省略了计算
的过程。求解增方程是整个优化问题的核心所在。
- 给定某个初始值
- 对于地
次迭代,求出当前的雅可比矩阵
和误差
- 求解增量方程:
- 若
足够小,则停止。否则,令
,返回第二步
为了求解,需要
矩阵可逆,但是
却只有半正定性,可能出现
为奇异矩阵或者病态(ill-condition)的情况,此时增量的稳定性差。
补充资料
泰勒公式

