본문 바로가기
유도항법제어/칼만필터를 넘어서

베이즈 필터 (Bayes Filter)

by 깊은대학 2021. 6. 8.

베이즈 필터(Bayes filter)는 이산시간(discrete-time) 확률 동적 시스템(stochastic dynamical system)의 상태변수를 추정하기 위한 확률론적인 방법으로서 칼만필터를 비롯한 대부분의 상태변수 추정 알고리즘의 근간을 이룬다.

 

 

베이즈 필터 문제는 초기 시간 0 부터 시간스텝 t 까지의 측정값 시퀀스

 

(1)z0:t={z0,z1,...,zt}

 

와 초기 시간 0 부터 시간스텝 t 까지의 제어입력(또는 행동)의 시퀀스

 

(2)u0:t={u0,u1,...,ut}

 

가 주어졌을 때, 이를 조건으로 하여 상태변수의 시퀀스 {x1,x2,...,xt} 를 추정하는 것이다.

상태변수 xt 에 관한 모든 정보는 확률밀도함수를 통해 파악할 수 있으므로, 베이즈 필터 문제는 측정값의 시퀀스 z0:t 와 제어입력의 시퀀스 u0:t 를 조건으로 한 상태변수 xt 의 조건부 확률밀도함수

 

(3)p(xt|z0:t,u0:t)

 

를 구하는 문제로 귀결된다.

베이즈 필터에서 사용하는 가정은,

   첫째, 시스템 모델은 마르코프(Markov) 시퀀스이고,
   둘째, 측정값 zt 는 상태변수 xt 에만 의존한다.

라는 것이다. 수식으로 표현하면 다음과 같다.

 

(4)p(xt|x0:t1,z0:t,u0:t)=p(xt|xt1,ut1)(5)p(zt|x0:t,z0:t,u0:t)=p(zt|xt)

 

식 (4)를 시스템 (또는 환경) 모델이라고 하고 식 (5)를 비메모리(memoryless) 측정 모델(또는 센서 모델)이라고 한다. 식 (4)의 가정에 의하면 상태변수 xt 는 제어입력 ut 의 영향을 받지 않으므로 식 (2)와 식 (3)의 제어입력 시퀀스는 u0:t 대신에 초기 시간 0 부터 시간스텝 t1 까지의 제어입력 시퀀스 u0:t1 을 사용한다.

 

 

이제 상태변수 xt 의 조건부 확률밀도함수를 구하기 위해서 베이즈 정리를 이용하여 식 (3)을 전개해보자.

 

(6)p(xt|z0:t,u0:t1)=p(z0:t|xt,u0:t1)p(xt|u0:t1)p(z0:t|u0:t1)=p(zt,z0:t1|xt,u0:t1)p(xt|u0:t1)p(zt,z0:t1|u0:t1)=p(zt|z0:t1,xt,u0:t1)p(z0:t1|xt,u0:t1)p(xt|u0:t1)p(zt|z0:t1,u0:t1)p(z0:t1|u0:t1)

 

여기서 다음과 같은 관계식을 이용하면,

 

(7)p(z0:t|xt,u0:t1)=p(xt|z0:t1,u0:t1)p(z0:t1|u0:t1)p(xt|u0:t1)

 

식 (6)은 다음과 같이 된다.

 

(8)p(xt|z0:t,u0:t1)=p(zt|z0:t1,xt,u0:t1)p(xt|z0:t1,u0:t1)p(zt|z0:t1,u0:t1)

 

식 (5)에 의하면, 식 (8)은 다음과 같이 된다.

 

(9)p(xt|z0:t,u0:t1)=p(zt|xt)p(xt|z0:t1,u0:t1)p(zt|z0:t1,u0:t1)

 

여기서 p(xt|z0:t,u0:t1)zt 값을 측정을 한 후의 확률밀도함수이기 때문에 사후(a posteriori) 확률밀도함수라고 하고, p(xt|z0:t1,u0:t1)zt 값을 측정하기 전의 확률밀도함수이기 때문에 사전(a priori) 확률밀도함수라고 한다. p(zt|xt) 는 빈도함수(likelihood function)라고 하고, p(zt|z0:t1,u0:t1) 를 정규화(normalizing) 항이라고 하는데 다음과 같이 계산할 수 있다.

 

(10)p(zt|z0:t1,u0:t1)=xtp(zt|xt)p(xt|z0:t1,u0:t1) dxt

 

식 (10)을 식 (9)에 대입하면 다음 식을 얻을 수 있다.

 

(11)p(xt|z0:t,u0:t1)=p(zt|xt)p(xt|z0:t1,u0:t1)xtp(zt|xt)p(xt|z0:t1,u0:t1) dxt

 

식 (11)은 p(xt|z0:t1,u0:t1) 이 주어졌을 때, 측정 모델 p(zt|xt) 를 이용하여 p(xt|z0:t,u0:t1) 을 계산할 수 있는 식이기 때문에 측정 업데이트(measurement update)식이라고 한다.

 

 

식 (11)의 사전 확률밀도함수를 좀 더 전개하면 다음과 같다.

 

(12)p(xt|z0:t1,u0:t1)=xt1p(xt|xt1,z0:t1,u0:t1)p(xt1|z0:t1,u0:t1) dxt1=xt1p(xt|xt1,ut1)p(xt1|z0:t1,u0:t2) dxt1

 

여기서 xt 가 마르코프 시퀀스라는 가정인 식 (4)를 사용하였다. 위 식의 두 번째 줄에서 u0:t1u0:t2 로 바뀐 이유는 제어입력 ut1 이 상태변수 xt1 에 영향을 미치지 않기 때문에 제거한 것이다. 위 식은 p(xt1|z0:t1,u0:t2) 가 주어졌을 때, 시스템 모델 p(xt|xt1,ut1) 을 이용하여 p(xt|z0:t1,u0:t1) 을 계산할 수 있는 식이기 때문에 시간 업데이트(time update)식 또는 상태 예측(state prediction)식이라고 한다.

정리하면 베이즈 필터는 시간 업데이트식과 측정 업데이트식 등 2개의 식이 번갈아 작동하는 궤환 필터(recursive filter)이다.

 

(13)p(xt|z0:t1,u0:t1)=xt1p(xt|xt1,ut1)p(xt1|z0:t1,u0:t2) dxt1p(xt|z0:t,u0:t1)=p(zt|xt)p(xt|z0:t1,u0:t1)xtp(zt|xt)p(xt|z0:t1,u0:t1) dxt

 

식 (13)을 한 개의 식으로 합칠 수도 있다.

 

(14)p(xt|z0:t,u0:t1)=p(zt|xt)xt1p(xt|xt1,ut1)p(xt1|z0:t1,u0:t2) dxt1xtp(zt|xt)p(xt|z0:t1,u0:t1) dxt=η p(zt|xt)xt1p(xt|xt1,ut1)p(xt1|z0:t1,u0:t2) dxt1

 

여기서 η 는 식 (10)으로 주어지는 정규화 항이다.

로봇이나 SLAM 커뮤니티에서는 사후 확률밀도함수인 p(xt|z0:t,u0:t1)bel(xt) 라고 표기하고 시간스텝 t 에서의 belief state라고 한다. 이 표기에 의하면 베이즈 필터 식 (14)를 다음과 같이 쓸 수 있다.

 

(15)bel(xt)=η p(zt|xt)xt1p(xt|xt1,ut1) bel(xt1) dxt1

 

베이즈 필터는 시간스텝 t1 에서 주어진 사후 확률밀도함수로부터 시간스텝 t 에서의 사후 확률밀도함수를 계산할 수 있는 개념적인 필터로서, 극히 제한적인 조건 하에서만 해석적인 해를 얻을 수 있다. 칼만필터와 그리드(grid) 기반 필터가 그 예다.