비선형 함수의 근사
확장 칼만 필터는 비선형 시스템에서 상태 추정을 수행하기 위해 비선형 함수의 선형화를 필요로 한다. 이를 위해 자주 사용되는 방법이 테일러 급수 전개이다. 테일러 급수 전개는 특정 지점에서의 함수의 값을 다항식으로 근사하는 방법이다. 비선형 함수 f(\mathbf{x})는 다음과 같이 테일러 급수로 전개할 수 있다.
f(\mathbf{x}) \approx f(\mathbf{x}_0) + \nabla f(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0) + \frac{1}{2} (\mathbf{x} - \mathbf{x}_0)^\top \mathbf{H}(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0) + \cdots
여기서:
- \mathbf{x}_0는 테일러 전개를 수행할 기준점이다.
- \nabla f(\mathbf{x}_0)는 f(\mathbf{x})의 1차 도함수(그라디언트)이다.
- \mathbf{H}(\mathbf{x}_0)는 2차 도함수(헤시안 행렬)이다.
이 전개식은 무한 급수로 표현될 수 있지만, 확장 칼만 필터에서는 대부분 1차 항까지의 근사를 사용하여 선형화를 수행한다. 이를 선형화라 부르며, 확장 칼만 필터에서 핵심적인 역할을 한다.
1차 테일러 급수 전개
주어진 비선형 함수 f(\mathbf{x})를 기준점 \mathbf{x}_0에서 1차 테일러 급수로 근사하면 다음과 같이 표현된다:
f(\mathbf{x}) \approx f(\mathbf{x}_0) + \nabla f(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0)
이 식은 비선형 함수의 1차 근사값을 나타낸다. 이는 함수의 국소적인 선형 근사로, 확장 칼만 필터에서 사용되는 방식이다. 이를 통해 비선형 시스템의 상태 방정식을 선형 시스템으로 변환할 수 있다.
그라디언트의 계산
함수 f(\mathbf{x})의 그라디언트 \nabla f(\mathbf{x}_0)는 벡터로, 각 변수에 대한 편미분으로 구성된다:
\nabla f(\mathbf{x}_0) = \begin{bmatrix}
\frac{\partial f}{\partial x_1}(\mathbf{x}_0) \\
\frac{\partial f}{\partial x_2}(\mathbf{x}_0) \\
\vdots \\
\frac{\partial f}{\partial x_n}(\mathbf{x}_0)
\end{bmatrix}
이 그라디언트를 사용하여 함수의 변화를 선형화하고, 확장 칼만 필터에서 상태 추정 시 예측 및 업데이트 단계에서 활용한다.
2차 테일러 급수 전개
1차 테일러 급수는 비선형 함수를 선형적으로 근사하는데 사용되지만, 더 높은 정확도를 위해 2차 항까지 포함할 수 있다. 2차 테일러 급수 전개는 비선형 함수의 곡률까지 반영하는 근사로, 다음과 같이 표현된다:
f(\mathbf{x}) \approx f(\mathbf{x}_0) + \nabla f(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0) + \frac{1}{2} (\mathbf{x} - \mathbf{x}_0)^\top \mathbf{H}(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0)
여기서:
- \mathbf{H}(\mathbf{x}_0)는 함수 f(\mathbf{x})의 2차 도함수로, 헤시안 행렬이다.
- 헤시안 행렬 \mathbf{H}(\mathbf{x}_0)는 다음과 같은 대칭 행렬로 나타낼 수 있다:
\mathbf{H}(\mathbf{x}_0) = \begin{bmatrix}
\frac{\partial^2 f}{\partial x_1^2}(\mathbf{x}_0) & \frac{\partial^2 f}{\partial x_1 \partial x_2}(\mathbf{x}_0) & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n}(\mathbf{x}_0) \\
\frac{\partial^2 f}{\partial x_2 \partial x_1}(\mathbf{x}_0) & \frac{\partial^2 f}{\partial x_2^2}(\mathbf{x}_0) & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n}(\mathbf{x}_0) \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial^2 f}{\partial x_n \partial x_1}(\mathbf{x}_0) & \frac{\partial^2 f}{\partial x_n \partial x_2}(\mathbf{x}_0) & \cdots & \frac{\partial^2 f}{\partial x_n^2}(\mathbf{x}_0)
\end{bmatrix}
2차 항을 포함한 테일러 급수는 더 정교한 비선형 근사를 제공하지만, 확장 칼만 필터에서는 계산 복잡성의 증가로 인해 대부분 1차 항까지만 사용한다.
야코비 행렬과 선형화
확장 칼만 필터에서 테일러 급수 전개를 사용하여 비선형 시스템을 선형화할 때, 중요한 개념 중 하나가 야코비 행렬이다. 이는 다변수 함수의 1차 도함수를 모아 행렬 형태로 구성한 것이다. 야코비 행렬은 다음과 같이 정의된다:
\mathbf{J} = \frac{\partial f}{\partial \mathbf{x}} = \begin{bmatrix}
\frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\
\frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n}
\end{bmatrix}
야코비 행렬은 상태 변수가 다수일 때 비선형 시스템을 선형 근사하기 위한 중요한 역할을 한다. 확장 칼만 필터에서는 이 야코비 행렬을 이용해 예측과 업데이트 단계에서 선형화를 수행한다.
선형화의 예
비선형 시스템의 선형화를 예로 들어보자. 예를 들어, 상태 변수 \mathbf{x}와 시스템 동작 함수 f(\mathbf{x})가 주어졌을 때, f(\mathbf{x})를 1차 테일러 급수로 근사하면 다음과 같은 선형 시스템으로 표현된다:
\mathbf{f}(\mathbf{x}) \approx \mathbf{f}(\mathbf{x}_0) + \mathbf{J}(\mathbf{x}_0) (\mathbf{x} - \mathbf{x}_0)
여기서 \mathbf{J}(\mathbf{x}_0)는 상태 \mathbf{x}에 대한 시스템 함수 \mathbf{f}(\mathbf{x})의 야코비이다. 이 선형화된 시스템은 확장 칼만 필터의 예측과 업데이트 단계에서 사용되며, 비선형 시스템을 다룰 수 있도록 한다.