AI Study/생성모델

[생성모델] 세상에 없던 무언가, AI 생성모델 2편 - Diffusion Model

MNC 2023. 1. 9. 11:14

Beyond Human Limitation

“인간시대의 끝이 도래했다”

 

전 세계적으로 인기를 끌고 있는 게임 League of Legends의 한 캐릭터의 대사입니다.

 

Diffusion Model에 기반을 둔 DALL-E , Stable Diffusion 등이 생성한 그림을 본 사람들의 반응과도 유사합니다. 특히 바둑에서 알파고가 뛰어난 실력을 보이며 이세돌 9단을 이겼던 2016년 당시의 충격 이상으로, 인간만의 고유한 영역이라고 여겨져왔단 창작의 영역에서 까지 Deep Learning 모델이 뛰어난 성능을 보여준 사건은 많은 사람들에게 더 큰 충격으로 다가왔습니다.

 

딥러닝의 급속한 발전과 함께 VAE,GAN,Flow Based 모델과 같이, Diffusion Model 이전에도 좋은 성능을 보여준 생성모델들이 기존에 존재하였습니다. 그럼에도 아래와 같은 이유로, 이 모델은 기존 모델 이상의 막대한 파급력을 보여줍니다.

  1. 기존의 생성모델보다 훨씬 더 사실적 이면서 정교한 이미지를 생성해 준다.
  2. 텍스트를 이미지로 즉각 변환해 주는 것과 같이 다양한 영역(Domain)의 입력값을 받아 이를 바탕으로 이미지를 생성해 준다.
  3. GAN 에 비하여 학습 및 생성에 안정적인 모습을 보여준다.

그러나 일반적인 분류,탐지를 위한 딥러닝 모델보다 다소 복잡한 수식과 코드 구성으로 인하여 많은 사람들이 Diffusion Model을 받아들이는데 어려움을 겪고 있습니다.

 

오늘과 다음 글, 총 두편에 걸쳐, 생성모델 1탄에 이어 이 글이 작성되는 시점인 2023년 1월 현재 생성모델의 흐름을 주도하고 있는 Diffusion Model 에 대하여 딥러닝에 친숙하지 않은 많은 분들에게도 직관적 이해, 그리고 가벼운 수학적 이해가 동시에 가능하도록 시도해보는 시간을 가져보겠습니다. 

 

일상 속의 Diffusion

Diffusion Model에서 핵심이 되는 Diffusion(확산)은 사실 우리의 삶에 있어 매우 익숙한 현상입니다. 미술시간 수채화를 그리기 앞서, 물감을 물에 풀게되면 위의 그림과 같이 물감이 확산(Diffusion)되는 현상을 목격한 경험이 있으실 겁니다. 비행기에서 한사람이 라면을 먹게 되면 점차 비행기 전체로 그 냄새가 전달되어 결국 여러사람이 라면을 주문하게 되는것 역시 냄새의 확산(Diffusion)으로 인한 현상입니다.

 

이처럼 확산이라는 현상은 우리 삶에서 매우 익숙합니다. 하지만, 물에 희석한 물감이 어떻게 퍼질지, 어떠한 형태로 퍼질지, 혹은 라면냄새가 앞좌석부터 퍼질지 뒷자석 부터 퍼질지를 예측하는 것 처럼, 확산이 어떻게 진행될지 예측하는 것은 매우 어렵습니다. 따라서 이를 정확하게 예측하기 보다 확률적으로 예측하고자 하는 방법들이 생겨났습니다. 이렇게 확산의 형태를 확률적으로 예측하고자 하는 기존의 방법을 활용한것이 Diffusion Model 입니다.

 

Diffusion Model의 역할과 구성 과정을 이해하기 위하여 또 다른 예시를 들어보겠습니다.

 

매우 어질러진 방을 깨끗한 방으로 되돌리는 과정을 생각해봅시다. 방청소의 목표는 어질러진 방(Noise 주입 및 확산이 많이 이루어진 상태)를 우리가 원하는 깨끗한(Noise가 주입되기 전 혹은 확산이 이루어지기 전 상태)로 되돌리는 것이죠. 이렇게 생각해보면 방청소와 Diffusion Model이 공통적인 목표를 가지고 있네요. 

 

하지만 우리가 최대한 비슷하게 방을 처음의 상태로 되돌려 놓고자 하더라도, 3일 전의 방과 완전히 똑같이 물건 배치 위치에 대하여 단 1mm 의 오차도 없이 원래 상태로 되돌리는것은 사실상 불가능합니다. Diffusion Model도 마찬가지입니다. 오히려 이러한 미세한 차이로 인하여 기존에 존재하지 않은 새로운 이미지 인물 데이터를 만들어 낼 수 있는 것입니다. 또한 심각하게 더럽혀진 방이 한번에 치워지지 않고 여러 번 손을 거친 끝에 깨끗해지듯, Diffusion Model 역시 여러번의 반복적인 작업을 통해 이루어 집니다.

 

"반복적인 단순 작업을 통하여 어지럽혀진 방을 깨끗하게 치운다"

이것이 Diffusion Mode의 핵심 원리입니다.

Diffusion Model과의 두가지 약속(가정)

Diffusion모델을 차근차근 수학적으로 이해하기 위하여 우선 2가지 큰 뿌리(가정 혹은 Assumption)가 필요합니다. 이산 마코프 가정(Discrete Markov Process Assumption)과 정규분포(Normal Distribution)의 특성입니다.

 

우선 Discrete Markov Assumption을 쉽게 이해하기 위해서는 우리가 식사 메뉴를 고르는 과정을 떠올려보면 좋습니다. 일상생활 속에서 대다수의 사람들이 식사 메뉴를 고르기 전 우리가 가장 깊이 고려하는 부분은 바로 이전 식사 메뉴를 떠올리는 일입니다.

 

물론 식사 메뉴를 고르는 과정에서 다양한 고려 요쇼들이 있겠지만 Discrete Markov Assumption 세계 에서는 점심 메뉴를 고르기 위해서는 오직 그날 먹은 아침 메뉴 만을 고려하는것을, 저녁 메뉴를 고르기 위해서는 그날 먹은 점심 메뉴를 고려하는 것처럼 바로 이전 단계에서의 나의 메뉴만을 고려하는 가정 을 의미합니다.

  1. Markov 성질 : “특정 상태의 확률(t+1)은 오직 현재(t)의 상태에 의존한다”
  2. 이산 확률과정 : 이산적인 시간(0초, 1초, 2초, ..) 속에서의 확률적 현상

 

$$ P\left[s_{t+1} \mid s_t\right]=\mathrm{P}\left[s_{t+1} \mid s_1, \ldots, s_t\right] $$

 

두 번째로 우리가 살펴볼 사항은 정규분포(Normal Distribution)입니다. Diffusion Model 뿐 아니라 많은 머신러닝, 통계 모델에서 ‘특정 데이터가 정규분포를 따를것이다’ 라는 정규성 가정을 많이 활용합니다. 정규성 가정이라 함은 데이터가 다음과 같은 형태의 분포를 따를것이라 가정하는 것입니다. 다양한 복잡한 분포가 있지만 우리가 이미 특성을 잘 이해하고 있는 가장 대표적인 분포인 정규분포만을 고려한다고 하면 우리가 풀어야 하는 문제가 상당히 간단 명료해지는 아주 큰 장점이 있습니다.

 

위의 정규분포 그래프는 평균과 분산($\mu \text{,}\Sigma$)이라는 두가지 모수에 의해 결정되는 정규분포 그래프로서 Diffusion Model에서는 각 확률 단계가 다음과 같이 Normal Distribution을 따를것이라 가정합니다.

 

$$ p_\theta\left(X_{t-1} \mid X_t\right)=N\left(X_t ; \mu_{X_{t-1}}, \Sigma_{X_{t-1}}\right) $$

 

자 이제 두 가정을 결합해 봅시다!

 

Diffusion Model 을 주로 활용하는 이미지의 경우 그 데이터의 분포가 단순한 정규분포 형태로 나타내기에는 매우 부족합니다. 하지만 이러한 단순한 형태의 정규분포라도 이를 수십 수백 층으로 더 많게는 수천 층으로 쌓아올린다면 이미지와 같은 복잡한 데이터의 분포를 잘 표현 할 수 있습니다. 이러한 점을 이용하여 간단한 분포를 단계별로 활용하여 점차 복잡한 데이터를 표현하는 것이 Diffusion Model의 핵심이라 할 수 있겠습니다. 특히 Markov 가정을 통하여 많은 단계를 동시에 고려하는 것이 아니라 이전단계의 분포 만을 단계적으로 차근차근 고려해가며 복잡한 분포를 쌓아 올리기 때문에, 우리는 어려운 문제를 보다 쉬운 여러개의 문제로 분할하여 풀 수 있게 된것입니다.

 

그렇다면 각 단계에서는 어떠한 문제를 풀어야 할까요? 앞서 정규 분포는 평균과 분산 두가지 특성(모수)에 의하여 결정된다고 이야기 하였습니다. 평균과 분산 이 두가지를 맞추는게 우리가 매 단계마다 풀어야하는 숙제입니다!

Diffusion Model의 Forward Process(방 어지르기)와 Reverse Process(방 치우기) 과정

앞서 말한바와 같이 사람에게 방을 잘 치우게 하려면 어떻게 해야 할까요? 가장 단순하고도 과격한 정답중 하나는 방을 일부로 어지럽힌 다음 이렇게 어지러진 방을 방을 치우게 하고, 다시 어지럽히고 치우는 과정을 계속 반복하는 것입니다.

 

Diffusion Model의 관점에서는 이러한 행위는 다음과 같습니다.

 

방을 일부로 어지럽힌다 → 데이터에 노이즈를 주입한다 → Forward Process

어지럽혀진 방을 치운다 → 데이터에서 노이즈를 제거한다 → Reverse Process

 

 

위의 사진은 실제 고양이 이미지 데이터에 Diffusion Mode의 Forward , Reverse Process를 적용한 예시입니다. 반복적인 방치우기 과정을 통하여 사람이 깨끗한 방이 무엇인지 라는 개념을 깨달았다면, 이러한 과정을 통해 Diffusion Model은 고양이의 이미지의 개념(데이터의 분포)를 깨달아 가는 것입니다.

 

이어지는 파트에서는 Forward Process와 Reverse Process를 분리해서 각각을 살펴보도록 하겠습니다.

Forward Process & Reverse Process

Forward Process는 임의의 노이즈를 주입하여 데이터를 어지럽히는 과정입니다. 그렇다면 이러한 노이즈는 어떠한 방식으로 구성되게 될까요? Diffusion Model의 큰 두가지 가정중, 정규성 가정이 있다는 사실을 앞서 설명하였습니다. 이러한 가정으로 부터 오는 이점을 적극 활용하기 위하여 주입되는 노이즈 역시 정규분포 형태를 따르는 임의의 Gaussian Noise가 주입됩니다. Gaussian 노이즈가 한,두 차례 주입될때까지는 어느정도 원래 데이터의 형태를 보존하고 있으나 이것이 계속하여 반복되게 된다면 위의 고양이 사진처럼 점차 그 형태를 알아 볼 수 없게 될것입니다. 이렇게 단계별로 Gaussian Noise를 주입하는 것이 Diffusion Model의 Forward Process입니다. 이렇게 이전 단계 (t-1) 에서 다음단계 (t) 로 노이즈가 주입되며 변화되는 과정은 다음과 같이 표현 할 수 있습니다.

 

$$ q\left(X_t \mid X_{t-1}\right):=N\left(X_t ; \mu_{X_{t-1}}, \Sigma_{X_{t-1}}\right):=N\left(X_t ; \sqrt{1-\beta_t} X_{t-1}, \beta_t \cdot I\right) $$

 

우리가 다시한번 유의해서 살펴봐야 할 부분은 위의 수식이 조건부 확률분포를 나타내고 있다는 점입니다.

 

“내가 그의 이름을 불러주었을 때, 그는 나에게로 와서 꽃이 되었다.” 라는 김춘수 시인의 꽃에서 나오는 시구 처럼

Gaussian 가정은 한가지 확률 변수에 대한 가정이 아니라 이전단계의 확률분포와 함께 고려되었을 때 의미가 있는 조건부 정규분포 가정(Conditional Gaussian distribution) 이라는 점을 잊지 않으셔야 합니다.

 

Reverse Processs는 아래의 그림과 같이 주입된 노이즈를 되돌리는 과정입니다. 앞서 예시를 든 사례와 마찬가지로 1mm의 오차도 없이 원래상태로 방을 깨끗하게 되돌리는것은 불가능한 일입니다. 노이즈가 주입된 데이터도 마찬가지입니다. 이미 엎질러진 물을 완전히 주워담을 수 없듯이, 노이즈가 추가된 데이터를 완벽하게 원래 상태로 되돌리는것은 불가능한 일입니다.

 

 

따라서 우리는 애초에 완벽하게 이전상태로 되돌리는 참된 분포 $Q$가 아닌 우리의 가정을 만족하면서도 $Q$와 최대한 유사한 뷴포 $P$를 대신해서 찾게 됩니다.

 

 

이러한 과정은 Diffusion 모델의 손실함수중 일부인 아래의 항을 통하여 알수 있습니다. 생성모델 1편을 보신 분이라면 Kullback–Leibler divergence 를 이미 접하셨을겁니다. 간단하게 말하자면 두 분포가 얼마나 다른지를 나타내는 지표로서 항상 0 이상이라는 특성을 가지고 있습니다. 참된분포와 우리의 가정한 분포의 KLD를 최대한 작게 하는 방향으로 모델을 학습 시키고자 이러한 손실 함수를 설정하게 된 것입니다.

 

$\sum_{t=2} D_{k L}\left(q\left(x_{t-1} \mid x_t, x_0\right) \| P_\theta\left(x_{t-1} \mid x_t\right)\right)$

 

그리고 Diffusion Model에서는 우리가 앞선 VAE에서 다뤘던바와 마찬가지로 Regularization 항과 Reconstruction 항이 추가된 총 3개의 항으로 다음과 같이 구성됩니다.

 

$D_{K L}\left(q\left(z \mid x_0\right) \| P_\theta(z)\right)+\sum_{t=2} D_{k L}\left(q\left(x_{t-1} \mid x_t, x_0\right) \| P_\theta\left(x_{t-1} \mid x_t\right)\right)-E_q\left[\log P_\theta\left(x_0 \mid x_1\right)\right]$

 

항이 3개나 되어야 하기 때문에 복잡하게 느껴지실 수 있습니다. 실제로도 3개의 항을 모두 고려해야하는 손실함수는 간단한 손실함수가 아닙니다.따라서 초기에는 이러한 Diffusion Model을 활용하는데 많은 어려움이 있었습니다. 하지만 2020년 DDPM(Denosing Diffusion Probabilistic)의 발표 이후 훨씬 깔끔하고도 단순한 방법으로 Diffusion Model을 구성할수 있음을 보였으며 이후 Diffusion Model은 여러 연구자들에 의해 놀라운 발전을 이루어냈습니다.이어지는 DDIM(Denoising Diffusion Implicit Mode)에서는 더 빠른 방법으로 Diffusion Process를 진행하는 과정을 소개하였습니다.

 

오늘날 공개되는 놀라운 성과를 보여주는 Diffusion Model의 활용 가능성을 극대화시켜준 DDPM과 DDIM에 관한 이야기는 이어지는 생성모델 3탄으로 소개드리도록 하겠습니다!

 

Reference
1.Ho, Jonathan, Ajay Jain, and Pieter Abbeel. "Denoising diffusion probabilistic models." Advances in Neural Information Processing Systems 33 (2020): 6840-6851.
2.lilianweng 블로그 (https://lilianweng.github.io/posts/2021-07-11-diffusion-models/)
3.DSBA 김정섭 연구원 발표자료 (http://dsba.korea.ac.kr/seminar/?mod=document&uid=2352)

 

마인즈앤컴퍼니 AI Connect 사업부 한두희 매니저(Data Scientist)가 작성하였습니다.