[DGM] Latent Variable Models

Minhan Cho·2024년 10월 10일
0

Latent Variable Models

  • 얼굴을 예시로 할 때, 눈동자 등등이 hidden structure (latent representation zz) 이 될 수 있겠다
  • 아는 것은 xx밖에 없고, zz는 infer하는 것: zz 자체는 보이지 않지만 찾을 수 있는 방법을 알아내자는 것이 latent variable의 목적, 단 automatically
  • Deep Neural Latent Model은 latent variable model 을 NN으로 만든 것
    • shallow latent model: mixture of Gaussians
  • Mixture Models
    • 또다른 latent variable model의 장점
    • xx를 구하는 것은 복잡하지만 xzx|z는 쉬움: zz from 11 to kk 의 summation

Challenges & Alternatives

  • drawbacks
    • autoregressive model에 비해 training이 힘듦
    • 위쪽 절반이 안 보이고, 아래 절반만 보인다고 한다면, xx를 보이는 부분, zz를 가려진 부분이라고 할 수 있음
      이 때 argmaxθPθ(x)=argmaxθzPθ(x,z)argmax_{\theta}P_{\theta}(x)=argmax_{\theta}\sum_zP_{\theta}(x, z)인데, 모든 z의 경우의 수를 고려하기 어려우므로 계산이 힘듦 (더군다나 continuous variable이라면 summation이 아니라 integration이 되므로)
  • Attempts
    • Ep(x)[f(x)]E_{p(x)}[f(x)]의 계산
      • continuous: p(x)f(x)dx\int p(x)f(x) dx where p(x)p(x)은 probability density
        monte carlo(sampling, 모든 경우가 아니라 일부만 취하기 함) approximation: 1Ni=1Nf(xi),xip(x)\frac{1}{N}\sum_{i=1}^{N}{f(x_i)}, x_i \sim p(x), f(xi)f(x_i) can be calculated from samples x1,...,xNx_1, ..., x_N
        x1,...,xNx_1, ..., x_N을 어떻게 sampling 하냐?: p(x)p(x)를 이용해서
      • discrete: p(x)f(x)\sum p(x)f(x) where p(x)p(x)은 probability distribution
    • Naiive Monte Carlo
      • drawback: uniform sampling 때문에 의미있는 결과가 나오기 힘듦, 따라서 써먹을 수 없음
    • Importance Sampling (q(x)q(x)): uniform sampling인 monte carlo 보다 나음
      • sample zzq(z)q(z) 에서 sampling 하는 것
      • q(z)q(z)μ,σ\mu, \sigma 등을 이용한 Gaussian Distribution을 사용하는 등 마음대로 가능: 어쨌거나 uniform distribution보다는 낫다
      • 그래도 q(z)q(z)p(z)p(z) 와 distribution이 크게 다를 수 있다는 한계가 있음
    • Estimating log likelihood
      • 위의 monte carlo에 log 붙인 것
      • (이런..)

Variational Inference

  • 목적: posterior p(zx)p(z|x)를 구하는 것, 그런데 못 구함
    • 따라서 p(zx)=p(xz)p(z)p(x)p(z|x)=\frac{p(x|z)p(z)}{p(x)}인데, p(x)를 못 구하니까
    • p(zx)p(z|x)를 근사한 q(z)q(z)를 구하자는 것
      minimizing KL(q(z)p(zx))KL(q(z)|p(z|x))
      KL(q(z)p(zx))=q(z)logq(z)p(zx)dz=Eq(z)[logq(z)p(zx)]KL(q(z)|p(z|x)) = \int q(z)log\frac{q(z)}{p(z|x)}dz=E_{q(z)}[log\frac{q(z)}{p(z|x)}] 다만 p(zx)p(z|x)를 모르므로
      =q(z)logq(z)p(x,z)p(x)dz=q(z)logq(z)p(x,z)dz+q(z)logp(x)dz=\int q(z)log\frac{q(z)}{p(x,z)}p(x)dz=\int q(z)log\frac{q(z)}{p(x,z)}dz+\int q(z)logp(x)dz에서 logp(x)logp(x)를 밖으로 뺄 수 있으므로 q(z)logp(x)dz\int q(z)logp(x)dz에서 q(z)dz\int q(z) dz는 1이 되고, logp(x)logp(x)가 됨
    • logp(x)=KL(q(z)p(zx))+q(z)logp(x,z)dzq(z)logq(z)dz=KL+Eq(z)[logp(x,z)]Eq(z)[logq(z)]logp(x)=KL(q(z)|p(z|x))+\int q(z)logp(x,z)dz - \int q(z)log q(z)dz = KL + E_{q(z)}[logp(x,z)]-E_{q(z)}[logq(z)]
    • 최종적으로 logp(x)=KL+Evidence  Lower  Boundlogp(x) = KL + Evidence\;Lower\;Bound 인데, KL은 minimize 못하니까 ELBO를 minimize하게됨
    • L(q)=Eq(z)[logp(x,z)]Eq(z)[logq(z)]=Eq(z)[logp(xz)]KL(q(z)p(z))L(q)=E_{q(z)}[logp(x,z)]-E_{q(z)}[logq(z)] = E_{q(z)}[logp(x|z)]-KL(q(z)|p(z)), 여기서 L(q)L(q)은 ELBO를 의미하는 것이고, L(q)L(q)를 maximize해야 함:
      • 첫 항은 커야 하고, 뒤의 항은 entropy이므로 (복잡도가 클 때 큼: uniform이면 큼) 앞 항은 모아주고 뒤 항은 퍼뜨리는것
      • 첫 항은 likelihood를 maximize하는 것, 뒤의 항 KL은 낮아져야 (MAP의 관점(logp(xθ)×logp(θ)logp(x|\theta) \times logp(\theta), prior를 뒤에 곱해줌으로써 overfit되지 않게 퍼뜨역할)과 비슷)

VAE

  • xx에서 zz로 가는 encoder의 parameter ϕ\phi, p(zx)q(z)p(z|x) \approx q(z)라고 한다면, 모든 q(z)q(z)ϕ\phi에 bound됨, qϕ(z)q_{\phi}(z)이며, q 대신 ϕ\phi로 치환 가능
  • generative model에서 decoder는 θ\theta에 대해 표현 가능, 그 다음 qq를 x에 또한 bound 가능: q(zx)q(z|x)

Jenson's Inequality

  • if f(x)가 convex, f[E(x)]E[f(x)]f[E(x)] \leq E[f(x)], concave면 반대로

  • ELBO를 구해야 하므로 θ\thetaϕ\phi에 대한 del을 구해야 하는데 θ\theta dependent 한 항은 하나밖에 없으므로 간단

  • 그렇다면 ϕ\phi는?: qθ(zx)q_{\theta}(z|x) 가 들어가는데 이건 알 수 없어서 구하기가 까다로움

    • 해결책1: reparameterization trick
      • z=g(E)z=g(\Epsilon) where zqϕ(zx)z \sim q_{\phi}(z|x), q(E)p(E)q(\Epsilon) \sim p(\Epsilon)
      • $
profile
multidisciplinary

0개의 댓글