손실 함수

GAN은 확률 분포를 복제하려고 합니다. 따라서 GAN에서 생성된 데이터의 분포와 실제 데이터의 분포 간의 거리를 반영하는 손실 함수를 사용해야 합니다.

GAN 손실 함수에서 두 분포 간의 차이를 포착하려면 어떻게 해야 하나요? 이 문제는 현재 활발히 연구 중이며 다양한 접근 방식이 제안되었습니다. 여기에서는 두 가지 일반적인 GAN 손실 함수를 다룹니다. 두 함수 모두 TF-GAN에서 구현됩니다.

  • minimax 손실: GAN을 소개한 논문에 사용된 손실 함수입니다.
  • Wasserstein 손실: TF-GAN 추정기의 기본 손실 함수입니다. 2017년 논문에서 처음 설명되었습니다.

TF-GAN은 다른 많은 손실 함수도 구현합니다.

손실 함수 하나와 두 개 중 어느 것이 더 좋을까요?

GAN에는 생성자 학습용 손실 함수와 구분자 학습용 손실 함수의 두 가지 손실 함수가 있을 수 있습니다. 두 손실 함수가 함께 작동하여 확률 분포 간의 거리 측정을 반영하려면 어떻게 해야 하나요?

여기서 살펴볼 손실 스킴에서 생성자 손실과 판별자 손실은 확률 분포 간의 단일 거리 측정치에서 파생됩니다. 그러나 이 두 가지 스킴 모두에서 생성기는 거리 측정의 한 항목, 즉 가짜 데이터의 분포를 반영하는 항목에만 영향을 줄 수 있습니다. 따라서 생성기 학습 중에 실제 데이터의 분포를 반영하는 다른 항을 삭제합니다.

생성자 손실과 판별자 손실은 단일 수식에서 파생되지만 최종적으로는 다르게 보입니다.

Minimax 손실

GAN을 소개한 논문에서 생성기는 다음 함수를 최소화하려고 하고 판별기는 최대화하려고 합니다.

Ex[log(D(x))]+Ez[log(1D(G(z)))]

이 함수에서

  • D(x)는 실제 데이터 인스턴스 x가 실제일 확률에 대한 판별자의 추정치입니다.
  • Ex는 모든 실제 데이터 인스턴스에 대한 기대값입니다.
  • G(z)는 노이즈 z가 주어질 때 생성기의 출력입니다.
  • D(G(z))는 가짜 인스턴스가 실제일 확률에 대한 판별자의 추정치입니다.
  • Ez는 생성기에 대한 모든 무작위 입력에 대한 예상 값입니다(실제로는 생성된 모든 가짜 인스턴스 G(z)에 대한 예상 값).
  • 이 수식은 실제 분포와 생성된 분포 간의 교차 엔트로피에서 파생됩니다.

생성기는 함수의 log(D(x)) 항에 직접 영향을 줄 수 없으므로 생성기의 경우 손실을 최소화하는 것이 log(1 - D(G(z)))를 최소화하는 것과 같습니다.

TF-GAN에서 이 손실 함수의 구현은 minimax_discriminator_loss 및 minimax_generator_loss를 참고하세요.

수정된 Minimax 손실

원래 GAN 논문에서는 위의 minimax 손실 함수로 인해 판별자의 작업이 매우 쉬운 경우 GAN이 GAN 학습의 초기 단계에서 중단될 수 있다고 지적합니다. 따라서 이 논문에서는 생성자가 log D(G(z))를 최대화하도록 생성기 손실을 수정하라고 제안합니다.

TF-GAN에서 이 수정의 구현은 modified_generator_loss를 참고하세요.

Wasserstein 손실

기본적으로 TF-GAN은 Wasserstein 손실을 사용합니다.

이 손실 함수는 판별자가 실제로 인스턴스를 분류하지 않는 GAN 스키마('Wasserstein GAN' 또는 'WGAN'이라고 함)의 수정에 따라 달라집니다. 각 인스턴스에 대해 숫자를 출력합니다. 이 숫자는 1보다 작거나 0보다 클 필요가 없으므로 인스턴스가 진짜인지 가짜인지 결정하는 기준으로 0.5를 사용할 수 없습니다. 분류자 학습은 가짜 인스턴스보다 실제 인스턴스의 출력을 더 크게 만들려고 시도합니다.

실제와 가짜를 실제로 구분할 수 없으므로 WGAN 분류자는 실제로 '분류자' 대신 '비평가'라고 합니다. 이 구분은 이론적으로 중요하지만 실용적인 목적으로는 손실 함수의 입력이 확률일 필요가 없다는 확인으로 간주할 수 있습니다.

손실 함수 자체는 매우 간단합니다.

비평가 손실: D(x) - D(G(z))

판별자는 이 함수를 최대화하려고 합니다. 즉, 실제 인스턴스의 출력과 가짜 인스턴스의 출력 간의 차이를 극대화하려고 합니다.

Generator Loss: D(G(z))

생성기는 이 함수를 최대화하려고 시도합니다. 즉, 가짜 인스턴스에 대해 판별자의 출력을 최대화하려고 합니다.

이러한 함수에서:

  • D(x)는 실제 인스턴스에 대한 비평가의 출력입니다.
  • G(z)는 노이즈 z가 주어질 때 생성기의 출력입니다.
  • D(G(z))은 가짜 인스턴스에 대한 비평가의 출력입니다.
  • 비평가 D의 출력은 1과 0 사이여야 하지 않습니다.
  • 이 수식은 실제 분포와 생성된 분포 간의 이동 거리에서 파생됩니다.

TF-GAN의 구현은 wasserstein_generator_loss 및 wasserstein_discriminator_loss를 참고하세요.

요구사항

Wasserstein GAN (WGAN)의 이론적 근거에 따르면 GAN 전체의 가중치가 제약된 범위 내에 있도록 클립되어야 합니다.

이점

Wasserstein GAN은 minimax 기반 GAN보다 중단에 취약하지 않으며 사라지는 기울기 문제를 방지합니다. 또한 지구 이동 거리는 확률 분포 공간에서의 거리 측정이라는 진정한 측정항목이라는 이점이 있습니다. 교차 엔트로피는 이 의미에서 측정항목이 아닙니다.