AITech 학습정리-[DAY 15] Generative model
과거의 것들/AI Tech boostcamp

AITech 학습정리-[DAY 15] Generative model

=========================

학습내용

확률을 얻어낼 수 있는 모델을 explicit model 이라고 부름

GAN 모델이라고 해도 만들 수 있어야 하지만, 이것이 뭔지 알아야 하기때문에 구별모델도 들어가고, 귀나 꼬리같은 공통부분도 비지도학습으로 알아야 한다. p(x)는 어떻게 표시할까.

확률을 나타내는 파라미터 수 세는 법. 동전의 경우 앞면, 뒷면 두개 다 있어야 할 것 같지만 앞면이 p라면 뒷면은 1-p로 할 수 있고 카테고리의 경우로 확장해도 마찬가지. 그래서 나중에도 -1이 종종 붙는다.

그래서 mnist 학습데이터 숫자인 28*28*1 이미지로 보면, 경우의 수가 2^n 이니까 확률 파라미터는 2^n -1 이다. 근데 이건 너무 많다.

그래서 어떻게 줄일까 잔머리를 굴리는데, 만약 모든 픽셀 값이 다른 픽셀값과 independence 하다면 2^n으로 할 필요 없이 전부 n으로 굴릴 수 있다. 하지만 이건 말이 안되기 때문에 어느정도 타협을 한다.

조건부 확률을 쪼개는 방법과 그에 따른 파라미터 수.



그래서 타협을 한다고 했는데 모든 픽셀에 대해 dependence 하다고 하는게 아닌 앞의 몇개 부분에 대해서만 dependence 하다고 가정하고 푸는 거다. 만약 바로 앞 1픽셀에만 dependence 하다고 가정하면 파라미터 수는 2n-1이 나옴. 이렇게 모든 픽셀에 대해 dependence 하다고 가정해서 풀든, 앞 n개의 픽셀에 dependence 하다고 가정해서 풀든 이런 방법론이 Auto-regressive model 이다.

NADE 라는 모델은 앞에 모두 dependence 라고 가정하고 각각의 확률을 chain rule로 쪼개서 구할 수 있으니까 거기다 softmax를 취하고 weight h를 하면서 구하는 과정인 것 같다.

 

Pixel RNN 도 비슷한 거 같다. RGB라고 하면 전에 있던 G, GB 들에 dependence 되는 확률에 따라 계산하는 듯. Row LSTM과 DIAGONAL BILSTM은 ordering 을 어떻게 정하고 풀지 하는 방법론.

 

2번째 강의..

Latent Variable Models

Variation Auto-encoder가 generative model 이 될 수 있게 만드는 이유가 무엇인지를 잘 아는게 중요하다. 그래서 variation auto-encoder가 그냥 encoder와 autoencoder와 어떤 차이점이 있고 무엇때문에 variation auto-encoder가 generator model이 될 수 있는지

사실 이 수식을 이해하며 더 깊게 들어가고 싶으면 "Variational INference and Depp Learning: A New Synthesis" D.Kingma Ph.D. Thesis 초반부분까지라도 읽어야 한다.

 

 

가우스를 사용하고 싶지 않을 때 Adversarial Auto-encoder

 

Generative Adversarial Network

generator 와 discriminator. 두 player 간의 싸움.

우리가 원하는건 generator지만 discriminator 도 성능이 좋아지는게 장점인 것 같다.

 

CycleGAN은 꼭 알아야 할 굉장히 중요한 개념이다.

GAN 구조가 2개 들어가 있음.

그 외에 최신기술들 있음... openAI

지금 GAN 논문들이 너무 빨리 발전하고 있어서 다 이해하는건 의미가 없을 것 같고 GAN에 대한 중요한 아이디어들과 GAN과 VI가 어떻게 다르고 우리가 GAN 모델을, 특히 implesive 하게 generate를 하고 싶다고 했을 때 GAN과 VI중에 어떤걸 쓰는게 좋겠냐 

https://www.youtube.com/watch?v=odpjk7_tGY0&t=69s


왼쪽 Vanilla GAN은 0 아니면 1인 카테고리라 저런 0일경우 1일경우로 나눠 log를 이용한다.

내가 신기했던건 오른쪽 LSGAN에서 목적으로 하는 값으로 변경하고 싶으면 loss 함수를 수정하면 된다는 거다. D(x)를 1로 보내고 싶으니 D(x)가 1이 될 때 loss function 이 최소가 되도록 함수 식을 세움. D(G(z))도 마찬가지.




얼룩말을 그냥 말로 색만 바꾸고 싶을 때 활동성이 없게끔 다시 바꾸고 둘의 차이를 loss function 하는 부분. 왜 그러냐 하면 domain transform 혹은 style transform에선 얼룩말이 말로 변하돼 모양은 유지를 하는 task 가 목표라.


처음부터 128*128 이미지 주고 학습하면 맨 처음에는 weight들이 모두 랜덤이라 힘들어 하니까 64*64 부터 학습하고 업샘플링 해주는 방식으로 한다.

 

그 뒤엔 loss를 다른 방법으로 구현해봤다던가, 여러가지 저 당시의 최신 모델들을 소개... 

 

 

======================

퀴즈 / 과제

없다

 

==========================

피어세션

mat.mul 이랑 mat.dot이랑 다른거 아닌가.

* 실제로 다르더라. 검색해서 보자

sum이 있는게 이론에서 맞는데 코드에선 자동으로 해줘서 알아서 더해지는 건가?

softmax 로 나온 scalar 값을 value에 곱해주는 거니까 value dimension은 상관없다.

 

디즈니랜드 죽기전에 가보자. HQ head querter

자유이용권 11만원? 너무 비싸서 빅 3인가 5로 샀다.

프랑스 홍콩 디즈니랜드. 데이터 사이언스

배경 2d 장치유명하다.

 

 

=======================

후기

어렵다.

엔지니어는 실력이 중요하다고 하니까 실력을 키우는데 집중하는게 좋을 것 같기도 하다. 다 잘하면 좋겠지만..