GAN расшифровывается как Generative Adversarial Networks, то есть две нейронные сети, работающие вместе в игре и пытающиеся перехитрить друг друга. Сети действуют как противники. Один пытается обмануть другого и называется генератором, а другой называется дискриминатором.

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

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

Обучить GAN непросто.

Поскольку GAN использует две глубокие сверточные нейронные сети, подходы к оптимизации, которые используются в этих сетях, вступают в игру при попытке решить минимаксную проблему. Любой, кто реализует GAN, должен будет выбрать архитектуру CNN, функцию потерь, нормализацию и регуляризацию. Авторы этой статьи рассмотрели эти варианты, обсудили часто возникающие проблемы, написали некоторый код и развернули некоторые модели в TensorFlow Hub.

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

В общем, GAN пытаются решить проблему классификации. К ним применяются две общие функции потерь: минимаксная GAN и ненасыщающая GAN. Minimax GAN пытается свести к минимуму отрицательное логарифмическое правдоподобие. Ненасыщающий GAN пытается максимизировать вероятность того, что сгенерированные выборки будут реальными.

Авторы исследовали три метода нормализации: пакетный, послойный и спектральный, и пришли к выводу, что лучше всего использовать спектральную нормализацию.

Таким же образом они также исследовали две архитектуры GAN: глубокие сверточные генеративно-состязательные сети и остаточные сети.

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

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

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

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

Статья доступна здесь.