[Обучающая серия GAN] Первое знакомство с GAN

Нейронные сети GAN

Эта статья содержит около 3800 слов, и ее чтение занимает около 8 минут.

Сказать, что наиболее популярными в сфере глубокого обучения в последние годы являются генеративно-состязательные сети (GAN). Он был опубликован Яном Гудфеллоу в 2014 г., а также является создателем различных вариантов GAN, появившихся за последние четыре года.На рисунке ниже показано количество ежемесячных публикаций статей, связанных с GAN, за последние четыре года. видно, что это было предложено в 2014 году. С 2016 по 2016 год было относительно немного связанных статей, но с 2016 года или с 2017 года по этот год количество связанных статей действительно продемонстрировало резкий рост.

Итак, что такое GAN и почему в последние годы он стал такой популярной областью исследований?

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

В настоящее время машинное обучение можно разделить на три типа в зависимости от того, имеет ли набор данных метку, обучение с учителем, полууправляемое обучение и обучение без учителя, В больших случаях стоимость получения меток также дороже, поэтому все больше и больше исследователи надеются на лучшее развитие неконтролируемого обучения, и с появлением GAN ему не требуется много меток. Данные могут даже не нуждаться в метках. Во-вторых, он может делать много вещей. Его текущие приложения включают синтез изображений, редактирование изображений , перенос стиля, сверхвысокое разрешение изображения и преобразование изображения.

Например, преобразование шрифта вzi2ziВ этом проекте дается преобразование шрифтов китайских иероглифов.Эффект показан на рисунке ниже.GAN может изучать разные шрифты и затем преобразовывать их.

zi2zi_examples

Кроме изучения шрифтов есть еще конвертация картинок,pix2pixЭто можно сделать.Результат показан на рисунке ниже.Карта сегментации становится реальной фотографией, из черно-белого изображения в цветное изображение, из рисунка линии в карту, насыщенную текстурой, тенью и блеском и т.д. Все это реализовано в результате этого pix2pixGAN.

pix2pix_examples

CycleGANЗатем можно добиться переноса стиля.Результаты показаны на рисунке ниже.Настоящие фотографии становятся картинами-впечатлениями, меняются местами обычные лошади и зебры, меняются времена года.

cycleGAN_examples

Выше приведены некоторые примеры применения 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 не подходит для обработки текстовых данных

  1. По сравнению с данными изображения текстовые данные являются дискретными, потому что для текста обычно необходимо сопоставить слово многомерному вектору, а окончательный прогнозируемый вывод представляет собой однократный вектор, предполагая, что вывод 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 не имеет смысла.
  2. Функция потерь GAN — это дивергенция JS, которая не подходит для измерения расстояния между распределениями, которые не хотят пересекаться. (Хотя WGAN использует расстояние вассертейна вместо дивергенции JS, его способность генерировать текст по-прежнему ограничена. Применение GAN для генерации текста включает seq-GAN, который представляет собой комбинацию обучения с подкреплением)

3.3 Почему SGD обычно не используется в оптимизаторах в GAN

  1. SGD легко колеблется, и легко сделать тренировку GAN более нестабильной.
  2. Цель GAN — найти в многомерном невыпуклом пространстве параметровРавновесие по Нэшу, точка равновесия по Нэшу GAN представляет собойточка перевала, но SGD найдет тольколокальные минимумы, потому что SGD решает задачу поиска минимального значения, а GAN — игровая задача.

Для седловых точек объяснение из энциклопедии Baidu:

Седловая точка — это особая точка, устойчивая в одном направлении и неустойчивая в другом направлении в дифференциальном уравнении, называемая седловой точкой. существуетфункциональный, которая не является ни точкой максимума, ни точкой минимумакритическая точка, называемая седловой точкой. В матрице число, имеющее наибольшее значение в строке и наименьшее значение в столбце, называется седловой точкой. Физически он шире и относится к точке, которая является максимальным значением в одном направлении и минимальным значением в другом направлении.

Разница между седловой точкой, точкой локального минимума и точкой локального максимума показана на следующем рисунке:

局部极小值点和鞍点的对比

4. Тренировочные навыки

Учебные навыки в основном исходят изTips and tricks to make GANs work.

1. Нормализация ввода
  • Нормализация ввода между -1 и 1
  • Выходной слой G используетTanhфункция активации
2. Использование модифицированной функции потерь

В исходной статье GAN функция потерь G равнаmin (log(1-D)), но в реальном использованииmax(logD), причина, указанная автором, заключается в том, что первое приведет к проблеме исчезновения градиента.

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

3. Сэмплирование шума от сферы
  • Не брать пробы из равномерного распределения
  • Случайный шум, выбранный из распределения Гаусса
  • При выполнении интерполяции делайте это по большому кругу, а не по прямой линии из точки А в точку В, как показано ниже.

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. Добавляем шум на вход
11. Дискретные переменные для условных GAN
  • Используйте слой внедрения
  • Добавьте дополнительный канал к входному изображению
  • Сохраняйте встраивание низкоразмерным и согласовывайте размер канала изображения с помощью операции повышения дискретизации.
12 Использование Dropouts на этапах обучения и тестирования G
  • Обеспечить шум в виде отсева (вероятность 50%)
  • фаза обучения и тестирования, используемая в нескольких слоях G
  • АР Вест V.org/PDF/1611.07…

Справочная статья:

Примечание. Изображения взяты из Интернета и справочных статей.


Выше приведено основное содержание и резюме этой статьи.Вы можете оставить сообщение, чтобы высказать свои предложения и мнения по этой статье.

В то же время, вы также можете обратить внимание на мой паблик WeChat - машинное обучение и компьютерное зрение или отсканировать QR-код ниже, поделиться со мной своими предложениями и мнениями, исправить возможные ошибки в статье, и давайте общаться, учитесь и развивайтесь вместе!