상태공간이 Rn 인 동역학계가 다음과 같이 스무스 함수f:Rn→Rn 에 의해 주어진다고 하자.
x˙=f(x)
간단히 x=(x1,⋯,xn) 그리고 x˙=(x1˙,⋯,xn˙) 이라고 나타낼 때, m∈N 개의 시점 {tk}k=1m 에 대해 다음과 같이 디자인 매트릭스를 구성한다.
X=X˙=xT(t1)xT(t2)⋮xT(tm)=x1(t1)x1(t2)⋮x1(tm)x2(t1)x2(t2)⋮x2(tm)⋯⋯⋱⋯xn(t1)xn(t2)⋮xn(tm)x˙T(t1)x˙T(t2)⋮x˙T(tm)=x˙1(t1)x˙1(t2)⋮x˙1(tm)x˙2(t1)x˙2(t2)⋮x˙2(tm)⋯⋯⋱⋯x˙n(t1)x˙n(t2)⋮x˙n(tm)∈Rm×nX 의 독립변수들에 어떤 비선형함수를 취해서 얻는 파생변수로 만든 행렬Θ(X)∈Rm×p 를 라이브러리library라 하고, 각 칼럼을 기저basis 혹은 후보candidate라 부르기도 한다.
X˙=Θ(X)Ξ
위의 행렬방정식에 STLSQ을 수행해서 가능한 한 스파스한 Ξ∈Rp×n 를 구하는 스파스 회귀를 통해 주어진 동역학계의 지배 방정식governing equation을 찾는 알고리즘을 신디sINDy(Sparse Identification of Nonlinear Dynamical systems) 알고리즘이라 한다.
설명
신디는 주어진 데이터로부터 가능한 한 스파스한 미분방정식을 찾아내서 데이터에서 유도된 모델data-driven model을 찾는 방법 중 하나로써, 2011년 라이Ying-Chen Lai 교수 등이 제안한 압축 센싱을 통한 방법2과 유사하나 과소결정계 대신 과도결정계를 사용하며 노이즈가 있는 데이터에 대해 수치적인 로버스트니스robustness를 제고한 알고리즘이다.
STLSQ
STLSQ: 풀 랭크인 행렬X∈Rm×p 와 Y∈Rm×n 에 대해 행렬방정식Y=XB
이 주어졌을 때, 가능한 한 스파스한 B∈Rp×n 을 찾는 스파스 회귀 문제를 생각해보자. STLSQsequentially Thresholded Least-Squares Algorithm은 신디sINDy 알고리즘을 제안한 브런턴brunton의 논문에서 사용된 메소드으로써, 이름 그대로 순차적으로 최소제곱법을 반복하며 각 성분의 절대값이 주어진 쓰레숄딩λ 이하로 떨어지면 0으로 처리하고 해당 칼럼(독립변수)를 제거하는 식으로 이루어진다.
동역학계에서 얻어진 데이터에 STLSQ를 쓰는 것을 신디 알고리즘이라고는 했지만, 실제의 관계를 생각해보면 오히려 신디 알고리즘을 위해서 고안된 방법이 바로 STLSQ다.
STLSQ⋯Y=X=B=SINDyX˙Θ(X)Ξ
라이브러리
Θ(X)=[1xyzx2xyxzy2⋯z5]
라이브러리 Θ(X) 는 특별할 것 없이 그냥 위와 같이 다항함수로 채울 수도 있다. 어지간히 간단한 스무스 시스템이라면 충분히 큰 차수를 사용했을 때 스톤-바이어슈트라스 정리에 따라 X 의 다항함수로 X˙ 를 근사시킬 수 있음이 수학적으로 보장되고, 삼각함수sin(kx) 와 cos(kx) 들은 푸리에 기저라 불리기도 한다3.
위의 그림은 신디가 실제 구현 상으로 어떻게 작동하는지 아주 잘 설명하고 있다.
dtdx=dtdy=dtdz=−σx+σy−xz+ρx−yxy−βz로렌츠 어트랙터라고 친다면 이들의 트래젝터리에서 데이터를 샘플링 한 후, 위에서 설명한 방식대로 행렬방정식을 세우고 STLSQ를 사용해서 원래의 ‘미분방정식 자체’를 복원한 것이다. 로렌츠 어트랙터의 도함수들은 보다시피 x, y, xz, xy 같이 2차 이하의 다항함수들로 구성되어 있기 때문에 성공적으로 지배 방정식을 찾을 수 있다.
Wang, W. X., Yang, R., Lai, Y. C., Kovanis, V., & Grebogi, C. (2011). Predicting catastrophes in nonlinear dynamical systems by compressive sensing. Physical review letters, 106(15), 154101. https://doi.org/10.1103/PhysRevLett.106.154101↩︎