Примечание: это контент с 2017 года.

В этом посте описывается теория, лежащая в основе недавно представленного BEGAN.

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

Вы можете оставить комментарий на странице Reddit, связанной с этим сообщением, или на странице Reddit, связанной с газетой.

Причина, по которой это интересно

Генеративные состязательные сети (GAN) достигли впечатляющих (и часто передовых) результатов в различных областях, таких как:

  • Генерация изображений с помощью Улучшенных сетей WGAN (Гульраджани и др., 2017)
  • Редактирование изображений с помощью Neural Photo Editors (Brock et al., 2016)
  • Сверхразрешение с SRGAN (Ледиг и др., 2016)
  • Полу-контролируемое обучение с BiGAN (Донахью и др., 2016)
  • Адаптация домена с помощью CycleGANs (Чжу и др., 2017)
  • и т.п.

Мы, в Heuritech, стремимся использовать эти модели (и многие другие), чтобы помочь потребителям, поисковикам, корпорациям и студентам удовлетворить их повседневные потребности в глубоком обучении. Большая часть нашего внимания и исследователей в настоящее время находится в мире моды и компьютерного зрения.

НАЧАЛОСЬ

Недавно наш интерес привлекла новая архитектура GAN (Boundary Equilibrium GAN), которая успешно генерирует анатомически когерентные лица с разрешением 128 × 128 пикселей. По состоянию на начало апреля 2017 года это текущее состояние дел. Посмотри:

Основная цель

Все дело в уменьшении потерь в сетях.

Ранее было показано, что первая архитектура GAN минимизирует расхождение Кульбака-Лейблера между реальным распределением данных P x и сгенерированным распределением данных Pg. К сожалению, попытка минимизировать это расстояние приводит к тому, что дискриминатор D дает бессмысленные градиенты генератору G, если D слишком быстро становится слишком хорошим.

С тех пор несколько публикаций сосредоточили свои усилия на поиске более эффективных функций потерь:

  • Улучшенный Вассерштейн GAN (начиная с его первой версии) минимизирует расстояние Вассерштейна (также называемое расстоянием от Земли до Земли), давая сетям очень простые градиенты (+1, если результат следует считать действительным, и -1, если вывод следует считать фейком).
  • Метод наименьших квадратов GAN использует функцию потерь наименьших квадратов, чтобы минимизировать расхождение Пирсона x2 между выходом D и его целью.
  • Generalized Loss Sensitive GAN использует дискриминатор, который количественно определяет качество изображений. Затем вычисляются потери как функция расстояния между качеством реальных и сгенерированных изображений (что позволяет модели больше сосредоточиться на улучшении плохих образцов, чем хороших образцов).

Основная цель BEGAN - также изменить функцию потерь. На этот раз это достигается путем создания D автоэнкодера. Потери зависят от качества реконструкции, достигаемого D на реальных и сгенерированных изображениях. Эта идея (создания D автоэнкодера) вдохновлена ​​Energy-Based GAN (EBGAN). Ниже представлена ​​архитектура EBGAN, бесстыдно скопированная с бумаги:

Идея

Начнем с выяснения чего-то важного. Потеря реконструкции - это не то же самое, что реальная потеря, которую сети пытаются минимизировать. Потеря реконструкции - это ошибка, связанная с реконструкцией изображений с помощью автокодировщика / дискриминатора. В схеме EBGAN потеря реконструкции обозначается как «Dist», а реальная потеря обозначается как как «L».

Основная идея BEGAN заключается в том, что сопоставление распределений потерь при реконструкции может быть подходящим прокси для сопоставления распределений данных. Реальные потери затем выводятся из расстояния Вассерштейна между потерями при реконструкции реальных и сгенерированных данных. Позже сети обучаются с использованием этих реальных потерь в сочетании с членом равновесия для баланса D и G.

Тренировка

Обучение проходит так:

  1. D (автокодировщик) лучше и лучше восстанавливает реальные изображения. Иными словами, веса D обновляются, чтобы минимизировать потери при реконструкции реальных изображений.
  2. D одновременно увеличивает потери при реконструкции сгенерированных изображений.
  3. И G работает против этого, сводя к минимуму потери при реконструкции сгенерированных изображений.

Пункты 1 и 2 можно перефразировать как «D пытается различать реальные и сгенерированные распределения». Итак, G может добиться успеха с пунктом 3 только путем создания более реалистичных изображений.

Получение убытка

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

Если мы используем норму L1 между входным изображением D и его реконструированной версией, тогда распределение потерь, называемое

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

Математически это расстояние Вассертейна:

с участием:

а также

представляющие собой распределения потерь восстановления реальных и сгенерированных изображений.

а также

- средние значения, связанные с распределением потерь.

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

В конце концов, это упрощенное расстояние, которое мы хотим минимизировать:

И из этой формулировки мы можем вывести цель GAN.

Полная цель НАЧАЛА

Потери при реконструкции

а также

может быть только положительным, так как D хочет максимизировать расстояние

между проигрышами у него есть только два варианта:

либо (случай 1) ему необходимы:

а также

или (случай 2) необходимо:

а также

Случай 1, конечно, не имеет смысла, потому что мы хотим, чтобы mreal перешло в 0 (реальные изображения должны быть реконструированы идеально). Мы можем усилить случай 2, применив следующую функцию потерь к

G может противодействовать этому, пытаясь свести к минимуму:

В конце концов, эти потери (которые не являются окончательными) очень похожи на потери WGAN, за исключением:

  • что мы сопоставляем распределения между потерями,
  • и нет необходимости, чтобы дискриминативная функция была k-липшицевой.

Но это еще не конец истории.

В следующем разделе мы опишем второй основной вклад статьи BEGAN: коэффициент разнообразия:

Короче говоря, его роль заключается в том, чтобы уравновесить потери.

а также

для стабилизации тренировки. Это делается адаптивным способом, во время обучения, с помощью его суррогата kt.

Вот полная цель НАЧАЛА:

В этой формулировке:

  • LD и LG - соответствующие потери для D и G (которые они пытаются минимизировать).
  • LD используется только для оптимизации 0D, а LG используется только для оптимизации OG.
  • L (x) и L (G (z)) - потери восстановления реальных и сгенерированных изображений.
  • Y - коэффициент разнообразия (в (0,1)), определенный ранее как:

  • kt - это адаптивный термин, который позволит нам автоматически уравновесить убытки.
  • ʎ - пропорциональный прирост для тыс. тонн (также известный как скорость обучения для тыс. тонн)

Срок равновесия

Что мы стремимся сделать сейчас, так это уравновесить потери, как мы хотим. Это поможет нам контролировать равновесие между G и D в реальном времени, стабилизировать обучение, получить приблизительную оценку сходимости и отрегулировать компромисс между разнообразием изображений и реализм с одним гиперпараметром. Магия!

Потери при реконструкции считаются равновесными, если:

И дело в том, что мы не хотим, чтобы это равновесие когда-либо было достигнуто, потому что это означало бы, что D становится неспособным отличить сгенерированные образцы от реальных. Иначе говоря, это означало бы выигрыш G. Чтобы обучение проходило гладко, ни одна из сетей не должна преобладать над другой.

Стратегия состоит в том, чтобы определить соотношение Y между двумя потерями.

Y называется коэффициентом разнообразия, и он должен быть в [0,1].

Он всегда положительный, потому что потери при реконструкции всегда положительны. И он ниже 1 на практике, потому что мы собираемся это сделать - потому что мы хотим иметь:

\ mathcal {L} (G (z)) «title =« \ mathcal {L} (x) ›\ mathcal {L} (G (z))« / ›.

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

D преследует 2 конкурирующие цели: автоматически кодировать реальные изображения и отличать реальные изображения от сгенерированных. Y помогает нам сбалансировать эти цели:

  • Меньшие значения Y приводят к

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

  • Более высокие значения Y приводят к

что означает, что D больше фокусируется на своей задаче распознавания, что означает, что у G есть стимул к созданию более разнообразных изображений (столь же разнообразных, как и набор данных), что может происходить за счет Качество изображения.

Посмотрите, что происходит с разными значениями гиперпараметра Y:

Уравновешивание потерь

В настоящее время стратегия состоит в том, чтобы поддерживать соотношение Y между двумя потерями при реконструкции с течением времени. На практике мы можем контролировать Y, добавляя адаптивный термин kt.

Что делает kt адаптивным, так это то, что называется «теорией пропорционального управления». Это красивое название для описания того, что вы делаете, когда едете с постоянной скоростью. Если вы едете слишком быстро, вы замедляетесь пропорционально тому, насколько быстрее (чем крейсерская скорость) вы движетесь. Если вы едете слишком медленно, вы ускоряетесь пропорционально тому, насколько медленнее (чем крейсерская скорость) вы движетесь.

Здесь соотношение, которое мы хотим поддерживать (скорость автомобиля), - это соотношение Y, определяемое как:

Итак, в идеальном мире мы должны иметь именно это во время обучения:

что эквивалентно:

На практике:

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

Теперь, когда у нас есть эта информация, нам нужно динамически контролировать это соотношение во время тренировки (нам нужно поддерживать правильную скорость во время вождения). И фактор, который контролирует это соотношение:

по формуле:

Kt адаптируется в правильном направлении следующим образом:

где ʎ - это скорость обучения, которая со временем меняется на kt.

ʎ также называется пропорциональным усилением для k, и на практике (в экспериментах) оно установлено на 0,001.

Именно такая формулировка K t оправдывает полную цель BEGAN, представленную выше.

Последствия балансировки D и G во время тренировки

Процедура обучения: в большинстве сетей GAN D и G обучаются поочередно. В данном случае это не. Их можно обучать одновременно на каждом временном шаге, поскольку D и G автоматически уравновешиваются. Обучение по-прежнему соперничает, оно просто одновременное.

Нет необходимости, чтобы Kt отображался в LG.

Это связано с тем, что соотношение Y (которое контролирует K t) необходимо для уравновешивания целей D. Это не имеет ничего общего с генератором, который преследует только одну цель. Короче говоря, G делает свое дело, а D адаптируется. D адаптирует, насколько он хочет сосредоточиться на своей задаче распознавания (в этом случае D становится лучше быстрее, чем G) по сравнению с его автокодированием. задача (в этом случае G становится лучше быстрее, чем D).

Мера сходимости

Удобное следствие этой формулировки BEGAN состоит в том, что она делает возможным вывод приближенной меры сходимости.

Давайте посмотрим на полную цель BEGAN с другой точки зрения:

  1. L (x) должен стать равным 0, так как изображения восстанавливаются все лучше и лучше после каждого временного шага.

2.

должен оставаться близким к 0 (чтобы потери были сбалансированы).

Комбинация обеих точек означает, что потери при реконструкции становятся ближе к 0 (и, следовательно, друг к другу). Это означает, что у D все больше и больше проблем с увеличением расстояния между

а также

минимизируя

Иными словами, задача отличить реальное от созданных изображений со временем становится все труднее. И есть только один способ, которым это происходит: G становится лучше!

Короче говоря, комбинация (1) и (2) означает, что

переходит в 0 и что

приближается к

А теперь самое интересное: (1) и (2) имеют такие простые формы, что мы можем просто сложить их, чтобы получить следующую меру сходимости:

Почему это круто? Потому что трудно найти глобальные меры конвергенции GAN. В типичной настройке GAN ее нет, и, насколько мне известно, ее предоставляет только WGAN.

Но теперь есть способ узнать, сходится ли сеть или рушится:

Важные детали реализации

Архитектура модели:

  • И генератор, и декодер - это глубокая деконволюция с идентичной архитектурой, но разным весом. Кодер и декодер имеют «противоположные» архитектуры.
  • Понижение частоты дискретизации выполняется с помощью строгих сверток, как и в DCGAN (см. Этот замечательный пост в блоге для объяснения того, что такое поперечные свертки).
  • Повышение частоты дискретизации выполняется с помощью ближайших соседей.
  • Нелинейности представляют собой экспоненциальные линейные единицы (ELU) (в отличие от комбинации ReLus и LeakyReLus в DCGAN).
  • Состояние внедрения h (также известное как узкое место автоэнкодера) не связано с нелинейностями.
  • z (случайный ввод G) выбирается равномерно в

Интерполяция: для отображения интерполяций реальных изображений в скрытом пространстве (рис. 4) авторам необходимо было получить встраивание z реальных изображений. Это делается путем обучения непосредственно на z, предоставляя реальное изображение в качестве цели генератора. В этом случае минимизируется потеря L1 (между сгенерированным изображением и целевым изображением):

h нельзя использовать вместо z, потому что нет ничего, что заставляло бы h сходиться к z.

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

Секретный трюк: На Рисунке 2 статьи авторы поместили бок о бок результаты EBGAN и BEGAN. Результаты BEGAN выглядят намного лучше, чем результаты EBGAN, но следует помнить, что модели были не обучены на одних и тех же наборах данных.

Красота

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

Лица, созданные BEGAN, не только визуально реалистичны, они также кажутся очень привлекательными (авторы даже утверждают, что видели мало пожилых людей и больше женщин, чем мужчин). Насколько я понимаю, G мог бы разработать хорошее представление «среднего» лица, чтобы быть более эффективным, и красота созданных лиц могла быть следствием этого.

Очки забрать домой

Что умеет BEGAN:

  • Это делает возможным создание «первых анатомически когерентных» изображений лица с разрешением 128 × 128.
  • Его сходимость быстрая и стабильная даже при отсутствии нормы партии.
  • Он также предлагает приблизительную меру сходимости.

Как работает BEGAN:

  • BEGAN использует автоэнкодер в качестве дискриминатора (как и в EBGAN).
  • Потери, использованные для обновления

а также

являются функцией качества реконструкции, достигаемой с помощью D.

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

Бонус: BEGAN против улучшенного WGAN

НАЧАЛО или Улучшенная WGAN, что лучше?

Во-первых, у них много общего:

  • Обе модели имеют процедуру обучения, которая приводит к быстрой и стабильной сходимости.
  • Обе модели позволяют приблизительно оценить, насколько эффективным становится G с течением времени.
  • И обе модели успешно избавляют от необходимости использовать пакетную нормализацию в D.

Улучшенный документ WGAN впечатляет в основном потому, что:

  • Авторам удалось избежать проблемы исчезающего / взрывающегося градиента, добавив ограничение на норму градиентов.
  • И они обучили множество различных архитектур GAN, включая 101-слойные сети ResNets, а также языковую модель для дискретных данных.

Бумага BEGAN впечатляет прежде всего тем, что:

  • Авторы пытаются сделать совпадение распределений потерь (возражая против согласования распределений данных).
  • Это приводит к способу автоматического баланса G и D во время обучения, а также разнообразия изображений и визуального качества.

Так какой из них лучше? Неважно. Все - победители!

Сноска

Автор благодарит Чарльза Оллиона за его очень проницательные комментарии и советы.

Вот страница Reddit, связанная с бумагой.

Примечание: эта статья была первоначально опубликована в апреле 2017 года.

Первоначально опубликовано на https://lab.heuritech.com.