dukim's blog

[WK02-Day010][21.08.13.Fri] Generative Models, 주간 회고 본문

Boostcamp AI Tech 2th

[WK02-Day010][21.08.13.Fri] Generative Models, 주간 회고

eliza.dukim 2021. 8. 13. 19:25

Intro

  • 내게는 쥐약과 같은 파트...
  • 바이블과 같은 자료는 이활석님의 오토인코더의 모든 것, 그리고 영상 볼 시간이 없으신 분은 여기를 보시면 도움이 될 겁니다.

강의내용 복습: Generative Model

  • ML에서의 Generative Model의 의미, 트렌드, 방법론

What does it mean to learn a generative model?

  • 생성 모델을 학습한다는 것은 어떤 데이터에 대한 확률 분포 $p(x)$를 학습하는 것
  • 예를 들어 고양이에 대한 이미지 데이터셋이 주어졌을 떄
  1. Generation: $x_{new} \tilde p(x)$에서 샘플링한 $x_new$는 고양이 같을 것(sampling)
  2. Density estimation: $p(x)$가 고양이와 유사한 이미지면 높은 값을, 아니라면 낮은 값을 가질 것(anomaly detection)
  3. Unsupervised representation learning: 해당 이미지들이 일반적으로 가지고 있는 특징을 학습(e.g. 고양이의 눈, 코, 입, 수염 등)(feature learning)
  • 그렇다면 확률분포 $p(x)$는 어떻게 학습?

[Note] Generative Model 계열은 크게 3가지

  1. Auto Regressive Model
  2. VAE
  3. GAN

1. Auto Regressive Model

N-pixel binary image representation

  • 가능한 경우의 수: $2^n$, 이를 표현하는데 필요한 파라미터 수는 $2n-1$

Structure Through Independence

  • n개 픽셀이 모두 독립적인 사건이라 가정하면 $p(x_1, ..., x_n)=p(x_1)p(x_2)...p(x_n)$으로 표현됨
  • 이때 표현 가능한 경우의 수는 $2^n$으로 동일하지만 필요한 파라미터의 수는 n으로 감소
  • 그러나 너무 단순한 가정.

Conditional Independence

  • Fully Dependent 하게 표현하려면 너무 많은 파라미터($2^n-1$개)가 들고 Fully Independent 하게 표현하면 너무 단순해서 제대로 표현하지 못할 수 있음(n개). 따라서 중간 지점을 찾기 위해 Conditional Independence 가정을 사용함.
  • $z$가 주어졌을 떄 $x, y$가 독립이면, x를 표현함에 있어 y는 상관없다. z만 신경쓴다($p(x|y,z) = p(x|z)$).
  • chain rule의 뒷단에 직전 스텝보다 더 이전 스텝의 conditional 부분을 날려주는 효과
  • Auto Regressive Model: conditional independence와 chain rule을 잘 섞어서 Fully dep, indep 사이의 모델을 만든 것
  • $X_{i+1} \perp X_1, ..., X_{i-1} | X_i$(Markov assumption)을 가정하면, $p(x_1, ..., x_n) = p(x_1)p(x_2|x_1)p(x_3|x_2) \cdots p(x_n|x_{n-1})$으로 표현되고, 필요한 파라미터의 수는 $2n-1$이 된다. 따라서, Markov assumption을 이용하면, 필요한 파라미터 수를 지수적으로 감소 시킬 수 있다.
  • AR Model은 위에서 볼 수 있듯 conditional independency를 활용한 모델
  • (주의!): AR Model이 이전의 몇 시점까지만 dependency를 가정하는 모델만을 지칭하는게 아니다, fully independent도 포함하는 개념
  • 제시되는 확률변수의 순서나 윈도우 사이즈도 중요
  • $AR_N$ Model: 이전 $N$개를 고려하는 AR model

NADE: Neural Auto Regressive Density Estimator

  • 위 과정을 그대로 수행
  • $i$번째 픽셀을 $1,...,i-1$픽셀에 dependent 하게 함
  • Auto Regressive Model
  • NN의 입력 차원이 계속 달라짐(i번째 pixel에 대한 확률분포를 만드는 NN은 i-1개의 입력을 받음)
  • Explicit Model이다: 임의의 입력에 대해 확률 계산 가능
  • coment: Density Estimator라는 제목이 들어간다면 explicit model일 가능성이 높음, 반면 implicit 모델은 generation만 가능
  • 여기서는 각 pixel의 출력값이 binary pixel이라 sigmoid 통과해서 나갔는데, continuous output일 경우에는 마지막 layer에서 Gaussian Mixture Model 활용해 continuous한 distribution을 만들겠다(?).

Pixel RNN

  • RNN을 가지고 AR Model을 만들겠다.
  • 예를 들어 n x n RGB 이미지에서
    image
  • Ordering 방식에 따라 두 가지 구조
    image

2. Latent Variable Models(Variational Auto Encoder 계열)

  • VAE는 generative model, AE는 그렇지않음
  • VAE가 generative model이게 하는 요소는?

Variational Auto-Encoder

  • Variational Inference(VI)

    • Posterior Distribution을 찾는 것이 목적이며 이를 알 수 없으니 이와 일치하는 Variational Distribution으로 근사시키는 것
    • Posterior Distribution: $p_{\theta}(z|x)$, observation $x$가 주어졌을 떄 관심있어하는 확률변수 $z$(latent vector)의 확률 분포($p(, likelihood라고도 부른다.
    • KL-divergence를 이용해 Posterior Distribution과 Variational Distribution의 Gap을 줄여보겠다.
  • 그런데 뭔지도 모르는 distribution에 어떻게 근사시키는가? -> ELBO trick

  • ELBO: Evidence Lower BOund

  • Posterior Distribution P와 Variational Distribution Q의 KL-divergence를 줄임으로서 줄이는 것이 목적인데 이를 바로 줄일 수 없으니, ELBO를 계산해서 이를 maximizing함으로써 반대로 KL-divergence term이 줄어들게 만들자.
    image

  • ELBO = Reconstruction Term + Prior Fitting Term

    • Reconstruction Term: encoder(x) -> z -> decoder(z) -> x 의 Reconstruction 과정의 loss를 줄이는 역할
    • Prior Fitting Term: encoder(x) -> z 한 z들의 분포(VI를 통해 추정한 latent space 상의 분포$q_{\pi}(z|x)$)가 내가 가정하는 사전 분포($p(z)$)와 유사해지도록 하는 역할
    • Implicit 모델
  • 정리하면 VAE는, 어떤 입력이 주어질 때, 이를 latent space z로 보내서 무언가를 찾고, 다시 reconstruction 하는 term으로 만들어지는데, generative model이 되기 위해선 latent space의 prior distribution으로부터 z를 샘플링하고, 이걸 decoder를 태워서 나온 이미지 또는 output domain의 값들을 generation result라 봄. 이렇기 떄문에 VAE를 generative model로 본다.

  • 반면에 AE는 입력이 latent space로 갔다가 다시 원래대로 나오므로, 엄밀한 의미의 generative model이 아님(좀 더 보강 필요)

  • Key Limitation:

    • implicit model(intractable model). 어떤 입력이 주어졌을 때 얼마나 해당 데이터셋의 분포를 따르는 지를 평가할 수 없다(likelihood를 계산하기 어려움)
    • prior fitting term(KL-divergence Term)이 반드시 미분 가능해야한다(closed form이 나와야). 따라서 다양한 형태의 latent prior distribution에 적용하기 어려움.
    • 따라서 대부분의 VAE는 isotropic Gaussian을 prior를 활용(몇 안되는 KL-D..가 closed form인 pdf, isotropic은 모든 output dim이 independent한 distribution을 말함)
      image

Adversarial Auto-Encoder

  • VAE의 문제는 prior(latent) distribution term이 Gaussian 으로 한정된다는 점
  • AAE는 이외의 분포도 prior(latent) distribution으로 사용가능하게 함
  • GAN을 활용해 latent distribution 사이의 분포를 맞춰주는 것
  • VAE의 prior fitting term을 GAN objective로 바꿔버린 것에 불과
  • latent distribution을 sampling만 가능한 어떤 분포든 적용할 수 있다.
  • Wasserstein Auto-Encoders에서는 AAE가 사실은 latent distribution 사이의 Wasserstein distance를 줄여주는 것과 동일효과이며, AAE는 WAE의 한 종류이다라는 것을 보임
  • Generative Quality도 VAE보다 좋을 때가 훨씬 더 많음

3. GAN

  • Generator와 Discriminator간 경쟁하며 학습시켜 Generator의 성능을 높이는 것이 목적
  • 장점: fixed된 discriminator가 아니라 점점 발전하는 discriminator로 인해 generator가 성능이 향상됨
  • implicit model

GAN vs. VAE

  • VAE: 학습때 입력 이미지를 latent space $z$로 보냈다가 latent space에서 다시 x로 보내면서 학습. 생성시에는 $p(z)$에서 $z$를 샘플링해서 디코더 태워서 얻은 $x$가 생성 결과
  • GAN: latent distribution $z$에서 출발, Generator로 생성한 뒤에 Discriminator는 Real과 Fake를 구별하도록 업데이트, Generator는 Discriminator의 결과가 True가 나오도록 업데이트.

GAN Objective

  • Generator와 Discriminator간의 minimax game

  • Discriminator의 관점에서 Obj func:
    image

    • 최적의 discriminator(Precision 식과 유사, Generator가 고정이 되어있을 때.):
      image
  • Generator의 관점에서 Obj func:
    image

  • Generator Obj func에 최적의 dicriminator일 때의 식을 대입하면:
    image

    • 수식으로 보여주려한 것은 GAN의 Objective는 Data를 생성하는 실제 data distribution과 내가 학습한 generator 사이의 Jenson-Shannon Divergence(JSD)를 최소화하는 것.
    • 그런데 엄밀하게 얘기하면 위 과정은 Discriminator가 Optimal이라 가정했을 때저런 수식이 나왔다는 것. 따라서 실제로 봤을 떄, Discriminator가 최적으로 수렴한다는 것도 보장하기 힘들고, 그랬을 때 Generator가 이런 식으로 안 나올 수도 있기 떄문에 이론적으로는 말이 되나 현실적으로는 어려움이 있다.
    • 이와 동일한 논리가 AAE를 WAE로 해석할 때 활용됨

DCGAN

  • 최초의 GAN은 MLP로 만들었고, 이를 이미지 도메인에 적용한 것이 DCGAN
  • 여러 테크닉(hyperparameter, activation function(leaky ReLU, deconv의 활용 등)을 제시

Info-GAN

  • $c$라는 auxiliary class를 랜덤하게 one-hot vector로 집어넣음
  • generation 시 GAN이 특정 mode에 집중하게 만든다. 마치 multi-modal distribution을 학습하는 효과

Text2Image

  • 문장 -> 이미지
  • DALL-E...

Puzzle-GAN

  • image내 sub-patch를 입력받아 원래 이미지를 복원

CycleGAN

  • GAN 구조를 활용하지만 이미지 간의 도메인을 바꿀 수 있는 GAN
  • Cycle-consistency loss

Star-GAN

  • Style-Transfer와 비슷한데 mode를 정해줄 수 있음
  • 이미지를 단순히 다른 도메인으로 바꾸는 것이 아닌 컨트롤 가능하게 함

Progressive-GAN

  • 고차원의 이미지 생성
  • 저차원부터 고차원이미지로 단계적으로 생성

VAE, GAN 요약

  • VAE는 Posterior Distribution을 찾는 것이 목적이며 이를 알 수 없으니 이와 일치하는 Variational Distribution으로 근사시키는 것. 이 과정이 Variational Inference(VI).
  • GAN은 Empirical Distribution과 Generator 사이의 JSD를 줄이는 것이라 해석 될 수 있다.
  • GAN의 여러 주요 논문들
  • GAN과 VAE의 차이 및 언데 어떤 것을 쓸지에 대해서만 알아두자. 또는 transformer 쓰는게 좋을 수도..?

과제 수행 / 결과

  • 과제가 없는 날이라 생략

피어세션

  • 팀회고록 작성

    • 잘한점

      1. 수업내용복습-> 집중해서 듣고 복습
      2. 알고리즘 스터디-> 적절한 난이도
      3. 피어세션-> 내용을 정리하며 공부에 도움
    • 아쉬운점

      1. 강의가 조금씩 밀림-> 미루지말고 열심히 해보자
    • 도전할것

      1. 알고리즘 문제 풀기
      2. PR-12 공부하기
      3. 논문 리뷰
  • 다음주 피어세션 진행 방향

    • Pstage 대비 (이미지 분류 대회 준비하는 방향)
      1. 동빈나 유튜브 논문 리뷰영상 보고 관련 내용 정리
      2. 파이토치 튜토리얼(이미지 분류기)

학습 회고

  • 최성준 교수님의 마스터 클래스를 통해 uncertainty DL에 대한 분야가 대강 어떤 분야인지 알 수 있었다. 내가 저걸 쓸 날이 올까?
  • 교육과정 다 들으면 취업 금방 되겠지 생각하면 망한다. 실제 취업시 요구 사항이 훨씬 많으니 2, 3주쯤 뒤부터 시간 여유가 생기면 미뤄뒀던 CS 학습 시작할 것.
  • 팀원을 진짜 잘 만난 것 같다. 다들 참여도 적극적이고 잘하는 것들이 뚜렷해서 서로 배울 점이 많다.
  • 필요한 것 그렇지 않은 것을 취사선택할 필요가 있다.
Comments