300x250

 

목차

     

     

    논문을 읽을 때 자주 등장하는 기초 개념 중, 이번 글에서는 reconstruction loss와 Kullback-Leibler divergence loss에 대해 알아보려 한다.

     

     

     

    Kullback-Leibler Divergence Loss \(\mathcal{L}_{KL}\)

     

    간단히 소개하자면, KL divergence loss는 두 분포가 서로 가까운지를 측정하는 개념이다. Mean Squared Error (MSE) loss는 실제 값과 예측 값 사이의 거리를 loss로 계산한 것이라면, KL divergence loss는 두 분포의 거리를 loss로 나타낸 개념이라고 생각하면 된다.

    당연히 값이 낮을수록 두 분포는 비슷한 분포이다.

     

     

    Kullback-Leibler Divergence

     

    주어진 random variable \(X\)가 probability density function (p.d.f.) 혹은 probability mass function (p.m.f.) \(p(x)\)를 갖는 확률 분포 \(P\)를 따를 때, \(q(x)\)를 갖는 다른 확률 분포 \(Q\)로 \(P\)를 추정한다고 해보자. (통계적으로 \(P\)는 posterior distribution, \(Q\)는 prior distribution이다.)

    이때 \(P\)와 \(Q\) 사이의 KL divergence는 아래와 같이 정의한다. (relative entropy의 개념이다.)

    \( D_{KL} (P \Vert Q) = \mathbb{E}_{x \sim P} \left[ \log \cfrac{p(x)}{q(x)} \right] = \sum\limits_{x \in X} p(x) \log \cfrac{p(x)}{q(x)}   \)

     

    KL divergence는 아래와 같은 특징이 있다.

    • \(D_{KL} (P \Vert Q) \neq D_{KL} (Q \Vert P) \) : 교환 법칙이 성립하지 않는다.
    • \(D_{KL} (P \Vert Q) \geq 0 \) : 항상 0 이상의 값을 갖는다. (위에서 말했듯이, 거리 개념이기 때문이다.)

     

    논문에서도 위 표현대로 두 분포 \(\mathcal{A}, \mathcal{B}\)에 대한 KL divergence loss를 설정한다고 하면, \(\mathcal{L}_{KL} = D_{KL} (\mathcal{A} \Vert \mathcal{B})\)와 같이 표현한다.

     

     

     

     

     

    Loss Function of VAE

     

    VAE에서의 loss를 reconstruction loss와 KL divergence를 통해 알아보자.

     

     

     

    Reconstruction Loss

     

    Fig 1. Reconstruction Loss

     

    Reconstruction loss란, (Variational) Auto-Encoder(AE)에서 input과 최종 생성된 output 사이의 차이를 말한다.

    Autoencoder는 encoder와 decoder로 이루어지며, encoder는 input의 feature(latent variable \(z\))를 뽑는 역할을 하고, decoder는 feature(latent variable \(z\))로부터 다시 input과 비슷한 형태의 결과물을 reconstruction하는 역할을 한다.

     

    Decoder는 수학적으로 다음과 같이 encoder가 만든 \(z\)의 평균과 분산을 모수로 하는 정규분포를 따른다.

    \( p_\theta(x | z) = \mathcal{N}(x | f_\mu (z), f_\sigma (z)^2 \times I) \)
    • \(\theta\) : VAE 모델의 parameter

    Maximum (log)Likelihood Estimation(MLE)를 통해 VAE의 파라미터를 추정하기 위해서는 다음과 같은 marginal log-likelihood \(\log p(x)\)를 최대화하면 된다.

    \( \log p_\theta (x) = \log \sum\limits_{z} p_\theta (x | f_\mu (z), f_\sigma (z)^2 \times I ) p_\theta (z) \)

    하지만, latent variable \(z\)는 무수히 많은 경우가 있을 수 있어서 위 식으로는 최적화하기가 힘들다. 따라서 variational inference(변분 추론)를 사용하여 계산이 어려운 확률 분포 \(p(x)\)를 다루기 쉬운 확률 분포 \(q(z)\)로 근사화한다.

    베이즈 정리를 적용해보자.

    \( p_\theta(z|x) = \cfrac{p_\theta (x|z) p_\theta (z)}{p_\theta(x)}\)

    베이즈 정리의 evidence term인 \(p_\theta(x)\)에 KL divergence를 적용하기 위해 Evidence of Lower Bound (ELBO)를 활용할 수 있다.

    \( \begin{align*} \log p_\theta (x) &= \mathbb{E}_{z \sim q_\phi (z | x)} \left[ \log p_\theta (x) \right] \\ &= \mathbb{E}_z \left[ \log \cfrac{p_\theta (x|z) p_\theta (z)}{p_\theta (z | x)} \right] \quad \quad \text{Baye's Rule} \\ &= \mathbb{E}_z \left[ \log \cfrac{p_\theta (x | z) p_\theta (z)}{p_\theta (z | x)} \cfrac{q_\phi (z | x)}{q_\phi z | x} \right] \\ &= \mathbb{E}_z \left[ \log p_\theta(x | z) \right] - \mathbb{E}_z \left[ \log \cfrac{q_\phi (z | x)}{p_\theta(z)} \right] + \mathbb{E}_z \left[ \log \cfrac{q_\phi(z | x)}{p_\theta (z | x)} \right] \end{align*} \)

    여기서, KL divergence \( D_{KL}(P \Vert Q) = \sum\limits_{x \in \mathcal{X}} P(x) \log \left(\cfrac{P(x)}{Q(x)}\right) \)를 적용하면,

    \( \begin{align*} \log p_\theta (x) &= \mathbb{E}_z \left[ \log p_\theta(x | z) \right] - \mathbb{E}_z \left[ \log \cfrac{q_\phi (z | x)}{p_\theta(z)} \right] + \mathbb{E}_z \left[ \log \cfrac{q_\phi(z | x)}{p_\theta (z | x)} \right] \\ &= \mathbb{E}_z \left[ \log p_\theta(x | z) \right] - D_{KL} \left( q_\phi (z | x) \Vert p_\theta(z) \right) + D_{KL} \left( q_\phi (z | x) \Vert p_\theta(z | x) \right) \\ & \geq \mathbb{E}_z \left[ \log p_\theta(x|z) \right] - D_{KL}(q_\phi(z|x) \Vert p_\theta(z)) \quad \quad \text{Lower Bound} \end{align*} \)
    • \(\mathbb{E}_z \left[ \log p_\theta(x|z) \right] \) : Sampling trick (reparameterization trick) 사용하여 추정한다.
      • 이 term이 바로 input \(x\)와 reconstructed output \(\hat{x}\)의 차이를 뜻하는 reconstruction loss이다.
    • \(D_{KL}(q_\phi (z | x) \Vert p_\theta(z)) \) : KL divergence term의 posterior인 \(q_\phi(z|x)\)가 Gaussian 분포를 따르면 closed-form solution을 갖는다.
    • \(D_{KL}(q_\phi(z|x) \Vert p_\theta(z|x) \) : 여전히 계산이 어렵지만, KL divergence term이므로 항상 0보다 크다.

    최종 식을 보면, evidence를 likelihood와 posterior로 표현했음을 알 수 있다.

     

     

     

    Loss function of VAE

     

    Fig 2. Variational Auto-Encoder Pipeline

     

    VAE의 학습 과정을 다시 살펴보자. Encoder는 input \(x\)를 받아 \(z\)의 평균과 분산을 만들어내는 nerual network \(f_\mu, f_\sigma\)를 통해 평균과 분산을 구하고, 둘을 더하고 곱하여 latent vector \(z\)를 만든다. 이때 \(z\)를 직접 샘플링하는 게 아니라, 노이즈를 샘플링하는데, 이 방법을 reparameterization trick이라 한다. (= posterior distribution \(q_\phi(z|x)\)를 근사한다.)

    \( z = \mu(x) + \sigma(x) \times \epsilon, \quad \quad \epsilon \sim \mathcal{N}(0, 1)\)

    VAE 모델은 위에서 언급했던 \(\log p(x)\)를 최대화(=lower bound를 최대화)한다. 따라서 loss function은 부등식의 우변에 negative를 취하여 다음 과 같이 정의한다.

    \( \mathcal{L} = -\mathbb{E}_z \left[ \log p_\theta(x|z) \right] + D_{KL}(q_\phi(z|x) \Vert p_\theta(z)) \)

     

     

     

     

     

    GAN Loss (= min-max GAN loss)

     

    GAN은 실제와 구별이 불가능하도록 가짜 데이터를 생성하는 generator와 실제와 가짜를 구분하는 discriminator가 서로 경쟁하며 학습하는 모델이다.

    Loss function의 수식부터 살펴보자.

    \( \underset{G}{\min} \underset{D}{\max} V(D,G) = \mathbb{E}_x \left[ \log \left( D(x) \right) \right] + \mathbb{E}_z \left[ \log \left( 1 - D(G(z)) \right) \right] \)
    • \( \mathbb{E}_x \left[ \log \left( D(x) \right) \right] \) : real data \(x\)를 discriminator \(D\)에 입력했을 때 나오는 결과 관련 term
    • \( \mathbb{E}_z \left[ \log \left( 1 - D(G(z)) \right) \right] \) : fake data \(z\)를 generator \(G\)에 입력했을 때 나오는 결과를 discriminator \(D\)에 넣었을 때 나오는 결과 관련 term

     

    Discriminator와 generator 입장에서 각자 이상적인 경우를 생각해보며 loss function을 이해해보자.

     

    Discriminator \(D\)는 loss function을 0으로 만드려고 한다. (maximize)

    이상적인 경우, 실제 데이터에 대해서 \(D(x) = 1\)의 결과를 보일 것이고, 이 경우 첫 번째 항이 \(\log(1) = 0\)이 된다.

    마찬가지로 이상적인 경우, 가짜 데이터에 대해서는 \(D(G(z)) = 0\)의 결과를 보일 것이고, 두 번째 항이 \(\log(1-0) = 0\)이 된다.

     

    Generator \(G\)는 loss function을 \(-\infty\)로 만드려고 한다. (minimize) Loss function의 두 번째 항에만 관여한다.

    이상적인 경우, \(D(G(z)) = 1\)이 되고, 두 번째 항이 \(\log(1-1) = -\infty\)가 된다.

     

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기