<Midjourney가 시간과 에너지를 아끼려면? : 최적수송이론에 근거한 최신의 연구 소개>
Diffusion model (혹은 사실상 거의 같게 사용되는 용어로, score-based generative models) 은 최근에 머신러닝에서 크게 각광받고 있다. 특히 사용자가 prompt를 입력하여 원하는 이미지를 생성해내는 text-to-image generation의 경우는 매우 커다란 데이터셋과 모델에 힘입어 Midjourney, StableDiffusion, DALL-E 2 등의 서비스로 출시되기도 했다. 이들 서비스는 의미론과 텍스쳐 양쪽에서 명백히 '창의적'이라고 말하고 싶을 정도로 뛰어난 피쳐 학습 및 재조합 능력을 보여주며, 단순히 학계 내의 주목을 넘어 예술분야 및 호사가들에도 새로운 영감과 고민을 제공하고있다.
나는 이미 작년 12월에 wombo라는 서비스를 접하고 포스팅을 했었다 (블로그에서 해당 글 읽기: 링크). 해당 서비스는 디퓨전 모델은 아니고 GAN의 한 변형인 VQGAN이라는 모델을 이용했는데, 이미 상당히 창의적인 이미지를 생성해주었다 (이를테면 내가 입력해본 프롬프트인 'nvidia building', 'mecha donald trump' 등이 있다). 그러나 모델의 설계 자체가 가진 한계인지, 아니면 컴퓨팅 파워의 한계인지, 이미지가 선명하지는 않고 모호하게 뭉개져있는 듯한 느낌이었다. 사실 generative art라고 하는 분야에 추상적인 패턴뿐만 아니라 의미론이 들어오는걸 오랫동안 소망해온 나로서는 이 정도만 해도 엄청나게 신기한 결과긴 했다.
한편 디퓨전 모델의 경우는 일부 task에서 GAN을 넘는 성능을 보이는 등 성공의 가능성이 보이자, 대량의 컴퓨팅 파워와 고급의 엔지니어링이 투자되어, 매우 선명하고 모든 부분을 식별가능한 이미지들까지 만들어낼 수 있게 되었다. 이는 위에서 말한 유료 서비스들의 출시와 본격적 유행으로까지 이어질수 있었다.
이 글에서는 이러한 디퓨전 모델의 기본적인 작동원리와, 그 가장 큰 문제점을 상당부분 해결할 것으로 기대되는 최신의 연구에 대해 간단히 소개해보도록 한다. 옆 연구실과 함께하는 세미나에서 발표한 자료를 하단에 첨부한다 (슬라이드별 간단한 설명은 차근차근 추가예정).
디퓨전 모델의 기본적인 컨셉은 다른 복잡다단한 인공지능 모델들에 비해 비교적 간단하고 우아한 편인데, 이는 물리학, 화학 등에서 종종 등장하는 현상인 확산(diffusion) 및 그것을 기술하는 비평형 통계역학 (non-equilibrium statistical mechanics)의 방법론에 근간을 두고 있다.
사람 얼굴 데이터, 숫자 손글씨 데이터 등 모든 이미지 데이터셋은 각각의 '분포'를 가지고 있다. 무슨 뜻이냐면, 존재할 수 있는 수많은 이미지(=2차원 행렬)들 중에, 사람 얼굴 사진처럼 생긴 이미지는 극히 일부일 것인데, 모든 가능한 이미지들을 모아놓은 추상적인 공간 상에서 자기들끼리 비교적 가깝게 모여서 어떤 덩어리를 형성하고 있을 거라는 뜻이다.
그런데, 모든 가능한 이미지들의 공간에서 아무 점이나 골라보면 마치 TV 잡음처럼 랜덤한 이미지일 가능성이 압도적으로 높다. 그런 공간에서 사람 얼굴처럼 생긴 이미지들의 모임을 생각하면, 그 윤곽은 꽤 복잡하고, 들쭉날쭉하게 생겼다고 생각할수 있다.
(물론 차원 자체가 워낙 높아서 생각보단 괜찮게 생겼을지도 모르나, 이 경우에는 sparse함이 문제가 된다. 이런 문제를 그나마 개선해줄 수 있는 게, 휘어진 평면을 다루는 기하학인 Riemannian manifold를 도입하는 것이다. 실제로 머신러닝에 많이 적용되고 있으며 디퓨전 모델에도 적용한 연구들이 속속 나오고 있다)
다만 우리가 실제로 그 분포를 알고 있는 것은 아니다. 우리는 그 분포를 따르는 여러 개의 점들 (이미지들) 만 가지고 있다. 점들을 알고 있으니 대충 윤곽을 따라갈 수 있지 않냐고 할 수 있는데, 굉장히 정확한 지적이다. 그러나 고차원이고 커다랗기 때문에 현실적으로는 어렵고 이에 기계의 힘을 빌리고싶다. 만약에 그 분포의 윤곽 자체를 안다면, 사람 얼굴이면 얼굴, 숫자면 숫자, 풍경이면 풍경 등, 기존에 존재하지 않았지만 분명히 사람 얼굴에 해당하는 (혹은 다른것에 해당하는) 이미지를 만들어낼수 있을 것이다. 이게 생성모델의 기본 개념이다.
어떻게 그렇게 할 수 있을까? 다양한 방법이 있는데, 디퓨전 모델에서는 먼저 이러한 복잡한 분포에 작은 노이즈를 단계단계 조금씩 집어넣어, 커다란 공간 전체를 비교적 균일하게 채우는 정규분포 같은 분포로 바꾸어준다. 이는 '좁은 용기 속에 있던 기체분자가 방 전체로 퍼져나가는 것', 즉 확산에 비유할 수 있다. 그런데 사실은 비유일 뿐 아니라 수학적으로 정확하게 똑같게 기술된다. 이를 분포를 '부순다'고 표현하자.
그 때 분포가 어떻게 부서지는지 그 양상을, 인공신경망을 이용해서 학습하자. 인공신경망은 기본적으로 뭐든지 흉내낼수 있는 매우 커다란 함수라고 보면 된다. 아무튼 이렇게 부서지는 양상을 알았으니, 반대로 균일한 분포 (위에 말한 TV 잡음 같은걸 모두 포함한) 로부터 원래 분포를 만들어낼 수 있다 (약간만 더 테크니컬하게 말하면 베이즈 정리에 근거해서 조건부확률을 뒤집어주는 것이다).
그러나 디퓨전 모델의 매우 큰 문제점은, 원래의 좁은 분포를, 전체 이미지들이 이루는 고차원 공간을 균일하게 채울 때까지 단계단계 조금씩 부수면서 학습해야 하기 때문에 학습과 생성에 너무 많은 시간이 걸린다는 것이다. 이 문제는 신경망의 크기를 키운다고 해결되는 것은 아닌듯하다.
이번에 소개한 논문인 Diffusion Schrodinger Bridge에서는 이 문제를 해결하기 위해, 최적 수송 이론 (optimal transport) 및 그것의 변형인 슈뢰딩거 브릿지 (Schrodinger Bridge)를 도입한다. 최적수송이론은 어떠한 분포 p0을 다른 분포 p1로, 유한한 고정된 시간 내에 반드시 보내게끔 강요하는 (정확히 말하면, 최소의 비용으로 그렇게 보낼수 있는 구체적인 경로를 찾는) 것에 관한 이론이다. 딱 들어도 위에 말한 디퓨전모델의 문제점 해결에 적용될 수 있겠다는 직관이 든다.
최적수송 이론을 약간 변형시킨 슈뢰딩거 브릿지 문제는, IPF 알고리즘이라는 기존에 잘 정립된 방법을 통해서 풀 수 있다. 대략적으로 설명하자면 처음에는 마지막 분포 p1을 고정시킨 채로, 그 다음에는 처음분포 p0을 고정한채로, 그 다음에는 다시 p1을 고정한채로... 이런식으로 왔다갔다 하면서 좁혀서 점점 p0에서 p1으로 가는 좋은 경로를 찾아준다. 실제로 저자들은 이 방법을 적용해서, 데이터 분포를 노이즈 분포로 부수는 과정을 가속(혹은 단축)시켜 준다.
그 결과도 상당히 괜찮아서, 기존의 디퓨전 모델보다 훨씬 짧은 시간에 원하는 사람얼굴 이미지를 나름 선명하게 만들어낸다. 한편 재밌게도, 노이즈로부터 원하는 사진들을 만들어내는 것뿐만 아니라, 서로 다른 두 분포를 내삽(interpolation)하는 것도 가능하다. 무슨 말이냐면, 숫자들과 알파벳글자들 사이의, 혹은 땅속 풍경과 바닷속 풍경 사이의 '가장 자연스러운 연결'을 찾아줄 수 있다는 것이다 (물론 기준에 따라 다르며 딱히 과학적 진리 같은것은 아니다).
아무튼 매우 흥미로운 아이디어이고, 앞으로 사람들이 이것을 더 큰 모델들, 더 어려운 task에 대해서까지 이게 잘 적용되는지, 그리고 end-to-end로 잰 실제 시간과 자원이 절약되는게 맞는건지 등을 테스트를 해보면 좋겠다. 만약에 더 어려운 문제들에 대해서까지 결과들이 꾸준히 잘 나온다면, 각광받는 디퓨전 모델의 큰 문제가 꽤나 해결된 셈이겠다.
No comments:
Post a Comment