본문 바로가기

트렌드 한눈에 보기/학계 트렌드

Diffusion Model을 이해해보자 1편 - 태초마을

회사에서는 간단한 CNN, 그보다 더 간단한 SVM을 주로 쓰고 있다. 애초에 더 높은 수준의 모델이 돌아갈 연산능력도 되지 않는 보드를 쓰고 있기 때문에, 한계가 명확하다. 하지만 언제까지 한계 속에서 머무를 수는 없는 법, 더 높은 수준의 모델을 일단 자습해보기로 했다.

 

내 개인적 목표가 있다면, 간단한 수준의 웨어러블 센서만으로도 착용자의 자세를 모델링할 수 있는 서비스를 만드는 것이다. 그럴려면, 일단 사용자의 자세를 보여줄 수 있는 generative AI에 대한 이해가 필요할 것이라고 생각했다. 그래서 관련 강좌를 찾아보는데 웬걸, 일반 강좌들은 죄다 CNN부터 시작한다. 돈을 주고 강의를 들으려고 해도, 거기서부터 들을 수는 없는 노릇이다. 그래서 그냥 논문들을 찾아보면서 공부해보기로 했다. 

처음 시작한 논문은 FLAME, generative AI, 특히 diffusion model을 통해 motion in-between을 만들어내는 논문이다. 쉽게 말해, 첫 번째 동작과 마지막 동작에 대한 설명이 있을 때, 그 사이에 있을 법한 동작을 만들어주는 모델이다. 내가 하고 싶은, 사람 움직임을 만들어주는 모델이기에 첫 시작으로 잡았다. 그런데 introduction을 읽다보니 일단 diffusion model에 대해 이해를 해야겠다는 생각이 들었다. 

 

그렇게 선택한 두 번째 논문이자, diffusion model의 태초마을이다. 현재 generative AI 열풍을 만든 모든 논문들이 인용하고 있을 거라고 생각될 정도로, diffusion model에 대한 기초를 다지고 있다. 논문 자체는 기초 논문답게 엄청 어렵다. 수식을 설명할 때는 이해를 포기했고 ("KL Divergence"를 보고는 눈을 질끈 감았다), 배경지식이 필요한 말들을 아무렇지도 않게 나열한 경우도 적지 않았다 (annealed Langevin dynamics에 대해 처음 들어보는 독자가 해당 논문을 읽으리라 생각지 못했나보다). 그럼에도 불구하고, chatGPT의 힘을 빌려 일반인이 읽어도 이해하기 쉽도록 이 태초마을 논문에 해석을 달아보았다.

1. Diffusion model의 구조

 요즘에야 물론 더 쉽게 설명하는 그림들이 더 많을 수도 있겠지만, 일단 논문에 나온 그림을 기초로 해보자. Diffusion model은 위와 같은 모양으로 생겼다. TV를 새벽시간에 틀면 나오는 백색 소음 수준의 맨 왼쪽 이미지부터, 온전한 사람을 그리고 있는 맨 오른쪽 이미지까지, 각 단계를 x로 표현할 수 있다. Diffusion model의 목적은 한 문장으로 말하면, "(노이즈로부터) 원하는 이미지를 만들어내는 것"이다. '노이즈부터'라는 말에 괄호가 붙은 이유는, 실제 사용자가 diffusion model을 사용할 때 노이즈를 목격할 일은 없기 때문이다. 하지만 학습과정에서는 위 이미지와 같은 단계를 겪는다. 이러니 처음 접하는 입장으로서는 헷갈릴 수밖에 없다. 웬 노이즈?

 

Figure 2의 의미를 좀 더 풀어보자. Xt에서 X0로 나아가는 과정을 reverse process, X0에서 Xt로 나아가는 과정을 forward process라고 부른다. 이 때 forward process에서는 원본 이미지에 노이즈를 섞어주게 된다. 그 과정을 q라고 표현할 수 있다. 노이즈는 gaussian 분포를 따르므로, 엄밀하게 통제된 노이즈이다.

 이와 반대로, Reverse process에서는 노이즈가 섞인 데이터에서 노이즈를 조금씩 지워가게 된다. 그 과정은 p라고 부를 수 있다. p는 학습 가능한 파라미터인 theta로 이뤄진다. 

 

Diffusion model의 학습 과정은, p가 q와 최대한 가까워질 수 있도록 만드는 과정이다. 다시 말해, 노이즈가 섞인 데이터에서 원본 데이터를 복구하는 일이 될 수도 있고, 노이즈 뿐인 데이터에서 원하는 형상을 만들어내는 일이 될 수도 있다. 이 때, p와 q의 "거리"는 KL Divergence라는 수식을 통해서 계산하게 되고, 이 때 gradient descent를 활용해서 파라미터 theta를 업데이트한다. 

 

이상, Denoising diffusion probabilistic model 논문의 Background까지 읽은 결과물이다. 3페이지 중간부분까지이며 한 시간이 소요됐다. 꽤 시간이 걸렸지만, diffusion model의 구조에 대해서는 이해를 어느 정도 한 것 같다.