[논문 리뷰] Energy-Based Generative Adversarial Networks

2020. 11. 27. 19:52카테고리 없음

GAN을 에너지 기반 관점에서 바라보며, 이를 위해 GAN과 Auto-encoder를 결합한 네트워크 구조를 제안한다.

주어진 데이터에 대해서 data manifold 공간 상에 포함되는 경우에 낮은 energy, 그 외에는 경우인 contrastive sample에 높은 energy를 배정할 수 있는 "energy function" (또는 "contrast function")를 Auto-encoder 구조를 가진 Discriminator로 두어 adversarial training을 수행한다.

Network Architecture

Vanila GAN: Discriminator is classifier.
Energy Based GAN: Discriminator is Auto-Encoder.

  • 왜 Discriminator의 구조를 Auto-Encoder로 두어야하는가?

    • Energy is Reconstruction Loss: ||Dec(Enc(x)) -x||.

      • Real: Low reconstruction loss (low energy)
      • Fake: High reconstruction loss (high energy)
    • 주어진 데이터에 대해 Real/Fake를 구별하는 하나의 scalar 값을 내는 것보다 더 많은 정보를 통해 판별할 수 있다.

    • 복원 오차 기반의 방법은 discriminator에게 더 다양한 target을 제공한다.

    • Auto-encoder는 energy 기반 모델에서 고전적으로 사용 되었던 모델이기 때문에 자연스러운 모델 선정이다.

    • 특정 regularization 항과 함께 학습할 경우, 지도 학습 또는 negative sample이 없어도 target distribution 학습이 가능하다.

      • Binary logistic loss는 불가능한 방식
  • EBGAN

    • The regularizer (generator) is fully trainable
    • The adversarial training paradigm enables a direct interaction between the duality of producing contrastive sample and learning the energy sample

Connection to the regularized auto-encoders

  • Auto-Encoder가 identity 함수를 배우는 흔한 문제가 있음.
    • 모든 공간에 대해서 zero-energy를 할당하는 것과 동일
    • solution: "By regularizing the latent representions"

Loss Function: Reconstruction Loss + A Simple Hinge Loss

여기서 주목할 부분은 hinge loss로 정의된 max(0, m - D(G(z))) 이다. 어떤 양수 margin m에 대해서 reconstruction loss가 m보다 작은 경우에 대해서만 gradient를 갖는다.

The choice of value m

  • m being overly large: training instability/difficulty
  • m being too small: prone to the mode-dropping problem

Generator가 데이터 분포를 동일하게 만들 수 있다면, D()의 값이 0과 m 사이의 값을 갖는다.

semi-supervised learning에 적용할 때에는 m의 값을 점진적으로 낮추어 가는 방법이 성능 향상에 매우 효과적이었다. 고정된 margin보다 학습에 따라 margin을 작게 변화시키는 게 중요하다. 비슷하게 고정된 margin을 사용하지 않는다는 관점에서 EBGAN을 발전시키면서 제안된 논문이 아래 Margin Adaptation GAN (MAGAN)이다.

Repelling Regularizer

  • mode collapse를 방지 하기 위해 Pulling-away Term를 제안 (minibatch discrimination과 유사한 아이디어)
  • Generator의 loss term에 추가된 항
  • S는 Encoder의 출력 값으로 주어진 입력 데이터에 대한 중요한 특징 값만을 압축.
  • Euclidean distance가 아닌 Cosine similarity를 사용
    • to make the term bounded below
    • to make the term invariant to scale
    def pullaway_loss(self, embeddings):

        norm = torch.norm(embeddings, 1)
        normalized_embeddings = embeddings / norm
        similarity = torch.matmul(normalized_embeddings, normalized_embeddings.transpose(1, 0)) ** 2
        batch_size = embeddings.size()[0]
        pt_loss = (torch.sum(similarity) - batch_size) / (batch_size * (batch_size - 1))

        return pt_loss

Thoughts

  • hinge loss가 이상한 것 같다... -> Margin Adaptation GAN에서 dynamic margin을 제안.
  • Boundary Equilibrium GAN을 같이 보면 좋을 것 같다.