《视觉slam十四讲》第六讲课后习题

1.证明线性方程Ax=b当系数矩阵A超定时,最小贰乘解为x=(A^{T}A)^{-1}A^{T}b

首先明白什么是系数矩阵超定:当方程数多于未知数个数时,也就是说对应系数矩阵的行数大于列数,这样该方程组被称为超定方程组。超定方程组在大多数情况下没有古典意义下的解,所以需要最小二乘解,也就是一种广义解。

最小二乘解是为了使残差e=\left \| b-Ax \right \|_{2}^{2}最小。首先证明其充分性:假设x^{*}=(A^{T}A)^{-1}A^{T}b为残差的解,存在解x,使得e_{x}=\left \| b-Ax \right \|_{2}^{2}<e_{x^{*}}=\left \| b-Ax^{*} \right \|_{2}^{2},则假设\Delta x = x- x^{*},

e_{x}=\left \| b-Ax \right \|_{2}^{2}=\left \| b-A(x^{*}+ \Delta x) \right \|_{2}^{2}=(b-Ax^{*} - A \Delta x,b-Ax^{*} - A \Delta x)\\ =(b-Ax^{*},b-Ax^{*})-2(A \Delta x, b-Ax^{*})+(A \Delta x, A \Delta x)\\ =\left \| b-Ax^{*} \right \|_{2}^{2}-2 \Delta x^{T}A^{T}(b-Ax^{*}) +\left \| A \Delta x \right \|_{2}^{2}=\left \| b-Ax^{*} \right \|_{2}^{2}+\left \| A \Delta x \right \|_{2}^{2}

因为\left \| A \Delta x \right \|_{2}^{2}\neq 0,所以e_{x}>e_{x^{*}},这与原假设相悖,则x^{*}是方程Ax=b的解。

必要性:现在来直接求这个解。

原式写成矩阵形式:O=\vec{b}-A \vec{x},假设这方程的第i个分量为:

o_{i}=b_{i}-\sum_{k=1}^{n}a_{ik}x_{k},(i=1,2,3...m)

I=I(x_{1},x_{2},...,x_{n})=\left \| o \right \|_{2}^{2}=\sum _{i=1}^{m}(b_{i}-\sum _{k=1}^{n}a_{ik}x_{k})^{2}

则这个多元函数进行求极值,不难发现:

\frac{\partial I}{\partial x_{j}}=-2\sum _{i=1}^{m}(b_{i}- \sum_{k=1}^{n}a_{ik}x_{k})a_{ij}=0,j=1,2,...,n

即:

\sum _{k=1}^{n}(\sum_{i=1}^{m} a_{ij}a_{ik})x_{k}=\sum_{i=1}^{m}a_{ij} b_{i},j=1,2,...,n

写成矩阵形式:

A^{T}Ax=A^{T}b或者是x=(A^{T}A)^{-1}A^{T}b

 

2.调研最速下降法、牛顿法、高斯牛顿法和列文伯格—马夸尔特方法个有什么优缺点。除了我们举的Ceres库和g2o库,还有哪些常用的优化库。

最速下降法比较直观,算法十分简单,比较直观,但是缺点是这种算法比较贪心,容易呈现锯齿状下降,从而局部收敛速度下降。而牛顿法在最速下降的基础上引入二阶导数,这样就处理了最速下降法一阶导数为0的情况,但是二阶求导运算量不小。高斯牛顿法则对牛顿法进行了简化,避免了二阶求导,但是容易产生病态方程。列文伯格—马夸尔特算法在高斯牛顿法引入阻尼项使其不那么病态。

除了Ceres库和g2o库,还有NLopt库、slam++库等等。

 

3.为什么高斯牛顿的增量方程系数可能不正定?不正定有什么几何含义?为什么在这种情况下解就不稳定了?

因为增量方程系数是一个二阶求导的海森矩阵。举证属于一种向量到向量的映射关系的描述,这矩阵的不正定意味着增量方程对向量迭代方向的不确定。当一阶导数趋于零也就是最优点时,计算机在进行小值运算是容易出现精度缺失的情况,所以容易锯齿化,然后二阶运算会将这种震动状态放大,解就非常不稳定。

 

4.Dogleg是什么?它与高斯牛顿法以及列文伯格—马夸尔特法有何异同?

Dogleg属于Trust Region优化方法,即用置信域的方法在最速下降法和高斯牛顿法之间进行切换(将二者的搜索步长及方向转化为向量,两个向量进行叠加得到新的方向和置信域内的步长),相当于是一种加权求解。

 

5.阅读Ceres的教学材料以更好地掌握其用法。

读啊

 

6.阅读g2o自带文档,你能看懂它吗?

这基本看不懂,可以学学:https://www.cnblogs.com/gaoxiang12/p/5304272.html

 

7.更改曲线拟合实验中的曲线模型,并用Ceres和g2o优化...

改y.data.push_back里的函数就行

 

你可能感兴趣的:(习题)