두 가우시안의 곱
두 가우시안의 곱 N(μ1,σ12)×N(μ2,σ22)=N(σ12+σ22σ22∗μ1+σ12∗μ2,σ121+σ2211) 을 만족하고,
새로운 가우시안의 variance는 기존의 두 가우시안보다 작다. 이 결과는 칼만필터의 measurement update 과정과 연관이 있다.
칼만필터는 Gaussian 가정을 통해 state estimation과 uncertainty를 함께 고려한다.
칼만필터
용어 정의
x^ : state estimation vector
P : estimation error covariance matrix
F : state transition matrix
Q : process noise covariance matrix
z : measurement vector
H : measurement matrix
R : measurement noise covariance matrix
S : measurement covariance matrix
칼만필터는 Prediction과 Measurement Update를 반복하면서 x^과 P를 갱신하면서 동작한다.
이 글에서 prime(`)는 measurement update 이후의 값을 의미한다.
칼만필터 알고리즘
Prediction
x^k+1=Fx^k
Pk+1=FPkFT+Q
Update
yk=zk−Hx^k
Sk=HPkHT+R
Kk=PkHTSk−1
x^k′=x^k+Kkyk
Pk′=(I−KkH)Pk
KF 유도
추정값이 아닌 실제 값 xk의 경우 아래 식을 만족한다고 가정하자.
xk+1=Fxk+wk
zk=Hxk+vk
wk는 process noise vector이다. state transition matrix F의 한계에 의해 발생한다. 예를 들어 state vector가 object의 위치와 속도만을 고려하는 경우 가속운동하는 object의 state를 정확히 계산할 수 없다. 이 경우 가속에 의한 오차가 wk에 포함될 것이다.
vk는 sensor noise를 의미하고, ek는 estimation error를 의미한다.
wk,vk,ek 모두 μ=0인 gaussian 분포를 따른다고 가정한다.
여기서 P, Q, R은 각각 e, w, v의 공분산행렬이다.
Pk=E[ekekT]=E[(xk−x^k)(xk−x^k)T]
Pk′=E[ek′ek′T]=E[(xk−x^k′)(xk−x^k′)T]
Q=E[wkwkT],R=E[vkvkT]
Prediction
x^k+1=Fx^k
ek+1=xk+1−x^k+1=(Fxk+wk)−Fx^k=Fek+wk
위에서 구한 ek+1을 Pk+1에 대입하면 아래와 같은 결과를 얻는다.
Pk+1=E[(Fek+wk)(Fek+wk)T]=FPkFT+Q
Update
state를 update할 때 새로운 measure값과 기존의 state x^k값의 차이인 residual을 이용한다. residual은 아래와 같다.
yk=zk−Hx^k
따라서 새로운 state x^k′은 기존의 state에 residual에 비례하는 값을 더해서 구해준다.
x^k′=x^k+Kkyk=x^k+Kk(zk−Hx^k)=x^k+Kk(Hxk+vk−Hx^k)
이제 Minimum MSE을 만족하는 Kalman gain Kk를 구해보자.
위에서 구한 x^k′−x^k값을 이용해 Pk′를 정리하면 아래와 같다.
Pk′=E[ek′ek′T]=E[(xk−x^k′)(xk−x^k′)T]=E[((I−KkH)(xk−x^k)−Kkvk)(I−KkH)(xk−x^k)−Kkvk)T]
=(I−KkH)Pk(I−KkH)T+KkRKkT
위 식을 전개한 뒤 trace를 취하면 아래와 같다.
tr[Pk′]=tr[Pk]−2tr[KkHPk]+tr[Kk(HPkHT+R)KkT]
이제 Kk에 대해서 미분하고 결과를 zero로 setting(minimum mse 조건)하면 아래와 같이 kalman gain을 얻는다.
dKkdT[Pk′]=−2(HPk)T+2Kk(HPkHT+R)=0
Kk=PkHT(HPkHT+R)−1=PkHTS−1
위에서 구한 Pk′식에 Kk를 대입해서 정리하면
Pk′=(I−KkH)Pk을 얻는다.
Discussion
sensor noise covariance R→∞이면 kalman gain Kk→0이고
R→0이면 Kk→∞이 되는 것을 알 수 있다. 즉 measurement의 noise가 클수록(안좋은 센서) 적게 update가 되고 noise가 작은 센서(정밀한 센서)일수록 update에 더 많이 반영된다.
다시 맨 처음에 언급한 두 가우시안의 곱을 다시 살펴보자.
결과값을 정리하면 아래와 같다.
μ′=μ1+σ12+σ22σ12×(μ2−μ1)
σ′2=(1−σ12+σ22σ12)×σ12
kalman filter의 measurement update부분과 유사성을 확인할 수 있다.
확장칼만필터 EKF
칼만필터에서는 state transition xk+1=f(xk)+wk와 measurement function zk=h(xk)+vk의 f와 h를 선형변환으로 가정하기 때문에 변환을 행렬 F, H로 나타내 사용할 수 있었다.
하지만 대체로 f, h는 비선형변환이기 때문에 행렬로 나타낼 수 없고, 가우시안을 비선형변환할 경우 더이상 가우시안이 아니라는 문제가 있다.
EKF는 테일러전개를 이용해 f와 h를 선형근사해서 F, H를 얻는다.
Fk=f′(xk),Hk=h′(x^k)
EKF 알고리즘
Prediction
x^k+1=f(x^k)
Pk+1=FkPkFkT+Q
Update
yk=zk−h(x^k)
Sk=HkPkHkT+R
Kk=PkHkTSk−1
x^k′=x^k+Kkyk
Pk′=(I−KkHk)Pk