일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Programmers
- Linear Model
- NLP
- gradient descent
- 파이썬
- LLM
- BFS
- 일기
- dl
- 머신러닝
- machinelearning
- 프롬프트
- GPT
- rnn
- Deeplearning
- prompt engineering
- 알고리즘
- 코테
- 부스트캠프
- 기계학습
- deque
- ChatGPT
- Linear Regression
- Django
- 코딩테스트
- LeetCode
- Python
- attention
- transformer
- 프로그래머스
- Today
- Total
크크루쿠쿠
Generative Models 본문
Generative Models Part 1
Introduction
What I cannot create I do not understand.
generative model을 알게 된다면 단순 이미지 생성이 아닌 다양한 일이 가능해진다.
What does it mean to learn a generative model?
GAN 뿐만이 아닌 다양한 분야
ex) 강아지의 이미지가 주어진다.
-> 강아지를 sampling 하는 model.
Generation: train data에 있는것이 아닌 다른것 생성.
Density estimation: 어떤 image가 주어졌을때 그 image가 dog 같은지 구분. (anomaly detection) classification과 비슷.
- explicit models 이라 부르기도 함.
Unsupervised representation learning: 강아지의 특징들을 학습 (feature learning) -> Generative model에 포함되나? 애매함.
그렇다면 p(x) 값을 어떻게 represent 하나?
- Discrete Distribution
1. Bernoulli distribution: coin flip
2. Categorical distribution: m-sided dice
Example
Modeling an RGB joint distribution
-> 하나의 rgb pixel 을 fully describe 하기 위함 parameter의 수가 매우 많음.
binary로 다른 예시.
parameter의 수가 엄청나게 필요해진다.
-> 기계학습에서 parameter의 수가 많아질 수록 성능이 안좋아짐.
어떻게 쉽게할까?
Structure Through Independence
independece 하다면 n개의 변수만 필요하다! 각각의 pixel에대해 1개만 필요
하지만 이 가정은 현실성 X -> 그 중간을 찾아야함
Condition Independence
Three Important rules
1. Chain rule:
parameter 수 -> 2^n - 1
2. Bayes' rule:
3. Conditional independence (가정) : z가 주어졌을 때 x와 y가 independent하다 라는 가정.
-> chain rule 에서 뒷단에 붙는 것들을 날려줌.
Markov assumption을 해보자 -> 전에것만 dependent함.
chain rule에 conditional independence를 적용시키면 식이 이렇게 나옴
-> parameter 수는 2n-1로 줄어짐 --> exponential reduction
이러한 방법을 Auto-regressive Model
Auto-regressive Model
예시로 MNIST를 살짝 변형.
pixel에 0과 1로만
autoregressive model 은 어떤 정보가 이전 정보에 dependent 한것들을 말함
-> markov model은 그 중에 하나.
image 는 2차원인데 순서는 1차원으로 매기기 때문에 이 방법에 따라 성능,방법론이 달라짐.
이전 N 개를 고려하는 model -> AR-N model
NADE (Naive Autoregressive Density Estimator)
i 번째 pixel 을 만들 때는 i-1 개의 pixel을 만들어야함.
-> weight의 차원이 바뀜.
NADE는 explicit model임 -> input이 주어지면 확률계산 가능
어떻게?
이렇게 입력에 대한 확률을 구할 수 있음.
Density Estimator 이름이 들어가면 explicit model
continuous output일 경우에는 가우시안 믹스쳐 모델 사용
Pixel RNN
RNN 을 통해 generate를 하겠다!
n x n rgb model
ordering에 따라 알고리즘이 조금 다름.
위 정보만 확인할 것이냐 아님 순서대로 전부 확인할 것인가.
Generative Model Part 2
Latent Variable Models
D.Kingma 의 박사학위 논문 추천.
Is an autoencoder a generative model?
-> 아니다. 그렇담 왜??
Variational Auto-encoder
- Variation inference (VI)
posterior distribution 을 찾는것임 -> 나의 observation이 주어졌을 때 내가 관심있어하는 random variable을 보는 확률 분포
liklihood가 뒤집힌것 하지만 값을 구할 수 없음. z 는 latent vector
이를 근사한 분포를 Variational distribution이라 함.
VI 의 목표는 variational distribution을 찾는 과정.
KL divergence 라는 metric 활용.
encoder 부분이 variational distribution을 찾아줌.
But how?
target을 모르는데 어떻게 loss를 줄이지?
-> VI 의 ELBO trick임
Evidence lower bound 라는 것을 계산해서 이를 maximize 함으로써 반대 부분을 낮춰줌.
ELBO 를 분해해보면
reconstruction loss 와 prior fitting term 으로 나뉜다.
Reconstruction Term: encoder 를 통해 다시 decoder로 돌아는 loss를 줄이는것
Prior fitting term : latent space에 올려놓은 점들의 분포가 가정하는 사전 분포와 동시에 만족하는것과 같은가.
-> autoregressive model이 된다.
Key
1. intractable model -> explicit model아님.
2. Prior fitting term 이 미분가능해야함. 그래서 대부분 가우시안을 사용.(isotropic Gaussian)
Adaversarial Auto-encoder
큰 단점으로 encoder 에서 Prior fitting term 에서 KL을 사용하는 것
-> 많은 경우에 gaussian 사용 하기 싫음.
그 경우에 사용하는것.
Generative Adversial Network
GAN
generate 한 것을 경찰은 분별하고 분별한 것을 기반 학습 -> 경찰은 나오는 data로 또 학습.
generator 를 원함.
GAN 은 generator가 Real을 만들게끔 한다.
1. 2 player 의 minimax game
2. discriminator
3. generator
discriminator가 optimal 한다 생각하면 jsd가 나옴 -> 현실적으로는 맞나..?
DCGAN
MLP 대신 image domain 으로 바꿈.
Conv, DConv 활용
Info-GAN
단순 이미지 생성이 아닌 c 라는 class를 random하게 넣어줌.
Text2Image
Puzzle-GAN
sub fetch를 통해 이미지를 복원해줌.
CycleGAN
domain만 바꿔줌.
-> GAN 구조가 두개 들어감
Star-GAN
image를 단순히 다른 domain 으로 바꾸는게 아니라 control 할 수 있게 해줌
'DeepLearning > 부스트캠프 AI Tech' 카테고리의 다른 글
Pytorch Project Architecture (0) | 2021.08.17 |
---|---|
Pytorch Basics (0) | 2021.08.17 |
Transformer: Attention is all you need (0) | 2021.08.12 |
RNN(Recurrent Neural Network) (0) | 2021.08.12 |
[Week2] DL CNN(Convolutional Neural Network) [Day3] (0) | 2021.08.11 |