머신러닝/Vision

LSGAN

망나 2020. 8. 12. 22:20

Motivation

성공적인 GAN의 성능에도 불구하고 discriminator 학습 과정에서 "Gradient Vanishing" 문제가 발생하여 모델의 학습이 제대로 이루어지지 않는 현상이 발견 되었습니다.

 

discriminator에는 sigmoid cross-entropy loss 함수를 사용하는데 이는 discriminator가 입력으로 받은 샘플이 진짜일 확률을 출력한다는 것을 의미합니다. (진짜 -> 1 / 가짜 -> 0)

 

그런데 이 loss 함수를 사용하면 generator 학습시 vanishing gradient 현상이 발생하게 됩니다. 왜 이런 현상이 발생하는지 그림을 참조해서 설명하도록 하겠습니다.

위 그림에서 decision boundary를 기준으로 아래를 진짜, 위를 가짜로 판별할 때, 별표로 표시된 가짜 데이터를 진짜로 판별하는 것을 확인할 수 있습니다.

 

이 경우 generator는 이미 discriminator를 속이고 있기 때문에 별표로 표시된 가짜 샘플에 대한 feature들에 대해서는 학습을 할 필요가 없게 됩니다. 

여기서 vanishing gradient 현상이 발생하고 LSGAN은 이를 해결하기 위해 discriminator에 sigmoid cross entropy 대신 least square loss를 사용해서 decision boundary에서 먼 샘플에 penalty를 주어 generator가 학습할 수 있도록 하는 방법을 사용합니다.

 

 

Method

LSGAN의 목적 함수는 다음과 같이 정의 됩니다.

\(a\)는 가짜 이미지의 target discriminator label, \(b\)는 진짜 이미지의 target discriminator lable 그리고 \(c\)는 가짜 이미지에 대한 target generator label을 뜻합니다.

여기서, 생성 이미지에 대한 데이터 분포가 \(pg\)가 실제 이미지에 대한 데이터 분포 \(pr\)로 수렴하려면 \(a\), \(b\), \(c\)은 어떤 값이 되야할지 알아야 합니다.

 

아래와 같이 generator를 일부 수정하면, (\(D(x) - c\)는 \(G\)와 관련이 없기 때문에 수식에 대한 optimal point는 변함이 없습니다.)

\(G\)를 고정했을 때의 optimal discriminator는 아래와 같습니다.

 

 

\(a\), \(b\), \(c\) 값을 다음과 같은 조건으로 설정하면 다음과 같이 Pearson \({\chi }^{2}\) divergence를 최소화하는 것과 같아 진다고 합니다. 

 

 

여기서 중요한 것은, \(pg\)와 \(pd\)가 다르면 gradient vanishing은 발생하지 않고 따라서 \(pg\)는 \(pd\)에 수렴하게 된다는 것 입니다. 

 

 

Experiment

실험 결과를 보면 기존의 GAN에 비해 훨씬 질 좋은(선명하고 진짜 같은) 이미지를 생성한 것을 확인할 수 있습니다.

'머신러닝 > Vision' 카테고리의 다른 글

DCGAN  (0) 2020.08.18
Generative Adversarial Networks?  (0) 2020.08.12
About GAN  (0) 2020.08.12
The Lottery Ticket Hypothesis  (4) 2019.06.24
ResNet 이해하기  (0) 2019.06.04