일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Maxwell Equation
- Anaconda
- PINN
- Pino
- Operator Learning
- Resonance frequency
- 순수 함수
- Physics Informed Neural Operator
- COLAB
- 품질 인자
- Burgers Equation
- jax error
- 딥오넷
- Governing Equation
- Wireless Power Transform
- jax
- Neural Operator
- 맥스웰 방정식
- Physics Informed Neural Network
- PIDoN
- 일반기계기사
- WPT
- HFSS
- 연산자 학습
- Neural Operator 설명
- Wireless Power Transfer
- FNO
- Q factor
- 일러스트레이터 수식
- DeepONet
- Today
- Total
잡다구리 너구리
[Framework] Data-driven discovery of partial differential equations 본문
연구로 인해 Partial Differential Equation에서 Noise Data를 구현하는 데에 있어 이론적인 뒷받침을 찾고 있었다. 그런데 내가 구현한 방식과 동일하게 수식적으로 구현한 해당 논문을 Reference로 달아놓아 관심이 가서 읽어보게 되었다. 인용 수 또한 현재 날짜 기준 1181회로 상당히 높은 수에 속해 앞으로도 Noise에 대해 공부를 해야 되기 때문에 해당 논문을 읽고, 기본을 다지고자 하였다. 논문 제목은 "Data-driven discovery of partial differential equations"로, Rudy가 1저자로 Science Advances에 2017년 등재되었다.
필자가 해당 논문을 읽게 된 계기는 위 사진의 글 때문이었다. 해당 글은 다른 논문에서 발췌한 사진으로 저 논문을 읽어봐야 될 것 같기 때문에, 추후 리뷰할 예정이다. 때문에 저 수식 11에 대한 글이 Rudy의 논문에 자세하게 이론적으로 나와있을 것이라고 기대하고 읽어보았지만 그런 내용은 아니라 본문에는 Rudy 논문에 대해 자세하게는 기술하지 않고, 간략하게 핵심 아이디어의 부분에 대해 다뤄보고자 한다.
Main Idea
해당 논문은 시계열로 구성된 한 공간 영역에서 센서 값들을 바탕으로 그 시스템의 지배 방정식을 발견할 수 있는 Sparse Regression Method를 제시하였다. 해당 방법을 통해 센서가 고정되어 있는 Eulerian Framework, 센서가 동역학에 따라 움직이는 Lagrangian Framework에서의 지배 방정식을 산출할 수 있다. 즉 센서 값을 알아야 하기에 Data-Driven 방식에 속하고, 센서 데이터를 통해 그 센서가 위치해 있는 도메인의 지배 방정식을 알 수 있다는 얘기이다. 논문에서는 Navier-Stokes 방정식을 예시로 Sparse Regression Method의 Framework를 제시한다. 이는 아래 그림과 같다.
이전의 Sparse Identification Algorithm은 서브 샘플링된 공간 데이터를 처리할 수 없었고, 알고리즘이 고차원 측정값으로 확장하는 데에 한계를 가지고 있었다. 그렇기 때문에 Proper orthogonal Decomposition(POD)와 같은 모델 축소 기법을 통해 고차원의 모델 또한 분석하고자 하였다. 2번 라인 그림들을 통해 이를 확인할 수 있는데, 위의 Full Data와 달리 Sparse Sampling을 통해 전체 데이터가 아닌 몇몇 포인트를 Sampling 함으로써 문제의 크기를 줄인다. 이런 샘플링된 포인트를 통해 방정식을 식별함으로써 고차원의 문제 또한 해석할 수 있는 것이다.
해당 논문에서는 Clean Data와 1% Noise Data를 Input으로 넣었을 때 나온 Equation을 True Equation과 비교하며 결과를 제시한다. 아래는 그 중 하나의 예시이다.
글을 마치며
아쉽게도 해당 논문을 통해 내가 원하는 정보는 얻어내지 못하였다. 다만 논문에서 코드 또한 제공하였는데, 제공된 코드에서 Noise Data를 생성할 때 아래와 같은 방법으로 생성한다.
numpy.random.seed(0)
un = u + 0.01*std(u)*np.random.randn(u.shape[0],u.shape[1])
이런 모습을 통해 아마 내가 처음에 봤던 논문에서 이를 인용하지 않았나 싶다. 필자는 초기에 std(u)가 아닌 u를 Noise를 계산하는 데에 곱해주어, 왜 u가 아닌 u의 표준편차를 곱해지나 궁금하기도 하였고, 왜 Noise를 각각의 u에 Pointwise 하게 계산하는 것이 아닌 그냥 통째로 u를 표준편차로 계산하는지 궁금하였다. 하지만 이런 궁금증은 해결하지 못하고 몇 가지 이유만을 짐작할 뿐이다. 결국 Rudy의 논문을 인용하였던 논문을 보며 다시 생각해 봐야 할 것 같다.