GP-BayesFilters: Bayesian Filtering Using Gaussian Process Prediction and Observation Models
[cite]10.1007/s10514-009-9119-x[/cite]
1. Introduction
로보틱스 분야에서 시스템의 현재 상태를 알아내는 것은 필수적입니다. 이를 위한 방법으로 Particle filter나 unscented Kalman filter와 같은 Bayesian filter가 주로 사용되고 있습니다. 이들은 시스템 상태의 posterior 확률 분포를 이용하여 반복적으로 추정합니다. 이는 시간에 따라 변화하는 process를 설명하는 prediction 모델과 센서로부터 관측된 값을 나타내는 observation 모델로 구성되며, 이 모델들은 process를 나타내는데 parametric 모델을 사용합니다. 하지만 paramteric 모델이 모든 시스템의 상태를 나타내기는 힘듭니다.
이러한 문제를 극복하기 위하여 non-parametric 모델인 Gaussian Process (GP) regression 모델이 소개되었고, 이 모델은 기존의 방법들에 잘 적용될 수 있습니다.
여기서는 GP를 앞에서 언급한 Bayesian filter에 어떻게 통합할 수 있는지 이야기해보고자 합니다. 이들 알고리즘의 이름은 GP-UKF, GP-PF, GP-EKF입니다.
2. Background of GP-Bayes Filters
A. Bayes Filters
Bayes filter는 센서로부터 얻어진 모든 정보를 바탕으로 시스템의 상태 $x_k $에 대한 posterior 분포를 반복적으로 추정하는 방법입니다.
센서의 관측값과 조절값을 각각 $z_{1:k}, u_{1:k-1} $이라고 한다면 posterior는 아래와 같습니다.
$$p(x_k | z_{1:k}, u_{1:k-1}) \propto p(z_k | x_k) \int p(x_k | x_{k-1}, u_{k-1}) p(x_{k-1} | z_{1:k}) dx_{k-1}$$
이때 $ p(x_k | x_{k-1}, u_{k-1}) $는 시스템을 나타내는 prediction model, 그리고 $ p(z_k | x_k) $는 상태에 따른 관측을 나타내는 observation model으로 볼 수 있습니다. 그리고 이 두 모델들은 파라미터를 사용하도록 되어있었습니다. 이제 설명할 GP-BayesFilters에서는 non-parametric Gaussian process regression을 통하여 트레이닝 데이터로부터 학습된 모델들을 사용하고자 합니다.
B. Gaussian Processes for Regression
GP의 주요 장점은 모델링이 유연하고 불확실성(uncertainty)에 대한 정도 또한 추정해주며 트레이닝 데이터로부터 노이즈와 smoothness 파라미터를 정할 수 있다는 것입니다. GP는 트레이닝 데이터를 이용한 function로써 posterior 분포를 표현합니다.
트레이닝 데이터와 그 출력을 각각 $ X = [ x_1, x_2, \dots, x_n ], Y = [y_1, y_2, \dots, y_n ] $이라고 하였을 때, 데이터의 출력은 노이즈를 갖는 프로세스로 가정합니다.
$$y_i = f(x_i) + \epsilon$$
여기서 노이즈 $ \epsilon $은 zero mean의 variance $ \sigma^2_n $을 갖습니다.
트레니읻 에티어 $ D = (X, y) $가 주어졌을 때, 새로운 입력 값 $ x_* $에 대한 출력 $ y_* $ 은 다음과 같은 평균과 분산을 갖는 Gaussian 분포로 표현합니다.
$$GP_{\mu}(x_*, D) = k_*^T [K + \sigma_n^2 I]^{-1}y$$
$$GP_{\Sigma}(x_*, D) = k(x_*, x_*) - k_*^T[K + \sigma_n^2 I]^{-1} k_*$$
여기서 사용되는 k는 입력 데이터간의 관계를 정의하는 kernel function이며, $ k_* $는 $ x_* $ 와 입력 데이터 $ X $ 사이의 커널 함수의 결과 값 벡터입니다. 그리고 $ K $는 각 $ X $ 끼리의 커널 함수의 결과입니다.
새로운 입력 값에 대한 Gaussian 분포의 분산 또한 계산되고 있기 때문에 이 값이 곧 불확실성에 대한 수치로 사용할 수 있습니다.
Kernel function은 상황에 따라 다른 함수를 사용하게 되는데, 주로 squeared exponential이나 Guassian 함수를 사용합니다. 이 kernel function의 파라미터와 $ \sigma_n^2 $는 트레이닝 데이터로부터 log-likelihood를 통하여 계산됩니다.
C. Learning Prediction and Observation Models with GPs
GP가 갖는 prediction, observation 모델은 Bayes filter가 필요한 것을 그대로 가지고 있습니다. Prediction model은 상태와 제어 값 $(x_k, u_k) $을 통하여 다음 상태 $x_{k+1} $로 $\Delta x_k = x_{k+1} - x_k$ 만큼 변화시킵니다. 그리고 Observation model에서 $ x_k $는 $z_k$로 관측됩니다.
이제 이 두 모델의 트레이닝 셋 $D_p, D_o $를 다음과 같이 바꾸어봅시다.
$$D_p = (X, U, X'), X' = [\Delta_{x_1}, \dots, \Delta_{x_k}]$$
$$D_o = (X, Z)$$
그러면 GP는 Bayes filter의 관점에서, 다음과 같은 수식으로 다시 표현할 수 있습니다.
$$p(x_k | x_{k-1}, u_{k-1}) \approx N(GP_{\mu}([x_{k-1}, u_{k-1}], D_p), GP_{\Sigma}([x_{k-1}, u_{k-1}], D_p))$$
$$p(z_k | x_k) \approx N(GP_{\mu}(x_k, D_o), GP_{\Sigma}(x_k, D_o))$$
3. Instantiations of GP-BayesFilters
이제 GP 모델을 Bayes filter에 통합하여 볼 것입니다.
A. GP-PF: Gaussian Process Particle Filters
Particle filter (PF)는 샘플링 기반의 Bayes filter입니다. PF는 posterior를 가중치 (importance weight) $w_k $ 를 갖는 샘플 $x_k $들로 표현합니다.
PF에서 샘플링 과정을 수행할 때, GP를 이용할 수 있습니다. GP로부터 샘플링을 수행하게 되면 얻어지는 불확실성 수치를 PF과정에서 필요한 importance weight로 사용할 수 있습니다.
PF의 자세한 알고리즘은 생략하도록 하겠습니다.
B. GP-EKF: Gaussian Process Extended Kalman Filters
Extended Kalman filter(EKF)에 GP를 적용시키기 위해서는 GP 함수의 linearization이 필요합니다. 본래 EKF에서는 비선형 함수들을 선형화하기 위하여 테일러시리즈를 이용하였지만, GP에서는 한결 계산이 쉬워집니다.
$$\frac{\partial(GP_{\mu}(x_*, D))}{\partial (x_*)} = \frac{\partial (k_*)^T}{\partial(x_*)}[K + \delta^2_n I]^{-1}y$$
여기서 $ \frac{\partial (k_*)^T}{\partial(x_*)} $는 $ x_* $와 $ X $ 사이의 커널 함수 값을 편미분한, $ \frac{\partial k(k_*, x_n)}{\partial (x_*[m])} $ 의 값을 갖는 n * m 행렬입니다. 따라서 이 값은 커널 함수만 미분할 수 있다면 쉽게 계산됩니다.
그 외 EKF에 GP가 적용되는 부분을 살펴보자면,
- 직전 상태로부터 다음 상태의 prediction: $ \hat{\mu}_k = GP_{\mu}([mu_{k-1}, u_{k-1}], D_p) $
- 직전 상태로부터 다음 상태의 noise covariance: $ Q_k = GP_{\Sigma}([mu_{k-1}, u_{k-1}], D_p) $
- 관측된 값으로부터 다음 상태의 correction: $ z_k = GP_{\mu} ( \hat{\mu}_{k}, D_o )$
- 관측된 값으로부터 다음 상태의 noise covariance: $ R_k = GP_{\Sigma} ( \hat{\mu}_{k}, D_o )$
부분들입니다.
C. GP-UKF: Gaussian Process Unscented Kalman Filters
Unscented Kalman Filters는 EKF에서의 테일러시리즈를 이용한 linearization을 unscented transform을 이용하여 정확하게 하는 방법입니다. 이를 위하여 UKF는 이전 시각의 mean, variance의 추정 값을 기반으로 sigma points를 생성합니다.
GP를 여기에 적용시킨다면, sigma point의 forward projection에 GP prediction 모델을, 그리고 그에 더해지는 노이즈는 EKF의 그것과 동일하게 사용합니다. 그리고 correction 단계에서의 관측 값 또한 GP의 observation 모델을 사용하고 그 노이즈를 EKF와 마찬가지로 사용합니다.
D. GP-BayesFilter Complexity Analysis
보통 로보틱스에서의 GP는 트레이닝 데이터의 수 n은 상태 값의 차원 d보다 훨씬 크므로, GP-BayesFilters에서는 GP를 계산하는 데 드는 비용이 대부분을 차지합니다. 따라서 GP에 대한 계산 복잡도에 관심을 두고 생각하여봅시다.
GP-PF에서는 GP의 mean과 variance에 대한 계산이 파티클마다 계산되어야 하므로, GP-PF의 계산복잡도는 $ C_{pf} = M(C_{\mu} + C_{\Sigma}) $ 입니다.
GP-EKF의 경우, 이에 GP-Taylor 시리즈를 계산하는데 드는 비용을 더하여야 하므로, $ C_{ekf} = C_{\mu} + C_{\Sigma} + C_{tse} $ 가 됩니다.
GP-UKF는 sigma point에 대하여는 GP mean만을 계산하고, GP variance는 한 번만 계산되므로, $ C_{ukf} = (2d + 1) C_{\mu} + C_{\Sigma} $ 가 됩니다.
한편, mean을 계산할 때에는 kernel에 대한 계산과, 행렬곱에 대한 계산이 이루어져야 하는데 이를 각각 $ C_{kern}, C_{mult} $ 라고 하여봅시다. 트레이닝 데이터의 수를 n이라고 하면 이들에 대해 모두 셈이 필요하므로 차원까지 고려한다면, 결국 $ C_{\mu} = nd(C_{kern} + C_{mult}) $로 계산될 것입니다.
Variance와 TSE의 경우, mean에서 계산된 내용을 참조하여 캐시할 수 있으므로, $ C_{\Sigma} = nd C_{mult}, C_{tse} = nd C_{mult} $로 계산됩니다.
따라서 종합하여보면 다음과 같습니다.
GP-UKF: $ C_{kern} = nd(2d+1), C_{mult} = nd(2d + 2) $
GP-EKF: $ C_{kern} = nd, C_{mult} = 3nd$
GP-PF: $ C_{kern} = Mnd, C_{mult} = 2Mnd$
GP-PF는 M에 의해 시간이 많이 좌우되고, 그럼에도 시간에 대하여 유리하지는 않지만 유일하게 주어진 데이터에 global하게 계산되는 알고리즘입니다. 또, GP-UKF는 GP-EKF에 비해 2d 배 정도 많은 커널 계산을 필요로 합니다.
4. Experiments
로보틱스에 적용한 결과와 임의로 시뮬레이션한 환경에 대한 결과가 논문에 나와있습니다.
5. Conclusions and Future Work
Non-parametric 모델인 GP를 Bayeisna filter에 적용하여 GP-PF, GP-EKF, GP-UKF의 설명을 하였습니다. 기존의 Bayes filter들에 비하여 모두 높은 성능을 내었습니다. 대신 계산 시간은 더 필요로 하기 때문에 계산 시간에 민감한 영역이 아닌 정확도가 더 중요한 영역에 적합할 것입니다.