z EBGAN : ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS
본문 바로가기

Generative Model

EBGAN : ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS

728x90

최근 다시 생성 모델 관련한 최신 논문 리딩을 하려고 여러 논문을 찾아보는 도중에 NCSN과 같은 Energy를 기반으로 한 모델이 많이 있다는 사실을 알게 됐습니다.

 

Energy라는 말을 NCSN 할 때 잠깐 접한게 전부라서 저에게는 관련 논문들을 읽는데 어려움이 많이 있었습니다.

이러한 이유로 GAN에서 처음으로 Energy 라는 개념을 사용한 EBGAN부터 공부해서 정리하려고 합니다. ㅎㅎ,,

 

Introduction

본 논문에서 제시하는 바는 Discriminator를 일종의 Energy Function으로 보자는 것입니다.

 

여기에서 Energy Function이란, 데이터를 받았을 때 해당 데이터가 Data Manifold에 가까우면 낮은 값을 내놓고 Data Manifold에서 멀다면 높은 값을 내놓는 함수를 의미합니다. 여기에서 내놓는 값을 Energy 라고 합니다.

 

이와 같은 Energy Function 역할을 하는 Discriminator를 구성하기 위해 MSE Loss 를 내놓는 Auto Encoder 구조를 제안합니다. (real data에 가까우면 낮은 MSE 를 내놓음. -> reconstruction을 잘하는!)

 

EBGAN Model

Objective Functional

Discriminator의 output은 Data Manifold에 가까울수록 작은 값을 내놓는 Energy 값 입니다.

그래서 Discriminator를 훈련시킬때 Fake Data에 대해서는 높은 값을 내놓도록하고 Real Data에 대해서는 작은 값을 내놓도록 학습시켜야합니다.

 

이런 Energy 기반 모델의 loss로 margin loss를 제안합니다.

Energy 기반 모델은 르쿤교수님이 제안하셨던걸로 아는데, 이런 margin loss는 다양한 loss 중 하나일 뿐이라고 합니다.

 

위 loss에서의 특이점은 fake에 대해 energy가 일정 이상 크면 학습을 하지 않는 것입니다. (margin loss..)

 

Optimality of the solution

논문에서 이 부분은 Vanila GAN 논문에서 제시한 것과 같이 이러한 방법이 Nash Equilibrium으로 이끈다는 것을 증명합니다.

 

식은 논문에 나와있으니 스킵하겠슴당

 

Using Auto-Encoders

 

앞서 말씀드렸듯이, Discriminator가 Energy Function의 역할을 하게 하기 위해서 Auto Encoder 형식과 MSE Loss를 output으로 내놓는 Architecture를 제안합니다. MSE Loss를 Energy로 생각하시면 됩니다.

 

최근엔 FAST GAN이나 PatchGAN과 같이 Discriminator의 output이 단일 값이 아닌 경우가 존재하긴 합니다만, 예전의 GAN 구조에서는 단일 값을 내놓는 형식이 흔한 구조였습니다.

 

당시 상황에서 단일 값 (0 or 1)을 내놓는 standard GAN과는 달리 모든 pixel을 비교하는 reconstruction based output은 다양한 direction의 gradient를 내놓을 수 있어서 더 큰 batch size를 사용할 수 있었다고 하네용

 

Connection to the Regularized Auto-Encoders

Auto Encoder 훈련의 공통된 issue는 모든 space에 energy 값을 0으로 내놔버리는, 즉 완전 indentity function처럼 완전히 reconstruction 해버리는 문제가 있습니다.

이러한 문제를 피하기 위해서 Data Manifold 바깥 부분에는 높은 energy를 할당할 필요가 있습니다.

 

근데 저희는 GAN framework라서 Data Manifold 바깥 부분, 즉 fake data에 대해 높은 energy를 갖도록 훈련하게 됩니다.

즉, Generator를 일종의 regularization로 보는겁니다.

 

Repelling Regularizer

본 논문에서는 Auto Encoder에 잘 어울리는 "Repelling Regularizer"를 제안합니다. 

"purposely keeping the model from producing samples that are clustered in one or only few modes of pdata."

mode collapse 를 방지하기 위함인 것 같네요.

사견입니다만, Auto Encoder는 Reconstruction 하는 모델이라서 좀 더 mode collapse에 취약하지 않을까 싶네요

 

이 PT Term은 Generator 훈련시에만 적용합니다.

 

위의 식을 좀 살펴보면 두 vector 각의 cosine임을 알 수 있습니다. 즉, 각도가 서로 직각이 되게 만드는거죠.

이를 통해 주어진 입력 데이터에 대해 중요함 특징 값만 압축해서 들어가게 할 수 있다고 합니다.

 

 

이건 곰곰히 생각해보면 유효하다는 것을 알 수 있습니다.

 

Discriminator가 너무 압도적으로 훈련하게 되면 Generator는 Energy based model에서 Regularizer의 역할을 제대로 하지 못하게 됩니다. 그러면 이상적인 훈련을 하지 못하게 됩니다.

그렇기 때문에 Generator가 좀 더 효율적으로 훈련 할 필요가 있습니다. 이를 도와주는 역할이 아닐까 싶네요..

 

 

 

 

728x90