最小二乘
说明
本文作为自己学习最小二乘算法的学习笔记,有不对的地方望指正
参考:
书籍 Lecture note. Methods for Non-Linear Least Squares Problems[J]. lecture note.
知乎: https://zhuanlan.zhihu.com/p/38128785.
介绍
最小二乘问题
最小二乘问题是给定一个函数F,找到F的一个自变量,给出这个所谓的目标函数或成本函数的最小值。这里F(x)是f(x)的二次方合的形式,所以称为最小二乘问题。
最小问题涉及到全局最小和局部最小问题:
我们假设代价函数F是可微的,并且泰勒展开式是有效的:
这个展开形式是重要的,后面会多次用到
局部最小的条件就是:
得到一个概念:平衡点(Stationary point)
我们将稳定点带入到1.4a中,可以看出
根据Hessian的定义(1.4c),任何H都是对称矩阵。如果我们要求Hs是正定的,那么它的特征值大于某个数δ> 0(见《Methods for Non-Linear Least Squares Problems》附件A):
所以我们找到局部最小的充要条件:
如果Hs是负定的(negative defifinite),那么xs是局部最大值。如果Hs是不定的(indefifinite)(即它有正的和负的特征值),那么xs就是一个鞍点(saddle point)。
下降法
所有的非线性优化方法都是迭代的:从起点x0开始,该方法产生一系列向量x1, x2,…,它(希望)会收敛到x,给定函数的局部最小化器,参见定义1.3。大多数方法都有强制降序条件的措施:
当x0远离解时,我们希望这个方法产生迭代,迭代会稳定地向x移动。在迭代的这个全局阶段,使错误不增加:
在迭代的最后阶段,当xk接近x∗时,我们希望更快地收敛。
所以下降法的迭代思路就是要找到合理的逼近方向 h 和逼近步长 α:
所以需要计算方向:
以及步长:
The Steepest Descent method
我们可以定义:
找到最快的下降方向:
基于(2.8)的算法我们叫做最陡下降法或梯度法
Newton’s Method
下一次迭代
详情见书《Methods for Non-Linear Least Squares Problems》的2.2部分
Line Search
下降速度为:
Trust Region and Damped Methods
假设我们有一个F在当前迭代x的邻域内的行为模型L:
通常,这个模型是F在x附近的二阶泰勒展开,就像(1.4a)右边的前三项,或者L(h)可能是这个展开的近似。一般来说,只有当h足够小时,这样的模型才是好的。书中介绍两种方法:
trust region method
我们假设我们知道一个正数∆,使得模型在一个半径为∆,以x为中心的球内足够准确,并确定步长为
damped method
代入2.14可以看出:
为了防止步长带来的h太大带来的风险 通过增益比(gain ratio),评估具有计算步骤的模型的质量
最后得到Nielsen (1999)相关策略:
初始:ν = 2。
最小二乘
最小二乘问题可以用一般的优化方法来解决,但我们将提出更有效的特殊方法。在许多情况下,它们比线性收敛性更好,有时甚至是二次收敛性,即使它们不需要实现二阶导数。在本章方法的描述中,我们需要F的导数的公式:假设F有连续的二阶偏导数,我们可以把它的泰勒展开式写成
其中J就是雅克比矩阵(Jacobian)
所以
并且
The Gauss–Newton Method
高斯-牛顿方法是基于向量函数各分量的一阶导数实现的。在特殊情况下,它可以给出二次收敛,就像牛顿法对一般优化所做的那样,参见Frandsen等人(2004)。高斯牛顿法是基于f (f的线性模型)在x附近的分量的线性近似:对于小的||h||,我们可以从泰勒展开式(3.2)中看到
所以
h的方向:
所以对于算法2.4:
The Levenberg–Marquardt Method
Levenberg(1944)和后来的Marquardt(1963)建议使用阻尼高斯-牛顿法。步骤hlm是通过以下修改来定义的:
算法: