Machine Learning, Deep Learning

VEEGAN: Reducing Mode Collapse in GANs using Implicit Variational Learning

n.han 2022. 6. 3. 21:05

Srivastava, Akash, et al. "Veegan: Reducing mode collapse in gans using implicit variational learning." Advances in neural information processing systems 30 (2017).

Generative model이 데이터 분포의 특정 class들만을 생성하게 되는 것을 mode collapse라고 합니다. GAN이 생성하는 데이터 품질이 뛰어나지만, 종종 mode collapse 됩니다.

이 문제를 해결하기 위하여 VEEGAN 을 제안합니다. VEEGAN의 핵심은 reconstructor network 입니다. Generator는 Gaussian random noise를 입력하면 image를 출력합니다. Reconstructor network는 다음 두 성질을 만족하도록 학습됩니다: 1) reconstructor network는 Generator와 반대로 동작합니다. 2) true data를 입력하면 Gaussian random noise를 출력합니다. 이 reconstructor network를 활용하여 Generator가 생성한 이미지들이 mode collapse 되었는지 판단할 수 있습니다.

Generator가 mode collapse 되었다고  가정하고, 각 성질이 mode collapse를 감지하는데 어떻게 도움을 주는지 이해해보겠습니다.
1) Reconstructor 는 Generator와 반대로 동작하므로, mode collapse된 이미지들을 입력으로 받아 최대한 Gaussian distribution을 닮은 데이터들을 출력하려고 합니다. 따라서 Generator가 생성한 이미지가 아닌 실제 이미지를 Reconsturctor 에 입력하게 되면 Gaussian distribution이 아닌 데이터가 출력되게 됩니다. Figure 1.(a) 는 이러한 과정을 설명하는 그림입니다. 아래에서 위로 세 차트를 이해하시면 됩니다.
가장 아래 이미지에서 중간 이미지에 대한 설명: 먼저, Gaussian random noise p_o(z)에서 데이터가 샘플링되어 Generator인 G로 입력되면 이미지가 출력됩니다. Generator가 출력한 이미지를 mixture of two gaussian을 가정(설명을 위해 가정하는 것입니다)한 p(x)로 상에서 표현한 것이 초록색 선입니다. Mode collapse되어 있으므로, mixture of two gaussian이 true data space임에도 하나의 gaussian 에 초록색 선들이 몰려 있음을확인할 수 있습니다.
중간 이미지에서 가장 위 이미지에 대한 설명: p(x)에서 reconsturctor 인 F로 입력하고, 출력되는 것을 표현한 그림입니다. Reconstructor는 generator와 반대로 동작되도록 학습하였으므로, mode collapse된 이미지들을 받았을 때 Gaussian distribution을 따르는 데이터들을 출력합니다(초록색 선). 이때 실제 이미지들을 reconstructor에 입력하게 되면 Gaussian distribution을 따르지 않는 데이터들을 출력하게 되고, 이를 통해 mode collapse를 감지할 수 있습니다(보라색 선).

2) True data를 입력했을 때 Gaussian distribution이 출력되도록 reconstructor가 학습된 경우 mode collapse된 generator로부터 생성한 이미지들을 reconstructor에 넣게 되면(초록색 선), trud data 를 넣은 경우(보라색 선)와 다른 distribution이 생성됩니다. Figure 1.(b)가 이를 설명하는 그림인데, (a)를 이해하면 쉽게 이해가 되므로 자세한 설명은 생략하겠습니다.

Reconstructor를 generator의 반대로 만들기 위해 Gaussian distribution을 따르는 z와 z를 F(G(z)) (z~p_0, F: reconstructor, G: generator) 간 l2 loss를 계산합니다. 또 reconstructor를 true data 를 넣었을 때 Gaussian distribution을 따르게 하기 위하여 z와 F(X) (X: true data) 간 cross entropy를 계산합니다:

실제로는 위 loss를 직접 계산하기 쉽지 않기 때문에, VAE처럼 계산하는 한 형태로 loss를 변형합니다. 이에 대한 내용은 논문 appendix에 설명이 되어 있습니다.

참고

1. https://akashgit.github.io/VEEGAN/

 

VEEGAN | VEEGAN by akashgit

Update: @xukai92’s Julia Implementation can be found here. Reconstructing The Latent Code Is Not Enough To Avoid Mode Collapsing Learning In Implicit Models Deep generative models that do not induce a density function that can be tractably computed, but

akashgit.github.io