WGAN - это тип сети, используемый для создания поддельных высококачественных изображений из входного вектора. В этом эксперименте я реализовал два различных улучшения WGAN в Pytorch, чтобы увидеть, какое из них может работать лучше всего с точки зрения скорости и качества сгенерированных изображений. (Github: https://github.com/BradleyBrown19/WGANOptimizations).

Что такое WGAN?

Я предполагаю, что ранее знакомы с GAN, поэтому рекомендую прочитать следующее, если вы не знакомы: https://towardsdatascience.com/image-generator-drawing-cartoons-with-generative-adversarial-networks-45e814ca9b6b

В формулировке WGAN есть куча сложной математики, но я постараюсь сделать ее простой и интуитивно понятной.

Основная идея WGAN состоит в том, чтобы минимизировать расстояние от землеройного. Расстояние земного движителя (уравнение 1) получило свое название, потому что оно может считаться минимальной работой, необходимой для преобразования одной кучи земли в другую. Другими словами, это количество грязи, умноженное на пройденное расстояние.

В нашем случае груды грязи - это распределения вероятностей реальных изображений Pr и сгенерированных изображений Pg.

Теперь давайте разберем приведенное выше уравнение. Π (pr, pg) означает взять все совместные распределения между Pr и Pg и найти наибольшую нижнюю границу (inf) перемещения «грязи» на расстояние между x и y (‖x − y‖), умноженное на общее количество грязи. Eγ (x, y). Другими словами, мы пытаемся найти наименьший объем работы или затрат на преобразование распределений вероятностей сгенерированных изображений в реальные.

Это был полный рот.

Используя так называемую двойственность Канторовича-Рубинштейна (см. Приложение: https://arxiv.org/pdf/1701.07875.pdf), уравнение 1 можно преобразовать в:

где f - 1-липшицево, которое должно следовать ограничению:

Что такое f? Как мы можем максимизировать уравнение 2?

Барабан, пожалуйста ... мы используем нейронную сеть, т.е. критик. Критик очень похож на дискриминатор в обычном GAN, однако вместо того, чтобы выводить вероятность того, что изображение является реальным или поддельным, он выводит скаляр, представляющий, насколько «реальным» является изображение. Единственное отличие в архитектуре между ними состоит в том, что новый критик опускает сигмовидный слой, потому что он больше не нужен. Критик не может охватить все возможности f, чтобы найти верхнюю грань уравнений 2, но поскольку аппроксимирующая способность нейронной сети огромна, она дает очень хорошую оценку.

Еще одно изменение в WGAN заключается в том, что функции журнала потерь больше не нужны.

Теперь, когда у нас есть все, что нам нужно, осталось только удовлетворить ограничение 1-Липшица. В обычной WGAN это делается путем простого отсечения всех весов в дискриминаторе, буквально убедившись, что они ниже абсолютного значения. Обычно это значение составляет 0,01.

Реализация 1. WGAN со штрафом за градиент и условием согласованности

Что такое штраф за градиент?

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

Введите штраф за градиент,

Градиентный штраф - еще один, менее строгий метод обеспечения ограничения 1-Липшица. По определению 1-липшицевой функции (см. Уравнение 3), функция удовлетворяет этому ограничению, если максимальная норма градиентов равна 1.

Это реализовано в потерях дискриминатора путем добавления в потерю дополнительного члена gradientPenalty. Этот термин рассчитывается путем взятия среднего значения всех градиентов критика при подаче смеси реальных и поддельных данных и взятия среднего квадрата разницы между всеми градиентами и одним. Гиперпараметр 10 является стандартным множителем для этого члена.

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

Что такое срок согласованности?

Дальнейшая регуляризация добавляется к нейронной сети с введением члена согласованности.

Это рассчитывается путем двукратной подачи одних и тех же реальных данных критику с отсевом примерно 0,5. Мы берем как окончательный результат, так и активации перед окончательным выводом.

Отсев - это, по сути, отключение половины веса у критика, благодаря чему два выхода отличаются друг от друга, несмотря на то, что входные данные являются одними и теми же.

Условие согласованности способствует тому, чтобы критик производил тот же скалярный результат, несмотря на различие отсева. Это сделано для повышения последовательности и надежности результатов критики.

Реализация 2: WGAN со спектральной нормализацией

Опять же, для обучения WGAN нам нужно, чтобы наша функция была липшицевой. Из уравнения легко увидеть, что в одномерном случае это означает, что значение K должно быть больше, чем максимальное значение производной функции. (Наглядное доказательство этого см. На сайте christigancosgrove.com).

Именно здесь на помощь приходит спектральная нормализация. Поскольку мы знаем, что WGAN должны быть липшицевыми, мы должны найти способ содержать градиенты дискриминатора.

В случае многомерной функции A: Rⁿ - ›Rᵐ спектральная норма определяется как наибольшее сингулярное значение A, которое также является квадратным корнем из наибольшего собственного значения AᵀA (см. Здесь ). Через связку линейной алгебры, которая прекрасно описана здесь). Мы видим, что это тоже константа Липшица линейной функции.

Теперь, когда мы видим, что константа Липшица для этой общей линейной и дифференцируемой функции является спектральной нормой ее градиента в области определения:

Теперь нам нужно найти (и содержать) константу Липшица для композиции функций (дискриминатор), чтобы она была липшицевой и работала как WGAN.

Согласно цепному правилу композиции функций:

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

Вышеупомянутое можно разбить на это окончательное уравнение:

Если мы можем зафиксировать каждую из спектральных норм линейных функций на 1, то композиция также будет зафиксирована на 1, и WGAN будет удовлетворять двойственности Кантаровича-Рубинштейна.

Теперь последнее, что осталось сделать, - это убедиться, что спектральная норма каждой линейной функции ограничена. Это можно просто сделать, вычислив следующее: W / σ (W), где σ (W) - сингулярное наибольшее значение W (это спектральная норма).

Это делается с помощью изящного трюка, называемого мощной итерацией. Что после некоторых манипуляций сводится к простому уравнению:

Где uᵀ и v - векторы в области домена и области W соответственно. Это здорово, потому что нам нужно только вычислить векторы u и v для каждого веса на каждом этапе обучения. Это очень дешево с точки зрения вычислений и делает эту реализацию быстрее, чем WGAN-GP.

Вот отличное алгоритмическое изображение реализации спектральной нормы:

Последние мысли

В общем, спектральная нормализация - лучший метод оптимизации WGAN.

В каждую эпоху две сети GAN были очень похожи по производительности с очень похожим качеством изображения в каждую эпоху.

Однако для 4700 итераций реализация спектральной нормы заняла всего 25 минут, тогда как штраф за градиент занял 3 часа 35 минут. Это имеет смысл из-за большого количества дополнительных накладных расходов, требуемых при реализации штрафа за градиент.

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