Skip to content

뭔가를 마무리 해내는 힘

최근 아카이빙한 이 preprint를 작업하면서 느꼈던 점, 그리고 배운 점을 정리한 글

기상학자 Edward Lorenz는 1961년에 이상한 현상을 발견했다. 자신이 고안한 날씨 예측 모델에 똑같은 초기 조건을 주고 시뮬레이션을 수행했는데, 예측값이 완전히 다르게 나온 것이었다. 알고보니 그는 초기 조건을 입력할 때 소숫점 마지막 몇 자리를 버리고 입력했는데, 이 때문에 예측값이 완전히 달라진 것이었다. 그는 그의 책 “Essence of Chaos”에 다음과 같이 적었다2.

Quote

The initial round-off errors were the culprits; they were steadily amplifying until they dominated the solution. In today’s terminology, there was chaos.

이 현상은 오늘날 나비효과로 알려져있다. 소숫점 마지막 자리를 버리는 것을 나비의 날갯짓으로 생각해보면, 완전히 바뀐 시뮬레이션 결과는 나비의 날갯짓으로 초래된 거대한 태풍이라고 생각할 수 있다.

기상 현상의 이러한 특성 때문에, 초기 조건을 잘 찾는 것은 기상 예측 성능에 아주 큰 영향을 준다. 초기 조건이 약간만 바뀌어도 나비 효과 때문에 예측 결과가 크게 달라지기 때문이다. 하지만 아무도 정확한 초기 조건을 모른다. 내 방의 온도계를 읽으면 온도계가 위치한 곳의 온도는 알 수 있지만 조금 떨어진 곳의 온도는 다를 것이고, 심지어 온도계에도 오차가 있다. 자료 동화는 수학 모델과 관측치를 똑똑하게 결합해 어떤 계의 상태를 추정하는 작업이다.

여러가지 방법이 있지만, 나는 nudging이라는 방법에 집중했다.

\[\frac{\mathrm{d} u}{\mathrm{d} t} = F(u) + \lambda \bigl ( u_\mathrm{obs} - u \bigr )\]

형태로 모델을 고쳐주면, 좋은 조건 하에서 \(u\)\(u_\mathrm{obs}\)사이의 거리가 가까워져간다. 내가 이 페이퍼에서 제안한 방법은,

\[\frac{\mathrm{d} u}{\mathrm{d} t} = F(u) +G_\theta(u) \bigl ( u_\mathrm{obs} - u \bigr )\]

형태로 고쳐서 linear \(\lambda\)를 nonlinear 함수인 neural network \(G_\theta\)로 고쳐 성능 향상을 꾀한 것이다. 실험을 위한 코드는 이 GitHub repository를 참고하면 된다.

2024년 7월로 거슬러 올라가면, SPINN-BGK 다음으로 어떤걸 연구할까 고민만 하고 있던 내가 있었다. Scientific computing에 익숙해지기 시작하면서 거만해진 나머지 PINN3의 장점을 찾을 생각은 안 하고 단점만 짚으면서 모든 걸 냉소적으로 바라보고 있었다. 하지만 동시에 뭐라도 하면서 시간을 보내야 한다는 압박 역시 있었다. 당시 지도교수님께서 생산성을 좀 보여주면 좋겠다는 코멘트를 주셨었으니, 아마도 이 글을 읽는 독자들은 그 당시 내가 얼마나 생산적이지 못한 상태로 불평만 쏟아내고 있었는지 쉽게 짐작할 수 있으리라.

그렇게 여름을 흐지부지 보내다가, 이윤상 교수님께서 KAIST에 오셔서 자료 동화 (data assimilation) 관련하여 튜토리얼 강의를 해 주셨다1. 마침 2022년 1학기에 칼만 필터링에 대해 강의를 수강한 적이 있었고, 이윤상 교수님께서 열정적인 강의를 해 주셔서 그랬던지 내용이 머리에 빠르게 들어왔다. 아주 크게 바라보면, 미분방정식과 data를 어떻게 잘 활용할 수 있을지에 대한 내용이었고, 마침 데이터 없이 미분방정식을 인공신경망으로 푸는 것에 회의를 느끼고 있던 나로써는 흥미를 느끼지 않을 수 없던 주제였다. 때마침 Neural ODE를 공부해보고 싶던 차라, Neural ODE와 자료 동화를 결합하는 방법에 대해 공부해보기로 했다.

하지만 여름이 지나고 갑자기 졸업 준비를 하게 되면서, 약 30% 정도 연구를 진행한 채로 미국으로 나오게 되었다. 주기적인 미팅도 없고, HPC 정책도 불편하고, 연구에 진척이 없다보니 아무래도 흐지부지 될 것 같다는 생각에 거의 석달간 손을 놓고 있었는데, wrap-up 하는게 좋겠다고 박사 지도교수님께서 말씀하셔서, 지난 넉달간 어떻게든 publon으로 만들기 위해서 노력했다.

사실 나는 뭔가를 끝까지 하는 힘이 굉장히 부족하다. 어떤 프로젝트를 시작할 때는 배경 지식이 많지 않다 보니까 모든게 흥미롭고 새로운 발견인 것처럼 느껴지지만, 어느 정도 지식이 쌓이고 슬슬 큰 어려움을 마주할 때가 되면 흥미가 급감하여 일의 진행이 더뎌진다. 이 페이퍼도 마찬가지였다. 처음에 Neural ODE랑 자료 동화에 대해 적절한 배경지식이 없었을 때는 모든 실험, 모든 결과가 흥미로웠지만, 사실 알고보니 별거 아니었다는 걸 깨닫고나니 한 없이 초라해보여서 포기하고 어디론가 던져버리고 싶었다. 하지만 또 던져버리면 앞으로 영원히 뭔가를 끝맺지 못할 것 같다는 생각이 들었고, 이거라도 잡고 있지 않으면 미국의 긴 여름방학을 도저히 버텨낼 수 없을 것 같았다. 아주 작은 결과를 조금씩 쌓아가면서—페이퍼를 여러번 뒤엎고 그림을 다시 그리고 테이블에 들어갈 값들을 되채우면서—저자가 세 명인데 이걸 도대체 왜 나 혼자만 하고 있는지에 대한 볼멘소리가 나오기도 했었다.

계속 하기 위해서 다양한 방법을 시도했다. 고쳐 쓰다보면 집중력이 떨어지기 마련인지라 종이로 출력해서 빨간 색 펜으로 수정할 부분을 마킹한다던가, iPad에 pdf 파일을 집어넣고 애플 펜슬로 작업한다던가, 쓸 때는 이면지에 손으로 작업하고 나중에 타이핑한다던가. 기분을 환기시키기 위해 카페에 가거나, 오피스에서 나와 엘리베이터 앞 소파에 앉아서 하거나, (미안하지만) 대학원생 라운지에 가서 작업하기도 했다. 다양한 작업환경과 방식을 탐구한 것과 별개로, 지난 석달간 학교로 가는 셔틀버스에서 Grit이라는 책을 꾸준히 읽기도 했다. 처음에 생각했던 것 만큼 과정이 재미 없더라도, 계속해서 deliberate practice를 했을 때 세계적인 수준에 올라설 수 있다는 내용이었다. 책 말고 “룩 백”이라는 만화 영화도 봤다. 이 책이랑 영화에서 받았던 울림들이 무엇보다도 재미 없을 때도 참고 계속 하게 해준 큰 원동력이 되어주었다.

비록 결과가 초라할지라도, 결과적으론 여정이 힘들었던 만큼 더 뿌듯하다. 과연 어딘가의 journal에 출판이 될 지는 모르겠지만, 적어도 이 paper를 작업하기 전의 나와 비교했을 때 지금의 나는 뭔가를 마무리 해내는 힘이 더 강해진 사람이라고 생각한다.


  1. 관련 블로그 포스트 

  2. Lorenz, E.N. (1993) THE ESSENCE OF CHAOS

  3. Raissi, M., Perdikaris, P., & Karniadakis, G.E. (2019) Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. Journal of Computational physics, 378, 686–707.