앙상블 신디 E-SINDy
알고리즘 1
신디 알고리즘: 상태공간이 $\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 $$
신디의 변형으로, 배깅을 적용해서 라이브러리를 줄여나가는 알고리즘을 앙상블-신디E-SINDy, Ensemble-SINDy라 한다.
설명

실제로 노이즈가 있는 데이터에 신디를 적용해보면 데이터의 부분집합을 어떻게 주느냐에 따라 방정식의 형태가 천차만별로 변하기도 한다. 그럼에도 불구하고 반복되는 부트스트랩 속에서 일관되게 등장하는 계수와 항들이 있다면, 그것들이야말로 시스템을 잘 설명하는 방정식의 구성 요소일 것이다.
태생적으로 신디의 라이브러리는 ‘충분히 크게’ 주어서 그 중에서 관련된 항들이 스파스하게 찾아지는 스파스 회귀인데, 이 충분히 크다는 라이브러리의 수가 많아지면 단순 비용 문제를 떠나 풀 랭크를 이루지 못하거나 하면서 최소제곱법에 문제를 일으키기도 한다. 앙상블-신디는 더 작은 라이브러리를 찾아가며 성능과 안정성을 양면에서 개선하는 방법이라 볼 수 있다.
그림에서 설명되는 것과 같이 E-SINDy는 데이터 포인트 그 자체에 대한 부트스트랩과 라이브러리에 대한 부트스트랩이라는 두가지 구현법이 있다. 어떤 방식을 선택하든 라이브러리의 특정 항이 얼마나 자주 등장하는지를 세어 허용치tolerance를 넘기지 못하면 삭제하고 최종 모델을 얻는 식이다. 신디를 어떻게 구현하느냐에 따라서는 라이브러리 E-SINDy를 구현하기가 더 어려울 수 있다.
U. Fasel, J. N. Kutz, B. W. Brunton, S. L. Brunton; Ensemble-SINDy: Robust sparse model discovery in the low-data, high-noise limit, with active learning and control. Proc. A 1 April 2022; 478 (2260): 20210904. https://doi.org/10.1098/rspa.2021.0904 ↩︎

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

