- [네이버 부스트 캠프 AI Tech] Generative Model2023년 03월 22일
- Cat_Code
- 작성자
- 2023.03.22.:48
본 글은 네이버 부스트 캠프 AI Tech 기간동안
개인적으로 배운 내용들을 주단위로 정리한 글입니다
본 글의 내용은 새롭게 알게 된 내용을 중심으로 정리하였고
복습 중요도를 선정해서 정리하였습니다
아직 이해도가 많이 부족한 분야입니다🥲😢
따라서 오류가 있으니 발견시 지적 부탁드립니다
그리고 정보를 얻은 링크를 걸어 두었으니 자세한 내용이나 전문적인 견해를 얻고 싶으면
링크를 참조해주시길 바랍니다
✅ Week 3
목차
- What is Generative Model?
- 생성모델의 과정
- Explicit density
- Exact density - Autoregressive generation
- Approximate density - VAE
- Implicit density
- GAN
- 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를 이해하기위해서는 두가지 과정이 있다
Forward 와 reverse process이다
Forward 과정은 Image에 nosie를 추가해나가는 방법이다
반면 Reverse process는 노이즈가 추가된 이미지를 원본으로 되돌리는 과정으로 우리의 목표는
이런 Reverse를 학습하는 것에 있다
이러한 방법은 수천번의 Step으로 구성되기 때문에 많은 시간이 소요되고 구현하기도 힘들다
하지만 이러한 과정을 거치면 좋은 성능의 이미지를 생성할 수 있다
이러한 Diffusion을 활용한 대표적 모델이
OpenAI의 DALL-E2이다
이런 Diffusion 모델의 가장큰 장점은 이미지를 Editing 할 수 있다는 것이다
원본 사진에 객체를 추가하면 자연스러운 사진으로 만들어 준다
그리고 이렇게 추가된 객체는 이미지의 맥락에 잘 맞게 만들어 줄 수 있다
그만큼 자연스러운 결과물을 만들어 낼 수 있는 것이다
오늘은 매우 간단하게 Generative model들을 공부해 보았다
물론 아직 깊은 내용을 다루지는 않았지만
이번 글로 전체적인 흐름은 이해할 수 있었던 것 같다
기회가 된다면 논문을 일고 좀더 자세히 모델을 다루어 보도록 하겠다
'[네이버 부스트캠프] > ⭐주간 학습 정리' 카테고리의 다른 글
[네이버 부스트 캠프 AI Tech] VAE 직접 구현하기 by Pytorch (0) 2023.03.24 [네이버 부스트 캠프 AI Tech] Multi-GPU에 간단한 고찰 (0) 2023.03.24 [네이버 부스트 캠프 AI Tech] Transformer (0) 2023.03.21 [네이버 부스트 캠프 AI Tech] RNN & LSTM & GRU (0) 2023.03.21 [네이버 부스트 캠프 AI Tech] CNN Models & CNN Task (0) 2023.03.20 다음글이전글이전 글이 없습니다.댓글