视觉惯性单目SLAM (三)优化方法

1. 最小二乘法

  • 最小二乘法:Least Squares Method (LSM)

  • 函数 y=f(x,θ) y = f ( x , θ )

    • θ θ 为待估参数(可为向量或标量)
    • x,y x , y 常用术语
xy
自变量(independent variable)因变量(dependent variable)
解释变量(explanatory variable)被解释变量(explained varible)
原因变量(causal variable)结果变量(effect variable)
  • 目标函数

    Q=i=0n(yif(xi,θ))2 Q = ∑ i = 0 n ( y i − f ( x i , θ ) ) 2

  • 目标使残差的平方和最小的待估参数

  • 最小二乘法分类

    • 线性(linear or ordinary least squares(OLS)): fθ线θ 函 数 f 是 参 数 θ 的 线 性 函 数 , 即 θ 都 是 一 次 的 , 对 其 求 导 为 常 数

    • 非线性(non-linear least squares): fθ线θ 函 数 f 是 参 数 θ 的 非 线 性 函 数 , 即 θ 不 都 是 一 次 的 , 对 其 求 导 不 都 为 常 数

  • 线性最小二乘的解:是封闭形式(closed-form)的,即 Ax=bx=(ATA)1ATb 对 于 A x = b , 则 有 x = ( A T A ) − 1 A T b (A不一定为方阵)

  • 非线性最小二乘的解:不是封闭形式(closed-form),通常用迭代法求解

  • 超定方程组(overdetermined systems):方程组中:方程的个数 > > 未知量的个数

  • 残差(residuals)()

  • 估计量(estimator):是指计算系数(待估参数)的方程

  • 估计值(estimate):是指估计出来的系数(待估参数)的值

  • MSE(Mean Squared Error):平均预测误差平方和 (评价标准)

    MSE=1mi=0m(ysiyαi)2 M S E = 1 m ∑ i = 0 m ( y i s − y i α ) 2

    ysiyiyαim y i s : y i 的 预 测 值 , y i α 的 实 际 值 , m : 样 本 数

  • MAE(Mean Absolute Error):平均预测误差绝对值 (评价标准)

    MAE=1mi=0m|ysiyαi| M A E = 1 m ∑ i = 0 m | y i s − y i α |

2. 优化方法分类

  • 优 化 方 法 分 类

    • 对于非线性优化问题,不能象线性最小二乘法那样用求多元函数极值的办法来得到参数估计值,而需要采用复杂的优化算法来求解。常用的算法有两类:
    • 搜索算法
    • 迭代算法
  • 搜 索 算 法 的 思 路

    • 按一定的规则选择若干组参数值,分别计算它们的目标函数值并比较大小;选出使目标函数值最小的参数值,同时舍弃其他的参数值;然后按规则补充新的参数值,再与原来留下的参数值进行比较,选出使目标函数达到最小的参数值。如此继续进行,直到选不出更好的参数值为止。以不同的规则选择参数值,即可构成不同的搜索算法。常用的方法有单纯形搜索法、复合形搜索法、随机搜索法等。
  • 迭 代 算 法 的 思 路

    • 是从参数的某一初始猜测值 θ(0) θ ( 0 ) 出发,然后产生一系列的参数点 θ(1)θ(2) θ ( 1 ) 、 θ ( 2 ) … ,如果这个参数序列收敛到使目标函数极小的参数点,那么对充分大的 N N 就可用θ(N) 作为结果。迭代算法的一般步骤是:
        ① 给出初始猜测值θ(0),并置迭代步数 i1 i = 1
        ② 确定一个向量 v(i) v ( i ) 作为第 i i 步的迭代方向。
        ③ 用寻优的方法决定一个标量步长ρ(i),使得 Q(θ(i))Q(θ(i1)) Q ( θ ( i ) ) < Q ( θ ( i − 1 ) ) ,其中 θ(i)θ(i1)+ρ(i)v(i) θ ( i ) = θ ( i − 1 ) + ρ ( i ) v ( i )
        ④ 检查停机规则是否满足,如果不满足,则将i加1再从②开始重复;如果满足,则取θ(i)为结果。
  • 非线性最小二乘法除可直接用于估计静态非线性模型的参数外,在时间序列建模、连续动态模型的参数估计中,也往往遇到求解非线性最小二乘问题。

  • 二阶以上多项式的曲线拟合属于非线性最小二乘法。

  • 迭 代 法 :在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和

    • 梯 度 下 降 是 迭 代 法 :可以用于求解最小二乘问题(线性和非线性都可以)

    • 高 斯 − 牛 顿 迭 代 法 :一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)

    • LevenbergMarquardt(LM) L e v e n b e r g − M a r q u a r d t ( L − M ) 迭 代 法 :用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法。

3. 线性最小二乘法

3.1 简单问题求解步骤

  • 1)列出目标函数
  • 2)对每个待估参数求偏导,并令其等于0
  • 3)把第2)步的所有方程组成一个方程组,解此方程组即可得待估参数的值

3.2 通用问题求解方案

  • 对于超定方程(overdetermined system)
    yi=j=1nxi,jβj(i=1,2,,m) y i = ∑ j = 1 n x i , j β j ( i = 1 , 2 , ⋯ , m )

    1) m m :线性方程组个数
    2)n:未知系数个数( β1,β2,,βn β 1 , β 2 , ⋯ , β n )
    3) m>nxi,1=1 m > n , x i , 1 = 1
    4)矩阵形式:
    Y=Xβ Y = X β

    X=x1,1x2,1xm,1x1,2x2,2xm,2x1,nx2,nxm,n,β=β1β2βn,y=y1y2yn X = [ x 1 , 1 x 1 , 2 ⋯ x 1 , n x 2 , 1 x 2 , 2 ⋯ x 2 , n ⋮ ⋮ ⋱ ⋮ x m , 1 x m , 2 ⋯ x m , n ] , β = [ β 1 β 2 ⋮ β n ] , y = [ y 1 y 2 ⋮ y n ]
  • 这样的超定方程组经常没有解,所以不得不找到参数 β β , 使它更好地拟合方程组
  • 定义目标函数:
    S(β)=i=1m(yij=1nxi,jβj)2=||yXβ||2 S ( β ) = ∑ i = 1 m ( y i − ∑ j = 1 n x i , j β j ) 2 = | | y − X β | | 2
  • 优化目标:
    β^=argminβS(β) β ^ = a r g m i n β ⁡ S ( β )
  • 解的常规方程变为:
    Xβ^=y(XTX)β^=XTyβ^=(XTX)1XTy X β ^ = y ⇒ ( X T X ) β ^ = X T y ⇒ β ^ = ( X T X ) − 1 X T y
  • XTX X T X :格拉姆矩阵(Gramian Matrix),是一个方阵,其性质为:
    • 是半正定的(positive semi-definite matrix)
      G=ATA=aT1aT2aTn[a1a2aTn]=aT1a1aT2a1aTna1aT1a2aT2a2aTna2aT1anaT2anaTnan G = A T A = [ a 1 T a 2 T ⋮ a n T ] [ a 1 a 2 ⋯ a n T ] = [ a 1 T a 1 a 1 T a 2 ⋯ a 1 T a n a 2 T a 1 a 2 T a 2 ⋯ a 2 T a n ⋮ ⋮ ⋱ ⋮ a n T a 1 a n T a 2 ⋯ a n T a n ]

4. 非线性最小二乘法

  • 基 本 思 想 :用线性函数来近似非线性函数,再模仿线性最小二乘法求解

  • 线 非 线 性 最 小 二 乘 法 通 用 描 述

    x=argminx(12i=1m(fi(x))2)=argminx(12||f(x)||2)=argminx(12f(x)Tf(x)) x ∗ = a r g m i n x ⁡ ( 1 2 ∑ i = 1 m ( f i ( x ) ) 2 ) = a r g m i n x ⁡ ( 1 2 | | f ( x ) | | 2 ) = a r g m i n x ⁡ ( 1 2 f ( x ) T f ( x ) )

    • f(x) f ( x ) :为向量函数(即此向量中至少有一个元素是自变量 x x 的函数),它是一个向量
    • fi(x)RnR,i=1,2,,m,它为给定的 m(residualfunction) m 个 残 差 函 数 ( r e s i d u a l f u n c t i o n )
    • x=[x1x2xn]T x = [ x 1 x 2 ⋯ x n ] T
    • mn m ≥ n
  • F() 代 价 函 数 F 可 微 ( 其 值 为 标 量 ) , 其 泰 勒 展 开 式 为 :

    F(x+h)=F(x)+hTg+12hTHh+O(||h||3) F ( x + h ) = F ( x ) + h T g + 1 2 h T H h + O ( | | h | | 3 )

    • g(JacobianMatrix) g 为 梯 度 ( 或 叫 做 只 有 一 行 的 J a c o b i a n M a t r i x ) , 即 一 阶 偏 导 :

      g=F(x)=Fx1(x)Fx2(x)Fxn(x) g = F ′ ( x ) = [ ∂ F ∂ x 1 ( x ) ∂ F ∂ x 2 ( x ) ⋮ ∂ F ∂ x n ( x ) ]

    • hx+hx h 向 量 的 每 个 元 素 为 无 穷 小 , 即 x + h 在 x 的 邻 域 内

    • HHessianMatrix H 为 海 森 矩 阵 ( H e s s i a n M a t r i x ) , 即 二 阶 偏 导
      H=F′′(x)=2Fx1x12Fx2x12Fxnx12Fx1x22Fx2x22Fxnx22Fx1xn2Fx2xn2Fxnxn H = F ″ ( x ) = [ ∂ 2 F ∂ x 1 x 1 ∂ 2 F ∂ x 1 x 2 ⋯ ∂ 2 F ∂ x 1 x n ∂ 2 F ∂ x 2 x 1 ∂ 2 F ∂ x 2 x 2 ⋯ ∂ 2 F ∂ x 2 x n ⋮ ⋮ ⋱ ⋮ ∂ 2 F ∂ x n x 1 ∂ 2 F ∂ x n x 2 ⋯ ∂ 2 F ∂ x n x n ]

      注:具体推导见视觉惯性单目SLAM (四)-泰勒展开式

4.1 梯度下降法(Gradient Descent)

  • 一 阶 优 化 算 法
  • 用 于 计 算 函 数 的 局 部 最 小 值
  • λ 迭 代 增 量 : 在 当 前 点 的 梯 度 的 负 值 , 再 乘 以 一 个 比 例 值 λ
    这里写图片描述
  • 迭 代 步 骤 :
    1)初始化: k=0,x=x0 k = 0 , x = x 0
    2)当 k<kmax k < k m a x
    xk+1=xkλF(xk)=xkλg(xk)=xkλF(xk) x k + 1 = x k − λ F ′ ( x k ) = x k − λ g ( x k ) = x k − λ ∇ F ( x k )

4.2 牛顿法(Newton Method )

  • 二 阶 近 似 优 化 算 法
  • 代 价 函 数 的 二 阶 泰 勒 展 开
    F(x+h)F(x)+F(x)h+12F′′(x)h2 F ( x + h ) ≈ F ( x ) + F ′ ( x ) h + 1 2 F ″ ( x ) h 2
  • xh(h0h) x 为 一 维 时 , 优 化 方 向 h 为 ( 对 h 求 一 阶 导 , 并 令 其 为 0 , 求 解 h 即 可 ) :

    h=F(x)F′′(x) h = − F ′ ( x ) F ″ ( x )

  • xh x 为 高 维 时 , 优 化 方 向 h 为 :

    F(x+h)F(x)+hTF(x)+12hTH(x)h F ( x + h ) ≈ F ( x ) + h T ∇ F ( x ) + 1 2 h T H ( x ) h

    hH(x)1F(x)=H(x)1g h ≈ − H ( x ) − 1 ∇ F ( x ) = − H ( x ) − 1 g

  • 迭 代 步 骤 :
    1)初始化: k=0,x=x0 k = 0 , x = x 0
    2)当 k<kmax k < k m a x
    xk+1=xkλH(xk)1F(xk)=xkλH(xk)1g(xk) x k + 1 = x k − λ H ( x k ) − 1 ∇ F ( x k ) = x k − λ H ( x k ) − 1 g ( x k )
  • 使 发 现 海 森 矩 阵 的 逆 是 非 常 昂 贵 的 , 近 似 的 方 法 被 使 用 , 近 似 的 方 法 有 :
    • 共轭梯度下降法(conjugate gradient method)
    • 拟牛顿法(quasi-newton method)
  • 牛 顿 法 与 梯 度 下 降 法 的 比 较 , 红 色 的 为 牛 顿 法
    这里写图片描述

4.3 高斯-牛顿法(Gauss-Newton Methods)

  • 线 经 常 用 于 求 解 非 线 性 最 小 二 乘 问 题
  • : 原 理 :
    • 高斯—牛顿迭代法的基本思想是使用泰勒级数展开式去近似地代替非线性回归模型,然后通过多次迭代,多次修正回归系数,使回归系数不断逼近非线性回归模型的最佳回归系数,最后使原模型的残差平方和达到最小。

4.3.1 方法描述

  • : 方 法 描 述 :

    • 给定 m m 个函数r=(r1,,rm)(经常叫做残差, r r 为向量值函数),每个函数ri(β) n n 个变量β=(β1,,βn),且 mn m ≥ n
    • 高 斯 − 牛 顿 迭 代 法 的 目 标 :找到 β β 的最优解,使得残差的平方和最小::

      S(β)=i=1mr2i(β)=r(β)Tr(β)=||r(β)||2 S ( β ) = ∑ i = 1 m r i 2 ( β ) = r ( β ) T r ( β ) = | | r ( β ) | | 2

    • 以初始值 β(0) β ( 0 ) 开始迭代,则迭代方法如下:

      β(s+1)=β(s)(JTrJr)1JTrr(β(s)) β ( s + 1 ) = β ( s ) − ( J r T J r ) − 1 J r T r ( β ( s ) )

    • rβ r 和 β 都为列向量,则 Jacobianmatrix 雅 可 比 矩 阵 ( J a c o b i a n m a t r i x ) 的项为:
      (Jr)i,j=ri(β(s))βj ( J r ) i , j = ∂ r i ( β ( s ) ) ∂ β j

      Jrrβ 注 : J r 是 向 量 函 数 r 对 β 向 量 的 雅 可 比 矩 阵
    • 如果 m==n m == n ,则迭代简化为:
      β(s+1)=β(s)(Jr)1r(β(s)) β ( s + 1 ) = β ( s ) − ( J r ) − 1 r ( β ( s ) )
    • 在数据拟合中,需要回归的函数为: y=f(x,β) y = f ( x , β ) ,此函数拟合数据点 (xi,yi) ( x i , y i ) ,则 ri r i 为:
      ri(β)=yif(xi,β) r i ( β ) = y i − f ( x i , β )

      fJacobianMatrix 则 高 斯 − 牛 顿 迭 代 法 可 用 函 数 f 的 J a c o b i a n M a t r i x 表 示 :
      β(s+1)=β(s)+(JTfJf)1JTfr(β(s)) β ( s + 1 ) = β ( s ) + ( J f T J f ) − 1 J f T r ( β ( s ) )

      (Jf)i,j=f(xi,β(s))βj ( J f ) i , j = ∂ f ( x i , β ( s ) ) ∂ β j

      Jffβ 注 : J f 是 向 量 函 数 f 对 β 向 量 的 雅 可 比 矩 阵

4.3.2 方法推导

  • 从 牛 顿 法 出 发 进 行 推 导
  • 使S(β)Sβ 根 据 牛 顿 法 使 用 S ( β ) 或 S 最 小 的 β , 其 递 归 关 系 为
    S=i=1mr2i(S) S = ∑ i = 1 m r i 2 ( S 是 多 元 标 量 函 数 , 其 值 为 标 量 )

    βs+1=βsH1g,(gSHS) β s + 1 = β s − H − 1 g , ( g 为 S 的 梯 度 , H 为 S 的 海 森 矩 阵 )
  • 则 梯 度 为 :
    gj=2i=1mririβj g j = 2 ∑ i = 1 m r i ∂ r i ∂ β j
  • 海森矩阵的元素由梯度元素对每个自变量 βk β k 求偏导组成:
    Hjk=gjβk=2i=1m(riβkriβj+ri2riβjβk) H j k = ∂ g j ∂ β k = 2 ∑ i = 1 m ( ∂ r i ∂ β k ∂ r i ∂ β j + r i ∂ 2 r i ∂ β j ∂ β k )
  • 高斯-牛顿法忽略了二阶偏导数,即上式中的第二项,因为其值较小,则Hessian矩阵近似表示为:
    Hjk2i=1m(riβkriβj)=2i=1m(JikJij)=2i=1m(JijJik) H j k ≈ 2 ∑ i = 1 m ( ∂ r i ∂ β k ∂ r i ∂ β j ) = 2 ∑ i = 1 m ( J i k J i j ) = 2 ∑ i = 1 m ( J i j J i k )
  • JijJrij J i j : 是 雅 可 比 矩 阵 J r 的 元 素 ( i 行 , j 列 )
  • 梯度和海森矩阵的矩阵表示为:(即使用雅可比矩阵来表示梯度和海森矩阵)
    g=2JTrr=2JTr(βs)r(βs) g = 2 J r T r = 2 J r T ( β s ) r ( β s )

    H2JTrJr=2Jr(βs)TJr(βs) H ≈ 2 J r T J r = 2 J r ( β s ) T J r ( β s )
  • 则高斯-牛顿法的迭代公式为:
    βs+1=βsH1g=βs(JTrJr)1JTrr(βs) β s + 1 = β s − H − 1 g = β s − ( J r T J r ) − 1 J r T r ( β s )

4.4 列文伯格-马夸尔特法(Levenberg–Marquardt algorithm)

  • Levenberg–Marquardt algorithm:简记为:LMA或LM
  • LM是一个著名的阻尼最小二乘法(Damped Least-Squares < DLS>),用于求解非线性最小二乘问题,
  • LMA特别擅长最小二乘曲线拟合问题
  • LMAGNA(GaussNewtonAlgorithm)GD(GradientDescent) L M A 与 G N A ( G a u s s − N e w t o n A l g o r i t h m ) 和 G D ( G r a d i e n t D e s c e n t ) 的 比 较
    • LMA介于GNA与GD之间
    • LMA比GNA比加健壮:在许多情况,即使从远离最后的极小值点开始,它也能找到解
    • 对于性质优良的函数(如凸函数)和合理的开始参数,LMA比GNA慢一些
    • LMA也可以看作是使用信赖域方法的高斯–牛顿法
    • LM法就是在高斯-牛顿法的基础上加入了一个变量因子
    • LMA的迭代公式为:
      βs+1=βsH1g=βs(JTrJr+λI)1JTrr(βs)=βs[JTrJr+λdiag(JTrJr)]1JTrr(βs) β s + 1 = β s − H − 1 g = β s − ( J r T J r + λ I ) − 1 J r T r ( β s ) = β s − [ J r T J r + λ d i a g ( J r T J r ) ] − 1 J r T r ( β s )

4.4 总结

  • 非线性最小二乘法求解方法总结
  • 映射 f f RnR
算法近似迭代公式
梯度下降法一阶近似 xk+1=xkλF(xk)=xkλg(xk)=xkλF(xk) x k + 1 = x k − λ F ′ ( x k ) = x k − λ g ( x k ) = x k − λ ∇ F ( x k )
牛顿法二阶近似 xk+1=xkλH(xk)1F(xk)=xkλH(xk)1g(xk) x k + 1 = x k − λ H ( x k ) − 1 ∇ F ( x k ) = x k − λ H ( x k ) − 1 g ( x k )
高斯-牛顿法近似二阶 β(s+1)=β(s)(JTrJr)1JTrr(β(s))Jrrβ β ( s + 1 ) = β ( s ) − ( J r T J r ) − 1 J r T r ( β ( s ) ) , J r 是 向 量 函 数 r 对 β 向 量 的 雅 可 比 矩 阵
(Jr)i,j=ri(β(s))βj ( J r ) i , j = ∂ r i ( β ( s ) ) ∂ β j
列文伯格-马夸尔特法近似二阶 β(s+1)=β(s)[JTrJr+λI]1JTrr(β(s)) β ( s + 1 ) = β ( s ) − [ J r T J r + λ I ] − 1 J r T r ( β ( s ) )
β(s+1)=β(s)[JTrJr+λdiag(JTrJr)]1JTrr(β(s),Jrrβ β ( s + 1 ) = β ( s ) − [ J r T J r + λ d i a g ( J r T J r ) ] − 1 J r T r ( β ( s ) ) , J r 是 向 量 函 数 r 对 β 向 量 的 雅 可 比 矩 阵
(Jr)i,j=ri(β(s))βj ( J r ) i , j = ∂ r i ( β ( s ) ) ∂ β j

5. 线性与非线性最小二乘法的比较

比较属性线性最小二乘法非线性最小二乘法
求解方法求多元函数极值的方法得待估参数
1)列出目标函数
2)对参数求导并令其为0
3)求解方程组
1)搜索算法
2)迭代法:
高斯-牛顿法
convexconvexconvex 或 non-convex

参考:
1)https://en.wikipedia.org/wiki/Gauss%E2%80%93Newton_algorithm
2)https://en.wikipedia.org/wiki/Gradient_descent
3)https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
4)https://en.wikipedia.org/wiki/Least_squares

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值