VisualSlam

6장 비선형 최적화

조마니 2025. 1. 20. 16:09

6.1 상태 추정 문제

 

6.1.1 배치 상태 추정 및 최대 사후 추정

x_k 가 SE(3) 로 설명할 수 있는 카메라의 포즈다.
로봇의 위치 x_k 에서 이미지의 픽셀 위치 z_kj 에 해당하는 랜드마크 y_j 를 관측한다고 할 때, 위와 같은 식으로 표현이 가능하다.

K는 카메라 내부 파라미터, s는 픽셀거리 R_k 는 회전행렬, t_k는 병진 벡터, y_j는 랜드마크의 위치이다. 

이제 노이즈의 영향을 받았을 때, 데이터가 어떻게 변경되는지 보자.

w_k, v_k 의 평균이 0인 가우시안 분표를 충족한다고 가정할 때,

노이즈가 있는 u, v를 통해 x, y를 추론하고자 한다.

두 가지 방법이 있는데

1. 증분/점진적 방법 : 현재의 추정 값을 기반으로 다음 추정값을 구하는 방법

2. 배치단위 추정법 : 항상 최적의 경로를 얻어 내지만, 모든 data를 저장해두어야 하는 방법

 

배치단위 측정법이 현재의 주류 방법이며, 극단적인 경우 드론의 모든 순간의 데이터를 수집 후 컴퓨팅 센서로 다시 가져와 통합할 수 있다는 sfm에서 사용되는 주된 방법이다. 지금부터 배치 방법에 대해 알아보자.

x는 로봇의 위치 y는 랜드마크의 위치이다.

모든 순간에 대한 입력은 u로 z는 모든 순간한 관측이 된다. 이는, u, z가 주어진 상태에서 x, y를 추정하는 조건부 확률로 나타낼 수 있다.

만일 우리가 u도 모른다고 할 때 이를 sfm 문제라고 한다.

위의 식을 베이지안 식으로 풀면

일반적으로 사후 확률의 최댓값을 찾는 것은 어렵지만, 위와 같이 베이지안 룰로 풀어낸 다음 최대화 되는 최적점을 찾는 것은 가능하다. 우도를 최대로 하는는 지점을 찾으면 된다. 이를 최대 우도 추정법 MLE 라고 한다. 

직관적으로 우도는 현재의 포즈에서 어떤 종류의 관찰데이터가 생성될 수 있는지를 나타낸다고 생각하면 된다.

 

6.1.2 최소 제곱법의 소개

가우스 분포의 가정하에 MLE는 더 쉽게 풀 수 있다.

v_k 는 가우시안 노이즈를 산정한다.
이는 여전히 가우시안 분포다.

임의의 고차원 가우시안 분포로 가정했을 때, 확률 밀도 함수 또한 확장해보면

이 때 양변에 음의 로그를 붙히면 아래 식과 같다.

이 식에서 왼쪽은 x가 들어가 있지 않기 때문에 상수 취급이라, 따로 연산에 고려할 필요가 없고, 오른쪽만 최소화 하면 되는데, 이 방식이 결국 노이즈 항을 최소화 하는 2차 항과 동일하다는 것을 알 수 있다.

이 2차항을 마하라노비스 거리 라고 한다. 일반적으로 입력과 관찰이 독립이라고 가정할 수 있는데, 각 입력이 서로 독립이고, 각 관찰 간에도 독립이며, 입력과 관찰 사이도 독립이라는 것을 의미한다.

모든 순간의 움직임과 관찰을 독립적으로 처리할 수 있음을 보여준다.

이렇게 하면 최소 제곱 문제가 생성되며, 이는 상태의 최대 우도 추정값과 동일함을 볼 수 있다. 6.13을 자세히 살펴보면,

1. 모션오류는 x_{k-1}, x_k 에만 관련되고, 관측 오류는 x_k, y_j 에만 관련된다.

2. 증분을 위해 리 대수를 사용하면, 비 제약 최소 제곱 문제가 된다. 

3. L2-norm을 사용했다. 

 

6.1.3 예: 배치 상태 추정

매우 간단한 예시로, x축을 따라 전진 혹은 후진하는 자동차를 표현한 것이다. u_k는 입력 w_k는 노이즈이다. 위의 식은 모션 방정식, 두 번째 식은 관찰 방정식이다. z_k는 관측된 위치 이다. 초기상태 x_0를 안다고 할 때, 배치 단위 최대우도추정값을 도출하자

첫째, 배치 상태 변수 x = [x_0, x_1, x_2, x_3] 로, 배치 관찰을 z = [z1, z2, z3] 로 설정하고, 동일한 방식으로 입력 u = [u1, u2, u3] 를 정의할 때, 이전 추론을 통해 우리는 MLE를 알고 있다.

모션 방정식의 각 항을 뜯어보면,

이전 설명에서 오류 변수를 다음과 같이 작성할 수 있다.

MLE 목적 함수는 다음과 같다.

이때 y = [u, z]T 로 정의하면, 행렬 H를 작성할 수 있다.

그리고 sigma를 (Q1, Q2, Q3, R1, R2, R3) 에 대해서 전체 문제를 다음과 같이 나타낼 수 있는데,

이 후 이문제의 해결책이 아래식으로 귀결 됨을 배울 것이다.

 

6.2 비선형 최소 제곱 문제

매우 간단한 최소 제곱 문제를 고려하자.

이를 최적화 하는 방법은 f(x)를 미분하여 0이 되는 지점을 찾게 되면, 미분 0의 극값을 얻을 수 있고, 함수 값의 크기를 하나씩 비교하면, 최댓값, 최솟값 안장점에 도달할 수 있는데, 일반적으로 f(x) 가 복잡하면 저 미분을 구하는 것이 매우 어렵기 때문에, 쉽지 않고, 이를 미분하는 방법은 일반적으로 3가지 방법이 있는데, 1. 테일러 급수로 확장하거나, 이게 결국 gradient descent 방법이다.

2. 가우스 뉴튼 방법을 사용하거나, 3. 레벤베르크-마쿠아트 방법을 사용하거나 인데 이는 책에 잘 설명되어 있기 때문에 책을 참고하는 것을 추천한다.