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