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

Сети GAN состоят из двух компонентов.

  • Нейронная сеть Генератор ( Художник ).
  • Нейронная сеть Дискриминатор ( искусствовед ).

Генератор ( художник ) создает изображение. Генератор ничего не знает о реальных изображениях и учится, взаимодействуя с Дискриминатором. Дискриминатор ( искусствовед ) определяет, является ли объект «настоящим» или «поддельным» (обычно представлен значение, близкое к 1 или 0)

В итоге:

  • Дискриминатор - это классификатор, определяющий, является ли данное изображение «настоящим» или «поддельным».
  • Генератор принимает случайно сгенерированный вектор шума в качестве входных данных и обратной связи от Дискриминатора и генерирует новые изображения, максимально приближенные к реальным изображениям.
  • Дискриминатор использует выходные данные генератора в качестве обучающих данных.
  • Генератор получает обратную связь от Дискриминатора.
  • Эти две модели «сражаются» друг с другом. Каждая модель становится сильнее в процессе.
  • Генератор продолжает создавать новые изображения и совершенствовать свой процесс до тех пор, пока Дискриминатор больше не сможет отличить сгенерированные изображения от реальных обучающих изображений.

Схема архитектуры DCGAN высокого уровня

Исходная архитектура DCGAN (Обучение неконтролируемому представлению с глубокими сверточными генерирующими состязательными сетями) имеет четыре сверточных уровня для Дискриминатора и четырех " четыре слоя свертки с дробным шагом »для Генератора.

Сеть Дискриминатора

Дискриминатор - это «искусствовед», который пытается различать «настоящие» и «поддельные» изображения. Это сверточная нейронная сеть для классификации изображений.

Дискриминатор - это 4-х слойные свертки с пакетной нормализацией (кроме входного слоя) и активацией ReLU с утечкой. Leaky ReLU помогает градиентам легче перемещаться по архитектуре.

ReLU против Leaky ReLU

  • Функция активации ReLU просто возьмет максимум между входным значением и нулем. Если мы используем функцию активации ReLU, иногда сеть застревает в популярном состоянии, называемом умирающим состоянием, и это потому, что сеть не производит ничего, кроме нулей для всех выходов.
  • Leaky ReLU предотвращает это состояние смерти, позволяя проходить некоторым отрицательным значениям. Вся идея, лежащая в основе работы генератора, заключается в получении значений градиента от дискриминатора, и если сеть застряла в ситуации умирающего состояния, процесса обучения не будет.
  • Выходной сигнал функции активации Leaky ReLU будет положительным, если вход положительный, и контролируемым отрицательным значением, если вход отрицательный. Отрицательное значение управляется параметром альфа, который вводит допуск сети, позволяя проходить некоторым отрицательным значениям.

Дискриминатор должен выводить вероятности. Для этого мы используем функцию активации Logistic Sigmoid в финальных логитах.

Генераторная сеть

Генератор - это « художник », который пытается создавать изображения, которые выглядят как можно более «реальными». , чтобы обмануть Дискриминатор.

Генератор представляет собой четырехуровневую свертку с дробным шагом и пакетной нормализацией (кроме входного слоя) и использует активацию Гиперболический тангенс (tanh) в окончательный выходной слой и Leaky ReLU в остальных слоях.

Функции потерь

Вместо того, чтобы иметь только одну функцию потерь, здесь нам нужно определить три функции.

Дискриминатор выполняет две задачи

  • Дискриминатор должен правильно пометить реальные изображения, полученные из набора обучающих данных, как «реальные».
  • Дискриминатор должен правильно маркировать сгенерированные изображения, поступающие из Генератора, как «поддельные».

Нам нужно рассчитать две потери для Дискриминатора. Сумма потери «поддельного» изображения и «реального» изображения составляет общую потерю дискриминатора .

У генераторной сети одна задача

  • Создавать изображения, которые выглядят как можно более «реальными», чтобы обмануть Дискриминатор.

Оптимизация

  • Мы используем оптимизатор Adam, чтобы минимизировать потери.

Адаптивная оценка момента (Адам) оптимизатор

  • Адам отличается от классического стохастического градиентного спуска.
  • Стохастический градиентный спуск поддерживает постоянную скорость обучения (называемую альфа) для всех обновлений веса, и скорость обучения не изменяется во время обучения.
  • Оптимизатор Adam представляет собой альтернативу классическому методу градиентного спуска или методу стохастического градиентного спуска.
  • Адам добавляет к процессу среднеквадратичное отклонение (RMSprop), применяя веса обучения для каждого параметра. Он анализирует, насколько быстро меняются средние значения весов, и адаптирует учебные веса.

Обучение DCGAN

Следующие шаги повторяются во время обучения

  • Сначала Генератор создает несколько новых примеров.
  • Дискриминатор обучается на реальных и сгенерированных данных.
  • После обучения Дискриминатора обе модели обучаются вместе.
  • Веса Дискриминатора зафиксированы, но его градиенты используются в модели Генератора, так что Генератор может обновлять его веса.

Сопровождаемый блокнот jupyter для рук DCGAN можно найти здесь

Заключение

DCGAN продемонстрировали огромный потенциал в последние годы и применялись в различных сценариях, от синтеза изображений до повышения качества изображений (сверхразрешение) и преобразования изображения в изображение. , преобразование текста в изображение и многое другое. Кроме того, GAN являются строительными блоками для усовершенствований в использовании ИИ для искусства, музыки и творчества (например, создание музыки, музыкальное сопровождение, создание стихов и т. Д.).

Надеюсь, эта статья помогла вам приступить к созданию собственных сетей DCGAN. Я думаю, что это, по крайней мере, даст хорошее объяснение и общее понимание DCGAN.