Unknownpgr

베이즈 필터와 칼만 필터

2024-04-27 14:41:59 | Korean

칼만 필터는 측정값을 통해 시스템의 상태를 추정하는 확률론적 방법이다. 칼만 필터를 설명하는 방법은 여러가지가 있다. 예를 들어 칼만 필터를 state observer로 해석하거나 low-pass filter와 high-pass filter의 결합으로 보기도 한다. 그러나 이 글에서는 가장 근본적이라고 생각되는 베이즈 필터의 근사로 칼만 필터를 설명하고자 한다.

Multivariate Normal Distribution

칼만 필터는 벡터로 이루어진 상태와 그 관측 결과를 multivariate normal distribution으로 가정한다. 그러므로 칼만 필터를 이해하려면 앞서 이에 대한 이해가 필요하다.

Normal Distribution

먼저 1차원 normal distribution의 확률밀도함수는 다음과 같이 정의된다.

xN(μ,σ2)p(x)=12πσexp(12(xμσ)2)x \sim N(\mu, \sigma^2) \Longleftrightarrow p(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{1}{2}\left(\frac{x - \mu}{\sigma}\right)^2\right)

이때 μ\mu는 평균, σ2\sigma^2는 분산이다.

Properties of Normal Distribution

정규분포는 좋은 성질들을 많이 가지고 있는데, 가장 중요한 성질 중 하나는 정규분포는 선형 결합에 대하여 닫혀있다는 것이다. 즉, x1N(μ1,σ12)x_1 \sim N(\mu_1, \sigma_1^2), x2N(μ2,σ22)x_2 \sim N(\mu_2, \sigma_2^2)이면 임의의 상수 a,ba, b에 대하여 ax1+bx2a x_1 + b x_2도 정규분포를 따른다.

이것은 정규분포가 상수곱에 대해 닫혀있음을 보인 후 덧셈에 대해 닫혀있음을 보임으로서 쉽게 증명할 수 있는데, 상수곱에 대해 닫혀 있는 것은 매우 간단하므로 생략하고 덧셈에 대해 닫혀있음을 증명한다. 이것은 다양한 방법으로 보일 수 있는데 가장 직관적인 방법은 아래와 같이 직접 계산하여 보이는 것이다.

먼저 독립인 두 확률변수 x1p1(x)x_1 \sim p_1(x), x2p2(x)x_2 \sim p_2(x)의 합x=x1+x2x = x_1 + x_2의 확률밀도함수는 다음과 같이 두 확률밀도함수의 convolution으로 주어진다.

p(x)=p1(t)p2(xt)dtp(x) = \int p_1(t) p_2(x - t) dt

그러므로 여기에 정규분포의 확률밀도함수를 대입하면 다음과 같다.

p(x)=12πσ1exp(12(tμ1σ1)2)12πσ2exp(12(xtμ2σ2)2)dtp(x) = \int \frac{1}{\sqrt{2\pi}\sigma_1} \exp\left(-\frac{1}{2}\left(\frac{t - \mu_1}{\sigma_1}\right)^2\right) \frac{1}{\sqrt{2\pi}\sigma_2} \exp\left(-\frac{1}{2}\left(\frac{x - t - \mu_2}{\sigma_2}\right)^2\right) dt

이 적분을 풀 때는 먼저 exp\exp함수를 합치고 지수 부분을 전개하여 tt에 대한 완전제곱꼴로 만든 후 다음의 공식을 사용하면 된다.

exp(ax2)dx=πa\int \exp(-ax^2) dx = \sqrt{\frac{\pi}{a}}

이 방법으로 적분을 풀면 다음과 같이 된다.

12πσ12+σ222exp(μ12σ22+σ12(μ22+2μ2xx2)+(μ1σ22μ2σ12+σ12x)2σ12+σ222σ12σ22)\frac{1}{2 \sqrt{\pi} \sqrt{\sigma_1^2 + \sigma_2^2}}\sqrt{2} \exp\left(\frac{- \mu_1^2 \sigma_2^2 + \sigma_1^2 \left(- \mu_2^2 + 2 \mu_2 x - x^2\right) + \frac{\left(\mu_1 \sigma_2^2 - \mu_2 \sigma_1^2 + \sigma_1^2 x\right)^2}{\sigma_1^2 + \sigma_2^2}}{2 \sigma_1^2 \sigma_2^2}\right)

이때 지수 부분을 xx에 대하여 잘 인수분해하면 아래와 같이 정리된다.

μ12σ22+σ12(μ22+2μ2xx2)+(μ1σ22μ2σ12+σ12x)2σ12+σ222σ12σ22=1σ12+σ22(μ12(σ12+σ22)σ12+(μ22+2μ2xx2)(σ12+σ22)σ22+(μ1σ22μ2σ12+σ12x)2σ12σ22)=1σ12+σ22(μ12μ12σ22σ12μ22σ12σ22μ22+2μ2xσ12σ22+2μ2xx2σ12σ22x2+μ12σ22σ12+μ22σ12σ22+x2σ12σ222μ1μ2+2μ1x2μ2xσ12σ22)=1σ12+σ22(μ12μ22+2μ2xx22μ1μ2+2μ1x)=1σ12+σ22((μ1+μ2)22(μ1+μ2)x+x2)=(x(μ1+μ2))2σ12+σ22\begin{align*} & \frac{- \mu_1^2 \sigma_2^2 + \sigma_1^2 \left(- \mu_2^2 + 2 \mu_2 x - x^2\right) + \frac{\left(\mu_1 \sigma_2^2 - \mu_2 \sigma_1^2 + \sigma_1^2 x\right)^2}{\sigma_1^2 + \sigma_2^2}}{2 \sigma_1^2 \sigma_2^2}\\ &=\frac{1}{\sigma_1^2 + \sigma_2^2}\left( - \frac{\mu_1^2(\sigma_1^2 + \sigma_2^2)}{\sigma_1^2} + \frac{\left(- \mu_2^2 + 2 \mu_2 x - x^2\right)(\sigma_1^2 + \sigma_2^2)}{\sigma_2^2} + \frac{\left(\mu_1 \sigma_2^2 - \mu_2 \sigma_1^2 + \sigma_1^2 x\right)^2}{\sigma_1^2\sigma_2^2} \right)\\ &=\frac{1}{\sigma_1^2 + \sigma_2^2}\left( - \mu_1^2 - \frac{\mu_1^2\sigma_2^2}{\sigma_1^2} - \frac{\mu_2^2\sigma_1^2}{\sigma_2^2} - \mu_2^2 + \frac{2 \mu_2 x \sigma_1^2}{\sigma_2^2} + 2 \mu_2 x - \frac{x^2\sigma_1^2}{\sigma_2^2} - x^2 + \frac{\mu_1^2\sigma_2^2}{\sigma_1^2} + \frac{\mu_2^2\sigma_1^2}{\sigma_2^2} + \frac{x^2\sigma_1^2}{\sigma_2^2} - 2 \mu_1 \mu_2 + 2 \mu_1 x - \frac{2 \mu_2 x \sigma_1^2}{\sigma_2^2} \right)\\ &=\frac{1}{\sigma_1^2 + \sigma_2^2}\left( - \mu_1^2 - \mu_2^2 + 2 \mu_2 x - x^2 - 2 \mu_1 \mu_2 + 2 \mu_1 x \right)\\ &=-\frac{1}{\sigma_1^2 + \sigma_2^2}\left( (\mu_1 + \mu_2)^2 - 2 (\mu_1+\mu_2) x + x^2 \right)\\ &=-\frac{(x- (\mu_1 + \mu_2))^2}{\sigma_1^2 + \sigma_2^2}\\ \end{align*}

이를 원래 식에 다시 대입하면 다음을 얻는다.

12πσ12+σ22exp((x(μ1+μ2))22(σ12+σ22))\frac{1}{\sqrt{2\pi} \sqrt{\sigma_1^2 + \sigma_2^2}} \exp\left(- \frac{\left(x-(\mu_1 + \mu_2) \right)^2}{2 (\sigma_1^2 + \sigma_2^2)}\right)

이것은 정규분포의 정의에 따라 평균이 μ1+μ2\mu_1 + \mu_2이고 분산이 σ12+σ22\sigma_1^2 + \sigma_2^2인 정규분포다.

Definition of Multivariate Normal Distribution

Multivariate normal distribution은 다양한 정의를 가지고 있다. 이중 가장 일반적인 정의는 각 원소의 임의의 선형 결합이 정규분포가 되는 확률분포로 정의하는 것이다. 즉, 확률변수 xRnx \in \mathbb{R}^n이 multivariate normal distribution을 따른다는 것은 임의의 벡터 aRna \in \mathbb{R}^n에 대하여 aTxa^T x가 normal distribution을 따른다는 것이다.

이것과 동치인 다른 정의는 multivariate normal distribution을 서로 독립인 nn개의 1차원 standard normal distribution의 선형 결합으로 간주하는 것이다. 즉, kk개의 독립인 1차원 standard normal distribution x1,x2,,xkx_1, x_2, \ldots, x_k로 이루어진 벡터 zRkz \in \mathbb{R}^k에 대하여 행렬 AA와 벡터 μ\mu가 존재해서 x=Az+μx = A z + \mu로 표현할 수 있다는 것이다. 이때 AAn×kn \times k 행렬이며, μ\munn차원 벡터이다.

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

xN(μ,Σ)ARn×k,μRn s.t. x=Az+μ,zN(0,I)\begin{align*} x &\sim N(\mu, \Sigma) \Longleftrightarrow \exists A \in \mathbb{R}^{n \times k}, \mu \in \mathbb{R}^n \text{ s.t. } x = A z + \mu, z \sim N(0, I) \\ \end{align*}

Properties of Multivariate Normal Distribution

두 번째 정의를 사용하면 여러 증명을 좀 더 편하게 할 수 있으므로 이를 사용할 것이다. 두 번째 정의를 사용할 때는 공분산 행렬 Σ\SigmaAA의 관계가 중요하다. 먼저 확률변수 xx의 평균이 μ\mu라고할 때 공분산의 정의는 다음과 같다.

Σ=E[(xμ)(xμ)T]\Sigma = E[(x - \mu)(x - \mu)^T]

이것은 공분산 행렬의 iijj열 원소가 ii번째 원소와 jj번째 원소의 공분산임을 의미한다.

이제 x=Az+μx = A z + \mu를 여기에 대입하여 공분산 행렬을 계산하면 다음과 같다.

Σ=E[(Az+μμ)(Az+μμ)T]=E[AzzTAT]=AE[zzT]AT=AIATzN(0,I)=AAT\begin{align*} \Sigma &= E[(A z + \mu - \mu)(A z + \mu - \mu)^T] \\ &= E[A z z^T A^T] \\ &= A E[z z^T] A^T \\ &= A I A^T \because z \sim N(0, I) \\ &= A A^T \end{align*}

이러한 공분산 행렬은 양의 정부호(positive definite) 행렬이 된다. 양의 정부호란 임의의 영벡터가 아닌 벡터 xRnx \in \mathbb{R}^n에 대하여 xTΣx>0x^T \Sigma x \gt 0이 성립하는 것을 의미한다. 이는 다음과 같이 쉽게 보일 수 있다.

xTΣx=xTAATx=(ATx)T(ATx)=ATx2>0x^T \Sigma x = x^T A A^T x = (A^T x)^T (A^T x) = \|A^T x\|^2 \gt 0

한 가지 예외 사항은 어떤 원소의 분산이 0인 경우이다. 이러한 경우를 퇴화(degenerate)라고 하며, 이 경우 공분산 행렬은 역행렬을 가지지 않는다. 이런 경우 marginalization 등을 통해 그 원소를 제거한 후 계산해야 한다. 그러나 이것은 특수한 경우이므로 여기서는 다루지 않는다.

이로부터 이 공분산 행렬은 반드시 역행렬을 가짐을 보일 수 있다.

Probability Density Function of Multivariate Normal Distribution

다음으로 이로부터 multivariate normal distribution의 확률밀도함수를 구할 수 있다. 먼저 서로 독립이고 각각의 확률밀도함수가 표준 정규분포인 nn차원 확률변수 zz를 생각하자. zz의 확률밀도함수는 단순히 각 원소의 확률밀도함수의 곱이므로 다음과 같다.

12πexp(12z12)12πexp(12z22)12πexp(12zn2)\frac{1}{\sqrt{2\pi}} \exp\left(-\frac{1}{2} z_1^2\right) \frac{1}{\sqrt{2\pi}} \exp\left(-\frac{1}{2} z_2^2\right) \ldots \frac{1}{\sqrt{2\pi}} \exp\left(-\frac{1}{2} z_n^2\right)

이것을 잘 정리하고 벡터 형식으로 표기하면 다음과 같다.

=1(2π)n/2exp(12(z12+z22++zn2))p(z)=1(2π)n/2exp(12zTz)\begin{align*} &= \frac{1}{(2\pi)^{n/2}} \exp\left(-\frac{1}{2} (z_1^2 + z_2^2 + \ldots + z_n^2)\right)\\ p(z) &= \frac{1}{(2\pi)^{n/2}} \exp\left(-\frac{1}{2} z^T z\right) \\ \end{align*}

다음으로 어떤 다변수 확률분포 xx와 임의의 역변환이 존재하는 변환 ff에 대하여 다음이 성립한다.

y=f(x)p(y)=p(x)xy=p(f1(y))1det(J)\begin{align*} y = f(x) \Rightarrow p(y) &= p(x) \left|\frac{\partial x}{\partial y}\right|\\ &= p(f^{-1}(y)) \frac{1}{|\det(J)|} \end{align*}

이때 JJff의 Jacobian이다. 만약 ff가 선형 변환이라면 Jacobian은 변환 행렬 AA가 되며, 이때는 다음과 같이 주어진다.

xp(x)Ax1det(A)p(x)y=Axp(y)=1det(A)p(A1y)\begin{align*} x\sim p(x) &\Rightarrow A x \sim \frac{1}{|\det(A)|} p(x)\\ \therefore y = A x &\Rightarrow p(y) = \frac{1}{|\det(A)|} p(A^{-1} y) \end{align*}

이제 이것을 앞서 구한 multivariate normal distribution에 적용해보자.

z=Ax+μp(z)=1det(A)p(A1(zμ))=1det(A)1(2π)n/2exp(12(A1(zμ))TA1(zμ))=1det(A)1(2π)n/2exp(12(zμ)T(AAT)1(zμ))\begin{align*} z = A x + \mu \Rightarrow p(z) &= \frac{1}{|\det(A)|} p(A^{-1} (z - \mu))\\ &= \frac{1}{|\det(A)|} \frac{1}{(2\pi)^{n/2}} \exp\left(-\frac{1}{2} (A^{-1} (z - \mu))^T A^{-1} (z - \mu)\right)\\ &= \frac{1}{|\det(A)|} \frac{1}{(2\pi)^{n/2}} \exp\left(-\frac{1}{2} (z - \mu)^T (A A^T)^{-1} (z - \mu)\right)\\ \end{align*}

앞서 보았듯 AAT=ΣA A^T = \Sigma이므로 이를 대입하면 다음과 같은 multivariate normal distribution의 확률밀도함수를 얻는다.

p(z)=1(2π)n/2Σ1/2exp(12(zμ)TΣ1(zμ))p(z) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2} (z - \mu)^T \Sigma^{-1} (z - \mu)\right)

여기서 det(A)=det(Σ)1/2|\det(A)|=|\det(\Sigma)|^{1/2}임은 다음과 같이 보일 수 있다.

det(Σ)=det(AAT)=det(A)det(AT)det(AB)=det(A)det(B)=det(A)det(A)=det(A)2det(A)=det(AT)det(A)2=det(Σ)det(A)=det(Σ)1/2\begin{align*} |\det(\Sigma)| &= |\det(A A^T)| = |\det(A)\det(A^T)| \\ &\because \det(AB) = \det(A)\det(B)\\ &=|\det(A)\det(A)| = |\det(A)|^2\\ &\because \det(A)=\det(A^T)\\ \therefore |\det(A)|^2&=|\det(\Sigma)| \\ \therefore |\det(A)| &= |\det(\Sigma)|^{1/2} \end{align*}

Kalman Filter

먼저 베이즈 필터의 식은 다음과 같이 주어진다.

p(xtz1:t)=p(ztxt)p(xtz1:t1)p(ztxt)p(xtz1:t1)dxtp(xtz1:t1)=p(xtxt1)p(xt1z1:t1)dxt1\begin{align*} p(x_t | z_{1:t})&= \frac{p(z_t | x_t) p(x_t | z_{1:t-1})}{\int p(z_t | x_t) p(x_t | z_{1:t-1}) dx_t} \\ p(x_t | z_{1:t-1}) &= \int p(x_t | x_{t-1}) p(x_{t-1} | z_{1:t-1}) dx_{t-1} \end{align*}

베이즈 필터는 시스템 모델과 관측 모델이 주어질 때 관측값으로부터 상태를 추론하는 방법으로, 은닉 마르코프 체인으로 표현되는 시스템에 대해 수학적으로 최적의 추론을 제공한다. 그러나 베이즈 필터는 두 개의 적분으로 이루어져 있는데 임의의 확률분포에 대해 이 적분을 쉽게 계산할 수 있는 방법은 없다. 따라서 이 수식을 그대로 풀어서 사용하는 것은 불가능하고, 다른 형태로 근사하여 풀어야만 한다. 저번 글에서 다뤘듯 파티클 필터는 베이즈 필터의 비모수적인 근사이며 따라서 확률분포와 모델에 대한 가정을 하지 않는다. 이 글에서 다루는 칼만 필터는 베이즈 필터의 모수적 근사로 시스템 모델과 측정 모델을 다음과 같이 선형 가우시안으로 가정한다.

xt=Ftxt1+Btut+ϵtzt=Htxt+δt\begin{align*} x_t &= F_t x_{t-1} + B_t u_t + \epsilon_t \\ z_t &= H_t x_t + \delta_t \end{align*}

여기서 각 변수의 의미는 다음과 같다.

또한 상태 노이즈와 측정 노이즈는 다음과 같이 가우시안 분포를 따른다.

ϵtN(0,Qt)δtN(0,Rt)\begin{align*} \epsilon_t &\sim N(0, Q_t) \\ \delta_t &\sim N(0, R_t) \end{align*}

이제 이것을 이용하여 베이즈 필터에서 칼만 필터를 유도한다. 칼만 필터에서는 확률분포가 multivariate normal distribution을 따른다고 가정하므로 평균과 공분산 행렬만으로 확률분포를 결정할 수 있다. 따라서 칼만 필터는 다음과 같이 상태의 평균 μ\mu와 공분산 Σ\Sigma를 추정한다.

Prediction Step

먼저 베이즈 필터의 상태 예측 단계는 다음과 같이 주어진다.

p(xtz1:t1)=p(xtxt1)p(xt1z1:t1)dxt1p(x_t | z_{1:t-1}) = \int p(x_t | x_{t-1}) p(x_{t-1} | z_{1:t-1}) dx_{t-1}

그러나 이때 p(xtxt1)p(x_t | x_{t-1})p(xt1z1:t1)p(x_{t-1} | z_{1:t-1})가 가우시안 분포를 따르므로 이 적분은 다음과 같이 간단하게 계산된다.

xtt1N(μtt1,Σtt1)μtt1=Fμt1t1+ButΣtt1=FΣt1t1FT+Q\begin{align*} x_{t|t-1} &\sim N(\mu_{t|t-1}, \Sigma_{t|t-1}) \\ \mu_{t|t-1} &= F \mu_{t-1|t-1} + B u_{t} \\ \Sigma_{t|t-1} &= F \Sigma_{t-1|t-1} F^T + Q \end{align*}

증명은 다음과 같다. 먼저 평균은 같이 기댓값 연산 E[x]E[x]가 선형성을 가지는 것으로부터 간단히 구할 수 있다.

μtt1=E[xtt1]=E[Ftxt1t1+Btut+ϵt]=FtE[xt1t1]+Btut+E[ϵt]=Ftμt1t1+Btut\begin{align*} \mu_{t|t-1} = E[x_{t|t-1}] &= E[F_t x_{t-1|t-1} + B_t u_t + \epsilon_t] \\ &= F_t E[x_{t-1|t-1}] + B_t u_t + E[\epsilon_t] \\ &= F_t \mu_{t-1|t-1} + B_t u_t \end{align*}

공분산 역시 정의에 따라 어렵지 않게 유도된다. 계산이 복잡하므로 증명에서 시간을 나타내는 아래첨자는 잠시 생략하고 다음과 같이 표기한다.

Σtt1=Σ^Σt1t1=Σμtt1=μ^μt1t1=μxtt1=x^xt1t1=xϵt=ϵ\begin{align*} \Sigma_{t|t-1} &= \hat\Sigma & \Sigma_{t-1|t-1} &= \Sigma\\ \mu_{t|t-1} &= \hat\mu & \mu_{t-1|t-1} &= \mu\\ x_{t|t-1} &= \hat x & x_{t-1|t-1} &= x\\ \epsilon_t &= \epsilon \end{align*}

그러면 다음과 같이 공분산을 계산할 수 있다.

Σ^=E[(x^μ^)(x^μ^)T]=E[(Fx+Bu+ϵFμBu)T(Fx+Bu+ϵFμBu)]=E[(F(xμ)+ϵ)(F(xμ)+ϵ)T]=E[F(xμ)(xμ)TFT+F(xμ)ϵT+ϵ(xμ)TFT+ϵϵT]=FE[(xμ)(xμ)T]FT+E[ϵϵT]=FΣFT+Q\begin{align*} \hat\Sigma &= E[(\hat x - \hat\mu)(\hat x - \hat\mu)^T] \\ &= E[(F x + B u + \epsilon - F \mu - B u)^T (F x + B u + \epsilon - F \mu - B u)] \\ &= E[(F (x - \mu) + \epsilon)(F (x - \mu) + \epsilon)^T] \\ &= E[F (x - \mu)(x - \mu)^T F^T + F (x - \mu) \epsilon^T + \epsilon (x - \mu)^T F^T + \epsilon \epsilon^T] \\ &= F E[(x - \mu)(x - \mu)^T] F^T + E[\epsilon \epsilon^T] \\ &= F \Sigma F^T + Q \end{align*}

Update Step

이제 측정 업데이트 단계를 살펴보자. 측정 업데이트 단계는 다음과 같이 주어진다.

p(xtz1:t)=p(ztxt)p(xtz1:t1)p(ztxt)p(xtz1:t1)dxtp(x_t | z_{1:t}) = \frac{p(z_t | x_t) p(x_t | z_{1:t-1})}{\int p(z_t | x_t) p(x_t | z_{1:t-1}) dx_t}

이 식은 계산하기 대단히 어렵다. 그러나 실제로는 아래와 같이 위 식이 가우시안 분포임을 보일 수 있다.

  1. 이 식의 분모는 xtx_t에 대하여 상수다.
  2. 이 식의 분자는 실제로 전개해보면 xtx_t에 대하여 exp(xtTAxt)\exp(-x_tTAx_t)꼴이 된다. 그러므로 그 적분이 1이기만 하면 이 분포는 가우시안 분포가 된다.
  3. 이 식은 분모가 xtx_t에 대하여 분자를 적분한 형태다. 그러므로 이 식을 xtx_t에 대해 적분하면 반드시 1이 된다.

이에 따라 이 식은 전부 계산할 필요가 없고 오직 평균과 분산만을 조사하면 된다.

먼저 사전확률분포와 측정 모델의 확률밀도함수는 다음과 같다.

p(xtz1:t1)=1(2π)n/2Σtt11/2exp(12(xtμtt1)TΣtt11(xtμtt1))p(ztxt)=1(2π)m/2Rt1/2exp(12(ztHtxt)TRt1(ztHtxt))\begin{align*} p(x_t | z_{1:t-1}) &= \frac{1}{(2\pi)^{n/2}|\Sigma_{t|t-1}|^{1/2}} \exp\left(-\frac{1}{2} (x_t - \mu_{t|t-1})^T \Sigma_{t|t-1}^{-1} (x_t - \mu_{t|t-1})\right) \\ p(z_t | x_t) &= \frac{1}{(2\pi)^{m/2}|R_t|^{1/2}} \exp\left(-\frac{1}{2} (z_t - H_t x_t)^T R_t^{-1} (z_t - H_t x_t)\right) \end{align*}

그러므로 이들의 곱은 다음과 같다.

p(ztxt)p(xtz1:t1)=1(2π)n/2Σtt11/2(2π)m/2Rt1/2exp(12((xtμtt1)TΣtt11(xtμtt1)+(ztHtxt)TRt1(ztHtxt)))=1(2π)n/2Σtt11/2(2π)m/2Rt1/2exp(12(xtTΣtt11xt2xtTΣtt11μtt1+μtt1TΣtt11μtt1+ztTRt1zt2ztTRt1Htxt+xtTHtTRt1Htxt))=1(2π)n/2Σtt11/2(2π)m/2Rt1/2exp(12(xtT(Σtt11+HtTRt1Ht)xt2xtT(Σtt11μtt1+HtTRt1zt)+ztTRt1zt+μtt1TΣtt11μtt1))\begin{align*} p(z_t | x_t) p(x_t | z_{1:t-1}) &= \frac{1}{(2\pi)^{n/2}|\Sigma_{t|t-1}|^{1/2} (2\pi)^{m/2}|R_t|^{1/2}} \exp\left(-\frac{1}{2} \left((x_t - \mu_{t|t-1})^T \Sigma_{t|t-1}^{-1} (x_t - \mu_{t|t-1}) + (z_t - H_t x_t)^T R_t^{-1} (z_t - H_t x_t)\right)\right) \\ % 전개 &= \frac{1}{(2\pi)^{n/2}|\Sigma_{t|t-1}|^{1/2} (2\pi)^{m/2}|R_t|^{1/2}} \exp\left(-\frac{1}{2} \left(x_t^T \Sigma_{t|t-1}^{-1} x_t - 2 x_t^T \Sigma_{t|t-1}^{-1} \mu_{t|t-1} + \mu_{t|t-1}^T \Sigma_{t|t-1}^{-1} \mu_{t|t-1} + z_t^T R_t^{-1} z_t - 2 z_t^T R_t^{-1} H_t x_t + x_t^T H_t^T R_t^{-1} H_t x_t\right)\right)\\ % x에 대한 항들을 모아서 정리 &= \frac{1}{(2\pi)^{n/2}|\Sigma_{t|t-1}|^{1/2} (2\pi)^{m/2}|R_t|^{1/2}} \exp\left(-\frac{1}{2} \left(x_t^T (\Sigma_{t|t-1}^{-1} + H_t^T R_t^{-1} H_t) x_t - 2 x_t^T (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t) + z_t^T R_t^{-1} z_t + \mu_{t|t-1}^T \Sigma_{t|t-1}^{-1} \mu_{t|t-1}\right)\right)\\ \end{align*}

이때 일부 xtx_t에 대한 항들이 xtTx_t^T에 대한 항으로 바뀌었는데, 이는 그 항들이 스칼라이므로 전치해도 변하지 않기 때문이다.

이제 이것을 전개된 가우시안 분포의 확률밀도함수와 비교함으로써 위 확률밀도로부터 평균과 표준편차를 구할 수 있다. 평균이 mm이고 공분산행렬이 PP인 가우시안 분포의 확률밀도함수를 전개해보면 다음과 같다.

p(x)=1(2π)n/2P1/2exp(12(xm)TP1(xm))=1(2π)n/2P1/2exp(12(xTP1x2xTP1m+mTP1m))\begin{align*} p(x) &= \frac{1}{(2\pi)^{n/2}|P|^{1/2}} \exp\left(-\frac{1}{2} (x - m)^T P^{-1} (x - m)\right) \\ &= \frac{1}{(2\pi)^{n/2}|P|^{1/2}} \exp\left(-\frac{1}{2} \left(x^T P^{-1} x - 2 x^T P^{-1} m + m^T P^{-1} m\right)\right) \end{align*}

이로부터 xT()xx^T(\bullet)x의 계수의 역행렬이 공분산이 되고, 2xT()-2x^T(\bullet)의 계수의 왼쪽에 공분산을 곱하면 평균이 된다는 것을 알 수 있다. 이로부터 처음 식의 공분산은 다음과 같으며

Σtt=(Σtt11+HtTRt1Ht)1\Sigma_{t|t} = (\Sigma_{t|t-1}^{-1} + H_t^T R_t^{-1} H_t)^{-1}

또한 평균은 다음과 같다.

μtt=Σtt(Σtt11μtt1+HtTRt1zt)\mu_{t|t} = \Sigma_{t|t} (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t)

즉, 사후확률분포는 다음과 같이 주어진다.

xttN(μtt,Σtt)μtt=Σtt(Σtt11μtt1+HtTRt1zt)Σtt=(Σtt11+HtTRt1Ht)1\begin{align*} x_{t|t} &\sim N(\mu_{t|t}, \Sigma_{t|t}) \\ \mu_{t|t} &= \Sigma_{t|t} (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t) \\ \Sigma_{t|t} &= (\Sigma_{t|t-1}^{-1} + H_t^T R_t^{-1} H_t)^{-1}\\ \end{align*}

Summary

이제 update step과 prediction step을 종합하여 칼만 필터를 정리하면 다음과 같다.

Prediction Stepμtt1=Ftμt1t1+BtutΣtt1=FtΣt1t1FtT+QtUpdate Stepμtt=Σtt(Σtt11μtt1+HtTRt1zt)Σtt=(Σtt11+HtTRt1Ht)1\begin{align*} \text{Prediction Step} \\ \mu_{t|t-1} &= F_t \mu_{t-1|t-1} + B_t u_t \\ \Sigma_{t|t-1} &= F_t \Sigma_{t-1|t-1} F_t^T + Q_t \\ \text{Update Step} \\ \mu_{t|t} &= \Sigma_{t|t} (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t) \\ \Sigma_{t|t} &= (\Sigma_{t|t-1}^{-1} + H_t^T R_t^{-1} H_t)^{-1}\\ \end{align*}

Comparison with General Form

그런데 이 글에서 구한 식은 일반적으로 설명한 칼만 필터의 식과 다르다. 심지어 이 식에서는 Kalman Gain조차 찾을 수 없다. 실제로 위키피디아의 칼만 필터 항목을 보면 prediction step과 update step은 다음과 같아서, (기호 표기법이 약간 다르기는 하지만) prediction step은 이 글에서 유도한 것과 똑같은 반면 update step은 단계도 더 많을 뿐더러 식 형태 자체가 완전히 다르다.

Prediction StepX^kk1=FkX^k1k1+Bkuk1Pkk1=FkPk1k1Fk+Qk1Update Stepy~k=zkHkx^kk1Sk=HkPkk1Hk+RkKk=Pkk1HkSk1x^kk=x^kk1+Kky~kPkk=(IKkHk)Pkk1\begin{align*} \text{Prediction Step} \\ \hat{\mathbf{X}}_{k|k-1} &= \mathbf{F}_k \hat{\mathbf{X}}_{k-1|k-1} + \mathbf{B}_k \mathbf{u}_{k-1}\\ \mathbf{P}_{k|k-1} &= \mathbf{F}_k \mathbf{P}_{k-1|k-1} \mathbf{F}_k^\top + \mathbf{Q}_{k-1}\\ \text{Update Step} \\ \tilde{\mathbf{y}}_k &= \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k|k-1} \\ \mathbf{S}_k &= \mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k \\ \mathbf{K}_k &= \mathbf{P}_{k|k-1} \mathbf{H}_k^\top \mathbf{S}_k^{-1} \\ \hat{\mathbf{x}}_{k|k} &= \hat{\mathbf{x}}_{k|k-1} + \mathbf{K}_k\tilde{\mathbf{y}}_k \\ \mathbf{P}_{k|k} &= (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_{k|k-1} \\ \end{align*}

그러나 다음과 같이 update step또한 동일한 식의 다른 형태임을 보일 수 있다.

먼저 공분산이 같음을 보이기 위해 일반적인 형식의 update step에서 Kalman Gain을 포함하여 공분산행렬을 전개하면 아래와 같다.

Pkk=Pkk1Pkk1Hk(HkPkk1Hk+Rk)1HkPkk1\begin{align*} \mathbf{P}_{k|k} &= \mathbf{P}_{k|k-1} - \mathbf{P}_{k|k-1} \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} \mathbf{H}_k \mathbf{P}_{k|k-1} \\ \end{align*}

다음으로 이 글에서 유도한 update step의 공분산행렬에 Woddbury matrix identity를 적용할 것이다. Woodbury matrix identity는 다음과 같은 항등식이다.

(A+UCV)1=A1A1U(C1+VA1U)1VA1(A + UCV)^{-1} = A^{-1} - A^{-1} U (C^{-1} + V A^{-1} U)^{-1} V A^{-1}

여기서

A=Σtt11U=HtTC=Rt1V=Ht\begin{align*} A &= \Sigma_{t|t-1}^{-1} \\ U &= H_t^T \\ C &= R_t^{-1} \\ V &= H_t \end{align*}

라고 두면

(Σtt11+HtTRt1Ht)1=Σtt1Σtt1HtT(Rt+HtΣtt1HtT)1HtΣtt1(\Sigma_{t|t-1}^{-1} + H_t^T R_t^{-1} H_t)^{-1} = \Sigma_{t|t-1} - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}

가 되어서 이는 위의 update step의 공분산행렬과 같음을 알 수 있다.

같은 방법으로 평균도 다음과 같이 같음을 보일 수 있다. 위와 동일하게 일반적인 형식의 update step에서 평균을 전개하면 다음과 같다.

x^kk=x^kk1+Pkk1Hk(HkPkk1Hk+Rk)1y~k=x^kk1+Pkk1Hk(HkPkk1Hk+Rk)1(zkHkx^kk1)=x^kk1+Pkk1Hk(HkPkk1Hk+Rk)1zkPkk1Hk(HkPkk1Hk+Rk)1Hkx^kk1\begin{align*} \hat{\mathbf{x}}_{k|k} &= \hat{\mathbf{x}}_{k|k-1} + \mathbf{P}_{k|k-1} \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} \tilde{\mathbf{y}}_k \\ &= \hat{\mathbf{x}}_{k|k-1} + \mathbf{P}_{k|k-1} \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} (\mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k|k-1}) \\ &= \hat{\mathbf{x}}_{k|k-1} + \mathbf{P}_{k|k-1} \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} \mathbf{z}_k - \mathbf{P}_{k|k-1} \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} \mathbf{H}_k\hat{\mathbf{x}}_{k|k-1} \\ \end{align*}

다음으로 이 글에서 유도한 update step의 평균에 앞서 유도한 공분산행렬의 결과를 대입하면 다음과 같다.

μtt=Σtt(Σtt11μtt1+HtTRt1zt)=(Σtt1Σtt1HtT(Rt+HtΣtt1HtT)1HtΣtt1)(Σtt11μtt1+HtTRt1zt)=μtt1+Σtt1HtTRt1ztΣtt1HtT(Rt+HtΣtt1HtT)1Htμtt1Σtt1HtT(Rt+HtΣtt1HtT)1HtΣtt1HtTRt1zt=μtt1+Σtt1HtT(Rt1(Rt+HtΣtt1HtT)1HtΣtt1HtTRt1)ztΣtt1HtT(Rt+HtΣtt1HtT)1Htμtt1\begin{align*} \mu_{t|t} &= \Sigma_{t|t} (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t) \\ &= (\Sigma_{t|t-1} - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}) (\Sigma_{t|t-1}^{-1} \mu_{t|t-1} + H_t^T R_t^{-1} z_t) \\ &= \mu_{t|t-1} + \Sigma_{t|t-1} H_t^T R_t^{-1} z_t - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \mu_{t|t-1} - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}H_t^T R_t^{-1} z_t \\ &= \mu_{t|t-1} + \Sigma_{t|t-1} H_t^T(R_t^{-1} - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}H_t^T R_t^{-1}) z_t - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \mu_{t|t-1} \end{align*}

이때 두 번째 항의 괄호 안의 부분은 다음과 같이 정리된다.

Rt1(Rt+HtΣtt1HtT)1HtΣtt1HtTRt1=(I(Rt+HtΣtt1HtT)1HtΣtt1HtT)Rt1=(I(Rt+HtΣtt1HtT)1HtΣtt1HtT(Rt+HtΣtt1HtT)1Rt+(Rt+HtΣtt1HtT)1Rt)Rt1=(I(Rt+HtΣtt1HtT)1(Rt+HtΣtt1HtT)+(Rt+HtΣtt1HtT)1Rt)Rt1=(II+(Rt+HtΣtt1HtT)1Rt)Rt1=(Rt+HtΣtt1HtT)1RtRt1=(Rt+HtΣtt1HtT)1\begin{align*} & R_t^{-1} - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}H_t^T R_t^{-1} \\ &= (I - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}H_t^T) R_t^{-1} \\ &= (I - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \Sigma_{t|t-1}H_t^T - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} R_t + (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} R_t ) R_t^{-1} \\ &= (I - (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1}(R_t + H_t \Sigma_{t|t-1} H_t^T) + (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} R_t ) R_t^{-1} \\ &= (I - I + (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} R_t ) R_t^{-1} \\ &= (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} R_t R_t^{-1} \\ &= (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} \end{align*}

이것을 다시 원래 식에 대입하면 다음과 같다.

μtt=μtt1+Σtt1HtT(Rt+HtΣtt1HtT)1ztΣtt1HtT(Rt+HtΣtt1HtT)1Htμtt1\begin{align*} \mu_{t|t} &= \mu_{t|t-1} + \Sigma_{t|t-1} H_t^T(R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} z_t - \Sigma_{t|t-1} H_t^T (R_t + H_t \Sigma_{t|t-1} H_t^T)^{-1} H_t \mu_{t|t-1} \\ \end{align*}

이것은 앞서 얻은 일반적인 형식의 update step의 평균과 같다. 따라서 이 글에서 유도한 방식과 일반적인 방식, 즉 칼만 게인을 사용하는 방식은 정확히 같음을 알 수 있다.

Conclusion

이 글에서는 베이즈 필터로부터 곧바로 칼만 필터를 유도하고 이것이 일반적으로 사용되는 칼만 필터와 동등함을 보였다. 이를 통해 칼만 필터를 베이즈 필터의 모수적 근사로 이해할 수 있었다.

References


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -