GAN에는 별도로 학습된 두 개의 네트워크가 포함되므로 학습 알고리즘은 다음 두 가지 문제를 해결해야 합니다.
- GAN은 두 가지 종류의 학습 (생성자 및 구분자)을 조정해야 합니다.
- GAN 수렴을 식별하기 어렵습니다.
교대 학습
생성자와 구분자는 학습 프로세스가 다릅니다. 그렇다면 GAN을 전체적으로 어떻게 학습시키나요?
GAN 학습은 다음과 같이 번갈아 진행됩니다.
- 판별자는 하나 이상의 에포크를 학습합니다.
- 생성기는 하나 이상의 에포크를 학습합니다.
- 1단계와 2단계를 반복하여 생성자 및 구분자 네트워크를 계속 학습합니다.
구분자 학습 단계에서는 생성자를 일정하게 유지합니다. 판별자 학습은 실제 데이터와 가짜 데이터를 구별하는 방법을 알아내려고 하므로 생성자의 결함을 인식하는 방법을 학습해야 합니다. 이는 철저히 학습된 생성기의 경우 무작위 출력을 생성하는 학습되지 않은 생성기의 경우와는 다른 문제입니다.
마찬가지로 생성자 학습 단계에서는 구분자를 일정하게 유지합니다. 그렇지 않으면 생성기가 이동하는 타겟을 맞추려고 시도하여 수렴하지 않을 수 있습니다.
이러한 반복을 통해 GAN은 다루기 어려운 생성 문제를 해결할 수 있습니다. 훨씬 더 간단한 분류 문제부터 시작하여 어려운 생성 문제를 시작합니다. 반대로 초기 무작위 생성기 출력의 경우에도 실제 데이터와 생성된 데이터의 차이를 구분하도록 분류기를 학습시킬 수 없다면 GAN 학습을 시작할 수 없습니다.
수렴
생성기가 학습하면서 개선됨에 따라 판별자는 진짜와 가짜를 쉽게 구분할 수 없으므로 판별기 성능이 저하됩니다. 생성기가 완벽하게 성공하면 분류자의 정확도는 50%입니다. 실제로 판별자는 동전을 던져 예측합니다.
이러한 진행은 GAN 전체의 수렴에 문제를 야기합니다. 판별자 의견은 시간이 지남에 따라 의미가 줄어듭니다. 판별자가 완전히 무작위적인 피드백을 제공하는 지점을 지나도 GAN이 학습을 계속하면 생성기가 정크 피드백으로 학습하기 시작하여 자체 품질이 저하될 수 있습니다.
GAN의 경우 수렴은 안정적인 상태가 아니라 일시적인 상태인 경우가 많습니다.