Это класс генеративных моделей. GANs состоят из двух нейронных сетей, которые тренируются одновременно и соревнуются друг с другом: генератора и дискриминатора:
- Генератор. Цель генератора - создавать данные, которые выглядят как реальные данные. Генератор принимает на вход случайный шум (обычно в виде случайного вектора) и преобразует его в данные, которые должны выглядеть правдоподобно.
- Дискриминатор. Цель дискриминатора - отличать реальные данные от данных, созданных генератором. Дискриминатор принимает на вход данные и пытается классифицировать их как "реальные" или "поддельные"
Обучение GANs происходит в два этапа, которые чередуются:
- Обучения дискриминатора: дискриминатор обучается на реальных данных (с меткой "реальные") и данных, созданных генератором (с меткой "поддельные"). Цель - минимизировать ошибку классификации. Обычно этот этап идёт первым. За один этап генератор создает столько данных, сколько лежит в батче реальных данных.
- Обучение генератора. Генератор обучается таким образом, чтобы "обмануть" дискриминатор, то есть создать такие данные, которые дискриминатор классифицирует как реальные.