네이버 부스트캠프 🔗/⭐주간 학습 정리

[네이버 부스트 캠프 AI Tech] Generative Model

Dobby98 2023. 3. 22. 14:48

본 글은 네이버 부스트 캠프 AI Tech 기간동안

개인적으로 배운 내용들을 주단위로 정리한 글입니다

 

본 글의 내용은 새롭게 알게 된 내용을 중심으로 정리하였고

복습 중요도를 선정해서 정리하였습니다

 

아직 이해도가 많이 부족한 분야입니다🥲😢

따라서 오류가 있으니 발견시 지적 부탁드립니다 

 

그리고 정보를 얻은 링크를 걸어 두었으니 자세한 내용이나 전문적인 견해를 얻고 싶으면 

링크를 참조해주시길 바랍니다


✅ Week 3

목차

  1. What is Generative Model?
  2. 생성모델의 과정
  3. Explicit density
    1. Exact density - Autoregressive generation
    2.  Approximate density - VAE
  4. Implicit density
    1. GAN
  5. Diffusion Moels

🔥Reference 

 

Stanford University CS236: Deep Generative Models

Course Description Generative models are widely used in many subfields of AI and Machine Learning. Recent advances in parameterizing these models using deep neural networks, combined with progress in stochastic optimization methods, have enabled scalable m

deepgenerativemodels.github.io

 

 

생성모델(Generation Model)이란 무엇인가?

 

danbi-ncsoft.github.io

 


Intro

최근 Generative Model 생성모델이 인기이다

diffusion을 적용한 Dalle등 다양한 모델들이 글을 입력받고 그림을 완성해준다

사실 위에 있는 도비의 그림도 Dalle로 그린 그림이다

 

생각효과는 뛰어나다 그림체도 설정해 줄 수 있고 그림에 그리는 객체 또한 명확하게 지정이 가능하다

특히 input을 사진을 주고 사진안에 새로운 객체를 그려서 자연스러운 사진을 만들어 낼 수도있다

그만큼 생성모델은 최근에 들어서 빠른 발전을 이루어가고 있다

 

오늘은 이러한 생성모델에 대한 개념과 발전의 역사를 도비와 함께 알아보려고 한다

 


1. What is Generative Model?

생성모델이란 무엇일까?

직관적으로 설명하자면 생성마법을 쓰는 모델이다

이용자의 관점에서 본다면 그냥 휙 하고 입력을 하면

툭 하고 출력을 보여준다

 

하지만 이러한 과정 뒤에는 확률적인 추론과정이 포함되어 있다

물론 아직 이 부분을 공부중이기 때문에 전문적으로 적을 수는 없겠지만

공부한 내용을 기준으로 정리해보려고한다

 

아무튼 생성모델은 최근들어 많을 발전을 해왔다고 앞에서 언급을 했다

특히 생성모델하면 떠오르는 모델은 Dalle이다

요즘 ChatGPT와 GPT4로 유명한 OpenAI에서 만든 그림그려주는 AI로

 

이용자가 원하는 그림을 글로 입력하면 자연스럽게 몇 장을 만들어 준다

시간이 있다면 아래 링크로 들어가서 경험해보기를 강력히 추천해본다

 

DALL·E 2

DALL·E 2 is an AI system that can create realistic images and art from a description in natural language.

openai.com

물론 이런 생성모델이 그림그려주는 용도로만 활용되고 있는 것은 아니다

가상의 데이터를 만들어준다거나, 다양한 분야에 적용해서 활용될 가능성이 무궁무진하다

 

그럼이제 생성모델의 발전흐름에 따라서 차근차근 모델을 살펴보고

생성모델의 원리를 한번 이해해보자

 

 


2. 생성모델의 과정

만약 우리에게 고양이 이미지 데이터들이 있고 이를 통해서 생성모델에 학습시킬 수 있는 것은 무엇일까?

바로 데이터의 분포 P(x)이다 

즉, 고양이 이미지 데이터를 통해서 고양이 모습의 분포 P(x)를 얻을 수 있고 이를 기반으로

새로운 고양이 이미지를 만들어 낼 수 있어야한다 

다시말해, 학습 데이터의 분포를 따르는 유사한 데이터를 생성하는 것이 생성모델의 목표이다

 

이를 위해서는 생성모델에 학습 데이터의 분포를 학습시키는 것이 중요하다

그리고 이렇게 얻는 학습을 통해서 만들어진 이미지를 판단할 수 있는 기능도 필요하다

 

이러한 생성모델은 크게 2개로 구분할 수 있다

🔥학습 데이터의 분포를 기반으로 하는 Explicit density

🔥학습 데이터의 분포를 몰라도 생성하는 Implicit density

 

이를 조금더 세분화 해보면 아래와 같다

출처 : https://alinlab.kaist.ac.kr/resource/2021_AI602_Lec05.pdf

 

이제 종류별로 모델을 한번 살펴보자

 


3. Explicit density

3.1 Exact density - Autoregressive Models

Autoregressive 모델의 경우 생성모델 보다는 시계열 모델에서 많이 활용되었다 - AR 

핵심은 Conditional Independence - 조건부 독립을 이용해서 결과를 예측해나가는 것이다

 

MNIST data를 예시로 들어서 설명하자면 

우리가 28 x 28의 Binary pixels를 예측한다고 가정한다면

 

- 여기서 binary pixel인 이유는 MNIST는 흑 또는 백으로 만 이루어져있기 때문이다

 

우리의 목표인 P(X) = P(X_{1}, X_{2} ... X_{784}}이다

물론 기 경우 2^n인 2^784로 사실상 파라미터의 수가 기하 급수적으로 증가하기 때문에

모델 학습이 어렵다 

그러나  Conditional Independence과 Chain Rule를 활용한다면 

P(X_{1:784}) = P(X_{1})P(X_{2}|X_{1})P(X_{3}|X_{2}) ... 식으로  변환시킬 수 있고

파라미터의 수도 2n - 1로 줄일 수 있다 

 

- 수학적인 부분은 본글에서 집중적으로 다루지는 않겠다. 기회가 된다면 따로 한번 정리해보도록 하겠다

 

NADE

이러한 방식을 처음 적용한 Autoregressive Models이 NADE이다

우리의 Input 값을 flatten하고 - 이는 N개의 값으로 구성 - 이를 각각의 N개의 hidden Layer에 넣어서 새로운 N개의 결과값을 생성한다

hidden Layer에 값을  넣는 것은 1번 값일 경우 N-1 개의 hidden Layer에, 2번  값일 경우에는 N-2 개의 hidden Layer ... 이런식으로 진행될 수록  값이 들어가는 hidden Layer의 수가 줄어든다

 

이러한 방법은 앞에서 소개했듯이 Explicit Model이기 때문에 새로운 값이 주어졌을 때 새롭게 density를 계산하고 결과값을 계산하다

즉, 데이터의 분포를 파악하고 이를 기반으로 생성을 하는 것이다

 

이러한 Autoregressive Models의 경우에는 

- Sampling이 쉽다장점

- Probability를 계산하기 쉽다장점이 존재한다

- likelihood를 예측하기 쉽다는 장점도 있다

 

- 하지만 이러한 방식은 모든 시퀀스 픽셀을 통과 해야하기 때문에 병렬화가 어렵다는 단점

- 따라서 생성 속도가 느리다는 단점이 있다

 

Autoregressive Model에는 앞에서 나온 NADE뿐만 아니라

- Pixel RNN

- Pixel CNN

- WaveNet 

등이 존재하다

 


3.1 Approximate density 

 

통계학에서 Maximum Likelihood라는 개념이 있다

우리는 모든 데이터를 보유할 수 없기 때문에 결국 모수를 추정할 수밖에 없다

즉, 전체 데이터로 학습을 하는 것이 아니라 표본 데이터를 갖고 모델을 학습하는 방법이 필요하다

 

이 경우 Maximum Likeilhood로 최대우도를 추정함으로 최적의 분포를 찾아야한다

 

이러한 Maximum Likelihood의 방식을 활용하는 것이 Approximate density이다

 

이러한 모델들의 최적화 방법은 KL-divergence를 최적화 하는 방법을 활용하는데

쉽게 말해서 추정한 분포가 데이터의 분포에 넣었을 때 Maximum Likelihood가 최대가 되는 방법으로 최적화 해나가는 방법이다

 

하지만 이러한 모델들은 데이터가 부족하다면 모델의 정확성이 낮다는 단점이 분명히 존재한다

 

KL-divergence를 활용한 모델은 VAE - Variational Autoencoder가있고

Jensen-Shannon divergence를 활용하는 모델은 GAN - 으로 해석할 수 있다

그리고 Wasserstein distance를 활용하는 모델은 WAE - Wasserstein Autoencoder,  AEE - Adversarial AutoEncdoer 등이 있다

 

VAE

 

Auto Encoder

일반적으로  auto encoder는 generation model이 아니다

쉽게 설명하자면 AutoEncoder는 Labeling 되지 않은 데이터로 부터 저차원의 특징 - Low-dimensioanl feature representation을 학습하는 비지도 학습니다

여기서 인코더가 추출한 특징은 잠재코드 - Latent code라고 하는데 이는 특정 숫자값으로 정의 되어있다

결국 AutoEncoder의 목표는 특징추출에 있지 생성에 목표를 두고 있지 않다

 

그렇다면 VAE는 왜 generation model일까? 

VAE

VAE도 AutoEncoder를 사용한다 하지만 여기서 사용되는 AE는 하나의 숫자를 표현하는 것에 이용되는 것이 아니라

가우시안 확률 분포에 기반하여 확률값으로 표현된다. 즉, VAE의 잠재 코드 Latent code는 평균과 분산으로 표현되는 것이다

 

즉 VAE에서 Encoder의 목적은 latent space를 학습하는 것에 있다고 할 수 있다

그리고 Decdoer는 학습된 latent space를 input의 형태로 변환시켜주는 역을 한다

즉, Decoder가 generation model 역할을 하는 것이다

 

VAE 설명 (Variational autoencoder란? VAE ELBO 증명)

Variational autoencoder, 줄여서 VAE는 GAN, diffusion model과 같이 generative model의 한 종류로, input과 output을 같게 만드는 것을 통해 의미 있는 latent space를 만드는 autoencoder와 비슷하게 encoder와 decoder를 활용

process-mining.tistory.com

 

 

Auto-Encoding Variational Bayes (VAE) 분석

OVERVIEW 컴퓨터 비전에는 다양한 분야가 존재한다. 오늘 소개할 VAE는 generative 모델들에게 많은 영향을 끼쳤고, 나는 anomaly detection 분야에 관심이 생겨 VAE를 알게 되었다. 물론 2014년에 나온 논문이

ys-cs17.tistory.com

 

 

위의 복잡한 식을 통해서 만들어지는 Evidence lower bound - ELBO를 최대화 하는 방법으로 학습이 진행된다

- 복잡한 수학은 일단 pass - 구현은 사실 증명을 몰라도 할 수 있긴한다..

 

 

😢이러한 VAE는 단점이 명확하다

확률 분포를 따르기 때문에 모델의 성능이 앞에서 본  Exact density보다 떨어질 수 있다

 


4. Implicite Density 

4.1 GAN

GAN은 쉽게 말하면 두개의 모델이 경쟁을 하면서 학습을 하는 모델이다

 

즉 Generator 모델이 Discriminator모델을 속일 수 있는 방향으로 학습이 진행된다

GAN의 경우 생성모델과 판별모델로 구성되어 있는데

여기서 생성모델은 데이터를 생성해서 판별모델에 넘긴다

그리고 판별 모델은 생성된 데이터를 진짜인지 가짜인지 판별해서 학습을 진행하는 것이다

 

생성모델의 목표는 판별모델을 속이는 것으로 생성모델에는 데이터가 들어가지 않는다

쉽게 말해서 판별 모델의 결과를 갖고 이를 통해서 판별모델이 속는 방향으로만 업데이트를 하면되기 때문에

실제데이터의 분포가 생성모델에는 필요하지 않다

 

따라서 GAN이  Implicite densitiy에 포함되는 것이다

Generator의 object function
Discriminator의 object function

 

이를 합쳐서 GAN의 object function을 표현하면

하지만 이러한 GAN 모델도 단점이 있다

 

🥲바로 학습이 잘되지 않는다는 것이다

Generator와 Discriminator중 하나라도 망가진다면 모델의 정확성이 많이 떨어진다

따라서 학습이 매우 어렵다는 것이다

 


5. Diffusion Models

Diffusion Model은 최근 생성모델을 휩쓸고 있는 모델로 

Nosie로 부터 image를 생성하는 아이디어이다

Diffusion Models를 이해하기위해서는 두가지 과정이 있다

Forwardreverse process이다

Forward 과정은 Image에 nosie를 추가해나가는 방법이다

반면 Reverse process는 노이즈가 추가된 이미지를 원본으로 되돌리는 과정으로 우리의 목표는

이런 Reverse를 학습하는 것에 있다

 

 

이러한 방법은 수천번의 Step으로 구성되기 때문에 많은 시간이 소요되고 구현하기도 힘들다

하지만 이러한 과정을 거치면 좋은 성능의 이미지를 생성할 수 있다

 

이러한 Diffusion을 활용한 대표적 모델이

OpenAI의  DALL-E2이다

 

이런 Diffusion 모델의 가장큰 장점은 이미지를 Editing 할 수 있다는 것이다

원본 사진에 객체를 추가하면 자연스러운 사진으로 만들어 준다

그리고 이렇게 추가된 객체는 이미지의 맥락에 잘 맞게 만들어 줄 수 있다

 

그만큼 자연스러운 결과물을 만들어 낼 수 있는 것이다


오늘은 매우 간단하게 Generative model들을 공부해 보았다

물론 아직 깊은 내용을 다루지는 않았지만 

이번 글로 전체적인 흐름은 이해할 수 있었던 것 같다

 

기회가 된다면 논문을 일고 좀더 자세히 모델을 다루어 보도록 하겠다