изучение самовнимания и спектральной нормы

1656555989 izuchenie samovnimaniya i spektralnoj normy

от Талеса Сильвы

1*gdU07yYr2i8DLUs2ukj32g

В последнее время большое внимание привлекают генеративные модели. Большая часть этого поступает от генеративных состязательных сетей (GAN). Изобретенные Гудфеллоу и др., GAN – это структура, в которой два игрока соперничают друг с другом. Два актера, генератор Г и дискриминатор D, оба представлены аппроксиматорами функций. Кроме того, они играют разные роли в игре.

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

д, с другой стороны, является всеобщим бинарным классификатором. У него две основные работы. Во-первых, он категоризирует, происходит ли его полученный вход от подлинного распределения данных (Dt) или по распределению генератора. В добавок, д также гиды Г чтобы создать более реалистичные образцы, перейдя в Г его градиенты. Фактически, принимая градиенты из д это единственный путь Г можно оптимизировать его параметры.

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

Во время тренировки половину времени д получает изображение из учебного набора Dt. Другую половину времени, д получает изображение из сети генератора. Gsample. д учится максимизировать вероятность назначения правильной метки класса как для реальных изображений (из учебного набора), так и для поддельных образцов (с Г). В конце концов есть надежда, что игра найдет равновесие — равновесие Нэша.

В этой ситуации Г будет фиксировать распределение вероятностей данных. И дв свою очередь, не сможет отличить подлинные или поддельные образцы.

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

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

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

Весь код, разработанный с помощью Tensorflow Eager execution API, доступен здесь.

Здесь у меня есть более глубокий ввод в GAN.

Сверточные GAN

Глубокий сверточный GAN (DCGAN) был ведущим шагом к успеху GAN, генерирующего изображение. DCGAN – это семейство сетей ConvNet, налагающих определенные архитектурные ограничения для стабилизации обучения GAN.

в DCGAN, Г состоит как серия операций транспонирования свертки. Эти операции берут случайный вектор шума, zи трансформировать его, постепенно увеличивая его пространственные размеры, одновременно уменьшая глубину его объема.

0*AzDQxRt7QiVumFk8
Авторство: Обучение репрезентации без присмотра с помощью DCNN.

DCGAN представила серию архитектурных рекомендаций для стабилизации обучения GAN. Он выступает за использование полосатых извилин вместо объединения слоев. Кроме того, он использует пакетную нормализацию (BN) как для сетей генератора, так и дискриминаторов. В конце концов, он употребляет активации ReLU и Tanh в генераторе и неплотные ReLU в дискриминаторе.

Давайте поговорим о некоторых из этих рекомендаций.

Пакетная норма работает путем нормализации входных признаков слоя, чтобы иметь нулевое среднее значение и единичную дисперсию. BN был необходим для того, чтобы модели Deeper работали, не попадая в них сворачивание режима. Режим коллапса – это ситуация, в которой Г создает образцы с очень низким разнообразием. Иными словами, Г возвращает одинаковые образцы для разных входных сигналов. Также BN помогает справиться с проблемами из-за плохой инициализации параметров.

Кроме того, DCGAN использует активацию Leaky ReLU в сети дискриминатора. В отличие от обычной функции ReLU, Leaky ReLU позволяют передавать небольшой градиентный сигнал для отрицательных значений.. В результате это заставляет градиенты от дискриминатора сильнее поступать в генератор. Вместо того чтобы передавать градиент (наклон) 0 в обратном проходе для отрицательных значений, он передает небольшой отрицательный градиент.

1*mhOPoQOznlEnuOXifL2gPA
Функция ReLU (справа). Неплотный ReLU (слева). В отличие от ReLU, производное отрицательного значения для неплотной функции ReLU отличается от нуля.

Архитектурные указания, введенные DCGAN, все еще находятся в дизайне последних моделей. Однако большая часть работы сосредоточена на том, как сделать обучение GAN более стабильным.

GAN для самоуважения

Само внимание для генеративных состязательных сетей (SAGAN) является одной из таких конструкций. Недавно методы внимания успешно исследованы в таких проблемах, как машинный перевод. GAN для самоуважения имеют архитектуру, позволяющую Г моделировать зависимость на большом расстоянии. Ключевая идея – включить Г для изготовления образцов с подробной глобальной информацией.

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

Типичная Deep ConvNet изучает представление в a иерархическая мода. Для обычной классификации изображений ConvNet простые функции, такие как края и углы, изучаются на первых нескольких слоях. Тем не менее, ConvNets может использовать эти простые представления для изучения более сложных. Короче говоря, ConvNets изучают представления, выражающиеся в терминах более простых представлений. Следовательно, долгосрочной зависимости может быть тяжело научиться.

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

Посмотрите на эти образцы изображений:

0*Y6A44HjiaSmE1s0L
Кредиты: неконтролируемое обучение репрезентации по DCNN.

Эти изображения взяты из модели DCGAN, обучаемой в ImageNet. Как указано в GAN Self-Attention GAN, большинство содержимого изображения, не демонстрирующего сложных форм, выглядит хорошо. Иначе говоря, GAN обычно не испытывают проблем с моделированием менее структурного содержимого, такого как небо или океан.

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

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

Реализация

В общем, учитывая входные признаки в сверточный слой Лпервым шагом является превращение Л в трех разных представлениях. Мы сворачиваемся Л использование 1×1 свертки, чтобы получить три пространства признаков: f, gи ч.

Здесь мы используем f и g рассчитать внимание. Для этого объединяем линейно f и g с помощью матричного умножения. Результат подается в слой softmax.

0*IYNfvhOuMJcT1-3-
Кредиты: Self-Attention GANS.

Полученный тензор линейно комбинируется с ч и, наконец, масштабируется гамма. Примечание что гамма начинается с 0.

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

Также обратите внимание, что векторы признаков f и g имеют разные размеры ч. Собственно говоря, f и g использовать в восемь раз меньше сверточных фильтров, чем ч.

Вот полный код модуля самоуважения:

Спектральная нормализация

Ранее Миято и другие предложили методику нормализации под названием спектральная нормализация (SN). Несколькими словами, SN ограничивает константу липшицы сверточных фильтров. Авторы использовали SN как способ стабилизации обучения д сети. На практике это сработало очень хорошо.

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

Для решения проблемы медленного обучения и несбалансированных шагов обновления существует простой, но эффективный подход. Важно отметить что в рамках GAN, Г и д тренироваться вместе. В этом контексте Heusel и другие ввели правило двойного обновления (TTUR) в обучении GAN. Он состоит из предоставления разных скоростей обучения для оптимизации. Г и д.

здесь, д поездов со скоростью обучения в четыре раза больше Г — 0,004 и 0,001 соответственно. Это означает больший уровень обучения д будет поглощать большую часть градиентного сигнала. Следовательно, более высокая скорость обучения облегчает проблему медленного обучения д. Кроме того, такой подход позволяет использовать одинаковую скорость обновлений для Г и д. На самом деле мы используем интервал обновления 1:1 между Г и д.

Более того, данная работа показала, что хорошо кондиционированные генераторы причинно связаны с производительностью GAN. В связи с этим Self-Attention для GAN предложил использовать SN также для стабилизации обучения сети генераторов. Для ГСпектральная нормализация предотвращает увеличение параметров и избегает нежелательных градиентов.

Реализация

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

Однако применение декомпозиции сингулярных значений на каждом шаге может быть расширено в вычислительном плане. Вместо этого Miyato et al использует метод итерации мощности чтобы оценить SN каждого слоя.

Чтобы реализовать SN с помощью быстрого выполнения Tensorflow со слоями Keras, нам пришлось скачать и настроить файл convolutions.py. Полный код можно получить здесь. Ниже мы покажем сочные части алгоритма.

Для начала мы случайным образом инициализируем вектор u следующим образом:

self.u = K.random_normal_variable([1, units], 0, 1, dtype=self.dtype)

Как показано в алгоритме 1 ниже, вычисляется метод итерации мощности l2-расстояния между линейной комбинацией вектора u и сверточные ядра Wi. Кроме того, SN рассчитывается на основе ненормированных весов ядра.

0*5kW08LlQAMr4WmDo

Заметим, что при обучении значения ũ, рассчитанные на итерацию мощности, используются как начальные значения u на последующей итерации. Эта стратегия позволяет алгоритму получать очень хорошие оценки, используя только один раунд итерации мощности. Кроме того, чтобы нормализовать вес ядра, мы делим их на текущую оценку SN.

Детали тренировки

Мы научили индивидуальную версию SAGAN, используя SN и самовнимательность. Мы использовали Tensorflow tf.keras модуль и Eager execution API.

Г принимает случайный вектор z и создает изображение размером 128×128 RGB. Все слои, включая плотные слои, используют SN. Кроме того, Г использует пакетную нормализацию и активацию ReLU. Кроме того, он использует самовнимательность между картами объектов от среднего к высокому. Как и в оригинальной реализации мы разместили слой внимания, чтобы действовать на картах объектов с размерами 32×32.

д также использует спектральную нормализацию (все слои). Он принимает образцы изображений RGB размером 128×128 и выводит немасштабированную вероятность. Он использует неплотные ReLU с альфа-параметром 0,02. Люблю Гимеет слой самоуважения, работающий с картами признаков размеров 32×32.

0*x5mm4VjCiqTy3Jfh

Цель состоит в том, чтобы минимизировать шарнирную версию соревновательной потери. Для этого мы тренировались Г и д попеременно, используя оптимизатор Адама, для 200 тренировочных шагов.

0*2usKJJav9LSApkjL

Для этой задачи мы использовали набор данных Large-scale CelebFaces Attributes (CelebA).

Вот таковы результаты.

0*GXgPVwbtStMlNlGI

Спасибо, что прочли!

1*RzOHqzrJEIrB5ZY0nJAcvg

Первоначально опубликовано на sthalles.github.io.

Добавить комментарий

Ваш адрес email не будет опубликован.