최소제곱 문제 및 비선형 최적화

0 서문

여기 에서 재인쇄되었으며 , 사소한 오류가 수정되었습니다.

1. 최소제곱 문제

SLAM에서 최적 상태 추정 문제를 풀 때 일반적으로 두 개의 변수를 얻게 되는데, 하나는 센서에서 얻은 실제 관측값 z입니다. \ boldsymbol{z}z , 하나는 현재 추정된 상태량과 관측 모델을 기반으로 계산h ( x ) h(\boldsymbol{x})h ( x ) . 최적 상태 추정 문제를 풀 때 우리는 일반적으로 예측값과 관측값으로부터 계산된 잔차의 제곱을 최소화하려고 노력합니다(제곱은 부호의 영향을 통합하는 데 사용됩니다). 즉, 다음과 같은 최소 제곱을 풀려고 합니다. 문제:

x ✽ = arg ⁡ min ⁡ x ∣ ∣ z − h ( x ) ∣ ∣ 2 \boldsymbol{x}^* = \arg\min_{\boldsymbol{x}}||\boldsymbol{z} - h(\boldsymbol {x})||^2엑스*=아르 g엑스∣∣z _-h ( x ) 2
관찰 모델이 선형 모델인 경우 위 방정식은 선형 최소 제곱 문제로 변환됩니다.

x ∗ = arg ⁡ min ⁡ x ∣ ∣ z − H x ∣ ∣ 2 \boldsymbol{x}^* = \arg\min_{\boldsymbol{x}}||\boldsymbol{z} - \boldsymbol{H}\boldsymbol{x}||^2 x=argxmin∣∣zHx2
对于线性最小二乘问题,我们可以直接求闭式解: x ∗ = − ( H T H ) − 1 H T z \boldsymbol{x}^* = -(\boldsymbol{H}^T\boldsymbol{H})^{-1}\boldsymbol{H}^T\boldsymbol{z} x=(HTH)1HTz 这里不进行赘述。

实际的问题中,我们通常要最小化不止一个残差,不同残差通常会按其重要性(不确定性)分配一个相应的权重系数,且观测模型也通常是非线性的,即求解以下问题:

ei ( x ) = zi − hi ( x ) i = 1 , 2 , . . . , n ∣ ∣ ei ( x ) ∣ ∣ Σ i 2 = ei T Σ ieix * = arg ⁡ min ⁡ x F ( x ) = arg ⁡ min ⁡ x ∑ i ∣ ∣ ei ( x ) ∣ ∣ Σ i 2 {정렬됨} \boldsymbol{e}_i(\boldsymbol{x}) &= \boldsymbol{z}_i - h_i(\boldsymbol{x}) \qquad i = 1, 2, ..., n\\ || \boldsymbol{e}_i(\boldsymbol{x})||^2_{\Sigma_i} &= \boldsymbol{e}_i^T\boldsymbol{\Sigma}_i\boldsymbol{e}_i\\ \boldsymbol{x }^* &= \arg\min_{\boldsymbol{x}}F(\boldsymbol{x})\\ &= \arg\min_{\boldsymbol{x}}\sum_i||\boldsymbol{e}_i( \boldsymbol{x})||^2_{\Sigma_i} \end{aligned}이자형( x )∣∣ 이자( x ) 에스2엑스*=-시간( x )=1 ,2 ,... ,N=이자형에스이자형=아르 g엑스에프 ( 엑스 )=아르 g엑스∣∣ 이자( x ) 에스2
우리는 상태량 x ✽ \boldsymbol{x}^*를 얻고 싶습니다.엑스¡ , 손실 함수F ( x ) F(\boldsymbol{x})F ( x ) 는 국소 최솟값을 얻습니다.

특정 문제를 풀기 전에 먼저 F ( x ) F(\boldsymbol{x}) 를 생각해 보세요.F ( x ) 의 속성에 대해 2차 테일러 전개를 수행합니다.

F ( x + Δ x ) = F ( x ) + J Δ x + 12 Δ x TH Δ x + O ( ∣ ∣ Δ x ∣ ∣ 3 ) F(\boldsymbol{x} + \Delta\boldsymbol{x} ) = F(\boldsymbol{x}) + \boldsymbol{J}\Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\boldsymbol{H}\Delta\boldsymbol {x} + O(||\Delta\boldsymbol{x}||^3)에프 ( 엑스+Δ x )=에프 ( 엑스 )+J Δ x+21Δx _T HΔx+O ( ∣∣Δ x3 )
고차 나머지를 무시하면 이차 함수는 다음과 같은 속성을 갖습니다.

x 지점에 있는 경우 * \boldsymbol{x}^*엑스* 에서 도함수는0 \boldsymbol{0}0 이면 이 점은 안정적인 점이며 헤세 행렬의 양의 명확성에 따라 다른 속성을 갖습니다.

  • 만약 H \boldsymbol{H}H 는 양의 정부호 행렬이면F ( x ✽ ) F(\boldsymbol{x}^*)에프 ( 엑스* )는 지역 최소값
  • 만약 H \boldsymbol{H}H 는 음의 정부호 행렬이면F ( x ✽ ) F(\boldsymbol{x}^*)에프 ( 엑스* )는 지역 최대값
  • 만약 H \boldsymbol{H}H 가 부정 행렬이면F ( x ✽ ) F(\boldsymbol{x}^*)에프 ( 엑스* )는 안장점

실제 과정에서는 일반적으로 F ( x ) F(x)F ( x ) 는 상대적으로 복잡하기 때문에 직접 도함수를 0으로 만든 후 이 점을 찾을 수 있는 방법이 없기 때문에 손실함수가 x \boldsymbol에 따라 변하도록 하강하는 방향을 찾는 반복적 방법이 흔히 사용된다. {x}x 의 반복은 x \boldsymbol{x}까지 점차적으로 감소합니다.x는 x ✽ \boldsymbol{x}^*로 수렴합니다엑스* . 다음은 일반적으로 사용되는 몇 가지 반복 방법입니다.

2. 반복하강법

위에서 언급했듯이 x ​​\boldsymbol{x}를 찾아야 합니다.x 의 반복량은F ( x ) F(\boldsymbol{x})F ( x ) 가 감소합니다. 이 프로세스는 두 단계로 구분됩니다.

F ( x ) \boldsymbol{F(x)} 찾기F ( x ) 의 하강 방향 , 이 방향으로 단위 벡터 d 를 생성합니다\boldsymbol{d}d는
이 방향의α \alpha를α
반복 후x + α d \boldsymbol{x} + \alpha\boldsymbol{d}엑스+α d 에 해당하는 함수 값은 1차 테일러 확장(단계 크기가 충분히 작은 경우)으로 근사화될 수 있습니다.

F ( x + α d ) = F ( x ) + α J d F(\boldsymbol{x} + \alpha\boldsymbol{d}) = F(\boldsymbol{x}) + \alpha\boldsymbol{Jd}에프 ( 엑스+α d )=에프 ( 엑스 )+α Jd 따라서 F ( x ) F(x) 를
유지하는 것을 찾는 것은 어렵지 않습니다.F(x) 是下降的,只需要保证 J d < 0 \boldsymbol{Jd} < 0 Jd<0。以下几种方法都是以不同思路在寻找一个合适的方向进行迭代。

3.最速下降法

基于上一部分,我们知道变化量为 α J d \alpha\boldsymbol{Jd} αJd,其中 J d = ∣ ∣ J ∣ ∣ cos ⁡ θ \boldsymbol{Jd} = ||\boldsymbol{J}||\cos{\theta} Jd=∣∣J∣∣cosθ θ \theta θ 为梯度 J \boldsymbol{J} J d \boldsymbol{d} d 的夹角。当 θ = − π \theta = -\pi θ=π 时, J d = − ∣ ∣ J ∣ ∣ \boldsymbol{Jd} = -||\boldsymbol{J}|| Jd=∣∣J∣∣ 取得最小值,此时方向向量为:

d = − JT ∣ ∣ J ∣ ∣ \boldsymbol{d} = \frac{-\boldsymbol{J}^T}{||\boldsymbol{J}||}=∣∣ J ∣∣- J
따라서 기울기 J \boldsymbol{J}J 의 음의 방향은 F ( x ) F(\boldsymbol{x}) 를만들 수 있습니다.F ( x ) 이지만, 실제 프로세스에서는 이 방법을 일반적으로 iteration 초기에만 사용하며, 최적값에 가까워지면 천천히 진동하며 수렴하게 됩니다.

4.뉴턴의 방법

F ( x ) F(\boldsymbol{x}) 의 경우F ( x ) 의 2차 테일러 전개는

F ( x + Δ x ) = F ( x ) + J Δ x + 12 Δ x TH Δ x F(\boldsymbol{x} + \Delta\boldsymbol{x}) = F(\boldsymbol{x}) + \boldsymbol{J}\Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\boldsymbol{H}\Delta\boldsymbol{x}에프 ( 엑스+Δ x )=에프 ( 엑스 )+J Δ x+21Δx _T HΔx
우리가 집중하는 것은Δ x \Delta\boldsymbol{x}를Δ x使得J Δ x + 1 2 Δ x TH Δ x \boldsymbol{J}\Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\boldsymbol{H}\ 델타\boldsymbol{x}J Δ x+21Δx _T HΔx는 가장 작으므로 다음과 같이 유도할 수 있습니다.

∂ ( J Δ x + 1 2 Δ x TH Δ x ) ∂ Δ x = JT + H Δ x = 0 ⇒ Δ x = − H − 1 JT \begin{aligned} \frac{\partial(\boldsymbol{J} \Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\boldsymbol{H}\Delta\boldsymbol{x})}{\partial\Delta\boldsymbol{x}} &= \boldsymbol{J}^T + \boldsymbol{H}\Delta\boldsymbol{x} = 0\\ \Rightarrow \Delta\boldsymbol{x} &= -\boldsymbol{H}^{-1}\boldsymbol {J}^T \end{정렬됨}Δ x( J Δ x+21Δx _T HΔx)Δ x=제이+H Δ x=0=- H- 1J _
H \boldsymbol{H} 일 때H 는 양의 정부호 행렬이고 현재x \boldsymbol{x}x가 최적 지점에 가까울때 Δ x = − H − 1 JT \Delta\boldsymbol{x} = -\boldsymbol{H}^{-1}\boldsymbol{J}^T를 취합니다.Δx _=- H- 1J _T는 함수가 국소 최소값을 얻도록 만들 수 있습니다. 그러나 단점은 잔차의 헤세 함수를 찾기가 일반적으로 어렵다는 것입니다.

5. 감쇠방식

뉴턴의 방법을 기반으로 각 반복이 너무 공격적이지 않도록 제어하기 위해 아래와 같이 손실 함수에 페널티 항을 추가할 수 있습니다.

arg ⁡ min ⁡ Δ x { F ( x ) + J Δ x + 1 2 Δ x TH Δ x + 1 2 μ ( Δ x ) T ( Δ x ) } \arg\min_{\Delta\boldsymbol{x}} \left\{F(\boldsymbol{x}) + \boldsymbol{J}\Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\boldsymbol{H}\Delta \boldsymbol{x} + \frac{1}{2}\mu(\Delta\boldsymbol{x})^T(\Delta\boldsymbol{x})\right\}아르 gΔx _{ 에프 ( x )+J Δ x+21Δx _T HΔx+21m ( Δ x )T (Δx)}Δ x \Delta\boldsymbol{x}를
선택할 때Δ x 가 너무 크면 손실 함수도 커지며 증가 폭은μ \muμ 가 결정되므로 각 반복의 양Δ x \Delta\boldsymbol{x}을Δx 크기입니다 . 또한 Δ x \Delta\boldsymbol{x}의 오른쪽 부분에도 있습니다.Δx 의 미분은 다음 과 같습니다 .

JT + H Δ x + μ Δ x = 0 ( H + μ I ) Δ x = − JT \begin{aligned} \boldsymbol{J}^T + \boldsymbol{H}\Delta\boldsymbol{x} + \mu \Delta\boldsymbol{x} &= 0\\ (\boldsymbol{H} + \mu\boldsymbol{I})\Delta\boldsymbol{x} = -\boldsymbol{J}^T \end{aligned}제이+H Δ x+mDx _ _( +μ I ) Δ x=- J=0
이 아이디어는 나중에 LM 방식을 소개할 때도 사용될 것입니다.

6.가우스-뉴턴(GN)법

이전 배열에서 우리가 실제로 풀었던 것은 일련의 잔차의 합이었는데, 단일 잔차의 야코비안을 구하는 것이 상대적으로 간단하므로 다음 방법에서는 각 잔차의 변화에 ​​중점을 둡니다 . 위의 비선형 최소제곱 문제의 각 잔차를 벡터 형식으로 작성합니다.

F ( x ) = E ( x ) = [ e 1 ( x ) e 2 ( x ) . . . en ( x ) ] \boldsymbol{F}(\boldsymbol{x}) =\boldsymbol{E}(\boldsymbol{x}) =\begin{bmatrix} \boldsymbol{e}_1(\boldsymbol{x})\ \ \boldsymbol{e}_2(\boldsymbol{x})\\ ...\\ \boldsymbol{e}_n(\boldsymbol{x})\\ \end{bmatrix}에프 ( 엑스 )=이자형 ( x )= 이자형1( x )이자형2( x )...이자형( x )

e ( x ) \ boldsymbol{e}(\boldsymbol{x})e ( x )의 테일러 전개는

e ( x + Δ x ) = e ( x ) + J Δ x \boldsymbol{e}(\boldsymbol{x} + \Delta\boldsymbol{x}) = \boldsymbol{e}(\boldsymbol{x}) + \boldsymbol{J}\Delta\boldsymbol{x}그리고 ( x+Δ x )=그리고 ( x )+J Δ x
위 식에서J \boldsymbol{J}J 는 잔차 행렬e ( x ) \boldsymbol{e}(\boldsymbol{x})e ( x )대 상태량의 야코비 행렬입니다.

원래 선형 최소 제곱 문제에는 각 잔차에 대한 가중치 행렬 Σ \boldsymbol{\Sigma} 도 있다는 점에 유의하세요.Σ . 이 경우ei ( x ) = Σ iei ( x ) \boldsymbol{e}_i(\boldsymbol{x}) = \sqrt{\boldsymbol{\Sigma}_i}\boldsymbol{e}_i (\boldsymbol{x})이자형( x )=에스 이자형( x ) 이면 충분합니다. 따라서 다음 수식에서는Σ \boldsymbol{\Sigma} 를Σ 의 영향 .

이 형식에서 e ( x ) \boldsymbol{e}(\boldsymbol{x})e ( x )의 테일러 전개는

∣ ∣ e ( x + Δ x ) ∣ ∣ 2 = e ( x + Δ x ) T e ( x + Δ x ) = ( e ( x ) + J Δ x ) T ( e ( x ) + J Δ x ) = e ( x ) T e ( x ) + Δ x TJT e ( x ) + e ( x ) TJ Δ x + Δ x TJTJ Δ x \begin{aligned} ||e(\boldsymbol{x} + \Delta\ 굵은 기호{x}) ||^2&= \boldsymbol{e}(\boldsymbol{x} + \Delta\boldsymbol{x})^T\boldsymbol{e}(\boldsymbol{x} + \Delta\boldsymbol{x })\\ &= (\boldsymbol{e}(\boldsymbol{x}) + \boldsymbol{J}\Delta\boldsymbol{x})^T(\boldsymbol{e}(\boldsymbol{x}) + \ 굵은 기호{J}\Delta\boldsymbol{x})\\ &= \boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{e}(\boldsymbol{x}) + \Delta\boldsymbol{x} ^T\boldsymbol{J}^T\boldsymbol{e}(\boldsymbol{x}) + \boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{J}\Delta\boldsymbol{x} + \ Delta\boldsymbol{x}^T\boldsymbol{J}^T\boldsymbol{J}\Delta\boldsymbol{x} \end{aligned}∣∣ e ( x+Δ x ) 2=그리고 ( x+Δ x ) (x_+Δ x )=( 그리고 ( x )+J Δ x ) (이자형(x)+J Δ x )=그리고 ( x ) (x)_+Δx _티제이 _ (x)_+그리고 ( x )T JΔx+Δx _티제이 _T JΔx
위 공식에서 다음을 참고하세요: e ( x ) e(\boldsymbol{x})e ( x ) 는 1차원이므로Δ x TJT e ( x ) = e ( x ) TJ Δ x \Delta\boldsymbol{x}^T\boldsymbol{J}^T\boldsymbol{e}(\boldsymbol{ x}) = \boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{J}\Delta\boldsymbol{x}Δx _티제이 _ (x)_=그리고 ( x )T JΔx이므로 다음과 같이 단순화합니다.

F ( x + Δ x ) = e ( x ) T e ( x ) + 2 e ( x ) TJ Δ x + Δ x TJTJ Δ x = F ( x ) + 2 e ( x ) TJ Δ x + Δ x TJTJ Δ x \begin{정렬} F(\boldsymbol{x} + \Delta\boldsymbol{x}) &= \boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{e}(\boldsymbol{x} ) + 2\boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{J}\Delta\boldsymbol{x} + \Delta\boldsymbol{x}^T\boldsymbol{J}^T\boldsymbol{J }\Delta\boldsymbol{x}\\ &= F(\boldsymbol{x}) + 2\boldsymbol{e}(\boldsymbol{x})^T\boldsymbol{J}\Delta\boldsymbol{x} + \ Delta\boldsymbol{x}^T\boldsymbol{J}^T\boldsymbol{J}\Delta\boldsymbol{x} \end{aligned}에프 ( 엑스+Δ x )=그리고 ( x ) (x)_+2e ( x ) _TJΔx+ΔxTJTJΔx=F(x)+2e(x)TJΔx+ΔxTJTJΔx
通过这种方式,我们同样将其近似一个二次函数,并且和我们之前展开的结果比较,不难发现在这里我们实际上是用 J T e \boldsymbol{J}^T\boldsymbol{e} JTe 来近似 Jacobian 矩阵,用 J T J \boldsymbol{J}^T\boldsymbol{J} JTJ 来近似 Hessian 矩阵。因此,当 J \boldsymbol{J} J 满秩时,我们可以保证在上式导数为 0 的地方可以确保函数取得局部最小值。同样,在上式右侧部分对 Δ x \Delta\boldsymbol{x} Δx 求导并使其为 0 有:

JT e ( x ) + JTJ Δ x = 0 ⇒ JTJ Δ x = − JT e ( x ) ⇒ H Δ x = b \begin{aligned} \boldsymbol{J}^T\boldsymbol{e}(\boldsymbol{x }) + \boldsymbol{J}^T\boldsymbol{J}\Delta\boldsymbol{x} = 0\\ \Rightarrow \boldsymbol{J}^T\boldsymbol{J}\Delta\boldsymbol{x} &= - \boldsymbol{J}^T\boldsymbol{e}(\boldsymbol{x})\\ \Rightarrow \boldsymbol{H}\Delta\boldsymbol{x} &= \boldsymbol{b} \end{aligned}제이 (x)_+제이T JΔx=0제이T JΔxH Δx=- J (x)_=
위 공식에서 H = JTJ , b = − JT e \boldsymbol{H} = \boldsymbol{J}^T\boldsymbol{J}, \boldsymbol{b} = -\boldsymbol{J}^T\ 굵은 기호 {e}시간=제이티제이 ,_=- J .__ 이러한 방식으로 Gauss-Newton 방법의 풀이 과정을 얻습니다.

  • 상태값 \boldsymbol{J} 에 대해 잔차 행렬의 야코비 행렬 J를 계산합니다.제이
  • 야코비 행렬과 잔차를 사용하여 정보 행렬과 정보 벡터 H, b \boldsymbol{H}, \boldsymbol{b}를 구성합니다. ,
  • 현재 반복 횟수를 계산합니다: Δ x = H − 1 b \Delta\boldsymbol{x} = \boldsymbol{H}^{-1}\boldsymbol{b}Δx _=시간- 1b _
  • 반복 횟수가 충분히 작으면 반복을 종료하고, 그렇지 않으면 다음 반복을 입력합니다.

7. Levenberg-Marquardt(LM) 방법

LM법은 Gauss-Newton법을 기반으로 감쇠법의 아이디어에 따라 감쇠계수를 추가하는 방식, 즉 다음과 같은 방정식을 풀어낸다.

( H + μ I ) Δ x = b (\boldsymbol{H} + \mu\boldsymbol{I})\Delta\boldsymbol{x} = \boldsymbol{b}( +μ I ) Δ x=b
위 공식에서 감쇠 계수의 기능은 다음과 같습니다.

  • H \boldsymbol{H} 에 추가H는 H \boldsymbol{H}를보장합니다.H 는 양의 정부호입니다.

  • μ \muμ很大时,Δ x = − ( H + μ I ) − 1 b ≒ − 1 μ b = − 1 μ JTE ( x ) \Delta\boldsymbol{x} = -(\boldsymbol{H}+\mu\ 굵은 기호{I})^{-1}\boldsymbol{b}\about-\frac{1}{\mu}\boldsymbol{b}=-\frac{1}{\mu}\boldsymbol{J}^T \boldsymbol{E}(\boldsymbol{x})Δx _=( H+μ 나는 )- 1b _-1=-1제이T E(x), 최속강하법에 가깝습니다.

  • μ \muμ 가 매우 작은 경우 Gauss-Newton 방법에 가깝기
    때문에 감쇠 계수를 합리적으로 설정하면 반복 속도를 동적으로 조정할 수 있습니다. 감쇠 계수 설정은 두 부분으로 나뉩니다.

  • 초기값 선택

  • 반복 볼륨에 따라 변경되는 업데이트 전략

먼저 초기값 선택 방법을 살펴보면 감쇠계수의 크기는 JTJ \boldsymbol{J}^T\boldsymbol{J}을 기준으로 해야 합니다.제이JTJ \boldsymbol{J}^T\boldsymbol{J} 의 경우 T J의 크기를 선택하려면제이T J는고유값 분해를 수행합니다.JTJ = V Λ VT \boldsymbol{J}^T\boldsymbol{J} = \boldsymbol{V}\boldsymbol{\Lambda}\boldsymbol{V}^T제이티제이 _=V Λ VT ,Λ = diag(λ 1 , λ 2 , ..., λn ), V = [v 1 , . . . , vn ] \boldsymbol{\Lambda} = \text{diag}(\lambda_1, \lambda_2,..., \lambda_n), \boldsymbol{V} = [\boldsymbol{v}_1, ..., \boldsymbol {n에서]=진단 ( λ1,2,... ,) ,V=[ v1,... ,V] 따라서 반복 공식은 다음과 같이 단순화됩니다.

( V Λ VT + μ I ) Δ x = b Δ x = ( V Λ VT + μ I ) − 1 b = − ∑ ivi T b λ i + μ vi \begin{aligned} (\boldsymbol{V\Lambda} \boldsymbol{V}^T + \mu\boldsymbol{I})\Delta\boldsymbol{x} &= \boldsymbol{b}\\ \Delta\boldsymbol{x} &= (\boldsymbol{V\Lambda}\ 굵은 기호{V}^T + \mu\boldsymbol{I})^{-1}\boldsymbol{b}\\ &= -\sum_i\frac{\boldsymbol{v}_i^T\boldsymbol{b}}{ \lambda_i + \mu}\boldsymbol{v}_i \end{aligned}( V Λ V+μ I ) Δ xΔx _==( V Λ V+μ 나는 )- 1b _=-+VV
따라서 μ \muμ选为λ i \lambda_i가까울 수도 있습니다. 간단한 아이디어는 μ 0 = τ max ⁡ ( JTJ ) ii \mu_0 = \tau\max{(\boldsymbol{J}^T\boldsymbol{J})_{ii}} 로 설정하는 것입니다.0=최대( 제이티제이 )_ii, 실제로는 일반적으로 τ ≒ [ 10 − 8 , 1 ] \tau \about [10^{-8}, 1]이라고 가정합니다.[ 1 0- 8 ,1 ]

다음으로 μ \mu를 살펴보세요μ 의 업데이트 전략의 경우 먼저 감쇠 계수를 업데이트하는 방법을 정성적으로 분석합니다.

  • Δ x \Delta\boldsymbol{x}Δ x F( x ) F(\boldsymbol{x})F ( x ) 가 증가μ \mu도Δ x \Delta\boldsymbol{x}를줄이기 위한 μΔx는 단계 크기를 줄여 이 반복의 영향을 줄입니다.
  • Δ x \Delta\boldsymbol{x}Δ x F( x ) F(\boldsymbol{x})F ( x ) 가 감소μ \mu도Δ x \Delta\boldsymbol{x}를증가시키는 μΔx는 단계 크기를 늘려 이 반복의 영향을 증가시킵니다.

아래 정량적 분석을 진행해 보겠습니다. L ( Δ x ) = F ( x ) + 2 E ( x ) TJ Δ x + 1 2 Δ x TJTJ Δ x L(\Delta\boldsymbol{x}) = F(\boldsymbol{ x }) +2\boldsymbol{E}(\boldsymbol{x})^T\boldsymbol{J}\Delta\boldsymbol{x} + \frac{1}{2}\Delta\boldsymbol{x}^T\ 굵은 기호 {J}^T\boldsymbol{J}\Delta\boldsymbol{x}( Δ x )=에프 ( 엑스 )+2E ( x ) _T JΔx+21Δx _티제이 _T JΔx는다음 배율 인수를 고려합니다.

ρ = F ( x ) − F ( x + Δ x ) L ( 0 ) − F ( Δ x ) \rho = \frac{F(\boldsymbol{x}) - F(\boldsymbol{x} + \Delta\ 굵은 기호{x})}{L(\boldsymbol{0}) - F(\Delta\boldsymbol{x})}아르 자형=( 0 )-F ( Δ x )에프 ( 엑스 )-에프 ( 엑스+Δ x )
Marquardt는 다음과 같은 전략을 제안합니다.

  • ρ < 0 \rho < 0아르 자형<0 , 현재Δ x \Delta\boldsymbol{x}를Δ x는 F ( x ) F(\boldsymbol{x})를만듭니다F ( x ) 는 증가하는데, 이는 여전히 최적 값과 거리가 멀다는 것을 의미하므로μ \mu 는μ는 더 큰 업데이트를 위해 가장 가파른 하강법에 가깝습니다.
  • ρ > 0 \rho > 0 일 때아르 자형>0 이고 비교적 크며, 현재Δ x \Delta\boldsymbol{x}를Δ x는 F ( x ) F(\boldsymbol{x})를만듭니다F ( x ) 감소,μ \muμ는 Gauss-Newton 방법에 가깝게 만들어 속도를 줄이고 최적의 지점으로 업데이트합니다.
  • ρ > 0 \rho > 0 이면아르 자형>0 이지만 상대적으로 작아서 최적 지점 근처에 도달했음을 나타냅니다. 그런 다음 감쇠μ \mu를μ , 반복 단계 크기를 줄입니다.

Marquardt의 구체적인 전략은 다음과 같습니다.

if rho < 0.25: 
    mu = mu * 2
else if rho > 0.75: 
    mu = mu /3

Marquardt 전략을 사용한 업데이트 프로세스는 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.

효과가 그다지 좋지 않음을 알 수 있으며, 반복 횟수가 증가할수록 μ \muμ는 진동하기 시작하는데, 이는 반복량이 주기적으로F ( x ) F(\boldsymbol{x})F ( x ) 는 증가했다가 감소합니다.

따라서 Nielsen은 G2O 및 Ceres에서도 사용되는 또 다른 전략을 제안했습니다.

if rho > 0:
    mu = mu * max(1/3, 1 - (2 * rho - 1)^3)
    v = 2
else:
    mu = mu * v
    v = 2 * v

이 전략을 사용한 최적화의 예는 다음과 같습니다.

μ \mu 임을 알 수 있다μ는 수렴에 도달할 때까지 반복이 진행됨에 따라 상대적으로 원활하게 계속 감소할 수 있습니다.
여기에 이미지 설명을 삽입하세요.

8. 강력한 커널 기능

최소 제곱 문제를 수행할 때 관찰 잔차를 특히 크게 만드는 비정상적인 관찰 값이 발생합니다. 이러한 비정상적인 점이 처리되지 않으면 최적화 프로세스에 영향을 미치게 됩니다. 최적화 프로그램은 비정상적인 잔차 항을 최소화하려고 시도합니다. 마지막으로 , 상태 추정의 정확성에 영향을 미치는 강력한 커널 기능은 이러한 비정상적인 관찰의 영향을 줄이는 데 사용됩니다.

로버스트 커널 함수를 각 잔차 항에 직접 적용하여 최소 제곱 문제를 다음 형식으로 변환합니다.

F ( x ) = ∑ i ρ ( ∣ ∣ ei ( x ) ∣ ∣ 2 ) F(\boldsymbol{x}) = \sum_i\rho(||e_i(\boldsymbol{x})||^2)에프 ( 엑스 )=ρ ( ∣∣ 전자( x ) 2 )
로버스트 커널 함수를 사용할 때 비선형 최소 제곱을 푸는 과정
이 형식에서는 로버스트 커널 함수를 사용하여 잔차에 대해 2차 테일러 확장을 수행합니다.

ρ ( s + Δ s ) = ρ ( x ) + ρ ′ ( x ) Δ s + 12 ρ ′ ′ ( x ) Δ 2 s \rho(s + \Delta s) = \rho(x) + \rho '(x)\Delta s + \frac{1}{2}\rho''(x)\Delta^2s( +Δs ) _=( x )+아르 자형 (x)Δ+21아르 자형" (x)2 s
위 식에서 변화량Δs \Delta sΔs는 다음과 같이 계산 됩니다 .

Δ sk = ∣ ∣ ei ( x + Δ x ) ∣ ∣ 2 − ∣ ∣ ei ( x ) ∣ ∣ 2 = ∣ ∣ ei ( x ) + J i Δ x ∣ ∣ 2 − ∣ ∣ ei ( x ) ∣ ∣ 2 = 2 ei ( x ) TJ i Δ x + Δ x TJ i TJ i Δ x \begin{aligned} \Delta s_k &= ||e_i(\boldsymbol{x}+\Delta\boldsymbol{x})||^ 2 - ||e_i(\boldsymbol{x})||^2\\ &= ||e_i(\boldsymbol{x})+\boldsymbol{J}_i\Delta\boldsymbol{x}||^2 - | |e_i(\boldsymbol{x})||^2\\ &= 2e_i(\boldsymbol{x})^T\boldsymbol{J}_i\Delta\boldsymbol{x}+\Delta\boldsymbol{x}^T \boldsymbol{J}_i^T\boldsymbol{J}_i\Delta\boldsymbol{x} \end{aligned}Δs _케이=∣∣ 이자( x+Δ x ) 2-∣∣ 이자( x ) 2=∣∣ 이자( x )+제이Δ x2-∣∣ 이자( x ) 2=2e _( x )티제이 _Δx _+Δx _티제이 _제이Δ x
Δ s \Delta sΔ s代入ρ ( s + Δ s ) \rho(s + \Delta s)( +Δs )는 다음 같이 얻을 수 있습니다.

ρ ( s + Δ s ) = ρ ( s ) + ρ ′ ( s ) ( 2 ei ( x ) TJ i Δ x + Δ x TJ i TJ i Δ x ) + 1 2 ρ ′ ' ( s ) ( 2 ei ( x ) TJ i Δ x + Δ x TJ i TJ i Δ x ) 2 ≒ ρ ( s ) + 2 ρ ′ ( s ) ei ( x ) TJ i Δ x + ρ ′ ( s ) Δ x TJ i TJ i Δ x + 2 ρ ′ ′ (s) Δ x TJ i T ei ( x ) ei ( x ) TJ i Δ x \begin{aligned} \rho(s + \Delta s) =& \rho(s) + \ rho'(s)(2e_i(\boldsymbol{x})^T\boldsymbol{J}_i\Delta\boldsymbol{x}+\Delta\boldsymbol{x}^T\boldsymbol{J}_i^T\boldsymbol{ J}_i\Delta\boldsymbol{x}) \\ &+ \frac{1}{2}\rho''(s)(2e_i(\boldsymbol{x})^T\boldsymbol{J}_i\Delta\ 굵은 기호{x}+\Delta\boldsymbol{x}^T\boldsymbol{J}_i^T\boldsymbol{J}_i\Delta\boldsymbol{x})^2\\ \about& \rho(s) + 2\ rho'(s)e_i(\boldsymbol{x})^T\boldsymbol{J}_i\Delta\boldsymbol{x}+\rho'(s)\Delta\boldsymbol{x}^T\boldsymbol{J}_i ^T\boldsymbol{J}_i\Delta\boldsymbol{x} \\&+ 2\rho''(s)\Delta\boldsymbol{x}^T\boldsymbol{J}_i^Te_i(\boldsymbol{x})e_i(\boldsymbol{x})^T\boldsymbol{J}_i \Delta\boldsymbol{x} \end{정렬됨}( +Δs ) _=( )+아르 자형 (s)(2전자( x )티제이 _Δx _+Δx _티제이 _제이Δ x )+21아르 자형()(2e( x )티제이 _Δx _+Δx _티제이 _제이Δ x )2( )+2p _ ()전자( x )티제이 _Δx _+아르 자형 (s)Δx티제이 _제이Δx _+2p _′′ (s)Δx티제이 _이자형( x ) 전자( x )티제이 _Δ x
이전 아이디어에 따르면, 위 공식의 미분을 취하여 0과 동일하게 만들면 다음을 얻을 수 있습니다.

∑ i J i T ( ρ ′ (s ) + 2 ρ ′ ' (s ) ei ( x ) ei ( x ) T ) J Δ x = − ∑ i ρ ′ (s ) J i T ei ( x ) \sum_i \boldsymbol{J}_i^T(\rho'(s) + 2\rho''(s)e_i(\boldsymbol{\boldsymbol{x}})e_i(\boldsymbol{x})^T)\boldsymbol{ J}\Delta\boldsymbol{x} = -\sum_i\rho'(s)\boldsymbol{J}_i^Te_i(\boldsymbol{x})제이( r ()+2p _′′ ()전자( x ) 전자( x ) )JΔx=-아르 자형 ()제이이자형( x )
이전 행렬 비교JTJ Δ x = − J i T e ( x ) \boldsymbol{J}^T\boldsymbol{J}\Delta\boldsymbol{x} = -\boldsymbol{J}_i^T\boldsymbol {e}(\boldsymbol{x})제이T JΔx=- Je ( x )를얻을 수 있으며, 견고한 커널 함수를 사용한 후에는 각 잔차의 커널 함수에 대한 1차 및 2차 도함수만 계산하고 다음 식에 따라 정보 행렬과 정보 벡터를 업데이트하면 됩니다. 위의 양식을 참조하세요.

일반적으로 사용되는 강력한 커널 함수
Cauchy 강력한 커널 함수:

ρ (s ) = c 2 log ⁡ ( 1 + sc 2 ) ρ ′ (s ) = 1 1 + sc 2 ρ ′ ′ (s ) = − 1 c 2 ( ρ ′ (s ) ) 2 \begin{aligned} \rho(들) &= c^2\log{(1+\frac{s}{c^2})}\\ \rho'(들) &= \frac{1}{1+\frac{s }{c^2}}\\ \rho''(s) &= -\frac{1}{c^2}(\rho'(s))^2 \end{aligned}( )아르 자형 ()아르 자형′′ ()=2로그 _( 1+2)=1+21=-21( r ())2
그 중 ccc 는 제어 매개변수입니다. 잔차가 정규 분포를 따르는 경우 Huber c는 1.345로 선택되고 Cauchy c는 2.3849로 선택됩니다. 다양한 강력한 커널 기능의 효과는 아래 그림에 나와 있습니다.
여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/fb_941219/article/details/132106286