개요
- Kalman Filter 와 Particle Filter 의 이론적 기초가 되는 Bayes Filter 에 대해 알아보자
- Cyrill Stachniss 의 유튜브 강의를 듣고 아래 내용을 정리했다
https://www.youtube.com/watch?v=0lKHFJpaZvE
Bayes Filter 의 목적
- 이전의 관측 값과 현재의 제어 입력 정보를 활용하여 현재의 위치를 추정하는 것
- 수식적 표현
$ bel(x_t) = p(x_t | z_{1:t},u_{1:t}) $
$bel(x_t)$ = bel은 belief 의 약자
$x_t$ = 현재 상태 (진짜 위치)
$z_{1:t}$ = 지금까지 관측한 값 (측정된 위치들)
$u_{1:t}$ = 지금까지의 제어 입력
$p(x_t | z_{1:t}, u_{1:t})$ --> 현재 위치를 하나의 값으로 추정하는 것이 아니라 확률 분포로 예측한다는 뜻
도식 표현
각각의 Step 이 어떻게 나오는지는 뒤쪽에 수식으로 설명하였다
사전 지식
1. Bayes Rule
$$ P(A|B) = {{P(B|A) \cdot P(A)}\over{P(B)}}$$
이 수식은 증명도 어렵지 않은 단순한 수식인데, 다양한 분야에서 요긴하게 사용된다
Bayes Filter 수식 유도 시에도 사용된다
2. Markov Property
$$ P(S_{t+1} = s' | S_0, S_1, ..., S_{t-1}, S_t) = P(S_{t+1} = s' | S_t)$$
Markov Property 는 특정 시간에 특정 상태(state)가 되는 확률은 그 이전에 어떤 상태(state)를 거쳐 온 것에는 무관하게, 바로 직전 상태(state)만 같다면, 다음 상태(state) 가 되는 확률은 같다는 것이다
이 성질도 다양한 분야에 많이 활용된다
Bayes Filter 수식 유도
1) $ bel(x_t) = p(x_t | z_{1:t},u_{1:t}) $
--> Bayes Rule $ P(x_t|z_t) = {{P(z_t|x_t) \cdot P(x_t)}\over{P(z_t)}}$ 적용
2) $ bel(x_t) = { p(z_t | x_t,z_{1:t-1},u_{1:t}) \cdot p(x_t | z_{1:t-1},u_{1:t}) \over { p(z_t | z_{1:t-1},u_{1:t}) }} $
--> 이전 측정결과가, 다음 측정결과에 직접적인 영향을 끼칠 수 없다.
따라서 분모는 상수 $ \eta $ 로 치환한다. 그리고 이는 확률분포의 합이 1이 되게 조정하는 상수로 활용한다.
3) $ bel(x_t) = { \eta p(z_t | x_t,z_{1:t-1},u_{1:t}) \cdot p(x_t | z_{1:t-1},u_{1:t}) } $
--> Markov Property 에 따라 $p(z_t | x_t,z_{1:t-1},u_{1:t})=p(z_t | x_t)$
4) $ bel(x_t) = { \eta p(z_t | x_t) \cdot p(x_t | z_{1:t-1},u_{1:t}) } $
--> 조건부 확률 성질에 따라 $ p(x_t) = \int {p(x_t \cap x_{t-1})} dx_{t-1} = \int {p(x_t | x_{t-1}) \cdot p(x_{t-1})} dx_{t-1} $
5) $ bel(x_t) = { \eta p(z_t | x_t) \cdot \int {p(x_t | x_{t-1},z_{1:t-1},u_{1:t}) \cdot p(x_{t-1} | z_{1:t-1},u_{1:t})} dx_{t-1} } $
--> Markov Property 에 따라 $p(x_t | x_{t-1},z_{1:t-1},u_{1:t}) = p(x_t | x_{t-1},u_{t})$
--> 현재의 제어 입력이 과거의 상태에 영향을 미칠 수 없으므로 $p(x_{t-1} | z_{1:t-1},u_{1:t}) =p(x_{t-1} | z_{1:t-1},u_{1:t-1})$
--> $p(x_{t-1} | z_{1:t-1},u_{1:t-1}) = bel(x_{t-1})$
6) $ \therefore bel(x_t) = \eta p(z_t | x_t) \cdot \int {p(x_t | x_{t-1},u_{t}) \cdot bel(x_{t-1})} dx_{t-1} $
힘겹게 수식 유도를 완료했다
Step 분류
위에서 유도한 수식을 두 가지 단계로 분류한다. 물리 모델(Motion Model)을 활용하여 상태를 예측하고, 관측(Observation Model)을 통해 보정하는 작업을 수행하는 2가지 단계인데, 이런 단계를 통하여 필터링을 직관적으로 수행할 수 있다.
1) Prediction Step
$$ \bar{bel} (x_t) = \int {p(x_t | x_{t-1},u_{t}) \cdot bel(x_{t-1})} dx_{t-1} $$
$p(x_t | x_{t-1},u_{t})$ = 이전 상태와 현재의 제어 입력에 따라 계산되는 현재 위치를 뜻한다
이 Step 에서는 물리 모델을 활용하여 다음 상태(state)를 예측할 수 있다
2) Correction Step
$$bel(x_t) = \eta p(z_t | x_t) \cdot \bar{bel} (x_t)$$
$p(z_t | x_t)$ = 관측 값과 현재 상태와의 관계를 의미한다; 관측하는 것이므로 Gaussian Noise 가 포함되어 있다고 간주한다
이 Step 에서는 관측한 값을 바탕으로 다음 상태 값을 보정한다
Bayes Filter의 활용 분야
Prediction Step 의 물리 모델(Motion Model)을 Gaussian + Linear/Linearized Model 로 가정할 경우
--> Kalman filter, EKF
Prediction Step 의 물리 모델(Motion Model)을 Non-parametric, Arbitrary Model 로 가정하고, Monte-Carlo 방법을 활용하는 경우
--> Particle filter
향후 계획
- Kalman Filter (EKF, UKF 포함) 와 Particle Filter 에 대해서도 강의를 듣고 정리할 계획