///
Search
Duplicate
🔬

Lu et al.[2021] Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators

Created
2021/07/04 06:29
발표일자
2021/05/10
발표자
백병인
Tags
Operator
DeepONet
✅main
포스팅 종류
논문리뷰

딥러닝은 과연 함수인가?

입력 데이터의 집합을 정의역으로 두고, 추론해야 할 정답의 집합을 공역으로 두고 두 집합의 데이터의 관계를 규정하는 함수를 파라미터로 초기화해놓고 이를 데이터셋으로부터 최적화 방식을 통해 근사해 나가는 방식, 이것이 머신러닝의 기본 아이디어라고 생각해 왔다.
그중에서도 Neural Network를 통해 구현한 딥러닝 방식의 모델은 그 어떤 복잡한 함수라도 레이어를 깊이 쌓아서 정확히 근사해 낼수 있다는 표현력으로 인해 대세로 자리잡았다.
(참고) Universal Approximation Theorem
아주 대략적으로 말해, 한개의 hidden layer에 activation function이 결합된 feed foward network는 어떤 연속함수도 근사할 수 있다는 이론이지만, 의외로 이를 정확하게 설명하는 블로그글을 찾기는 쉽지 않았다. 가장 정확한 설명을 제공하는 것은 Wikipedia인 것 같다.
그래서 우리는 딥러닝을 이용해 구현하고자 하는 함수를 근사하는 작업을 오랫동안 계속해 왔다. 혹시 이런 접근이 가지는 한계점은 없었을까? 이런 질문을 품게 되었다면 이 글을 계속 읽어봐도 좋을 것 같다.

Operator의 개념

함수(function)이 변수 x를 다른 변수 y로 맵핑(mapping)하는 개념이라고 한다면, 연산자(operator)란 함수f를 다른 함수 g로 맵핑(mapping)하는 개념이라고 볼 수 있다.
f(x) = x^2 이라면 f:2→4 f:3→9 같은 맵핑을 성립시킨다.
예를 들어 보자, 미분연산자 \nabla (역삼각형 모양 기호)를 예로 든다면,
f=x2f = x^2
f=2x\nabla f = 2x
미분연산자라는 operator는 x^2→2x 로 맵핑하는 것이다.
g=sinxg = sinx
g=cosx\nabla g = cosx
같은 미분연산자 operator는 sinx를 conx로 맵핑할 것이다. 이것이 연산자(operator)의 한 예이다.
Operator가 될 수 있는 것은 미분말고도 많다. 적분, 푸리에변환, 라플라스변환 등 물리학적 의미를 가지는 것도 많다. 물론 이런 것들은 analytical하게 수치계산으로도 구현 가능한 operator지만, 딥러닝으로 operator를 구현한다면 꼭 우리가 아는 operator만 구현한다는 접근은 아니다.
그래서?? 라는 질문이 든다면?? 여기서부터가 정말 하고 싶은 이야기이다.
만약 우리가 딥러닝으로 함수를 구현한다고 생각한다면, 아무리 복잡한 구성을 가진 네트워크라도 y' = f(x;theta) 로 표현된다. 이것이 의미하는 것은 우리는 [X는 y이다]라는 논리만 구현한다는 뜻이다.
그리고 실제 y와 y' 의 차이를 최소화하는 방향으로 theta를 찾아나갈 것이다. 그렇다면... 함수란 정의역에 의존한다. 정의역에 맞지 않는 입력은 처리하지 못한다. 그리고 함수란 자판기와 같다. 처리규칙과 사용맥락이 정해져 있어서 맥락에 맞지 않는 입력은 이 함수가 제대로 처리하지 못한다. 그래서 실제 상황에서는 f가 얼마나 정교하게 만들어졌나보다는, 방금 딥러닝으로 만든 f 함수가 현재 상황에 잘 어울리나가 더 큰 문제가 된다.
이런 논리를 구현할 수는 없을까?
[x→y라면 x'→y'이다. ] (예시) x→x^2 이라면 x'→2x 이다. 하지만 x→sinx 이라면 x'→cosx 이다. 위의 예시는 정확하게 미분연산자의 논리이다. 연산자(operator)의 입력은 데이터 x 만이 아니다. 입력데이터 x 를 처리해야 할 함수 f 를 함께 입력으로 주어야 한다. 즉, 현재의 입력데이터만으로 기계적으로 출력데이터를 결정하는 함수가 아니라, 현재의 입력데이터와 이 데이터를 처리하는 방식을 규정한 함수를 같이 입력으로 받아야 하는 것이다.
좀더 추상적으로 말하자면, 딥러닝으로 Operator를 구현한다는 것은 입력데이터를 처리해야 할 맥락에 따라 대응방식이 달라지는 머신을 구현한다는 뜻이다. Nature에서 이런 점을 높게 평가해 준 것이 아닐까 생각해 보았다. 그러나 실은 Operator Regression의 개념은 1995년에도 이미 있었다. 저자들이 소개하는 DeepONet은 딥러닝으로 Operator를 구현한 첫번째 사례로 2019년에 이미 논문으로 발표되었는데, 21년도에 이 의미를 좀더 명확히 발견한 게 아닌가, 그리고 실험적으로 유의미한 결과가 나왔기 때문에 주목받는게 아닌가 싶다.
가장 간단한 Operator의 형태는 위와 같다.
x1, x2, ..., xm 까지의 입력은 항상 일정한 shape로 입력된다. 이때, 이 x를 어떻게 처리할지의 함수 u가 입력으로 주어진다. 그리고 다른 입력값 y가 함께 주어진다. 이때, Operator G는 G:u→v 가 되어 x를 u로 처리한다면 y를 어떤 함수 v 로 처리해야 할지를 규정한다. 그러면 최종 결과 v(y) = G(u)(x) 가 되어 출력되는 것이다.
논문에서는 x를 Branch Network 로 u를, y를 처리하는 Trunk Network를 v를 구현하고, u와 v의 내적으로 G를 구현했다. x와 y은 single hidden layer로 구현했다. 심플한 구현을 선택했지만, Branch와 Trunk는 CNN, Resnet, Attention 등 다양한 구현으로 확장할 수 있다.
(생각해 볼점)
DeepONet은 Encoder-Decoder 구조와 어떻게 다른 것일까?
Multi-head Attention으로 구현된 Transformer와는 본질적으로 뭐가 다를까?
DeepONet은 Branch와 Trunk가 End-to-end로 함께 학습된다고 가정하지 않는다.

Universal Approximation Theorem for Operator

엄청 복잡해 보이지만, 함수 버전의 Universal Approximation Theorem의 오마주처럼 보인다. 그러나 실은 operator도 함수이므로, 위의 식이 성립하지 말라는 법은 없다.
실제 구현 실험은 Theorem 1을 기반으로 했지만, 수학적으로는 위와 같이 general하게 구성할 수 있음을 수학적으로 증명했다고 한다. (그러나 증명을 살펴보면 좀 trivial해 보인다. Theorem 1이 2의 특수사례임은 쉽게 알수 있다.)

DeepONet의 2가지 장점

1. Generalization Error가 매우 작다.

Generalization Error란 Train error와 Test error의 차이이다. 이 값이 작아야 overfit하지 않고 general하게 학습했다고 볼 수 있다.
Unstacked DeepONet은 기존의 다른 DL 방식들보다 낮은 MSE와 generalization error를 보여준다.

2. 빠른 수렴

2019년에 발표된 DeepONet 논문에는 이런 언급이 있다.
To the best of our knowledge, this is the first time exponential convergence is observed in deep learning.
왜 DeepONet은 Data efficient하게 빨리 수렴하면서도 generalization 측면에서 우월할까?
우선 DeepONet은 처음 본 데이터에 강건하다. 기존의 딥러닝이 가장 취약한 지점이 바로 이것이다. 처음본 패턴일지라도, 기존에 학습된 branch를 사용해 적합한 함수 u를 찾으면 또다른 y를 해석할 수있는 함수 v를 찾아내는 구조 안에서 기존의 데이터에서 얻어낸 지식을 효과적으로 재사용하기 때문이다. 또한,
그래서, DeepONet은 analytical calculator의 (가성비)좋은 surrogate model이 될수 있다.

실험결과 고찰

x의 분포를 10000개로 파티셔닝한 후 그중 P개에서 데이터를 샘플링했다. 그리고 branch를 u개 두었다. 이때 총 데이터셋의 갯수는 PXu가 된다.
이때 수렴패턴을 보면 흥미로운 결과를 보인다. P와 u의 갯수는 밀접한 관련이 있는데, P가 u 갯수보다 같거나 작은 지점까지는 DeepONet의 지수적 수렴 패턴을 그대로 보여주나, P가 더 많아지면(u가 부족해지면) 그다음부터는 polynomial 로 수렴패턴이 바뀐다.

저자의 (장황한) 결론부

그런데, 아직도 저자들은 [DeepONet]을 통한 Operator Regression이 왜 빠른 수렴과 좋은 generalization 성능을 보여주는지 정확인 설명을 찾지는 못하고 있다고 한다.
하지만, 그럼에도 불구하고, Transfer learning 기법과 결합한 경우, multi-domain data에 적용하는 경우 등 다양한 시나리오에서 엄청난 잠재력을 가지고 있는 접근이라고 강조한다. 후속 연구가 기대된다. 그러나 아직까지는 physical ML쪽에서만 주로 사용되는 접근방식이다.