Search
Duplicate

AI/ State Space Model(SSM)

State Space Model(SSM)

State-Space Models(SSM)은 Markov Model의 한 종류로 은닉 상태 zt\bold{z}_t가 Markov Process를 따라 시간에 걸쳐 진화하고 각 시간 단계에서 어떤 관찰 yt\bold{y}_t를 생성하는 모델이다. 이때 관찰 yt\bold{y}_t는 은닉 상태 zt\bold{z}_t 뿐만 아니라 이전 관찰 yt1\bold{y}_{t-1}에도 영향을 받는다.
현재 관찰이 은닉 상태에 영향을 받는다는 점에서 Factor Analysis(FA)와 유사하지만, FA는 정적 모델인 반면 SSM은 동적 모델이라는 점이 다르고, 관찰과 은닉이 Markov Process를 따른다는 점에서 Hidden Markov Model(HMM)과 유사하지만, 현재 관찰이 이전 관찰에도 영향을 받는다는 점에서 HMM과는 다르다.
SSM에 대한 일반적인 모델을 다음처럼 정의할 수 있다.
zt=f(zt1,ut,qt)yt=h(zt,ut,y1:t1,rt)\begin{aligned} \bold{z}_t &= \bold{f}(\bold{z}_{t-1},\bold{u}_t,\bold{q}_t) \\ \bold{y}_t &= \bold{h}(\bold{z}_t,\bold{u}_t,\bold{y}_{1:t-1},\bold{r}_t) \end{aligned}
여기서 ztRNz\bold{z}_t \in \mathbb{R}^{N_z}는 은닉 상태이고 utRNu\bold{u}_t \in \mathbb{R}^{N_u}는 optional 관측된 입력이고, ytRNy\bold{y}_t \in \mathbb{R}^{N_y}는 관찰된 출력이고, f\bold{f}는 전이 함수이고 qt\bold{q}_t는 프로세스 노이즈이고, h\bold{h}는 관찰 함수이고, rt\bold{r}_t는 관찰 노이즈이다. 아래 그림 (a) 참조. (b)는 HMM 모델에 해당한다.
이것을 다음과 같이 확률적 모델로 표현할 수 있다.
p(ztzt1,ut)=p(ztf(zt1,ut))p(ytzt,ut,y1:t1)=p(yth(zt,ut,y1:t1))\begin{aligned} p(\bold{z}_t|\bold{z}_{t-1},\bold{u}_t) &= p(\bold{z}_t|\bold{f}(\bold{z}_{t-1},\bold{u}_t)) \\ p(\bold{y}_t|\bold{z}_t,\bold{u}_t,\bold{y}_{1:t-1}) &= p(\bold{y}_t|\bold{h}(\bold{z}_t,\bold{u}_t,\bold{y}_{1:t-1})) \end{aligned}
여기서 p(ztzt1,ut)p(\bold{z}_t|\bold{z}_{t-1},\bold{u}_t)는 전이 모델이고 p(ytzt,ut,y1:t1)p(\bold{y}_t|\bold{z}_t,\bold{u}_t,\bold{y}_{1:t-1})은 관찰 모델이다. 시간에 걸쳐 풀어서 다음의 결합 분포를 얻을 수 있다.
p(y1:T,z1:Tu1:T)=[p(z1u1)t=2Tp(ztzt1,ut)][t=1Tp(ytzt,ut,y1:t1)]p(\bold{y}_{1:T},\bold{z}_{1:T}|\bold{u}_{1:T}) = \left[p(\bold{z}_1|\bold{u}_1) \prod_{t=2}^T p(\bold{z}_t|\bold{z}_{t-1},\bold{u}_t) \right] \left[\prod_{t=1}^T p(\bold{y}_t|\bold{z}_t,\bold{u}_t,\bold{y}_{1:t-1}) \right]
충분히 표현력 있는 은닉 상태 zt\bold{z}_t를 사용하면 모든 과거 관찰 y1:t1\bold{y}_{1:t-1}을 암시적으로 표현할 수 있다. 따라서 은닉 상태가 주어질 때 관찰이 서로 조건부 독립이라고 가정하는 것이 더 일반적이다. 이 경우 결합은 다음처럼 단순화된다.
p(y1:T,z1:Tu1:T)=[p(z1u1)t=2Tp(ztzt1,ut)][t=1Tp(ytzt,ut)]p(\bold{y}_{1:T},\bold{z}_{1:T}|\bold{u}_{1:T}) = \left[p(\bold{z}_1|\bold{u}_1) \prod_{t=2}^T p(\bold{z}_t|\bold{z}_{t-1},\bold{u}_t) \right] \left[\prod_{t=1}^T p(\bold{y}_t|\bold{z}_t,\bold{u}_t) \right]
외부 입력이 존재하지 않으면 모델은 다음의 unconditional 생성 모델로 더 단순화 된다.
p(y1:T,z1:T)=[p(z1)t=2Tp(ztzt1)][t=1Tp(ytzt)]p(\bold{y}_{1:T},\bold{z}_{1:T}) = \left[p(\bold{z}_1) \prod_{t=2}^T p(\bold{z}_t|\bold{z}_{t-1}) \right] \left[\prod_{t=1}^T p(\bold{y}_t|\bold{z}_t) \right]

제어 이론에서의 SSM

제어 이론에서 SSM은 상태와 입력을 이용하여 상태 방정식(상태 도함수)와 출력 방정식을 정의하는 시스템을 의미한다.
ddtx(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)\begin{aligned} {d\over dt}\bold{x}(t) &= \bold{A}\bold{x}(t) + \bold{B}\bold{u}(t) \\ \bold{y}(t) &= \bold{C}\bold{x}(t) + \bold{D}\bold{u}(t) \end{aligned}
여기서 x(t)\bold{x}(t)는 시스템의 내부 상태로 위의 SSM에서 z\bold{z}에 해당하고, u(t)\bold{u}(t)는 입력 변수, y(t)\bold{y}(t)는 출력으로 위의 SSM과 동일하다. A,B,C,D\bold{A}, \bold{B}, \bold{C}, \bold{D}는 각 변수에 곱해지는 행렬을 나타낸다.
여기서 ddtx(t){d\over dt}\bold{x}(t)x(t)\bold{x}(t)tt로 미분한 도함수를 나타내는데, 상태 방정식이 상태와 입력의 (선형 또는 비선형) 결합으로 정의된다는 것이 상태 공간 모델의 핵심이다. 즉 상태와 입력의 결합으로 상태 도함수(변화율)을 정의할 수 있는 시스템을 상태 공간 모델이라 한다.
만일 시스템이 비선형이었다면 비선형 함수를 이용하여 다음처럼 정의할 수 있다. 여기서 f,g\boldsymbol{f}, \boldsymbol{g}는 비선형 함수.
ddtx(t)=f(x(t),u(t))y(t)=g(x(t),u(t))\begin{aligned} {d\over dt}\bold{x}(t) &= \boldsymbol{f}(\bold{x}(t),\bold{u}(t)) \\ \bold{y}(t) &= \boldsymbol{g}(\bold{x}(t), \bold{u}(t)) \end{aligned}
선형 시스템의 SSM에 경우, 연속과 이산, 시불변과 시간변화에 따라 상태와 출력 방정식을 각각 다음처럼 정의할 수 있다. 여기서 시간은 연속일 때는 tRt \in \mathbb{R}로 정의되고 이산일 때는 timestep의 의미로 kZk \in \mathbb{Z}로 작성된다.
시스템 형태
상태 공간 모델
연속 시불변
ddtx(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t){d\over dt}\bold{x}(t) = \bold{A}\bold{x}(t) + \bold{B}\bold{u}(t) \\ \bold{y}(t) = \bold{C}\bold{x}(t) + \bold{D}\bold{u}(t)
연속 시간변화
ddtx(t)=A(t)x(t)+B(t)u(t)y(t)=C(t)x(t)+D(t)u(t){d \over dt}\bold{x}(t) = \bold{A}(t)\bold{x}(t) + \bold{B}(t)\bold{u}(t) \\ \bold{y}(t) = \bold{C}(t)\bold{x}(t) + \bold{D}(t)\bold{u}(t)
이산 시불변
x(k+1)=Ax(k)+Bu(k)y(k)=Cx(k)+Du(k)\bold{x}(k+1) = \bold{A}\bold{x}(k) + \bold{B}\bold{u}(k) \\ \bold{y}(k) = \bold{C}\bold{x}(k) + \bold{D}\bold{u}(k)
이산 시간변화
x(k+1)=A(k)x(k)+B(k)u(k)y(k)=C(k)x(k)+D(k)u(k)\bold{x}(k+1) = \bold{A}(k)\bold{x}(k) + \bold{B}(k)\bold{u}(k) \\ \bold{y}(k) = \bold{C}(k)\bold{x}(k) + \bold{D}(k)\bold{u}(k)
이산 시스템에서는 도함수가 정의 되지 않으므로 차분(difference) 방정식을 이용하여 변화된 상태(next state)를 직접 구할 수 있다.
x(k+1)=Ax(k)+Bu(k)\bold{x}(k+1) = \bold{A}\bold{x}(k) + \bold{B}\bold{u}(k)
이것은 현재 상태에 새로운 입력이 추가되어 다음 상태가 된다는 개념으로 이해할 수 있다. 여기서 추가되는 새로운 입력은 변위량에 해당한다.
연속 시스템에서는 다음과 같이 현재 상태에 도함수를 적분한 값을 더해서 변화된 상태를 구할 수 있다.
x(t+Δ)=x(t)+tt+Δx˙(τ)dτ=x(t)+tt+Δ(Ax(τ)+Bu(τ))dτ\begin{aligned} \bold{x}(t + \Delta) &= \bold{x}(t) + \int_t^{t + \Delta} \dot{\bold{x}}(\tau) \, d\tau \\&= \bold{x}(t) + \int_t^{t + \Delta} (\bold{A} \bold{x}(\tau) + \bold{B} \bold{u}(\tau)) \, d\tau \end{aligned}
도함수가 변화율이므로 도함수를 적분한 것이 변위량이 되고, 해당 변위량을 현재 상태에 더하면 새로운 상태가 된다는 개념이다.

이산화

만일 위 식에서 A,B\bold{A}, \bold{B}가 상수 행렬이라면 다음과 같이 근사를 유도할 수 있다.
x(t+Δ)x(t)+tt+ΔAx(t)dτ+tt+ΔBu(t)dτ=x(t)+Ax(t)Δ+Bu(t)Δ=(I+ΔA)x(t)+ΔBu(t)=Ax(t)+Bu(t)\begin{aligned} \bold{x}(t + \Delta) &\approx \bold{x}(t) + \int_t^{t + \Delta} \bold{A} \bold{x}(t) \, d\tau + \int_t^{t + \Delta} \bold{B} \bold{u}(t) \, d\tau \\ &= \bold{x}(t) + \bold{A} \bold{x}(t) \Delta + \bold{B} \bold{u}(t)\Delta \\ &= (\bold{I} + \Delta \bold{A}) \bold{x}(t) + \Delta \bold{B} \bold{u}(t) \\ &= \overline{\bold{A}}\bold{x}(t) + \overline{\bold{B}}\bold{u}(t) \end{aligned}
x(t+Δ)=x(t)+tt+Δx˙(τ)dτ=x(t)+tt+Δ(Ax(τ)+Bu(τ))dτx(t)+tt+ΔAx(t)dτ+tt+ΔBu(t)dτ=x(t)+Ax(t)tt+Δdτ+Bu(t)tt+Δdτ=x(t)+Ax(t)Δ+Bu(t)Δ (tt+Δdτ=[τ]tt+Δ=(t+Δ)t=Δ)=(I+ΔA)x(t)+ΔBu(t)=Ax(t)+Bu(t) \begin{aligned} \bold{x}(t + \Delta) &= \bold{x}(t) + \int_t^{t + \Delta} \dot{\bold{x}}(\tau) \, d\tau \\&= \bold{x}(t) + \int_t^{t + \Delta} (\bold{A} \bold{x}(\tau) + \bold{B} \bold{u}(\tau)) \, d\tau \\ &\approx \bold{x}(t) + \int_t^{t + \Delta} \bold{A} \bold{x}(t) \, d\tau + \int_t^{t + \Delta} \bold{B} \bold{u}(t) \, d\tau \\ &= \bold{x}(t) + \bold{Ax}(t) \int_t^{t+\Delta} d\tau + \bold{Bu}(t)\int_t^{t + \Delta}d\tau \\ &= \bold{x}(t) + \bold{A} \bold{x}(t) \Delta + \bold{B} \bold{u}(t)\Delta \ \left(\because \int_t^{t + \Delta}d\tau = \left[\tau \right]_t^{t + \Delta} = (t + \Delta) - t = \Delta\right) \\ &= (\bold{I} + \Delta \bold{A}) \bold{x}(t) + \Delta \bold{B} \bold{u}(t) \\ &= \overline{\bold{A}}\bold{x}(t) + \overline{\bold{B}}\bold{u}(t) \end{aligned}
여기서 A=(I+ΔA),B=ΔB\overline{\bold{A}} = (\bold{I} + \Delta\bold{A}), \overline{\bold{B}} = \Delta\bold{B}. 이것은 이산화된 값으로 연속 시간 시스템을 이산화된 행렬을 이용해서 근사할 수 있다.
한편 x˙(t)\dot{\bold{x}}(t)에 대해 따라서 다음 관계가 성립된다. 마지막 근사는 Δ\Delta가 매우 작을 때 성립한다.
x˙(t)=Ax(t)+Bu(t)=limΔ0x(t+Δ)x(t)Δx(t+Δ)x(t)Δ\dot{\bold{x}}(t) = \bold{A}\bold{x}(t) + \bold{B}\bold{u}(t) = \lim_{\Delta \to 0}{\bold{x}(t + \Delta) - \bold{x}(t) \over \Delta}\approx {\bold{x}(t + \Delta) - \bold{x}(t) \over \Delta}
위의 식에 대해 x(t+Δ)\bold{x}(t + \Delta)를 기준으로 x(t)\bold{x}(t)Δ\Delta를 이항하여 식을 다음과 같이 정리할 수 있다.
x(t+Δ)Δ(Ax(t)+Bu(t))+x(t)=ΔAx(t)+ΔBu(t)+x(t)=(I+ΔA)x(t)+ΔBu(t)=Ax(t)+Bu(t)\begin{aligned} \bold{x}(t+\Delta) &\approx \Delta(\bold{A}\bold{x}(t) + \bold{B}\bold{u}(t)) + \bold{x}(t) \\ &= \Delta \bold{A}\bold{x}(t) + \Delta \bold{B}\bold{u}(t) + \bold{x}(t) \\ &=(\bold{I} + \Delta \bold{A})\bold{x}(t) + \Delta \bold{B}\bold{u}(t) \\ &= \overline{\bold{A}}\bold{x}(t) + \overline{\bold{B}}\bold{u}(t) \end{aligned}
이 결과는 위의 유도 결과와 동일하다.

참고