약신디 알고리즘 WSINDy
알고리즘 1 2
신디 알고리즘: 상태공간이 $\mathbb{R}^{n}$ 인 동역학계가 다음과 같이 스무스 함수 $f : \mathbb{R}^{n} \to \mathbb{R}^{n}$ 에 의해 주어진다고 하자. $$ \dot{\mathbf{x}} = f \left( \mathbf{x} \right) $$ $X$ 의 독립변수들에 어떤 비선형함수를 취해서 얻는 파생변수로 만든 행렬 $\Theta \left( X \right) \in \mathbb{R}^{m \times p}$ 과 다음 행렬방정식에 STLSQ을 수행해서지배 방정식governing equation을 찾는 알고리즘을 신디SINDy라 한다. $$ \dot{X} = \Theta \left( X \right) \Xi $$
신디의 변형으로, 차분 등을 통한 미분계수의 수치적 근사 대신 약형식화weak formulation로 우회한 알고리즘을 약신디Weak SINDy라 한다.
설명
원래 신디가 그러하듯, 지배 방정식을 찾을 때 다차원 벡터함수 $\mathbf{x} (t) = \left( x_{1} , \cdots , x_{n} \right)$ 의 각 차원별로 최적화를 반복하면 다차원으로 일반화가 가능하므로, 설명에서는 편의상 $\dot{x} = f (x)$ 과 같은 1차원 상미분방정식을 생각하려 한다. 마찬가지로 테스트 함수 $\phi : \mathbb{R} \to \mathbb{R}$ 의 서포트가 $[a,b]$ 라고 한다면, 다음과 같이 왼쪽에 $\phi$ 가 곱해진 내적을 생각해볼 수 있다. $$ \left< \phi , \dot{x} \right> = \left< \phi , f ( x ) \right> $$ 여기서 $f (x)$ 는 원래 신디가 그러하듯 $\dot{x} = f(x) = \Theta (x) \Xi$ 와 같이 나타나는 함수다.
약 도함수의 정의: $u \in {L}_{\mathrm{loc}}^1(\Omega)$라고 하자. 만약 다음과 같은 식을 만족하는 $v_{\alpha}$가 존재하면, 이를 $u$의 약 도함수weak derivative, 혹은 초함수적 도함수distributional derivative라고 한다. $$ \begin{align*} T_{{v}_{\alpha}} &= {D}^{\alpha}T_{u} & \text{in } \mathcal{D}^{\ast}(\Omega) \\ \int_{\Omega}v_{\alpha}(x)\phi (x)dx &= (-1)^{|\alpha|} \int_{\Omega} u(x){D}^{\alpha}\phi (x)dx & \forall\ \phi \in \mathcal{D}(\Omega) \end{align*} $$
한편 좌변의 내적을 적분꼴로 다시 풀어 적어보면, $\phi$ 가 테스트 함수라 가정했으므로 컴팩트 서포트를 가져서 $\phi (a) = \phi (b) = 0$ 이어야만 하고, 부분적분법에 따라 그 자체로 약 도함수에 대한 빌드업이 된다. $$ \begin{align*} & \left< \phi , \dot{x} \right> \\ =& \int_{a}^{b} \phi (t) \dot{x} dt \\ =& \left[ \phi (t) x(t) \right]_{a}^{b} - \int_{a}^{b} \dot{\phi} (t) x(t) dt \\ =& \left( -1 \right)^{1} \int_{a}^{b} {\frac{ d }{ dt }} \phi (t) x(t) dt \\ =& - \int_{a}^{b} \dot{\phi} (t) x(t) dt \end{align*} $$
실제로도 $\dot{x}$ 는 $x$ 의 도함수고, 약도함수가 되기도 한다. $$ - \int_{a}^{b} \dot{\phi} (t) x(t) dt = \left< \phi , \dot{x} \right> = \left< \phi , f ( x ) \right> = \int_{a}^{b} \phi (t) \Theta \left( x (t) \right) \Xi dt $$ 이고, 보통 $\Xi$ 가 시간 $t$ 과 무관해서 독립이라 가정해서 $\Xi$ 는 정적분 밖으로 나올 수 있다. 결국엔 양변을 가장 가깝게 만드는 최소제곱문제가 되었으며, 스파스 회귀를 통해 $\Xi$ 를 구하게 된다.
$$ - \int_{a}^{b} \dot{\phi} (t) x(t) dt = \int_{a}^{b} \phi (t) \Theta \left( x (t) \right) dt \Xi $$ 최종적으로는 위와 같이 $\dot{x}$ 이 없음에도 불구하고 $\dot{x} = f(x)$ 의 우변만을 찾은 게 되었다. 테스트 함수는 이를테면, 참고문헌에서 그러했듯 상수 $C$ 와 $p, q \ge 1$ 에 대해 다음과 같은 함수로 둘 수 있다. $$ \phi (t) := \begin{cases} C \left( t - a \right)^{p} \left( b - t \right)^{q} & , \text{if } a < t < b \\ 0 & , \text{otherwise} \end{cases} $$ 테스트 함수는 아예 정확하게 정체를 알고 주며, $x (t)$ 는 원래 주어진 시계열로써 $\Theta (x)$ 에 이어지기까지 노이즈가 있을지언정 우리가 모르는 정보는 아니다.
Messenger, D. A., & Bortz, D. M. (2021). Weak SINDy: Galerkin-based data-driven model selection. Multiscale Modeling & Simulation, 19(3), 1474-1497. https://doi.org/10.1137/20M1343166 ↩︎
Messenger, D. A., & Bortz, D. M. (2021). Weak SINDy for partial differential equations. Journal of Computational Physics, 443, 110525. https://doi.org/10.1016/j.jcp.2021.110525 ↩︎

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

