Why use Binary Cross Entropy for Generator in Adversarial Networks

I'm trying to work with General Adversarial Networks and there's something I'm seeing everywhere but can't explain why... the GANs are usually constructed from a Generator (which usually generates...

stats.stackexchange.com

해당 글 내용 번역

 

왜 Generator에서 BCE loss를 사용할까

판별기의 손실 함수는 이미지의 진짜, 가짜 여부를 확인하기 위해 BCE를 사용하는 것은 이해할 수 있지만 생성기에서 BCE를 사용하는 이유는 무엇인가? 


생성기가 이미지를 생성하는 것이라면 MSE 또는 MAE 손실을 사용하는 것이 더 적절하지 않을까? 그리고 생성기에 BCE 이외의 손실 함수를 사용하면 정확히 어떻게 되나?

 

 

답변 1

첫 번째는 생성기에 대한 BCE에 목적은 "생성기의 이미지의 출력이 판별기에 의해 높은 확률로 할당되야 한다는 것이다."로 더 정확히 기술할 수 있다. Binary reconstruction loss에서 보았을 수 있던 $BCE(G(Z),X)$에서 $G(Z)$가 생성된 이미지이며 $X$가 샘플인 경우의 BCE가 아니라, $D(G(Z))가 판별기에 의해 생성된 이미지에 할당한 확률인 BCE(D(G(Z), 1)이다. 항상 사실적인 출력을 내는 "완벽한" 생성기가 있다면, $D(G(Z))$의 값은 항상 1에 가까워야 한다. 물론 실제로는 이런 종류의 수렴을 얻는 데 어려움이 있지만 (훈련은 본질적으로 불안정하다), 이것이 목표이다.

 

두 번째는 표준 GAN 알고리즘에서 latent vector (생성기가 입력으로 받아 이미지로 변환해야하는 "랜덤 노이즈") 는 훈련 데이터와 독립적으로 샘플링된다. GAN의 출력과 단일 이미지 사이에 MSE를 사용하면 어떤 종류의 결과를 얻을 수는 있지만, 이는 사실상 랜덤 z가 주어지면, 특정한 x를 생성하라고 말하는 것과 같으며, 암묵적으로 생성기가 무의미한 임베딩을 학습하도록 암묵적으로 강요하는 것과 같다.

 

z벡터를 이미지에 대한 개략적인 설명이라고 하면, 개를 3번 보여준 다음 개에 대한 서로 다른(그리고 서로 연관성이 없는) 세 가지 설명이 주어지면 동일한 개를 생성하라고 요청하는 것과 같다. 이를 명시적 추론 메커니즘(이미지 샘플이 주어지면 VAE의 인코더 네트워크가 $Z$값을 추론)을 가진 VAE와 비교하면, 추론된 Z를 사용해 주어진 이미지를 재구성하려 시도하는 것과 비슷하다. GAN은 이미지 reconstruction을 시도하지 않으므로 원본 형태에서는 그 출력을 MSE 또는 MAE를 사용하여 샘플 세트와 비교하는 것이 합리적이지 않다.

 

최근에 유사성 메트릭을 GAN의 트레이닝에 통합하는 작업이 몇 가지 이루어졌는데, 이 오픈 AI 논문에서는 MSE 목적 함수를 판별기 마지막 FC layer의 G(Z)와 X사이에 추가하는 것을 제안했는데, 이는 반지도 학습에는 매우 효과적이지만 샘플 풀질을 실제로 개선하지는 못하는 것으로 보인다.

 

또한 VAE와 GAN을 함께 놓을 수 있으며 VAE의 추론 메커니즘을 사용하여 GAN의 생성기에 guidance를 제공함으로 reconstruction을 위해 pixel-wise 비교를 하는 것이 합리적일 수 있다.

 

 

답변3

손실 함수를 최소화해야하는 일반적인 분류 문제와 달리 GAN은 판별자(D)와 생성자(G) 사이의 게임이다. 그냥 게임이기 때문에 두플레이어는 같은 공을 두고 싸워야 한다. 그렇기 때문에 'loss'라는 용어 대신 'objective'라는 용어를 사용하여 D와 G의출력을 모두 최적화하는 데 사용한다.

 

판별기와 제너레이더 모두 Cross Entropy with Logits (CEWL)을 사용하는 GAN의 일반적인 텐서 흐름 구현은 GAN 논문의 방정식과 완전히 일치하지 않는다. 그러나 CEWL을 사용하면 원본 논문의 방정식을 적용하는 것보다 더 나은 결과를 얻을 수 있다.

 

다음 식이 CEWL 구현을 위한 기본 방정식이다.

 

 

참조

https://neptune.ai/blog/gan-loss-functions / GAN의 Discriminator, Generator loss 정리

https://stats.stackexchange.com/questions/242907/why-use-binary-cross-entropy-for-generator-in-adversarial-networks

https://deep-learning-study.tistory.com/641