칼만 필터

오류 제보
수치해석 통계 시뮬레이션 마지막 수정: 2026-10-05 04:18:22

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기

1. 개요

칼만 필터
Kalman Filter
제안Rudolf E. Kálmán (1960)
분야추정 이론 × 제어공학 × 자료동화
가정선형 시스템 + 가우시안 잡음
최적성최소분산 불편 추정량(MVUE)
정상상태 이득스칼라 모델에서 K² + qK − q = 0 (q = Q/R)
주요 변종EKF, UKF, 앙상블 칼만 필터
평활기RTS (Rauch–Tung–Striebel, 1965)

칼만 필터(Kalman filter)는 잡음이 섞인 관측값과 시스템의 동역학 모델을 재귀적으로 결합해, 직접 볼 수 없는 상태 변수를 최소분산으로 추정하는 알고리즘이다. 선형 시스템에 가우시안 잡음이라는 가정 아래에서는 “이보다 더 잘할 수는 없다”가 수학적으로 증명되는, 흔치 않게 최적성이 보장된 필터다.1

핵심 아이디어는 심플하다. 모델은 미래를 예측하고, 센서는 현재를 알려준다. 둘 다 틀리니까, 각자의 불확실성에 반비례하는 가중치로 섞자. 이게 전부다. 이 한 줄을 공분산 행렬로 엄밀하게 정식화한 것이 칼만 필터이며, 아폴로 유도 컴퓨터부터 여러분 주머니 속 GPS, 드론 자세 추정, 기상청 수치기상예보의 자료동화까지 안 쓰이는 곳을 찾기가 더 어렵다.

2. 상태공간 모델

칼만 필터는 시스템을 다음 두 방정식으로 기술한다. 상태 전이(예측 모델):

xk=Fkxk−1+Bkuk+wk,wk∼N(0,Qk)\mathbf{x}_k = \mathbf{F}_k \mathbf{x}_{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k, \quad \mathbf{w}_k \sim \mathcal{N}(\mathbf{0}, \mathbf{Q}_k)

관측(측정 모델):

zk=Hkxk+vk,vk∼N(0,Rk)\mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k, \quad \mathbf{v}_k \sim \mathcal{N}(\mathbf{0}, \mathbf{R}_k)

여기서 x\mathbf{x}는 상태 벡터(위치·속도 등), F\mathbf{F}는 상태 전이 행렬, H\mathbf{H}는 관측 행렬이다. Q\mathbf{Q}는 프로세스 잡음 공분산 — 즉 “내 모델이 얼마나 엉터리인가”를 나타내고, R\mathbf{R}은 측정 잡음 공분산 — “내 센서가 얼마나 못 믿을 것인가”다. 실무에서 칼만 필터 튜닝의 90%는 이 두 행렬을 만지작거리는 일이다.2 손으로 돌리는 게 지겨우면 최대우도추정으로 잡음 공분산 자체를 데이터에서 추정하는 길도 있다 — 시스템 식별의 영역이다.

3. 예측-갱신 사이클

칼만 필터는 매 시간 스텝마다 예측(predict)과 갱신(update) 두 단계를 반복한다.

3.1. 예측 단계

x^k∣k−1=Fkx^k−1∣k−1+Bkuk\hat{\mathbf{x}}_{k|k-1} = \mathbf{F}_k \hat{\mathbf{x}}_{k-1|k-1} + \mathbf{B}_k \mathbf{u}_k Pk∣k−1=FkPk−1∣k−1FkT+Qk\mathbf{P}_{k|k-1} = \mathbf{F}_k \mathbf{P}_{k-1|k-1} \mathbf{F}_k^{\mathsf{T}} + \mathbf{Q}_k

모델만 믿고 한 발 앞으로 굴린다. 공분산 P\mathbf{P}는 반드시 커진다 — 관측 없이 시간이 흐르면 확신이 줄어드는 게 당연하기 때문이다.

3.2. 갱신 단계

관측이 들어오면 잔차(innovation)와 칼만 이득을 계산한다.

Kk=Pk∣k−1HkT(HkPk∣k−1HkT+Rk)−1\mathbf{K}_k = \mathbf{P}_{k|k-1} \mathbf{H}_k^{\mathsf{T}} \left( \mathbf{H}_k \mathbf{P}_{k|k-1} \mathbf{H}_k^{\mathsf{T}} + \mathbf{R}_k \right)^{-1} x^k∣k=x^k∣k−1+Kk(zk−Hkx^k∣k−1)\hat{\mathbf{x}}_{k|k} = \hat{\mathbf{x}}_{k|k-1} + \mathbf{K}_k \left( \mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_{k|k-1} \right) Pk∣k=(I−KkHk)Pk∣k−1\mathbf{P}_{k|k} = \left( \mathbf{I} - \mathbf{K}_k \mathbf{H}_k \right) \mathbf{P}_{k|k-1}

칼만 이득 K\mathbf{K}의 의미를 직관적으로 보면 이렇다. R\mathbf{R}이 크면(센서를 못 믿으면) K→0\mathbf{K} \to 0이라 관측을 무시하고, P\mathbf{P}가 크면(모델을 못 믿으면) K\mathbf{K}가 커져 관측 쪽으로 확 끌려간다. 신뢰도 가중 평균 그 자체다.

4. 왜 최적인가

선형·가우시안 가정 하에서 사후 분포 p(xk∣z1:k)p(\mathbf{x}_k \mid \mathbf{z}_{1:k})는 정확히 가우시안으로 유지되고, 그 평균과 공분산이 위 갱신식으로 닫힌 형태로 전파된다. 즉 칼만 필터는 베이즈 필터를 근사 없이 푼 것이며, 동시에 최소자승 문제의 재귀적 해이기도 하다. 최소자승법의 정규방정식을 배치가 아니라 한 샘플씩 온라인으로 푸는 형태라고 보면 이해가 빠르다.

가우시안 가정을 버리더라도, “선형 추정량 중에서는” 여전히 최소분산이라는 약한 형태의 최적성이 남는다. 실무에서 이 정도면 충분히 훌륭하다.

5. 정상상태 이득 — 직접 검산

필터가 제대로 돌아가는지 확인할 때 가장 값싼 시험대는 스칼라 상수 상태 모델이다. F=H=1F = H = 1, R=1R = 1, Q=qQ = q 로 두면 공분산 점화식이 세 줄로 닫힌다.

Pk−=Pk−1+q,qquadKk=Pk−Pk−+1,qquadPk=(1−Kk)Pk−P_k^- = P_{k-1} + q, qquad K_k = \frac{P_k^-}{P_k^- + 1}, qquad P_k = (1-K_k)P_k^-

이 점화식의 고정점을 풀면 정상상태 이득이 이차방정식 하나로 떨어진다.

K∞2+qK∞−q=0⟹K∞=−q+q2+4q2K_\infty^2 + q K_\infty - q = 0 \quad \Longrightarrow \quad K_\infty = \frac{-q + \sqrt{q^2 + 4q}}{2}

초기 공분산을 P0=106P_0 = 10^6(사실상 “아무것도 모른다”)으로 놓고 점화식을 직접 돌린 값과 위 닫힌 해를 맞춰 본 결과다.

q = Q/R반복해 K닫힌 해 K1e-6 수렴까지
0.010.09512492200.095124922062 스텝
0.10.27015621190.270156211922 스텝
10.61803398870.61803398878 스텝
100.91607978310.91607978314 스텝
1000.99019513590.99019513593 스텝

차이는 전부 배정밀도 반올림 수준(10−1610^{-16} 이하)이다. 읽을 거리가 셋 있다.

  • Q=RQ = R 이면 이득이 정확히 1/φ=0.61803398871/\varphi = 0.6180339887, 황금비의 역수다. K2+K−1=0K^2 + K - 1 = 0 이 황금비 방정식이니 당연한데, 처음 보면 좀 킹받는다. 모델과 센서를 똑같이 못 믿으면 관측에 62%를 싣는다는 뜻 — 반반이 아니다. 예측 단계에서 공분산이 이미 부풀어 있기 때문이다.
  • 모델을 못 믿을수록(qq 가 클수록) 수렴이 빠르다. q=10q = 10 이면 4스텝, q=0.01q = 0.01 이면 62스텝이 걸린다. 과거를 길게 믿는 필터는 초기 공분산의 기억을 지우는 데도 오래 걸린다.
  • 정상상태에서 P∞/R=K∞P_\infty/R = K_\infty 라는 항등식이 성립한다(표의 값이 그대로 분산이기도 하다). 구현 점검용으로 외워 둘 만하다.

2상태 등속 모델(Δt=1\Delta t = 1, 가속도 백색잡음 q=0.01q = 0.01, 위치만 관측, R=1R = 1)로 올라가도 같은 방식이 통한다. 몬테카를로 200회 · 각 200스텝으로 재면 정상상태 이득이 K=(0.3606, 0.0800)T\mathbf{K} = (0.3606,\ 0.0800)^{\mathsf{T}}, 사후 공분산이 P11=0.3606P_{11} = 0.3606 으로 위 항등식을 그대로 따른다. 성능은 이렇다.

  • 위치 RMSE: 필터 0.61 대 생관측 1.00 — 오차 분산이 약 63% 줄었다. 센서를 안 바꾸고 소프트웨어만으로 얻은 이득이다.
  • 정규화 잔차 제곱(NIS) 평균: 0.98~1.00. 이론값은 χ2(1)\chi^2(1) 의 평균인 1 이다.

NIS 가 1 근처라는 것은 “필터가 자기 불확실성을 정직하게 말하고 있다”는 뜻이고, 실무에서 QQ·RR 을 조율하는 정량적 기준이 바로 이것이다. 1 보다 크게 나오면 공분산을 과소평가(과신)하는 것이고, 작게 나오면 과대평가해 관측을 덜 쓰고 있는 것이다. 눈으로 궤적을 보며 “그럴듯하네”로 끝내지 말고 이 숫자를 찍어라.

6. 비선형 확장

현실의 시스템은 대부분 비선형이라 위 공식이 그대로는 안 먹힌다. 그래서 나온 변종들.

변종접근특징
확장 칼만 필터(EKF)자코비안 행렬로 1차 선형화구현이 쉽고 국룰. 강한 비선형에서 발산
무향 칼만 필터(UKF)시그마 포인트로 분포를 표본화자코비안 불필요, 2차까지 정확
앙상블 칼만 필터몬테카를로 앙상블로 공분산 근사고차원(기상·해양)에 필수
입자 필터중요도 표본추출로 임의 분포 표현다봉 분포도 처리, 대신 비싸다

EKF는 뉴턴-랩슨법이 그렇듯 선형화가 통하는 범위 안에서만 얌전하다. 자코비안을 손으로 유도하기 싫으면 자동 미분을 붙이는 게 요즘 방식이고, 애초에 미분을 피하고 싶으면 UKF로 간다.

7. 시뮬레이션과의 접점

CAE 하는 사람 입장에서 칼만 필터가 갑자기 튀어나오는 지점은 **자료동화(data assimilation)**다. 수치예보 모델은 초기조건에 극도로 민감한데, 관측은 듬성듬성하고 잡음투성이다. 여기서 앙상블 칼만 필터가 예보장과 관측을 섞어 다음 사이클의 초기장을 만든다. 사실상 불확실성 정량화를 매 6시간마다 실전으로 돌리는 셈.

디지털 트윈 문맥에서도 마찬가지다. 축소차수모델이나 대리 모델을 상태 전이 모델로 쓰고, 실제 설비의 센서 값을 관측으로 넣어 내부 상태(온도장, 손상도 등)를 실시간 추정한다. 물성치 같은 미지 파라미터를 상태 벡터에 끼워 넣으면 역문제 풀이기로도 변신한다 — 이른바 결합 상태-파라미터 추정.

8. 수치적 주의사항

  • 공분산이 대칭 양정치를 잃는 순간 끝난다. 유한 정밀도 누적 오차로 P\mathbf{P}가 비대칭이 되거나 음의 고유값을 가지면 필터가 폭발한다. 대책은 조셉 형태(Joseph form) 갱신식을 쓰거나, 촐레스키 분해 기반의 제곱근 필터(square-root filter)를 쓰는 것. 후자는 1971년 카민스키·브라이슨·슈미트의 정리 논문 이후 항법 소프트웨어의 사실상 표준이 됐다 — 워드 길이가 짧거나 문제가 악조건일 때 특히 그렇다.
  • 관측이 부족하면 관측 불가능(unobservable) 모드가 생긴다. 그 방향의 공분산은 무한정 커진다. 필터 문제가 아니라 센서 배치 문제다.
  • Q\mathbf{Q}를 지나치게 작게 주면 필터가 모델을 과신해 관측을 씹는 “필터 발산”이 일어난다. 초보자가 가장 많이 밟는 지뢰.3
  • 상태 차원이 커지면 P\mathbf{P} 저장·전파가 O(n2)O(n^2)·O(n3)O(n^3)이라 감당이 안 된다. 격자점 10810^8개짜리 기상 모델에서 완전 칼만 필터를 돌린다는 건 농담이다. 앙상블 근사가 존재하는 이유다. 몬테카를로 위치추정 같은 로봇 쪽 변종도 같은 압력에서 나왔다.4

9. 평활화와 필터링

칼만 필터는 이름 그대로 필터, 즉 현재 시각까지의 관측만 써서 현재 상태를 추정한다(p(xk∣z1:k)p(\mathbf{x}_k \mid \mathbf{z}_{1:k})). 그런데 사후 분석에서는 전체 데이터가 이미 손에 있으니, 미래 관측까지 동원해 과거를 다시 추정하는 편이 당연히 낫다. 이걸 **평활화(smoothing)**라 하고, RTS(Rauch–Tung–Striebel) 평활기가 표준이다. 필터를 정방향으로 한 번 돌린 뒤 역방향으로 한 번 더 훑으면 끝이라 구현 비용도 싸다.

실무 감각으로 정리하면 이렇다.

  • 실시간 제어·항법 — 필터. 미래를 기다릴 여유가 없다.
  • 실험 데이터 후처리·시스템 식별 — 평활기. 안 쓸 이유가 없다.
  • 예측(prediction) — 관측 없이 예측 단계만 반복. 공분산이 계속 부푸는 걸 보며 언제까지 믿을 수 있는지 판단한다.

GPS가 끊긴 터널에서 관성항법이 슬금슬금 드리프트하는 것이 바로 세 번째 상황이다. 필터가 고장 난 게 아니라, 정직하게 “나 지금 점점 모르겠다”고 공분산으로 말하고 있는 것.

10. 관련 문서

11. Footnotes

  1. Kálmán, R. E. (1960). A New Approach to Linear Filtering and Prediction Problems. 재밌는 건 칼만 본인이 이 논문을 낼 당시 학계 반응이 미지근했다는 것. 진가를 알아본 건 NASA 에임스 연구센터였고, 아폴로 캡슐의 항법 타당성 연구에 쓰인 것이 공개적으로 알려진 첫 적용이다(에임스의 당사자들이 1985년에 직접 회고록을 NASA TM 으로 남겼다). 이론이 논문에서 하드웨어로 건너가는 데 쓰인 시간은 겨우 몇 년이다. ↩

  2. 그래서 현장에서는 칼만 필터를 “Q와 R을 손으로 돌려 맞추는 노브 두 개짜리 장치”라고 부르기도 한다. 이론은 우아하고 튜닝은 노가다인 것이 이 바닥 국룰. ↩

  3. 반대로 Q\mathbf{Q}를 크게 주면 필터가 관측을 그대로 따라가서, 비싼 돈 주고 산 저역통과 필터가 된다. 적당히가 제일 어렵다. ↩

  4. 앙상블 크기를 100 정도로 잡으면 표본 공분산에 가짜 원거리 상관이 생기는데, 이걸 억지로 0으로 눌러버리는 국소화(localization) 기법이 표준으로 쓰인다. 통계적으로 켕기지만 안 하면 안 돌아간다. ↩

검증 자료

이 문서의 주요 출처

  1. Kalman (1960), A New Approach to Linear Filtering and Prediction Problems, J. Basic Eng. 82(1), 35-45
  2. Rauch, Tung & Striebel (1965), Maximum likelihood estimates of linear dynamic systems, AIAA J. 3(8), 1445-1450
  3. Kaminski, Bryson & Schmidt (1971), Discrete square root filtering: A survey of current techniques, IEEE Trans. Autom. Control 16(6), 727-736
  4. Julier & Uhlmann (2004), Unscented filtering and nonlinear estimation, Proc. IEEE 92(3), 401-422
  5. Evensen (1994), Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics, J. Geophys. Res. Oceans 99(C5), 10143-10162
  6. McGee & Schmidt (1985), Discovery of the Kalman filter as a practical tool for aerospace and industry, NASA TM-86847
이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 불확실성 정량화 약 5분 더 탐색 →