유체, 딥러닝과 만나다
- 편집팀
- 2020년 1월 24일
- 3분 분량
최종 수정일: 2020년 9월 20일
여러분 들은 모두 알파고와 이세돌 9단의 바둑경기에 대해서 들어보셨을 것입니다. 2016년부터 지금까지 사회를 화끈하게 달구고 있는 소재인 인공지능은 현재 자연어 처리, 사물 인식, 다양한 문제 해결 , 최적화 등 많은 분야에서 사람들에게 도움을 주고 있습니다. 이런 인공지능이 물리 현상을 시뮬레이션을 하는데 에도 활용될 수 있다면 어떨까요? 이 글에서는 인공지능, 딥 러닝이 어떻게 물리 현상을 시뮬레이션 했고 이것이 추후 어떠한 방향을 발전해 나갈 수 있는지에 대해서 알아봅시다.
기존의 유체역학 시뮬레이션
현존하는 유체역학 시뮬레이션의 대부분은 밀레니엄 문제로 유명한 나비에-스토크스 방정식과 연속 방정식을 품으로서 계산됩니다. 아래 수식에서도 볼 수 있듯이 많은 편미분에 독립 변수만 해도 공간 좌표 3개, 시간 1개, 총 해서 4개나 됩니다. 이렇게 복잡한 방정식의 경우에는 방정식의 해를 해석적으로 구할 수는 없고 컴퓨터를 사용하여야만 풀 수 있게 됩니다. 컴퓨터로 푸는 과정을 간단히 설명하자면, 우리가 풀고자 하는 상황의 시공간(파이프 속의 유체 유동을 보고 싶다면 파이프를 여러개의 작은 정육면체 공간으로 나눈다)을 여러개로 쪼개고 (이산화 하고) 각각에 점마다 유체 입자의 속력과 압력을 근사적으로 계산하여야 구할 수 있습니다.




하지만, 위의 방법은 완벽하지도 효과적이지도 못합니다. 컴퓨터를 사용하여 미분방정식의 해를 구할 때에는 시공간을 작은 부분으로 나누어서 해를 구하기 때문에 근사해를 구하게 됩니다. 그래서 더욱 정확한 해를 구하기 위해서는 시공간을 더 작게 조각내어야 하고 해를 구하기 위한 시간도 기하급수적으로 늘어나게 됩니다. 또한, 위 모델은 물이 땅 바닥에 부딪혀 튀기는 모습이나 난류 등을 모델링 하기 위해서는 조금 더 복잡한 항들과 수식을 적용해 주어야 합니다. 심지어 물이 따른 곳과 충돌해 부서지는 모습 등을 시뮬레이션을 하기 위해서는 더 작게 조각내어야 합니다. 그럼 이런 어렵고 복잡하고 오래걸리는 유체 문제들을 최대한 빨리 풀고 해를 보기 위해서는 어떠한 방법을 사용해야 할지에 대해서 알아보도록 하겠습니다.
딥러닝과 유체 시뮬레이션
딥러닝은 우리가 정답을 알고 있는 데이터의 집합들로부터 어떠한 트렌드나 규칙을 찾아내어 정답을 모르는 데이터에 그 규칙을 적용시킴으로서 정답을 예측할 수 있는 컴퓨터 알고리즘의 일종이다. 이 설명은 어찌 보면 우리가 물리 법칙을 발견하는 과정과 비슷하다. 실험을 통해 얻은 많은 데이터를 바탕으로 모든 상황에서 적용될 수 있는 하나의 규칙, 이론을 개발해내어 자연세계에 대한 이해를 넓혀 나가는 것이 물리이기 때문이다.

그래서 딥러닝 알고리즘에 다음 사진과 같이 간단간단한 기본적인 물리 현상을 학습시킨다. 위의 사진을 보면 물 분자 2개가 충돌하여 튀기는 것부터, 다중 물 방울 충돌 까지 큰 물리 현상을 이루는 작은 부분들이 녹아 있음을 확인 할 수 있다. 여기서 학습시키는 현상들은 정밀한 유체역학 시뮬레이션의 의해 생성된 영상으로 현존하는 물리 법칙을 만족하도록 제작된 영상들이다. 이러한 영상을 학습시킨 딥러닝 알고리즘에 우리가 해석하고 싶은 상황의 모델을 넣고 알고리즘을 실행시키게 되면 위에서 살펴보았던 기존의 방법으로부터 구한 영상과 별 차이가 없음을 확인 할 수 있다. 고로, 물리 법칙을 만족시키면서 최대 10배 빠르게 양질의 영상을 얻어낼 수 있다는 것이다. 이는 굉장히 혁명적인 연구라고 할 수 있다. 이 기술이 어디에 쓰일 수 있는지는 다음 섹션에서 알아보고 잠시 두 시뮬레이션의 정확도를 비교하는 영상을 보도록 하자.
그래서 이 기술은 어디에 쓰일 수 있는데?
최근, 이렇게 빠른 시간 안에, 실시간으로 새로운 영상을 만들어 낼 수 있는 기술은 많은 주목을 받고 있다. 크게 두가지 상업적, 산업적 측면에 있어서라고 볼 수 있다. 메이플스토리, 심지어는 배틀그라운드등과 같은 고사양의 게임을 하더라도 바다나 강의 모습을 보면 좀 주변 환경과는 다르게 부자연스럽고 배경과 잘 어울리지 않음을 느낄 수 있을 것이다. 이 이유는 물리학적 법칙을 따르지 않는 그냥 임의의 파도 영상이나 물 표면이 움직이는 영상을 반복해서 재생하고 있기 때문이다. 이러한 부분에서 실시간 혹은, 실시간 근처에서 유체의 유동을 근사해 줄 수 있는 시뮬레이션을 사용해주게 되면 유저 입장에서 훨씬 더 실감나고 생생한 게임 환경을 만날 수 있다. 이는 실제로 넥슨과 같은 게임 업체에서 많은 연구가 진행 되오던 부분이다. 또한, 산업적 측면에서는 새로운 시제품을 만들기 위해 여러 가지 구조를 만들고 시뮬레이션으로 테스트 하던 과정이 10시간 걸렸다면 위 딥러닝을 사용하게 될 경우 1시간으로 단축할 수 있다는 점이다. 이와 같이 물리와 컴퓨터 공학의 만남은 단순히 물리, 공학에서만 쓰이는 것이 아닌 예술, 여가, 산업 모든 방면에서 영향을 끼칠 수 있다는 것이다.
<참고자료>
[1] Um, Kiwon, Xiangyu Hu, and Nils Thuerey. "Liquid splash modeling with neural networks." Computer Graphics Forum. Vol. 37. No. 8. 2018.
[2] Anderson, John David, and J. Wendt. Computational fluid dynamics. Vol. 206. New York: McGraw-Hill, 1995.
[3] Tompson, Jonathan, et al. "Accelerating eulerian fluid simulation with convolutional networks." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.
<이미지>
[1] Google Image
[2] Um, Kiwon, Xiangyu Hu, and Nils Thuerey. "Liquid splash modeling with neural networks." Computer Graphics Forum. Vol. 37. No. 8. 2018.
<동영상>
[1] https://youtu.be/so-dCZNTe4w

Physics 학생기자 홍석찬
2019년 겨울호
지식더하기
유체역학, 컴퓨터공학
Comments