출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정
https://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 |