출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정
https://deepgenerativemodels.github.io/
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
Generative Model:
만약 각종 강아지 이미지를 구글에서 얻었다고 했을 때,
p(x)표현을 위해서는 베르누이 혹인 카테고리 분포(discrete) 필요
Ex1) RGB joint distribution of a single pixel 모델링
Ex2) binary pixels(or a binary image)
근데 이런 fully dependent하려니 너무 많은 파라미터 필요함
n개를 좀 더 쉽게 표현하려면? -> n개의 pixel이 independent하다는 가정해보기
파라미터 줄이는 건 좋은데 이것이 표현할 수 있는 것이 한정적임.
즉, independent assumption이 너무 과하게 비현실적임.
약간의 편의성도 찾으면서 현실적인 것도 고려하려면?
Conditional Independence: z가 주어졌을때, x와 y가 independent이면 y와 상관없이 x라는 random variable을 z로 표현할 수 있다.
ㅗ: independent 기호
Chain Rule과 Conditional Independence를 잘 섞어보자
remind) Markov assumption: 바로 직전의 것에만 영향을 받는다는 개념
파라미터 숫자가 2^n에서 2n-1로 기하급수적으로 줄었다!
이러한 conditional independency를 잘 쓰는 것이 Auto-regressive models이다.
Auto-regressive Model
하나의 정보는 바로 그 이전의 정보(들)에 dependent한 모형이다.
이전 1개만 고려: AR1 model
이전 n개만 고려: ARn model
NADE(Neural Autoregressive Density Estimator)
NADE is an explicit model that can compute the density of the given inputs.
즉, 단순 genrative model이 아니라 임의의 input들에 대해서 확률을 계산할 수 있다.
* 보통 density 추정(estimate)이 가능한 경우 an explicit model에 해당된다
* 단순 generation만 가능한 경우 an implicit model이라고 칭한다.
지금까진 binary 예제여서 sigmoid를 사용했지만 연속형 r.v인 경우, a mixture of Gaussian을 사용할 수 있다.
Pixel RNN: auto-regressive model을 정의할 때 RNN을 사용한 것. 이미지가 있는 pixel genration
예제) n x n RGB image에 대해서 앞의 것은 FCN으로 만들었지만 RNN 사용.
그리고 ordering 사용법에서 다른 점 有: Row LSTM, Diagonal BiLSTM
Latent Variable Models
D. Kingma, "Variational Inference and Deep Learning: A New Synthesis," PhD. Thesis
Kingma가 Adam 만든 사람. 이 논문 읽어보길 추천함
ELBO: Evidence Lower Bound
Gaussian아니면 활용하기 어려운 단점이 있다.
꼭 Gaussian 쓰지 않으려면? -> Adversarial Auto-encoder 사용
Generation quality도 VAE보다 좋은 경우가 많음
Generative Adversarial Network(GAN): 서로 다른 두 개의 네트워크를 적대적(adversarial) 학습시켜서 실제 데이터와 비슷한 데이터를 생성. implicit model이다.
I.Goodfellow et al., "Generative Adversarial Networks", NIPS, 2014
도둑이 위조지폐 generation하고싶어하고 -> 경찰은 위조지폐를 분별하고싶어하려하고 -> 도둑은 그 genration 성능 높이려하고 -> 경찰은 또 그 분별을 더 잘하려하고.. (끝없음)
즉, two player's minimax game between generator and discriminator
기존 GAN은 Multi layer perception(Dense layer)로 만듦
그외 GAN 발전 방향(논문)들::
DCGAN: image domain을 활용.
Info-GAN: 랜덤한 클래스(vector) c를 계속 집어넣어서 GAN이 특정모드(conditional vector)에 집중하도록 유도
Text2Image: 문장 -> 이미지로 만들기
Puzzle-GAN: 원래 이미지 GAN으로 복원하기
CycleGAN
Cycle-consistency loss: 두 도메인 각각에 정보 없이 외부에 임의 정보가 있으면 알아서 변환시킴
Star-GAN: 이미지를 약간씩 변형, control할 수 있도록 함
Progressive-GAN: 저차원부터 고해상도 이미지로 점진적으로 늘려나가는..
GAN말고 Transformer쓰는게 차라리 마음편할수도..?
'Programming > Python' 카테고리의 다른 글
트랜스포머 대체재 mamba? (0) | 2024.06.21 |
---|---|
240424강의자료 제안 (0) | 2024.04.24 |
Recurrent Neural Networks(RNN), Transformer (1) | 2024.02.27 |
[CNN] Computer Vision Applications (Semantic Segmentation and Detection) (1) | 2024.02.27 |
[CNN] Convolutional Neural Networks (1) | 2024.02.27 |