9.每次更好,就是最好:后端之非线性优化

1.本次介绍了在后端优化中的利用迭代的方式,不断调整参数,使残差最小的非线性优化的方法。Loss一般会构建为观测与预测的差值的平方,所以构建的问题一般为最小二乘问题。

2.牛顿法的基本思想是利用函数的二阶导数信息来逼近函数,从而找到目标函数的极小值点。它的迭代公式如下:
x_new = x_old - H^(-1) * ∇f(x_old)
其中,x_new是迭代后的新解,x_old是迭代前的旧解,H是目标函数f的海森矩阵(二阶导数矩阵),∇f(x_old)是目标函数f在x_old处的梯度向量。
牛顿法的优点是收敛速度快,通常可以达到二次收敛。但它也有一些限制,比如需要计算目标函数的二阶导数,对于大规模问题计算海森矩阵可能会非常耗时。


高斯牛顿法是一种特殊的牛顿法,用于解决非线性最小二乘问题。最小二乘问题通常用于拟合函数曲线到一组数据点的情况,其中目标函数是参数的非线性函数。
高斯牛顿法通过近似目标函数的雅可比矩阵来避免计算海森矩阵。它的迭代公式如下:
x_new = x_old - (J^T * J)^(-1) * J^T * r(x_old)
其中,x_new是迭代后的新解,x_old是迭代前的旧解,J是目标函数f的雅可比矩阵(一阶导数矩阵),r(x_old)是目标函数f在x_old处的残差向量。
高斯牛顿法的优点是相比于传统的牛顿法,它不需要显式地计算目标函数的二阶导数,从而减少了计算量。它适用于非线性最小二乘问题,并且通常具有较好的收敛性能。

3.列文伯格-马夸而特法结合了高斯牛顿法和梯度下降法的思想。
列文伯格-马夸而特法的迭代公式如下:
x_new = x_old - (J^T * J + λI)^(-1) * J^T * r(x_old)
其中,x_new是迭代后的新解,x_old是迭代前的旧解,J是目标函数f的雅可比矩阵,r(x_old)是目标函数f在x_old处的残差向量,λ是一个控制步长的参数,I是单位矩阵。
列文伯格-马夸而特法的关键在于通过引入参数λ来调整步长。当λ取较小值时,迭代过程接近高斯牛顿法;当λ取较大值时,迭代过程接近梯度下降法。通过不断调整λ的大小,可以在迭代过程中平衡收敛速度和稳定性,以达到更好的优化效果。

4.BA算法:
①构建BA残差:
在BA中,首先需要计算重投影误差,即将观测到的图像特征点与预测的投影点之间的差异。这些差异构成了BA的残差项。

②构建增量线性方程:
基于BA残差,通过对重投影误差进行线性化,得到雅可比矩阵。然后,根据雅可比矩阵,构建增量线性方程,其中包括待优化的相机位姿参数和三维场景结构参数。

③边缘化求解位姿增量:
由于BA问题中的参数通常是高度相关的,可以利用增量线性方程中的矩阵稀疏性进行边缘化。边缘化是通过将部分参数从线性方程中消除,从而获得较小的子问题。在这一步骤中,通常会先求解相机位姿的增量。

④求解3D点增量:
在获得位姿增量后,根据边缘化的结果,可以进一步求解三维场景结构的增量。

⑤更新变量:
通过将位姿增量和场景结构增量应用于原始参数,更新相机位姿和三维点的估计值。

⑥判断收敛:
判断是否满足终止条件,例如达到最大迭代次数或误差满足指定阈值。如果未达到终止条件,则返回第一步继续迭代计算。

思考:

1.LM法与GN法与梯度下降法的区别与联系是什么?
区别:
1.迭代方式:梯度下降法是一种迭代式的优化方法,每次迭代更新参数时,通过朝着梯度的反方向进行更新。而LM法和GN法是基于最小二乘的优化方法,通过迭代地线性化目标函数并求解线性方程组来更新参数。
2.二阶信息利用:GN法和LM法都利用了二阶信息,但在不同方面体现。GN法利用了目标函数的一阶导数(雅可比矩阵),通过近似海森矩阵来进行参数更新。而LM法在GN法的基础上,通过引入阻尼参数来平衡一阶和二阶信息,从而提高算法的鲁棒性和收敛性能。
3.收敛性:梯度下降法在某些情况下可能收敛到局部最优解,而GN法和LM法在合理的初始化下通常能够收敛到全局最优解。
联系:
1.目标函数:梯度下降法、GN法和LM法都可以用于求解目标函数的最优化问题,但应用的领域和问题类型可能有所不同。
2.优化思想:GN法和LM法都是通过迭代优化参数,通过不断更新参数来最小化目标函数。梯度下降法也是一种迭代优化方法,但其更新策略略有不同,是朝着梯度的反方向进行更新。
3.非线性问题:GN法和LM法通常应用于求解非线性最小二乘问题,例如BA(Bundle Adjustment)等。梯度下降法可以应用于线性和非线性问题,但在非线性问题中可能需要更多的迭代次数。

2.矩阵分解如何求解最小二乘问题
①奇异值分解(Singular Value Decomposition,简称SVD):
SVD是一种常用的矩阵分解方法,可以将一个矩阵分解为三个矩阵的乘积:A = UΣV^T,其中A是待分解的矩阵,U和V是正交矩阵,Σ是一个对角矩阵。在最小二乘问题中,可以将系数矩阵A进行SVD分解,然后利用分解后的矩阵求解最小二乘问题。
具体步骤如下:
对系数矩阵A进行奇异值分解:A = UΣV^T
将问题转化为最小化残差的平方和:||Ax - b||^2 = ||UΣV^Tx - b||^2
由于U和V是正交矩阵,可以将问题转化为最小化新的残差的平方和:||ΣV^Tx - U^Tb||^2
通过求解平方和最小化的问题,可以得到参数向量x的估计值。
②QR分解:
QR分解是将一个矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积:A = QR。在最小二乘问题中,可以对系数矩阵A进行QR分解,然后利用分解后的矩阵求解最小二乘问题。
具体步骤如下:
对系数矩阵A进行QR分解:A = QR
将问题转化为最小化残差的平方和:||Ax - b||^2 = ||QRx - b||^2
由于Q是一个正交矩阵,可以将问题转化为最小化新的残差的平方和:||Rx - Q^Tb||^2
通过求解平方和最小化的问题,可以得到参数向量x的估计值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值