손실 함수

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

GAN 손실 함수에서 두 분포의 차이를 어떻게 포착하나요? 이 질문은 활발하게 연구되고 있는 분야이며 여러 접근 방식이 제안되었습니다. 여기에서는 두 가지 일반적인 GAN 손실 함수를 다루며 둘 다 TF-GAN에 구현됩니다.

  • minimax 손실: GAN을 소개한 논문에 사용된 손실 함수입니다.
  • 폐기물 손실: TF-GAN 에스티메이터의 기본 손실 함수입니다. 2017년 자료에 처음 설명되어 있습니다.

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

손실 함수 한두 개?

GAN에는 생성기 학습용과 구분자 학습용 두 가지 손실 함수가 있을 수 있습니다. 두 분포 함수를 함께 사용하여 확률 분포 간의 거리 측정을 반영할 수 있나요?

여기서는 손실 스킴에서 발전기와 분류자 손실이 확률 분포 간의 단일 거리 측정에서 파생됩니다. 그러나 이 두 체계에서는 생성기가 거리 측정의 한 용어, 즉 가짜 데이터의 분포를 반영하는 용어에만 영향을 줄 수 있습니다. 따라서 생성기 학습 중에 실제 데이터의 배포를 반영하는 다른 용어를 삭제합니다.

생성기와 구분자 손실은 단일 수식에서 파생되더라도 최종적으로 다르게 표시됩니다.

미니맥스 손실

GAN을 소개한 논문에서 생성기는 다음 함수를 최소화하려고 시도하는 반면, 분류자는 이를 최대화하려고 시도합니다.

$$E_x[log(D(x))] + E_z[log(1 - D(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 백서에 따르면 위의 미니맥스 손실 함수로 인해 구분자가 작업을 매우 쉽게 수행할 때 GAN 학습의 초기 단계에서 GAN이 멈출 수 있습니다. 따라서 이 자료에서는 생성기가 log D(G(z))을 최대화하려고 하도록 생성기 손실을 수정할 것을 제안합니다.

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

와셔스타인 손실

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

이 손실 함수는 분류자가 실제로 인스턴스를 분류하지 않는 GAN 스키마(‘Wasserstein GAN’ 또는 'WGAN'이라고 함)의 수정에 종속됩니다. 각 인스턴스에 대해 숫자를 출력합니다. 이 숫자는 1보다 작거나 0보다 커야 할 필요가 없으므로 인스턴스가 진짜인지 가짜인지를 판단하는 0.5를 임곗값으로 사용할 수 없습니다. 분류자 학습은 가짜 인스턴스보다 실제 인스턴스에서 출력을 더 크게 만들려고 합니다.

실제와 가짜를 구분할 수 없기 때문에 WGAN 판별자는 실제로 '분류자'가 아니라 '비판'이라고 합니다. 이 차이는 이론적으로는 중요하지만, 실질적으로는 손실 함수에 대한 입력이 확률일 필요가 없다는 확인으로 취급할 수 있습니다.

손실 함수 자체는 놀라울 정도로 간단합니다.

비상 손실: D(x) - D(G(z))

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

Generator 손실: D(G(z))

생성기는 이 함수를 최대화하려고 합니다. 즉, 가짜 인스턴스의 구분자 출력을 최대화하려고 합니다.

이러한 함수는 다음과 같습니다.

  • D(x)는 실제 인스턴스의 비평가 출력입니다.
  • G(z)는 지정된 노이즈 z일 때 발전기의 출력입니다.
  • D(G(z))는 가짜 인스턴스에 대한 비평가 출력입니다.
  • 비평가 D의 출력은 1과 0 사이일 필요가 없습니다.
  • 수식은 실제 분포와 생성된 분포 사이의 지구 이동자 거리에서 파생됩니다.

TF-GAN에서 wasserstein_generator_loss 및 hasserstein_discriminator_loss의 구현을 참고하세요.

요구사양

Wasserstein GAN (또는 WGAN)의 이론적 타당성은 제한된 범위 내에서 유지되도록 GAN 전반의 가중치를 잘라야 합니다.

이점

Wasserstein GAN은 미니맥스 기반 GAN보다 덜 취약하고 경사 사라지기 문제를 방지합니다. 또한 지구 이동자 거리는 확률 분포 공간에 있는 거리의 거리인 진짜 측정항목이라는 이점이 있습니다. 이러한 맥락에서 교차 엔트로피는 측정항목이 아닙니다.