Xiang Gao, Tao Zhang 저자의 'Introduction to Visual SLAM from Theory to Practice' 책을 통해 SLAM에 대해 공부한 내용을 기록하고자 한다.
책의 내용은 주로 'SLAM의 기초 이론', 'system architecture', 'mainstream module'을 다룬다.
포스팅에는 기초 이론만 다룰 것이며, 실습을 해보고 싶다면 다음 github를 참조하자.
https://github.com/gaoxiang12/slambook2
GitHub - gaoxiang12/slambook2: edition 2 of the slambook
edition 2 of the slambook. Contribute to gaoxiang12/slambook2 development by creating an account on GitHub.
github.com
이전 포스팅에서 State estimation(MAP, MLE problem)을 어떻게 least-square problem으로 바꿀 수 있는지 알아보았다. 그 내용은 다음 링크를 참조하자.
Nonlinear Optimization (1) - Batch State Estimation into Least-square Problem
Xiang Gao, Tao Zhang 저자의 'Introduction to Visual SLAM from Theory to Practice' 책을 통해 SLAM에 대해 공부한 내용을 기록하고자 한다. 책의 내용은 주로 'SLAM의 기초 이론', 'system architecture', 'ma..
jjuke-brain.tistory.com
목차
Nonlinear Least-square Problem
간단한 least-square problem을 살펴보자.
여기서
위 식을 풀면 minimum, maximum, saddle point를 얻을 수 있다. 식은 매우 간단해 보이지만,
식을 푸는 데에는 objective function의 global properties를 알아야 하는데, 보통 이를 알 수 없는 경우가 많다. 이렇게 직접적으로 least-square problem을 풀기 힘든 경우, iterated methods를 사용한다.
Iterated methods란, 초기값에서 시작하여 현재 추정치를 업데이트하는 과정을 반복하여 objective function이 감소하도록 하는 것을 말한다.
구체적인 과정은 다음과 같다.
- initial value
가 주어진다. 번째 iteration에 대해, object function 이 더 작은 값을 갖도록 하는 incremental value(증가량) 를 찾는다. 값이 충분히 작아지면 알고리즘을 종료하고, 아니면 에 대해 2번 과정을 반복한다.
도함수를 구해서 해를 구해야하는 문제에서, 훨씬 간단하게 increments
이후에 objective function이 선형 근사(linearly approximated)될 수 있기 때문에 increment 계산 방식이 더 간단함을 보일 것이다.
증가량이 매우 작아질 때까지 함수가 감소하게 될 때, 알고리즘이 converge(수렴)한다고 본다. 이때 문제는 각 iteration에서 증가량을 어떻게 찾을 것인가(local problem)이다. 여기서는 global properties가 아닌, 해당 iteration에서
The First and Second-order Method
First-order Method
가장 간단한 방법으로 1차항만 취하여 음의 gradient 방향으로 increment를 취하여 함수를 감소시킬 수 있다.
물론 이는 방향을 나타낼 뿐이므로 parameter
딥러닝에 등장하는 gradient descent라는 방법과 같고, 다음과 같은 식을 갖는다.
책에서는 이 방법을 steepest descent method라 한다.
직관적인 의미를 살펴보자면, gradient 반대 방향으로 움직이면서 object function은 1차(선형) 근사에 따라 감소할 것이다.
이러한 방법은
Newton's Method
이번에는 Taylor expansion의 2차항까지 고려해보자. 그러면 increment equation은 다음과 같을 것이다.
우변은
위와 같은 linear equation을 풀고 increment 값을 얻는 것을 Newton's method라 한다.
위 두 가지 방법들은 Taylor expansion을 사용하여 계산을 진행하므로 아주 직관적이며, 쉬워 보인다. 실제로 원래의 object function이 지역적으로(locally) 1차 혹은 2차 함수 형태라면 두 방법이 항상 유효하다.
하지만, 다음과 같은 단점을 갖고 있다.
- Steepest descent method는 너무 greedy하고, 발산하기 쉬우며, 반복이 많이 필요하다.
- Newton's method는
를 계산해야 하는데, 목적함수가 복잡해지면 시간이 너무 오래걸린다.- 이로 인해 보통
를 계산하는 것은 피하는 경향이 있다. 이에 따라 quasi-Newton method 등의 방법이 고안되기도 했다.
- 이로 인해 보통
Least-square problem을 해결하는 데에는 좀 더 practical한 method를 사용한다. 대표적인 두 가지는 Gauss-Newton's method와 Levernburg-Marquardt's method이다.
The Gauss-Newton Method
Gauss-Newton method는
여기서
이전에는 objective function
따라서 아래와 같은 과정을 거친다.
위 식에서
이 식은 variable
Gauss-Newton method의 알고리즘은 다음과 같다.
를 initial value로 설정한다. 번째 iteration에 대해, jacobian 와 residual 를 계산한다.- normal equation
를 푼다. 가 충분히 작다면, 알고리즘을 종료하고, 아니면 로 두고 2번 과정으로 돌아간다.
increment
해를 구하기 위해서는
알고리즘이 수렴하지 않는 경우는 다음과 같이 두 경우로 나뉜다.
가 null-space를 갖는다면, 즉 을 만족하는 non-zero 를 찾을 수 있다면, 해를 찾을 수 없다.- 이 때에는 알고리즘이 수렴(converging)하지 않는다. 직관적으로 해당 점에서 원래 함수의 local approximation이 2차 함수가 아닐 것이다.
- Step size
가 매우 크다면 마찬가지로 해당 점에서의 선형 근사가 정확하지 않게 되어서 발산할 수 있다.
Gauss-Newton method는 위와 같은 단점을 갖고 있지만 간단하면서도 효과적인 nonlinear optimization 방법이어서 배울 가치가 있다. Nonlinear optimization의 알고리즘에 Gauss-Newton method의 변환이 사용된다.
예를 들어, line search method 중 하나는 step size
그렇다면, Levenberg-Marquardt method에 대해 알아보자.
The Levenberg-Marquardt Method
Gauss-Newton method에서는 Taylor expansion의 2차 근사를 사용했는데, 이는 expansion point 근처에서만 좋은 근사 결과를 보인다. 따라서 근사한 함수에 대한 trust region을 정의할 필요가 있다.
Trust region이란, 2차 근사가 유효한 범위를 말한다. 이렇게 trust-region 개념을 포함하는 알고리즘을 trust-region method라 한다.

이러한 trust region을 결정하는 방법은 실제 object function과 근사 함수의 결과의 차이를 고려하는 것이다. (당연히 차이가 적을수록 근사가 유효한 것이다.) 이를 나타내는 indicator
분자는 실제 object function의 감소량을, 분모는 approximate model의 감소량을 나타낸다.
값이 작을수록 실제 감소량이 근사 모델보다 작으므로 trust-region을 줄여야 한다는 것이고, 반대로 값이 크면 실제 감소가 더 크다는 의미이므로 approximate range를 늘려야 한다.
따라서 알고리즘은 다음과 같다.
- initial value
과 initial trust-region radius 를 설정한다. - k번째 반복에서, trust-region이 추가된 Gauss-Newton method에 기반하여 linear problem을 푼다.
- 여기서,
는 radius, 는 coefficient matrix이다.
- 위의
를 정의한 식에 따라 를 계산한다. 이면 로, 이면 로 둔다. 가 threshold보다 커지면 로 둔다.- 수렴하지 않았으면 2번 과정을 반복하고, 아니면 결과를 반환한다.
2번 과정의 식에서
보통
그런데, Levenberg-Marquardt optimization에서는 gradient를 구하기 위해 2번 식과 같은 sub-problem을 풀어야 하는데, 이 문제는 inequality constraints를 갖는다. 제한 조건이 있는 최적화문제를 풀기 위해서는 Lagrangian multiplier
Gauss-Newton method와 비슷하게,
여기서
반면 값이 크면
이 방법을 통해 coefficient matrix에 대한 non-singular, ill-conditioned problem을 피할 수 있고, 더 정확하고 안정적인 increments
요약하자면, Levenberg method(
최근댓글