Поскольку GAN содержит две отдельно обучаемые сети, ее алгоритм обучения должен решать две проблемы:
- GAN должны совмещать два разных типа обучения (генератор и дискриминатор).
- Конвергенцию GAN трудно определить.
Переменное обучение
Генератор и дискриминатор имеют разные процессы обучения. Так как же нам тренировать GAN в целом?
Обучение GAN протекает в чередующиеся периоды:
- Дискриминатор обучается в течение одной или нескольких эпох.
- Генератор тренируется в течение одной или нескольких эпох.
- Повторите шаги 1 и 2, чтобы продолжить обучение сетей генератора и дискриминатора.
Мы сохраняем генератор постоянным на этапе обучения дискриминатора. Поскольку обучение дискриминатора пытается выяснить, как отличить настоящие данные от поддельных, оно должно научиться распознавать недостатки генератора. Это другая проблема для тщательно обученного генератора, чем для необученного генератора, выдающего случайный результат.
Точно так же мы сохраняем дискриминатор постоянным на этапе обучения генератора. В противном случае генератор будет пытаться поразить движущуюся цель и никогда не сойтись.
Именно это движение вперед и назад позволяет GAN решать неразрешимые в противном случае генеративные проблемы. Мы получим точку опоры в сложной порождающей проблеме, начав с гораздо более простой задачи классификации. И наоборот, если вы не можете обучить классификатор определять разницу между реальными и сгенерированными данными даже для начального вывода генератора случайных чисел, вы не сможете начать обучение GAN.
Конвергенция
По мере того, как генератор улучшается по мере обучения, производительность дискриминатора ухудшается, поскольку дискриминатор не может легко отличить настоящее от поддельного. Если генератор работает идеально, то точность дискриминатора составляет 50%. По сути, дискриминатор подбрасывает монету, чтобы сделать прогноз.
Такое развитие событий создает проблему для конвергенции GAN в целом: обратная связь дискриминатора со временем становится менее значимой. Если GAN продолжит обучение после того момента, когда дискриминатор дает совершенно случайную обратную связь, то генератор начнет тренироваться на нежелательной обратной связи, и его собственное качество может ухудшиться.
Для GAN конвергенция часто является мимолетным, а не стабильным состоянием.