Эта статья перенесена из личного паблика: Программисты и машинное обучение
Мотивация для GAN
Чтобы понять GAN, начните с названия:Генеративно-состязательная сеть Генеративно-состязательная сеть
- Генерация: описывает проблему, которую может решить GAN, создает изображение или абзац и т. д.
- Adversarial: описывает, как работают сети GAN.
**Два основных компонента GAN: Генератор, Дискриминатор. ** Цель генератора — попытаться сгенерировать реальные изображения, чтобы обмануть дискриминатор, а цель дискриминатора — попытаться отличить изображения, сгенерированные генератором, от реальных изображений, что представляет собой процесс двухклассовой классификации.
Отношения между ними отражают враждебные отношения в GAN. Например, ** Это похоже на то, когда мы отправляем статью, мы Генератор, а рецензент — Дискриминатор. ** Статья похожа на модель, которую мы хотим изучить, каждый раз, когда мы отправляем рукопись, она эквивалентна выходу Generator, а рецензент действует как дискриминатор, оценивая нашу работу. У рецензентов есть свои критерии оценки, поэтому каждый раз, когда мы вносим изменения в статью как генератор, мы приближаемся к стандартам рецензента После нескольких раундов рецензирования и доработки, пока рецензент не будет удовлетворен. Обратите внимание, что во время этого процесса, когда мы редактируем статью, рецензент больше не может рецензировать нашу статью; пока рецензент рецензирует, мы не можем одновременно редактировать статью.
Теперь мы опишем основной поток GAN. Генератор(),Discriminator()
-
инициализацияпараметры,параметры
-
Повторить:
-
Собрать в набор данныхобразцы (вектор)
-
вкакая-то раздача(как нормальное распределение)сэмплы шума
-
проходитьГенерация данных
-
проходитьмаксимизироватьСледующие обновления целевой функциипараметры,В настоящее времяПараметры фиксированы:
-
-
-
-
**Первый элемент целевой функции: **ПриростОценка образцов в наборе данных должна установить точку отсчета в сознании рецензентов.
**Второй член целевой функции: **уменьшитьправильноОценка сгенерированного образца, то есть рецензент продолжает вносить предложения (находить недостатки) в нашей рукописи.
-
вкакая-то раздача(как нормальное распределение)сэмплы шума, выборка здесь не обязательно должна быть такой же, как предыдущая выборка.
-
Обновление путем максимизации следующей целевой функциипараметры,В настоящее времяПараметры фиксированы:
Целевая функция: Увеличить оценку D на выборках, сгенерированных G, то есть мы должны усердно работать, чтобы пересмотреть нашу статью, чтобы сделать рецензентов более удовлетворенными.
-
ПочемуВы не можете учиться самостоятельно, вместо того, чтобы полагаться на этосуждение?
Мы предполагаем, что эта схема осуществима, и надеемся,Учимся выводить изображение числа 8 средствамиНеобходимо правильно вывести изображение числа 8 для любого входа. Однако перед лицом такого случайного входного вектораТрудно контролировать свой результат. Поэтому мы также надеемся, что все изображения числа 8 будут иметь схожие векторные представления. Для этого можно узнать через другую сеть и, наконец, надеятьсяПолученное изображение может быть достаточно похоже на оригинал. который:
На самом деле этокаксередина.Структура на приведенном выше рисунке (взято из «Глубокого обучения сотен лиц»), то естьКлассические дифференцируемые генеративные сети.
Следующий контент взят из «Глубокого обучения сотен лиц».
стандартныйкодероми декодерОн состоит из двух частей, как показано выше. Всю модель можно рассматривать как процесс «сжатия» и «распаковки»: сначала кодировщик преобразует реальные данные (реальные образцы)Сжатый в скрытый вектор в маломерном скрытом пространстве, вектор можно рассматривать как «сущность» ввода. Затем декодер преобразует этот скрытый векторРазархивируйте, чтобы получить сгенерированные данные (сгенерированные образцы). Во время обучения будут генерироваться образцыреальный образецСделайте сравнение, обновите параметры кодировщика и декодера в направлении уменьшения разницы между ними, и конечная цель — ожидать реальных образцов.Сжатый скрытый векторМожет максимально уловить суть входных данных, чтобы сгенерированные сэмплы реконструировались из них.с реальными образцамикак можно ближе.
Вот немного больше понимания, поэтому эта скрытая переменнаятак важно.
Мы знаем, что картинка хранится в виде матрицы в компьютере. Например, в изображении числа 8 8, написанное каждым человеком, разное, то его матрица будет очень разной и найти какие-то правила сложно. скрытая переменнаяЧто я хочу сделать, так это использовать простейший вектор для представления всех функций изображения.Например, у нас есть 2-мерный вектор для представления цифрового изображения, тогда идеальное представление: [Это число 8, 24 градусов влево]. Наверное это имеется в виду.
назадв обсуждении,В чем проблема? Глядя на его структуру обучения, можно обнаружить, что он может генерировать скрытую переменную только для текущего изображения.и сгенерированные данные. такЕсть хороший шанс, что он не будет распространяться на невидимые изображения. Другими словами, он будет только имитировать, но не создавать, и не может генерировать произвольные новые образцы.
в видеОбновить,РешениеТолько имитируйте проблемы, которые не создают. На картинке нижеФреймворк, взятый из "Hundred Faces Deep Learning"
Следующий контент взят из «Глубокого обучения сотен лиц».
Основным преимуществом является возможность генерировать новые скрытые векторы, а затем сгенерируйте допустимые новые образцы.Возможность генерировать новые образцы (сСамая большая разница) в том, что,В процесс кодирования добавляются некоторые ограничения, вызывающие апостериорное распределение скрытых векторов, создаваемых кодировщиком.Постарайтесь максимально приблизиться к определенному распределению (например, нормальному распределению).Цели оптимизации процесса обучения включают ошибку реконструкции и апостериорное распределение.Ограничения этих двух частей.Выход кодировщика больше не является вектором в скрытом пространстве, а представляет собой среднее значение и стандартное отклонение нормального распределения, а затем скрытый вектор выбирается в соответствии со средним значением и стандартным отклонением.. Из-за случайности выборки каждое входное изображениеРезультирующее сгенерированное изображение больше не является уникальным, есливыбирается из нормального распределения в скрытом пространстве, и результирующее изображение является достоверным.
Кодер, который вычисляет среднее значение вКодировщик в и кодер, вычисляющий стандартное отклонение, эквивалентны добавлению шума в процесс реконструкции, что делает декодер более устойчивым к шуму.Когда шум равен 0,выродиться в.
противидеи, мы продолжаем общаться.
Например, если мы хотим сгенерировать изображение лица, то фактически лицо имеет общую характеристику, отличную от других частей или других объектов, то есть есть некая характеристика распределения, относящаяся к категории лица. Определим это распределение как. Тогда, если мы будем делать выборку в этом распределении, существует высокая вероятность выборки разумного изображения лица.Конечно, также возможно выбрать очень плохое изображение лица в области с низкой вероятностью или вообще не изображение лица. Итак, проблема, которую мы хотим решить, состоит в том, как точно описать это неизвестное распределение с помощью выборки.
На этот раз мы подумалиоценка максимального правдоподобия.Используя результаты выборки, найдите значения параметров модели, которые с наибольшей вероятностью могут привести к возникновению этих результатов выборки.
Мы можем использовать известный нам дистрибутивприближать. ищалучшие параметрымаксимизировать:
Теперь обратите внимание на следующий вывод:
Найдите, что максимальная вероятность эквивалентна минимизации расхождения KL. Это означает, что мы ищем, делая его таким же, какРасхождение KL минимально возможно.
Ограничение оценки максимального правдоподобия состоит в том, что когдаБудет трудно рассчитать, когда очень сложно. и** Приведенное решение состоит в том, чтобы использовать нейронную сеть для определения распределения вероятностей.. **который.
Как мы упоминали ранее,Входные данные представляют собой выборку распределения, обратитесь к оценке максимального правдоподобия дляоптимизация параметров,через нейросетевой модуль, который преобразует одно распределение в качестве входных данных в другое, более близкое кРаспределение. Эта мотивация может быть выражена как минимизация расхождения между ними:
Теперь вопрос в том, как измеритьиКак насчет расхождения (различия) между?предложил использовать другой сетевой модуль дляиИдея подсчета очков заключается в том, что этот модуль оценивает свои. На самом деле, это по существуПроцесс выполнения бинарной классификации.
Проверьте, прежде чем мы обновимЦелевая функция с параметрами в , что эквивалентно максимизации:
Предположим здесьМожет быть любой функцией, может получить любую. Кроме того, баллы на самом делесуперпозиция в , так что мы можем положить каждыйПосчитать отдельно, то есть отдельно посмотреть на содержание знака интеграла. Итак, у нас есть:
Чтобы найти экстремальное значение, даВывод может быть получен. Подставьте его в приведенную выше целевую функцию, чтобы получить следующий вывод:
Как видно из приведенного выше вывода,Целевая функция на самом деле является дивергенцией JS.
мы упоминали вышемотивация, после обновленияПосле параметров максимизируемоеиПосле разности мотивация может быть заменена эквивалентной. Этоигра, в процессеиЦель противоположная, означающая «противостояние». Благодаря методу конфронтационного обучения генератор и дискриминатор поочередно оптимизируются, растут вместе и, наконец, превращаются в две равномерно подобранные электростанции.Базовая структура:
Давайте разберем это на примереигра. Предположим, мы можем настроить три раза, соответственно. для каждого, у нас есть абсцисса как, ординатасистему координат, как показано на рисунке ниже.
Первый шаг, который нам нужно исправитьпараметры для выбора лучшегопараметры, наблюдайте за тремя картинками, очевидно, что каждая картинка имеет свой оптимальныйзначения, как показано точками на рисунке. Это.
На втором шаге нам нужно исправитьпараметры для выбора лучшего, даже если вы решите использоватьсамый маленький. Это.
После двух вышеуказанных шаговиВсе параметры обучены, и этот пример относительно интуитивно понятен и прост для понимания.
Проблемы с GAN
(Узнайте здесь или выдержка из «Глубокого обучения сотен лиц»)
Как упоминалось ранее, дискриминатор подобен бинарному классификатору, выдающему 1 для реальных выборок и 0 для сгенерированных выборок. мы видимцель оптимизации, который можно рассматривать как процесс минимизации перекрестной энтропийной потери (максимизация логарифмической функции правдоподобия задачи классификации). Эта целевая функция теоретически проблематична. В начале обучения на вход генератора подается случайный шум, который принципиально отличается от реальных данных.В это время для двухклассового дискриминатора эта двухклассовая задача просто слишком проста (Представьте, что главный редактор отказывается от острой курицы, и даже не хочет отправлять ее на рассмотрение.), дискриминатор может различить их с высокой уверенностью, в это времяНасыщение достигается, градиент исчезает, и генератор не может быть обеспечен достаточно большим градиентом.
Как было сказано выше, когда генераторКогда параметры фиксированы, функция потерь генератора при оптимальном дискриминаторе имеет вид:. **когдаиКогда два распределения (почти) не перекрываются,Дивергенция постоянная. **Затем вНасколько велико перекрытие между ними? Генератор обычно выбирает вектор из пространства низкого порядка (например, 128 измерений) и отображает его в пространство высокого размера (например,Изображение 1024-мерное), поэтому сгенерированные данные представляют собой просто многообразие низкого порядка в пространстве высокого порядка (например, все возможности генерации отсчетов в приведенном выше 1024-мерном космическом изображении фактически ограничены 128-мерным пространством). размерный входной вектор). Точно так же реальное распределение также является маломерным многообразием в многомерном пространстве Вероятность встречи двух маломерных многообразий в многомерном пространстве в таком «малонаселенном» пространстве близка к 0, поэтому сгенерированное распределение: истинное распределение почти не перекрывается. Следовательно, будет проблема исчезновения градиента, упомянутая в предыдущем абзаце.
Чтобы решить эту проблему, вы можетезаменить. Это обеспечивает больший градиент для генератора в начале обучения. Однако это также проблематично в теории.Давайте посмотрим на следующий вывод:
Удаление нескольких членов, не связанных с генератором, минимизация этой функции потерь эквивалентно минимизации расхождения KL истинного распределения и сгенерированного распределения при одновременном увеличении расхождения JS обоих. Такие противоречия вызовут нестабильность градиента во время обучения. Кроме того, из-за асимметрии расходимости KL будут несовместимые штрафы за ошибки генератора. Эта проблема непоследовательного штрафа означает, что распределение реальных данных часто бывает сложным и мультимодальным, распределение данных будет иметь множество закономерностей, а сходные выборки принадлежат одной закономерности. Поскольку штраф непостоянен, штраф для режима А может быть намного меньше, чем штраф для других режимов, поэтому генератор будет генерировать только выборки режима А, вызывая коллапс режима. В этот момент генератору не хватает разнообразия, что может вызвать, а KL-дивергенция целевой функции приближается к 0. И когда генератор генерирует нереальные сэмплы, штраф будет стремиться к бесконечности.