Эта статья содержит около 3800 слов, и ее чтение занимает около 8 минут.
Сказать, что наиболее популярными в сфере глубокого обучения в последние годы являются генеративно-состязательные сети (GAN). Он был опубликован Яном Гудфеллоу в 2014 г., а также является создателем различных вариантов GAN, появившихся за последние четыре года.На рисунке ниже показано количество ежемесячных публикаций статей, связанных с GAN, за последние четыре года. видно, что это было предложено в 2014 году. С 2016 по 2016 год было относительно немного связанных статей, но с 2016 года или с 2017 года по этот год количество связанных статей действительно продемонстрировало резкий рост.
Итак, что такое GAN и почему в последние годы он стал такой популярной областью исследований?
GAN, или генеративно-состязательная сеть,Генеративная модель, а также полууправляемая и неконтролируемая модель обучения, которая может изучать глубокие представления, не требуя больших объемов размеченных данных. Самая большая особенность заключается в том, что он предлагает метод состязательного обучения двух глубоких сетей.
В настоящее время машинное обучение можно разделить на три типа в зависимости от того, имеет ли набор данных метку, обучение с учителем, полууправляемое обучение и обучение без учителя, В больших случаях стоимость получения меток также дороже, поэтому все больше и больше исследователи надеются на лучшее развитие неконтролируемого обучения, и с появлением GAN ему не требуется много меток. Данные могут даже не нуждаться в метках. Во-вторых, он может делать много вещей. Его текущие приложения включают синтез изображений, редактирование изображений , перенос стиля, сверхвысокое разрешение изображения и преобразование изображения.
Например, преобразование шрифта вzi2ziВ этом проекте дается преобразование шрифтов китайских иероглифов.Эффект показан на рисунке ниже.GAN может изучать разные шрифты и затем преобразовывать их.
Кроме изучения шрифтов есть еще конвертация картинок,pix2pixЭто можно сделать.Результат показан на рисунке ниже.Карта сегментации становится реальной фотографией, из черно-белого изображения в цветное изображение, из рисунка линии в карту, насыщенную текстурой, тенью и блеском и т.д. Все это реализовано в результате этого pix2pixGAN.
CycleGANЗатем можно добиться переноса стиля.Результаты показаны на рисунке ниже.Настоящие фотографии становятся картинами-впечатлениями, меняются местами обычные лошади и зебры, меняются времена года.
Выше приведены некоторые примеры применения GAN.Далее мы кратко представим принцип GAN, его преимущества и недостатки и, конечно же, почему все больше и больше статей, связанных с GAN, публикуется через два года после того, как он был предложен.
1. Основные принципы
Идея GAN на самом деле очень проста, т.Сеть генератора и сеть дискриминатора играют друг против друга.
GAN в основном состоит из двух сетей, сети генератора (Генератор) и сети дискриминатора (Дискриминатор).Благодаря взаимной игре между этими двумя сетями сеть генератора, наконец, может изучить распределение входных данных, чего и хочет достичь GAN. , цель--изучить распределение входных данных. Его базовая структура показана на рисунке ниже, из которого можно лучше понять функции G и D соответственно:
- D — дискриминатор, который отвечает за оценку входных реальных данных и поддельных данных, сгенерированных G. Его выход — 0 и 1, то есть, по сути, это двоичный классификатор, и цель — вывести 1 для входных реальных данных. данные, для ввода поддельных данных вывод равен 0;
- G — генератор, который принимает случайный шум и генерирует изображение.
В процессе обучения цель G — сгенерировать достаточное количество реальных данных, чтобы максимально запутать D, а D — идентифицировать все картинки, сгенерированные G, чтобы они играли друг против друга, и в конечном итоге достичь баланса. , то есть равновесие Нэша.
2. Преимущества
(Следующие преимущества и недостатки в основном взяты из ответа Яна Гудфеллоу на Quora и ответа на Zhihu)
- Модель GAN использует только обратное распространение без необходимости использования цепей Маркова.
- Нет необходимости выводить скрытые переменные во время обучения
- Теоретически, поскольку это дифференцируемая функция, ее можно использовать для построения D и G, поскольку ее можно комбинировать с глубокой нейронной сетью для создания глубокой генеративной модели.
- Обновления параметров G не напрямую из выборок данных, а используют обратное распространение из D
- Может генерировать лучшие генеративные образцы, чем другие генеративные модели (VAE, машина Больцмана).
- GAN — это полуконтролируемая модель обучения, которая не требует большого количества размеченных данных для обучающего набора;
- Нет необходимости следовать какой-либо факторизации для разработки модели, все генераторы и дискриминаторы будут работать нормально.
3. Недостатки
- Плохая интерпретируемость, распространение генеративных моделей
Pg(G)
нет явного выражения - Сложно обучать, D и G нужно хорошо синхронизировать, например, D обновляется k раз, а G обновляется один раз
- Обучение GAN необходимо для достижения равновесия Нэша, что иногда может быть достигнуто с помощью градиентного спуска, иногда нет.Мы не нашли хорошего способа достичь равновесия Нэша, поэтому обучение GAN нестабильно по сравнению с VAE или PixelRNN, но я думаю, что на практике это все же намного стабильнее, чем тренировка машины Больцмана.
- Трудно научиться генерировать дискретные данные, такие как текст
- По сравнению с машинами Больцмана, GAN с трудом угадывает значение одного пикселя на основе другого значения пикселя.GAN созданы для одной вещи, а именно для одновременной генерации всех пикселей.Вы можете использовать BiGAN для исправления этой функции, что может заставить вас использовать Gibbs выборка как машина Больцмана, чтобы угадать пропущенные значения
- Обучение нестабильно, а G и D трудно сходятся;
- Обучение также сталкивается с проблемами исчезновения градиента и коллапса режима.
- Отсутствует более эффективный, прямой и заметный метод оценки эффекта генерации модели.
3.1 Почему в обучении происходит исчезновение градиента и коллапс режима
Суть GAN в том, что G и D играют друг против друга и в конце концов достигают точки равновесия по Нэшу, но это только идеальная ситуация, Нормальная ситуация в том, что одна сторона сильна, а другая слаба, и как только эта связь формируется , нет возможности найти баланс во времени, тогда Проблемы возникнут. Исчезновение градиента и коллапс моды на самом деле являются двумя результатами в этом случае, соответствующими результатам D и G, которые являются более сильной стороной соответственно.
Прежде всего, для случая, когда градиент исчезает,Чем лучше D, тем серьезнее исчезает градиент G., так как обновление градиента G поступает от D, а на начальном этапе обучения на вход G поступает случайно сгенерированный шум, который точно не будет генерировать хорошую картинку, D легко оценит истинные и ложные отсчеты, т. е. обучение D почти без потерь, нет эффективной информации о градиенте обратно в G, чтобы G мог оптимизировать себя. Такое явление называется исчезновением градиента, проблемой исчезновения градиента.
Во-вторых, для проблемы коллапса моды основная причина заключается в том, что G относительно силен, так что D не может отличить реальное изображение от поддельного изображения, созданного G, и если G не может полностью создать достаточно реальное изображение в это время. но D не может отличить и дает правильную оценку, то G подумает, что картинка правильная, и дальше продолжит выводить ту или иную картинку вот так, а потом D все равно даст правильную оценку, так что Двое обманывают друг друга другие, подобные этому, так что G будет выводить только некоторые фиксированные изображения.В результате не только сгенерированные изображения недостаточно реальны, но и проблема недостаточного разнообразия.
Для более подробного объяснения см.Удивительный Вассерштейн ГАН, в этой статье более подробно объясняются проблемы оригинального GAN, в основном в функции потерь.
3.2 Почему GAN не подходит для обработки текстовых данных
- По сравнению с данными изображения текстовые данные являются дискретными, потому что для текста обычно необходимо сопоставить слово многомерному вектору, а окончательный прогнозируемый вывод представляет собой однократный вектор, предполагая, что вывод softmax
(0.2, 0.3, 0.1,0.2,0.15,0.05)
, то one-hot равно (0, 1, 0, 0, 0, 0), если вывод softmax равен (0,2, 0,25, 0,2, 0,1, 0,15, 0,1), то one-hot по-прежнему(0, 1, 0, 0, 0, 0)
, поэтому для генератора G выводит разные результаты, но D дает тот же результат дискриминанта и не может хорошо передать информацию об обновлении градиента в G, поэтому окончательный вывод D не имеет смысла. - Функция потерь GAN — это дивергенция JS, которая не подходит для измерения расстояния между распределениями, которые не хотят пересекаться. (Хотя WGAN использует расстояние вассертейна вместо дивергенции JS, его способность генерировать текст по-прежнему ограничена. Применение GAN для генерации текста включает seq-GAN, который представляет собой комбинацию обучения с подкреплением)
3.3 Почему SGD обычно не используется в оптимизаторах в GAN
- SGD легко колеблется, и легко сделать тренировку GAN более нестабильной.
- Цель GAN — найти в многомерном невыпуклом пространстве параметровРавновесие по Нэшу, точка равновесия по Нэшу GAN представляет собойточка перевала, но SGD найдет тольколокальные минимумы, потому что SGD решает задачу поиска минимального значения, а GAN — игровая задача.
Для седловых точек объяснение из энциклопедии Baidu:
Седловая точка — это особая точка, устойчивая в одном направлении и неустойчивая в другом направлении в дифференциальном уравнении, называемая седловой точкой. существуетфункциональный, которая не является ни точкой максимума, ни точкой минимумакритическая точка, называемая седловой точкой. В матрице число, имеющее наибольшее значение в строке и наименьшее значение в столбце, называется седловой точкой. Физически он шире и относится к точке, которая является максимальным значением в одном направлении и минимальным значением в другом направлении.
Разница между седловой точкой, точкой локального минимума и точкой локального максимума показана на следующем рисунке:
4. Тренировочные навыки
Учебные навыки в основном исходят изTips and tricks to make GANs work.
1. Нормализация ввода
- Нормализация ввода между -1 и 1
- Выходной слой G использует
Tanh
функция активации
2. Использование модифицированной функции потерь
В исходной статье GAN функция потерь G равна, но в реальном использовании
, причина, указанная автором, заключается в том, что первое приведет к проблеме исчезновения градиента.
Но на самом деле, даже у функции потерь этого практического приложения, предложенного автором, есть проблемы, то есть проблема коллапса моды.Среди предложенных далее работ, связанных с GAN, многие работы направлены на улучшение этой проблемы. Модель WGAN предлагает новую функцию потерь.
3. Сэмплирование шума от сферы
- Не брать пробы из равномерного распределения
- Случайный шум, выбранный из распределения Гаусса
- При выполнении интерполяции делайте это по большому кругу, а не по прямой линии из точки А в точку В, как показано ниже.
- Более подробную информацию можно найти в статье Тома Уайта.Sampling Generative Networksи кодGitHub.com/of course IB net/para…
4. BatchNorm
- Используя мини-пакет BatchNorm, необходимо убедиться, что каждый мини-пакет представляет собой одно и то же реальное изображение или сгенерированное изображение.
- Когда BatchNorm не используется, можно использовать нормализацию экземпляра (нормализация каждого образца).
- можно использоватьвиртуальная пакетная нормализация(виртуальная нормализация партии): партия R предопределяется перед началом обучения, и для каждой новой партии X используется каскад R+X для расчета параметров нормализации.
5. Избегайте разреженных градиентов: Relus, MaxPool
- Разреженные градиенты влияют на стабильность GAN
- Используйте LeakyReLU вместо функции активации Relu в G и D
- Для понижения дискретизации можно использовать альтернативы Average Pooling и Conv2d+stride.
- Для операций повышения частоты дискретизации вы можете использовать PixelShuffle(АР Вест V.org/ABS/1609.05…), ConvTranspose2d + stride
6. Использование ярлыков
- Сглаживание этикетки. То есть, если есть две целевые метки, предполагая, что метка реального изображения равна 1, а метка сгенерированного изображения равна 0, то для каждого входного примера, если это реальное изображение, в качестве используется случайное число от 0,7 до 1,2. метка вместо 1; как правило, используется одностороннее сглаживание метки
- Во время тренировки D время от времени переворачивайте ярлыки.
- Используйте метки, если у вас есть маркированные данные
7. Использование оптимизатора Adam
8. Выявите причину неудачи как можно раньше
- Потеря D становится 0, тогда это тренировочный провал
- Проверьте градиент нормы: если он превышает 100, что-то не так
- Если тренировка проходит нормально, потеря D имеет низкую дисперсию и уменьшается со временем.
- Если потеря g неуклонно уменьшается, то это обман D с плохо сгенерированными выборками.
9. Не уравновешивайте потери статистикой
10. Добавляем шум на вход
- Добавьте искусственный шум на вход D
- Добавьте гауссовский шум к каждому слою G
11. Дискретные переменные для условных GAN
- Используйте слой внедрения
- Добавьте дополнительный канал к входному изображению
- Сохраняйте встраивание низкоразмерным и согласовывайте размер канала изображения с помощью операции повышения дискретизации.
12 Использование Dropouts на этапах обучения и тестирования G
- Обеспечить шум в виде отсева (вероятность 50%)
- фаза обучения и тестирования, используемая в нескольких слоях G
- АР Вест V.org/PDF/1611.07…
Справочная статья:
- Гудфеллоу и др., «Генеративно-состязательные сети», ICLR 2014.
- Серия обучения ГАН (1) - прошлая жизнь и настоящая жизнь
- Галантерея | Объясните простым языком GAN·Основная текстовая версия (полная)
- Удивительный Вассерштейн ГАН
- Каковы преимущества генеративно-состязательных сетей (GAN) по сравнению с традиционными методами обучения?
- the-gan-zoo
- What-is-the-advantage-of-generative-adversarial-networks-compared-with-other-generative-models
- What-are-the-pros-and-cons-of-using-generative-adversarial-networks-a-type-of-neural-network-Could-they-be-applied-to-things-like-audio-waveform-via-RNN-Why-or-why-not
- Tips and tricks to make GANs work
Примечание. Изображения взяты из Интернета и справочных статей.
Выше приведено основное содержание и резюме этой статьи.Вы можете оставить сообщение, чтобы высказать свои предложения и мнения по этой статье.
В то же время, вы также можете обратить внимание на мой паблик WeChat - машинное обучение и компьютерное зрение или отсканировать QR-код ниже, поделиться со мной своими предложениями и мнениями, исправить возможные ошибки в статье, и давайте общаться, учитесь и развивайтесь вместе!