Введение

Глубокое обучение добилось огромных успехов с точки зрения как структурированных, так и неструктурированных данных. Он обладает высокой точностью для задач распознавания изображений и задач обработки естественного языка, таких как анализ тональности. Но раньше он никогда не предназначался для генерации данных, и именно для этого и созданы генерирующие состязательные сети (GAN). Он генерирует новые данные на основе данных, на которых он обучен.
Впервые GAN были представлены Ианом Гудфеллоу в его статье Генеративные состязательные сети, где он смог сгенерировать новые лица, новые цифры MNIST и многие другие изображения.

Как работают GAN

Таким образом, GAN работают, обучая две нейронные сети: Генератор, который пытается генерировать новые изображения, похожие на реальные данные, и Дискриминатор, который пытается различать настоящие и поддельные данные. Мы обучаем 2 сети одновременно, так что обе сети улучшаются, и дискриминатор больше не сможет различать настоящие и поддельные данные. Вы можете думать о противнике между Генератором и Дискриминатором как о соперничестве между Кирой и L из Death Note Anime.

Кира и L - главный герой и антагонист аниме Death Note. Если вы его не смотрели, вам стоит 😉

Чтобы наглядно представить себе тренировочный процесс, вам поможет изображение ниже.

Черные точки представляют реальные данные, а зеленая линия представляет сгенерированные данные, поэтому в (а) он генерирует данные, которые далеки от реальных данных, а в (б) он пытается приблизиться, пока не совпадет с реальными данными, поэтому дискриминатор не может больше различать реальные и сгенерированные данные.

Как GAN достигают таких отличных результатов

D (x) - это вероятность того, что введенные данные будут реальными, а не поддельными. Для Discriminator Network он пытается максимизировать вероятность присвоения правильной метки как для реальных, так и для сгенерированных изображений (т.е. 1 для реальных изображений и 0 для поддельных изображений, в то время как, с другой стороны, генератор пытается минимизировать log (1-D (G (z)) (т.е. дает высокую вероятность того, что D (G (z)) присвоит 1 для сгенерированных изображений), и это причина «состязательности» слово в «Генеративная состязательная сеть»

DCGAN

DCGAN - это обычные сети GAN, но с использованием сверточных слоев для сети дискриминатора и транспонирования сверточных слоев для генератора.

Примечания об архитектуре DCGAN

  • Использование Leaky ReLU вместо ReLU в сетях генератора и дискриминатора
  • Использование полосатых сверток вместо максимального объединения
  • Использование BatchNorm после каждого сверточного слоя, кроме первого сверточного слоя в дискриминаторе, и каждого сверточного слоя транспонирования, кроме последнего сверточного слоя транспонирования в генераторе
  • Использование tanh на выходе генератора вместо сигмоида

Заключение

Когда дело доходит до GAN, это была верхушка айсберга. Сети GAN являются активной областью исследований и имеют множество интересных приложений, таких как перевод изображений в изображения или изображения со сверхвысоким разрешением, а также многие другие приложения.