칼만 필터

편집 역사 토론
수치해석 통계 시뮬레이션 마지막 수정: 2026-07-19 04:12:41

1. 개요[편집]

칼만 필터
Kalman Filter
제안Rudolf E. Kálmán (1960)
분야추정 이론 × 제어공학 × 자료동화
가정선형 시스템 + 가우시안 잡음
최적성최소분산 불편 추정량(MVUE)
주요 변종EKF, UKF, 앙상블 칼만 필터

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

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

2. 상태공간 모델[편집]

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

xk=Fkxk1+Bkuk+wk,wkN(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,vkN(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^kk1=Fkx^k1k1+Bkuk\hat{\mathbf{x}}_{k|k-1} = \mathbf{F}_k \hat{\mathbf{x}}_{k-1|k-1} + \mathbf{B}_k \mathbf{u}_k Pkk1=FkPk1k1FkT+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=Pkk1HkT(HkPkk1HkT+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^kk=x^kk1+Kk(zkHkx^kk1)\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) Pkk=(IKkHk)Pkk1\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}이 크면(센서를 못 믿으면) K0\mathbf{K} \to 0이라 관측을 무시하고, P\mathbf{P}가 크면(모델을 못 믿으면) K\mathbf{K}가 커져 관측 쪽으로 확 끌려간다. 신뢰도 가중 평균 그 자체다.

4. 왜 최적인가[편집]

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

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

5. 비선형 확장[편집]

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

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

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

6. 시뮬레이션과의 접점[편집]

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

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

7. 수치적 주의사항[편집]

  • 공분산이 대칭 양정치를 잃는 순간 끝난다. 유한 정밀도 누적 오차로 P\mathbf{P}가 비대칭이 되거나 음의 고유값을 가지면 필터가 폭발한다. 대책은 조셉 형태(Joseph form) 갱신식을 쓰거나, 촐레스키 분해 기반의 제곱근 필터(square-root filter)를 쓰는 것.
  • 관측이 부족하면 관측 불가능(unobservable) 모드가 생긴다. 그 방향의 공분산은 무한정 커진다. 필터 문제가 아니라 센서 배치 문제다.
  • Q\mathbf{Q}를 지나치게 작게 주면 필터가 모델을 과신해 관측을 씹는 “필터 발산”이 일어난다. 초보자가 가장 많이 밟는 지뢰.3
  • 상태 차원이 커지면 P\mathbf{P} 저장·전파가 O(n2)O(n^2)·O(n3)O(n^3)이라 감당이 안 된다. 격자점 10810^8개짜리 기상 모델에서 완전 칼만 필터를 돌린다는 건 농담이다. 앙상블 근사가 존재하는 이유.4

8. 평활화와 필터링[편집]

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

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

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

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

9. 관련 문서[편집]

10. Footnotes[편집]

  1. Kálmán, R. E. (1960). A New Approach to Linear Filtering and Prediction Problems. 재밌는 건 칼만 본인이 이 논문을 낼 당시 학계 반응이 미지근했다는 것. 진가를 알아본 건 NASA 에임스 연구센터였고, 아폴로 유도 컴퓨터에 실리면서 전설이 됐다.

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

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

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