ВИДЫ ГЕНЕРАТИВНО-СОСТЯЗАТЕЛЬНЫХ СЕТЕЙ
1 2 Айрапетов А.Э. , Коваленко А.А.
1Айрапетов Алексей Эдуардович - магистрант; 2Коваленко Анна Александровна - магистрант,
направление: информационные технологии, кафедра информационных систем и технологий, Московский государственный технический университет им. Н.Э. Баумана,
г. Москва
Уже довольно давно миру были представлены искусственные нейронные сети. С их помощью проводились различные исследования, их обучали работать c различными данными. Однако относительно недавно появилась их новая разновидность - генеративно-состязательные сети. Так как эта сеть новая, развивается она очень быстро. В этой статье я бы хотел описать некоторые наиболее важные разновидности этих сетей.
Помимо обычной генеративно-состязательной сети (Vanilla GAN) за несколько лет сеть эволюционировала и приобрела улучшения. Существует несколько видов:
1. Глубокая сверточная сеть (DCGAN - Deep Convolutional Generative Adversarían Network)
Первое и главное улучшение в архитектуре GAN. Они более устойчивы для обучения и генерируют высокие по качеству результаты [1]. Они также важны, поскольку стали одними из основных базовых показателей для внедрения и использования GAN.
Авторы сети задались целью улучшить архитектуру Vanilla GAN, и вот к каким выводам они пришли:
• Пакетная нормализация должна быть в обеих сетях;
• Полностью скрытые соединенные слои не очень хорошая идея для обучения;
• Избегайте объединений, прогрессируйте свертку;
Вы можете использовать эту архитектуру сети в том случае, если:
• Нужно что-то посильнее и лучше простого GAN. Vanilla GAN может работать на простых наборах данных, в отличие от DCGAN - он куда мощнее;
• Вы ищите прочную основу для сравнения с вашим алгоритмом GAN.
С этого момента все последующие типы GAN будут содержать в себе архитектуру DCGAN, если не будет сказано обратное.
2. Улучшенная глубокая сверточная сеть (Improved DCGAN)
Набор техник, улучшающих архитектуру DCGAN [1]. Например, улучшение основы позволяет генерировать изображения более высокого разрешения.
Одна из проблем, относящихся к GAN, это их схождение. Это не гарантировано и несмотря на архитектурные улучшения DCGAN обучение по-прежнему может быть нестабильно. Авторы этой архитектуры предложили следующие улучшения:
• Сопоставление объектов;
• Усреднение;
• Односторонне сглаживание меток;
• Виртуальная пакетная нормализация.
Все вышеуказанные техники позволяют модели лучше генерировать изображения с высоким разрешением, что является одним из слабых мест GAN. Для сравнения ниже на рисунке 1 представлено изображение 128x128 DCGAN и улучшенного DCGAN:
DCGAN Improved DCGAN
Рис. 1. Сгенерированное изображение собаки
Вы можете использовать эту архитектуру сети в том случае, если хотите получить изображение высокого разрешения.
3. Условная сеть (Conditional GAN)
Эта сеть использует дополнительную информацию, например, результат в более высоком качестве, а также есть возможность контролировать (в определенной степени) как будут выглядеть сгенерированные изображения [2].
Условная GAN является расширением GAN. Мы имеем условную информацию Y, которая описывает некоторые аспекты информации. Например, если мы имеем дело с лицами, Y может описать описать такие атрибуты, как пол или цвет волос. Затем эту информацию помещает и в генератор и в дискриминатор. На рисунке 2 показана схема условной сети.
Рис. 2. Схема условной GAN c информацией о лицах
Условные GAN могут быть интересны по 2 причинам:
1. По мере того как вы обучаете модель и задаете ей информацию, GAN учится использовать ее и даже имеет возможность генерировать лучшие результаты.
2. Имеется два способа управления представлениями изображений.
Вы можете использовать эту архитектуру сети в том случае, если:
• Имеется обучающая выборка и вы хотите получить сгенерированные изображения хорошего качества;
• Вы хотите получить контроль над некоторыми атрибутами изображения (например, нужно сгенерировать красную птицу в определенной позе определенного размера).
4. Информационная сеть (InfoGAN)
Это GAN, которые способны кодировать значимые объекты изображения в части вектора шума Z неконтролируемым образом, например, кодировать поворот числа [3]. Как мы видим из рисунка 3, поворот может быть в любом направлении и под любым углом.
Вы можете использовать эту архитектуру сети в том случае, если:
• Если набор данных не очень сложный;
• Если вы хотите использовать условную GAN, но не имеется информация о числах;
• Вы хотите увидеть основные значимые графические объекты набора данных и иметь над ними контроль.
5. Сеть Вассерштайна (Wasserstein GAN)
Измените функцию потерь, чтобы включить расстояние Вассерштайна. В результате сеть Вассерштайна имеет функцию потерь, связанную с качеством изображения. Кроме того, стабильность обучения улучшается и не зависит от архитектуры [4].
У генеративно-состязательных сетей всегда были проблемы со схождением, и, как следствие, мы не знаем, когда нужно прекратить их обучение. Другими словами, функция потерь не коррелирует с качеством изображения, что является серьезной проблемой, т.к.:
• вам нужно постоянно смотреть на образцы, чтобы сказать, правильно ли вы обучаете сеть или нет;
• вы не знаете, когда прекратить обучение;
• у вас нет числового значения, которое может указать, насколько хорошо настроены параметры.
Рис. 3. Кодирование поворота числа
Рис. 4. График функции потерь сети Вассерштайна. Чем меньше потеря, тем лучше качество
изображения
Рисунок 4 доказывает, что сеть Вассерштайна имеет функцию потерь, которая коррелирует с качеством изображения и обеспечивает схождение. Она работает довольно хорошо, даже если вы удалите пакетную нормализацию или попробуете странные архитектуры.
Вы можете использовать эту архитектуру сети в том случае, если:
• вы ищите сеть с самой высокой стабильностью обучения;
• требуется информативная и интерпретируемая функция потерь.
6. Улучшенная сеть Вассерштайна (Improved WGAN)
Возьмите сеть Вассерштайна и удалите прорисовку, которая является причиной некоторых нежелательных поведений. Это приводит к более быстрому схождению, более качественным выборкам и более стабильному обучению [4].
Сети Вассерштайна иногда создают выборки плохого качества или у них не получается достичь схождения при некоторых настройках. В основном это обуславливается тяжестью прорисовки. Но почему это является такой проблемой? Все потому, что это заставляет сеть использовать более простые функции, которые не могут обработать сложные данные с помощью простых приближений.
Вы можете использовать эту архитектуру сети в том случае, если:
• нужна быстрая сходимость;
• работать предстоит с большим количеством архитектур и наборами данных;
• не требуется особой настройки для основных параметров.
7. Сеть граничного равновесия (BEGAN - Boundary Equilibrium GAN)
Генеративно-состязательные сети используют автокодировщик как дискриминатор
[5]. Они могут быть успешно обучены с помощью простых архитектур. Они включают в себя динамику, которая балансирует как дискриминатор и генератор во время обучения.
• Генератор фокусируется на создании изображений, которые далее обработает дискриминатор;
• Дискриминатор пытается обработать реальные изображения как можно лучше, восстанавливая сгенерированные изображения с максимальной ошибкой.
Сети граничного равновесия не нужна никакая вычурная архитектура для лучшего обучения: как говорится в статье: не нужна ни пакетная нормализация, ни
транспонирование свертки, ни экспоненциальный роста для фильтров свертки. В итоге получаются следующие изображения (рисунок 5):
Рис. 5. Сгенерированные лица людей с помощью BEGAN
Вы можете использовать эту архитектуру сети по тем же причинам, что и улучшенную сеть Вассерштайна. Они обе имеют схожие результаты (стабильное обучение, простая архитектура, функция потери скореллированная с качеством изображения), главное их отличие только в подходе. Из-за сложного характера оценки генеративных моделей трудно сказать, какая из них лучше.
8. Прогрессирующая GAN (ProGAN)
Создание изображений высокого разрешения является большой проблемой. Чем больше изображение, тем легче сети совершить ошибку, т.к. ей нужно учиться генерировать более сложные и деликатные детали.
Прогрессирующая сеть, которая была создана на основе улученной сети Вассерштайна, предлагает умный путь, постепенно добавляя новые слои высокого разрешения во время обучения, что создает невероятно реалистичные изображения [6]. Каждый из этих слоев увеличивает разрешение изображений как для дискриминатора, так и для генератора.
Рис. 6. Схема создания изображения 1. Начните с обучения генератора и дискриминатора изображениями низкого
разрешения.
2. В какой-то момент (например, когда они начинают сходиться) увеличьте разрешение. Это делается очень просто с помощью сглаживания. Вместо того, чтобы просто добавлять новый слой напрямую, он добавляется небольшими линейными шагами, контролируемые а.
3. После завершения перехода продолжайте обучать генератор и дискриминатор. Перейдите к Шагу 2, если разрешение создаваемых в данный момент изображений не является целевым разрешением.
В результате этого прогрессивного обучения генерируемые изображения в ProGAN имеют высшее качество и время обучения снижается на 5,4 на 1024x1024 изображения. Причина этого заключается в том, что этой сети не нужно изучать все крупномасштабные и мелкомасштабные представления сразу. В прогрессирующей сети сначала изучаются мелкомасштабные слои (т. е. слои с низким разрешением сходятся), а затем модель может сосредоточиться на очистке чисто крупномасштабных структур (т. е. сходятся новые слои с высоким разрешением).
Предлагаются также другие усовершенствования и новые методы оценки. Такие улучшения, как:
• Стандартное отклонение;
• Выравнивание скорости обучения;
• Нормализация по пикселям.
Новые методы оценки:
• Идея в том, что локальная структура изображения должна соответствовать структуре профессиональной подготовки изображений;
• Как мы измеряем местную структуру? С пирамидой Лапласа, где вы получаете различные уровни пространственных частотных полос, которые могут быть использованы в качестве дескрипторов;
• Затем мы извлекаем дескрипторы из сгенерированных и реальных изображений, нормализуем их и проверяем, насколько близко они используют известное расстояние Вассерштайна. Чем меньше расстояние, тем лучше.
Вы можете использовать эту архитектуру сети в том случае, если:
• Вы хотите получить масштабные результаты. Но учтите, что...
• ..вам понадобится много времени, чтобы обучить модель;
• хотите получить изображения лучше, чем в реальности.
9. Цикличная сеть (CycleGAN)
Является самой передовой генеративно-состязательной сетью по генерации изображений.
Эти сети не требуют парных наборов данных для обучения переводу между доменами, что хорошо, потому что такие данные очень трудно получить [7]. Тем не менее, циклические сети все еще должны быть обучены с данными из двух разных доменов X и Y (например, X: лошади, Y: зебры). Чтобы ограничить перевод из одного домена в другой, они используют то, что они называют «последовательной потерей цикла». На рисунке 7 изображены примеры того, как можно изменить любой объект с картинки.
Zebras 3 Horses Summer 3 Winter
. v; - II vyi Щй ¿JJLji
rtrr НГТ
zebra —у horse i summer —У winter
Рис. 7. Пример результата 12
Подведем итог: все рассмотренные мной сети являются расширением для
стандартной генеративно-состязательной сети. Каждая из вышеупомянутых сетей
имеет свои плюсы и, соответственно, минусы. Сеть эволюционирует, приобретает
новые умения, которые могут быть полезны в той или иной области.
Список литературы
1. Radford Alec, Metz Luke, Soumith Chintala. Unsupervised representation learning with deep convolutional generative adversarial networks. 2015. C.16.
2. Mirza Mehdi, OsinderoSimon. Conditional Generative Adversarial Nets., 2014. C. 7.
3. Xi Chen, Yan Duan, Houthooft Rein, SchulmanJohn, SutskeverIlya, Abbeel Pieter. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets, 2016. C. 14.
4. Arjovsky Martin, Chintala Soumith, Léon Bottou. Wasserstein GAN, 2017. C. 32.
5. Berthelot David, Schumm Thomas, Metz Luke. BEGAN: Boundary Equilibrium Generative Adversarial Networks, 2017. C. 10.
6. Karras Tero, Aila Timo, Laine Samuli, Lehtinen Jaakko. Progressive Growing Of Gans For Improved Quality, Stability аМ Variation, 2018. C. 26.
7. Jun-Yan Zhu,Taesung Park, Isola Phillip, Efros Alexei A. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2018. C. 18.