cs
[GAN] mode collapse
DL·ML

[GAN] mode collapse

 

Introduction

mode collapse는 generator가 several different input $z$를 same output point로 mapping하는 문제를 의미한다. 지금 내가 하고 있는 프로젝트에서 generator에 gaussian distribution(0,1)을 따르는 $z$를 넣었을 때 variance가 큰 결과값이 나오길 기대했다. 하지만 실제로 얻은 것은 다음과 같다.

 

Figure 1. generated image 간 variance가 거의 없다.

목표했던 퀄리티의 image를 얻을 수 없기도 했지만, Figure 1에서 볼 수 있는 것처럼 거의 비슷한 이미지가 나온다. 학습 과정에서 사용한 gaussian distribution은 mean = 0에 std = 0.02를 사용하니까, 이 generated image에서는 $N(0,1)$을 사용하므로 훨씬 variance가 큰 image를 얻기를 기대했지만 그렇지 않았다. 노파심에 내가 latent vector $z$를 잘못 만들었나도 출력해서 확인해 보았지만, $z$는 정상이었다. 

 

아울러, G와 D의 loss graph에서도 상당한 oscillation이 보였고, 정성적으로나 정량적으로나 거의 converge하지 않았다.

Figure 2. blue line이 G_loss, red line이 D_loss

이처럼 mode collapse는 sample of generated images를 review하는 과정에서 발견할 수 있는데, low diversity with the same identical image으로 확인할 수 있다. 또한 model loss에서 oscillation을 보여주는데, generator model이 한 mode에서 다른 mode로 jump하기 때문에 loss가 계속 바뀔 수 있다. 

 

Mode Collapse

Mode collapse는 the Helvetica scenarios라고도 불리는데, generator가 여러 input $\vec z$를 같은 output point로 mapping하는 문제를 의미한다. 완전히 같은 한 점으로 mapping하는 complete mode collapse는 드물고, partial mode collapse가 주로 나타난다. parital mode collapse는 같은 color나 texture를 가진 image만 generate하는 것을 의미한다. 

위 Figure 24를 보면 text에서 generated된 image의 pose와 색이 거의 일치하면서 low output diversity를 보여주고 있다. 내가 얻었던 결과와 유사하다.

Figure 22에서 좀 더 직관적으로 확인할 수 있다. real data $p_{data}$는 간격이 있는 8개의 점으로 이루어져 있다. 아래는 GAN이 학습한 결과인데, 전체 distribution을 학습하는 것이 아니라 여러 점을 옮겨가며 generate하고 있다. 

 

원인

그럼 mode collapse는 왜 발생할까? Ian Goodfellow(2016)은 다음과 같이 설명한다. 

 

mode collapse는 GAN game이 minimax solution이 아니라 maximin solution을 찾을 때 발생한다. 이 말인 즉, GAN은 다음 모델의 결과값을 찾는데, 

$$ G^* = \min_G \max_D V(G,D) $$

이 min과 max의 위치가 바뀔 경우, 즉, 

$$ G^* = \max_D \min_G V(G,D) $$

인 경우 문제가 발생한다. generator의 minimization이 D의 inner loop로 들어가기 때문에, D가 가장 real이라고 생각하는 하나의 점 x로 G가 모든 z를 매핑시킨다.

 

따라서 이런 문제가 발생하는데, 같은 알고리즘을 사용해도 어떤 경우에는 minimax game이 되고 어떤 경우는 maximin game이 되어서, 실제로 어떤 것이 previlege할 지는 알 수 없다. 이는 GAN을 small number of distinct ouput을 가질 수 있는 distribution으로 제한시킨다.

 

해결

Ian Goodfellow(2016)은 두 가지 해결법을 제시한다. 

 minibatch features (Salimans et al., 2016)

minibatch features은 discriminator가 example을 generated sample, real sample의 minibatch와 비교하도록 하는 방법이다. latent space 안의 다른 sample들과의 distance를 비교함으로써, discriminator는 한 sample이 다른 sample들과 유사도가 비정상적으로 높은지 평가할 수 있다. 

 

minibatch GANs는 mode collapse를 잘 해결하는 것으로 알려져 있다. 다만, 새로운 문제를 야기하는데, 

 

1. 객체의 수를 잘못 세거나 (counting)

2. 객체의 차원을 잘못 이해하거나 (perspective)

3. 객체 내의 구조를 잘못 배치하거나 (global structure)

 

에서의 문제가 있다. 이는 아래 사진을 보면 이해할 수 있다. 

Figure 29는 counting에서의 문제를 보여준다. generated image에서 동물들의 신체 기관의 개수가 맞지 않는다. 

 

Figure 30은 perspective에서의 문제를 보여준다. 동물들이 너무 낮은 차원에 그려져 있거나 너무 높은 차원에서 그려져 있어서 이상하게 보인다. 

Figure 31은 global structure에서의 문제를 보여준다. generated images 안의 동물들의 신체 기관의 위치가 잘못 그려져 있어서 부자연스럽게 보인다.

 

이러한 문제들은 architecture의 수정을 통해 해결할 수 있다.

 

unrolled GANs(Metz et al., 2016)

GAN에서 문제가 발생하는 이유는, 원래 minimax game에서는 둘의 gradient가 동시에 계산되어야 하지만 구현 상의 이유로 generator가 학습할 때에는 discriminator가 학습하지 않고, 그 반대의 경우도 성립한다는 것이다. 원래는 $\max_D V(G,D)$가 generator의 cost function으로 동작해야 한다. 따라서 unrolled GAN은 computational graph를 D에 만들어서 G가 gradient를 계산할 때, D도 함께 backpropagation한다는 개념이다. 

 

Metz et al.(2016)은 이러한 방법이 더 적은 수의 step으로도 mode dropping problem을 확실히 감소시킬 수 있음을 보여주었다.

Figure 32는 unrolled GAN이 two-dimensional space의 Gaussian distribution을 학습하는 것을 보여준다. 

 

References

[1] Goodfellow, I. (2016). Nips 2016 tutorial: Generative adversarial networks. arXiv preprint arXiv:1701.00160.

[2] Brownlee, J. (2021, January 20). How to identify and diagnose gan failure modes. MachineLearningMastery.com. Retrieved January 10, 2023, from https://machinelearningmastery.com/practical-guide-to-gan-failure-modes/

Footnotes