众所周知,最小二乘法通过最小化误差平方和获得最佳函数。有时候你可能产生疑问,为什么不能通过其他方式获得最优函数,比如说最小化误差的绝对值的和?本文中,我将会从概率的角度解释最小二乘法的依据(参考自andrew ng 《机器学习课程》 第三讲)。最小二乘问题可以分为线性最小二乘和非线性最小二乘两类,本文的目标是介绍两种经典的最小二乘问题解法:高斯牛顿法与莱文贝格-马夸特方法。实际上,后者是对前者以及梯度下降法的综合。
最小二乘法的概率解释(probabilistic interpretation)
以线性回归为例,假设最佳函数为 y=\mathbf{\theta}^T\mathbf{x} (\theta,x为向量), 对于每对观测结果(x^{(i)},y^{(i)}),都有y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}
高斯-牛顿法(Guass-Newton Algorithm)
高斯-牛顿法是在牛顿法基础上进行修改得到的,用来(仅用于)解决非线性最小二乘问题。高斯-牛顿法相较牛顿法的最大优点是不需要计算二阶导数矩阵(Hessian矩阵),当然,这项好处的代价是其仅适用于最小二乘问题。如下是其推导过程:
最小二乘方法的目标是令残差的平方和最小:f(\theta) = \frac{1}{2}\sum_{i=0}^mr(\mathbf{x_i})^2
其中J_r(\theta)=\begin{bmatrix}\frac{\partial r_j}{\partial\theta_i}\end{bmatrix}_{j=1,\dots,m;i=1,\dots,n}=\begin{bmatrix} \nabla_\theta r(x_1)^T \\ \nabla_\theta r(x_2)^T \\ \vdots\\ \nabla_\theta r(x_m)^T \\\ \end{bmatrix}
H = \begin{bmatrix}\frac{\partial^2f}{\partial \theta^2} \end{bmatrix}=\sum\begin{bmatrix}r_i\frac{\partial^2r_i}{\partial\theta^2}+(\frac{\partial r_i}{\partial \theta})(\frac{\partial r_i}{\partial \theta})^T \end{bmatrix}
这里我们可以看到高斯-牛顿法相对于牛顿法的不同就是在于采用了近似的Hessian矩阵降低了计算的难度,但是同时,舍去项仅适用于最小二乘问题中残差较小的情形。
将梯度向量,Hessian矩阵(近似)带入牛顿法求根公式,得到高斯-牛顿法的迭代式:\theta_i = \theta_{i-1}-{(J_r^TJ_r)}^{-1}J_r^Tr
Levenberg-Marquart 算法
与牛顿法一样,当初始值距离最小值较远时,高斯-牛顿法的并不能保证收敛。并且当J_r^TJ_r近似奇异的时候,高斯牛顿法也不能正确收敛。Levenberg-Marquart 算法是对上述缺点的改进。L-M方法是对梯度下降法与高斯-牛顿法进行线性组合以充分利用两种算法的优势。通过在Hessian矩阵中加入阻尼系数\lambda来控制每一步迭代的步长以及方向:(H+\lambda I)\epsilon = -J_r^Tr
- 当\lambda增大时,H+\lambda I趋向于\lambda I,因此\epsilon趋向于 -\lambda J_r^Tr,也就是梯度下降法给出的迭代方向;
- 当\lambda减小时,H+\lambda I趋向于H,\epsilon趋向于-H^{-1}J_r^Tr,也就是高斯-牛顿法给出的方向。
\lambda的大小通过如下规则调节,也就是L-M算法的流程:
- 初始化 \theta_0,\lambda_0。
- 计算当前点\theta_i处的残差向量r_i与雅各比矩阵J_r。
- 通过求解(H_i+\lambda I)\epsilon = -J_r^Tr_i求解迭代方向\epsilon。
- 计算\theta_i^\prime=\theta_i+\epsilon点处的残差向量r_i^\prime。
- 如果\|r_i\prime\|^2>\|r_i\|^2?,即残差没有下降,则更新\lambda = \beta\lambda,增大\lambda重新回到第三步重新求解新的\epsilon。如果残差下降,则更新\theta_{i+1} = \theta_i+\epsilon ,到第二步,并且降低\lambda=\alpha\lambda,增大迭代步长。
在曲线拟合实践中,\alpha通常选取 0.1,\beta选取10。
相比于高斯-牛顿法,L-M算法的优势在于非常的鲁棒,很多情况下即使初始值距离(局部)最优解非常远,仍然可以保证求解成功。作为一种阻尼最小二乘解法,LMA(Levenberg-Marquart Algorithm)的收敛速度要稍微低于GNA(Guass-Newton Algorithm)。L-M算法作为求解非线性最小二乘问题最流行的算法广泛被各类软件包实现,例如google用于求解优化问题的库 Ceres Solver。后续,我会通过最小二乘圆拟合的案例给出L-M算法的实现细节。
参考资料
1.maximum likelihood regression-university of manitoba
3.Using Gradient Descent for Optimization and Learning
4.Numerical Optimization using the Levenberg-Marquardt Algorithm-Los Alamos National Laboratory
5.Circular and Linear Regression Fitting Circles and Lines by Least Squares – Nikolai Chernov – UAB
写的有问题吧?高斯牛顿是泰勒公式的一阶展开,没有汉森矩阵
您好,谈一下我的理解,高斯-牛顿法是牛顿法的一种改型,其特点是省略了二阶导数矩阵的计算,采用近似的矩阵取代hessian 矩阵。方法本身还是二阶的。而非对泰勒公式的一阶展开。
不对吧,牛顿法是对x泰勒展开,高斯-牛顿法是对\theta泰勒展开,两者原理不一样
高斯法解决的是一般优化问题,为了近似精度,将目标二次展开,误差为三次项;
高斯牛顿决绝的最小二乘问题,因为会对残差项平方,所以残差一阶展开,误差为二次项,平方后,误差就是四次项了,这就是高斯牛顿限定在最小二乘的原因
很棒!