GAN – генеративно-состязательная нейросеть. Один из алгоритмов машинного обучения, обучающийся без учителя.
Как работает?
Комбинируются две нейросети «генератор» и «дискриминатор». Задача генератора – генерировать образы заданной категории. Задача дискриминатора – пытаться распознать созданный образ.
Для чего?
Создание изображений похожих на лица людей, картинок для интернет-магазина, аватаров для игр. Есть случаи генерации видеоклипов и виртуальных ведущих для ТВ-программ.
Разберемся подробнее
Дискриминатор
Используются сверточные нейронные сети (CNN). В его задачу входит находить объект на изображении, например цифры или котиков. Предварительно нейронная сеть обучается на базе данных картинок с объектами (с установленной аннотацией), которые нужно научиться находить.
Генератор
Используются нейронные сети прямого распространения (FFNN). Изображение формируется путем генерации шума, пока не появятся контуры искомого изображения.
Для понимания давайте напряжём фантазию.
Если высыпать рис в емкость и начать трясти, то в какой-то момент вы можете получить очертание рисунка. Когда фрагменты начинают появляться, нейросеть запоминает каким образом тряслась емкость и воспроизводит действия вновь и вновь.
Реальные примеры
- Перенос движения. Модель Everybody Dance Now позволяет заставить изображение танцевать так, как в исходном видео.
- Перенос стиля. Модель Harshit Kumar (kharshit.github.io) превращает лошадь в зебру на видео.
- TwinGan генерирует аниме-изображения по входному изображению человека.
- Edges2cats преобразовывает наброски рисунков в реалистичного кота.
- И всем известный DeepFake.