잡다구리 너구리

[NO] Neural Operator에 대해 본문

인공지능/Deep Learning

[NO] Neural Operator에 대해

너굴뽀이 2023. 8. 30. 12:08

 최근 캘텍 대학의 Anima 교수님을 필두로 펜실베이니아 대학의 Lu lu 교수님 등 Neural Operator에 관한 논문들이 점차적으로 증가하고 있다. 비슷한 종류의 Neural Network를 통한 PDE Solver를 연구하는 입장에서 솔직히 말하면 Comsol, Abaqus 등의 해석 시뮬레이션 프로그램을 PDE Solver가 대체하려면 많이 멀었다고 생각했었다. 그런데 버클리 국립연구소에서 엔비디아와 Fourier Neural Operator를 통해 지구를 모델로 Data-Driven을 통해 기후 예측에 대한 연구를 하고 있다는 것을 듣고 어쩌면 내 생각보다 빠르게 대체하지 않을까 하는 생각도 든다. 여하튼 본문에서는 Physics-Informed Neural Operator, Physics-Informed DeepONet 등의 근간이 되는 Neural Operator의 개념에 대해 복습할 겸 정리해보고자 한다.

 

Neural Operator 개념

 연구실 후배 혹은 동기가 Neural Operator에 대해 물어오면 난 항상 이렇게 말한다. 기존의 Neural Network가 사칙연산으로만 답을 찾는다면 Neural Operator(신경 연산자)는 미분하고 적분(얘네도 연산자의 일종이니까)처럼 한 번에 답을 뿅하고 뽑아버린다고. 그렇기 때문에 실제로 NN 계열의 알고리즘에 비해 NO 계열의 알고리즘이 훈련 시간도 더 빠르다.(내가 아는 한에서는) 미분과 적분에 대해서는 중고등학교 때부터 배워 우리는 당연스럽게 공식처럼 사용하여 결과를 나타내지만, 그 과정에도 수많은 공식 증명이 있을 것이다. 하지만 왜 미분과 적분이 그렇게 되는지를 모르고 우리가 결과를 계산하는 것처럼 Neural Operator는 각각의 연산자를 계산하여 결과를 나타낸다. 알고리즘에 정통한 컴공과를 비롯한 사람들이 보기에는 허점이 많고 부족한 설명일 수 있지만, 일개 기계공학과로써 같은 알고리즘에 무지한 사람들을 이해시키기 위해서는 나로선 최선의 대답인 것 같다.

 

 기존의 Neural Network들은 Finite Dimensional Euclidean Space 내에서 훈련을 하거나 Finite Set, 즉 일종의 벡터가 입출력으로 사용이 되기 때문에 Data에 Resolution에 큰 영향을 받는다. 그렇기 때문에 Data의 Resolution이 달라지게 되면 그에 맞춰서 모델을 다시 훈련해야 한다. 반면 Neural Operator는 함수 그 자체를 입출력으로 삼기 때문에 무한 차원 함수 공간 사이에 Mapping을 하는 형식이다. 그렇기 때문에 Resolution 및 Mesh와 무관한 특성을 가지며, Low Resolution Data를 통해 훈련을 한 모델로 High Resolution Data를 평가하는데 사용할 수 있다. 이것이 어떻게 가능하냐는 FNO 논문에서 결국 Low Resolution Data를 통해 훈련을 하더라도 activation function 등으로 인해 주어지는 비선형성으로 인해 High Resolution Data의 디테일함도 잡을 수 있다고 본 기억이 있다.

 

Neural Operator 특성

 Neural Operator를 Convectional한 PDE Solver와 비교했을 때의 특징은 아래의 표와 같다. 해당 표는 Zongyi Li의 사이트(?)에서 가져온 것으로 본문 하단에 링크가 있다. 다른 좋은 내용들도 많으니 한 번씩 들어가 보는 것도 괜찮을 것 같다. 

 

Convectional PDE Solvers Neural Operators
Solve one instance Learn a family of PDE
Require the explicit form Black-box, Data-driven
Speed-accuracy trade-off on resolution Resolution-invariant, mesh-invariant
Slow on fine grids; fast on coarse grids Slow to train; fast to evaluate

 

위의 표에 대한 설명을 하고자 Convectional PDE Solvers의 예를 Physics-Informed Neural Network(PINN)으로 가정하겠다. 물론 PINN도 훌륭한 알고리즘이지만 내가 예시를 들 정도로 아는 PDE Solver가 PINN밖에 없다.

 

 PINN의 경우 초기 조건과 경계 조건을 바탕으로 각각의 Point 자체에 대한 훈련을 한다. 그렇기 때문에 초기 조건 혹은 경계 조건의 변화나 그 밖의 경우가 변하게 된다면 훈련을 다시 그에 맞춰서 처음부터 시켜야 한다. 하지만 Neural Operator는 함수에서 다른 함수로 Mapping 하는 연산자를 학습하는 것이기 때문에 이에 대한 구애를 받지 않으며, PDE의 집합체를 배운다고 볼 수 있다.

 

 두 번째 행의 부분은 정확히 뭘 말하고 싶은 것인지 이해를 하지 못하였는데, PDE Solver 부분은 아마 정형화된 형태를 필요로 한다고 말하는 것 같다. 물리적 정보를 바탕으로 훈련을 하는 PINN이 해당 시스템의 편미분 방정식의 form을 알아야 그에 대한 physics loss를 계산할 수 있는 것처럼 말이다. Neural Operators은 그런 정형화된 형태를 몰라도 Data-driven 만으로 이를 풀 수 있다는 것을 말하는 것 같다. Convectional PDE Solver 중에 Data-Driven만으로 훈련하는 게 없나..? 하는 생각이 들긴 하지만 크게 중요한 문제는 아니니 넘기도록 한다. Physics-Informed Neural Operator처럼 PINN처럼 정형화된 form을 필요로 하는 경우도 있기 때문에..

 

 PINN을 포함한 모든 PDE Solvers는 Data의 Resolution에 큰 영향을 받는다. 이는 아마 대부분의 머신러닝, 딥러닝에 해당하는 얘기일 것이다. Low Resolution Data는 훈련 속도 자체는 빠르지만 정확도가 떨어지고, 반면 High Resolution Data는 정확도가 높은 반면, 훈련 속도가 느린 이런 문제는 아마 알고리즘을 가지고 노는 사람들의 입장에서는 어느 정도의 Resolution Data를 써야 되는 지는 항상 고민될 문제일 것이다. 반면 Neural Operator는 앞서 언급한 것처럼 Resolution에 대한 구애를 받지 않으며, Low Resolution Data로 훈련을 하더라도 High Resolution Data를 평가하는 데에 사용할 수 있다. 어쩌다 보니 마지막 거도 언급을 해버려서 Neural Operator는 훈련이 느리지만 평가 자체는 빠르다. 이런 특징은 추후 실생활에 사용될 때는 훈련된 모델을 받아와서 평가하는 데에만 주로 사용할 것이기에 Neural Operator의 큰 장점이라고 생각한다.

 

Framework of Neural Operator

 먼저 일반적인 Neural Network는 Linear Transformation과 non-linear activation functions의 조합으로 구성이 된다. 이는 아래와 같다.

 $$u=\left ( K_l \circ \sigma _l \circ \cdots \circ \sigma_1 \circ K_0 \right )v$$

 $u$와 $v$는 각각 Output, Input vector, $K$는 linear layer 혹은 convolution layer, $\sigma$는 Relu 함수와 같은 Activation function을 뜻한다. Convolution layer와 Activation function을 번걸아가며 거쳐서 Output을 뽑는 익숙한 모습이다.

 

 Neural Operator는 이와 비슷한 형태로 Linear Transformation의 역할을 Linear Operator가 하고, activation function의 역할을 non-linear activation operators가 하게 된다. 그냥 이름만 바뀐 것 같다. 반면 $u, v$는 벡터가 아니라 function의 형태로 들어가고 나오게 된다. 이때 두 개는 다른 discretization을 가져도 무관하다. Zongyi Li의 글에서는 삼각형 mesh여도 상관이 없다고 한다. Fourier Neural Operator의 경우는 서로 다른 discretization을 Lifting Operator와 Projection Operator로 극복한다. $K : v_t \mapsto v_{t+1}$를 mapping 하는 식은 아래와 같다.

$$v(x) = \int \kappa (x, y) v(y) dy + Wv(x)$$

 이때 $x, y$는 도메인 안의 포인트이며, $\kappa$는 kernel function이다. 이 kernel function을 어떻게 구현하냐에 따라 Graph Neural Operator(GNO), Graph Neural Operator(LNO), Fourier Neural Operator(FNO) 등 다양하게 확장할 수 있다. 이에 대한 내용은 "Neural Operator : Learning Maps Between Function Spaces With Applications to PDEs"에서 총괄적으로 확인할 수 있다.

 

글을 마치며

  추후 Physics Informed Neural Operator, Physics Informed DeepONet을 포스팅하기 위한 빌드업으로서 Neural Operator에 대한 포스팅을 하였다. 드디어 1단계를 나아간 느낌. 해당 글을 작성하며 아래 글을 주로 참고하였으니 한번 봤으면 한다.

 

https://zongyi-li.github.io/blog/2020/fourier-pde/