Обучение без учителя - Часть 5

Расширенные методы GAN

Навигация

Это конспекты лекции FAU Глубокое обучение на YouTube. Это полный текст лекции и соответствующие слайды. Надеемся, вам понравится это не меньше, чем видео. Конечно, эта стенограмма была создана с помощью методов глубокого обучения в значительной степени автоматически, и были внесены лишь незначительные изменения вручную. "Попробуй сам!" Если вы заметили ошибки, сообщите нам об этом!

Ссылки

Предыдущая лекция / Посмотрите это видео / Верхний уровень / Следующая лекция

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

Одна уловка, которая может вам немного помочь, - это одностороннее сглаживание этикеток. Итак, что вы можете сделать, это заменить ваши цели реальных образцов сглаженной версией. Так. вместо вероятности, равной единице, вы используете вероятность 0,9. Вы не используете то же самое для поддельных образцов. Вы не меняете их ярлык, иначе это усилит неправильное поведение. Итак, ваш генератор будет создавать образцы, которые напоминают данные или образцы, которые он уже делает. Преимущества заключаются в том, что вы можете предотвратить получение дискриминатором очень больших градиентов для вашего генератора, а также предотвратить экстраполяцию для поощрения экстремальных выборок.

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

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

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

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

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

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

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

Таким образом, вы действительно можете использовать ограниченную генерацию с помощью этого трюка, чтобы сгенерировать что-то, для чего у вас потенциально нет условной переменной. Таким образом, GAN изучают представление о распределении, которое отделяет понятие пола от концепции ношения очков. Если вам интересны эти эксперименты, я рекомендую изучить [1].

Итак, давайте рассмотрим несколько более продвинутых методов GAN. Типичная проблема, которая может возникнуть, - это коллапс режима. Итак, если вы попытаетесь получить такое целевое распределение с несколькими центрами кластеров, которые распределены кольцевым образом в двумерном пространстве, то вы увидите, что может случиться так, что ваш генератор вращается по режимам распределения данных. Итак, вы делаете 5 000 шагов, 10 000 шагов, вплоть до 25 000 шагов, и начинаете переключаться между режимами. Проблема здесь, конечно, в том, что вы никогда не сходитесь к фиксированному распределению. Возможная причина может заключаться в том, что минимизация G по сравнению с максимизацией D не равна максимизации D по сравнению с минимизацией G. Итак, дискриминатор во внутреннем цикле сходится к правильному распределению, генератор во внутреннем цикле помещает вся масса по наиболее вероятной точке. На практике, если вы выполняете одновременный стохастический градиентный спуск обеих сетей, на самом деле могут появиться оба эффекта. Решения заключаются в использовании мини-дискриминации или развернутых сетей GAN.

Таким образом, различение мини-пакетов следует интуиции, позволяя D просматривать несколько образцов в комбинации, чтобы помочь генератору избежать коллапса. Итак, вы извлекаете объекты из промежуточного слоя, а затем добавляете слой мини-пакета, который вычисляет для каждого объекта сходство со всеми другими образцами мини-пакета. Вы объединяете вектор подобия с каждой особенностью. Затем вы вычисляете эти мини-пакетные функции отдельно для выборок из генератора и из обучающих данных. Ваш дискриминатор по-прежнему выводит 0 и 1, но использует сходство всех выборок в мини-партии в качестве дополнительной информации. Итак, это мини-пакетная дискриминация.

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

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

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

Вы также можете использовать GAN для обучения без учителя. Итак, идея состоит в том, чтобы использовать GAN, превратив проблему класса K в проблему класса K + 1. Здесь у вас есть настоящие классы, которые являются целевыми классами для обучения с учителем.

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

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

Вы тренируете генераторы, тренируя дискриминатор на каждом уровне. Входами для дискриминаторов являются изображения с различным масштабированием. Таким образом, вы постепенно уменьшаете размер изображения, а затем по уменьшенному изображению вы можете вычислить разностное изображение. Различное изображение между ними даст вам правильные высокие частоты. Вы тренируете дискриминатор таким образом, чтобы он мог отличать правильно сгенерированные высокие частоты от искусственно сгенерированных высоких частот. Итак, это тренировка LAPGAN, но у нас все еще есть только 64 на 64 пикселя.

Другая идея - StackGAN. Теперь это используется для создания фотореалистичных изображений из текста. Итак, задача в том, что у вас есть текст и создается подходящее изображение. Вы разбиваете проблему на уточнение эскиза с помощью двухэтапного условного GAN. Разумеется, здесь есть аналогия с тем, что, например, в человеческой живописи вы сначала делаете набросок, а затем рисуете мелкие детали. Итак, у вас есть два этапа. Один GAN, который рисует изображение с низким разрешением. Он обусловлен текстовыми описаниями и планирует приблизительную форму, основные цвета и фон данного текста. Затем GAN этапа II генерирует изображения с высоким разрешением на основе результата этапа I и текстовых описаний. Он исправляет дефекты и добавляет детали.

Итак, вот несколько примеров, когда у вас есть текстовое описание. Мы генерируем птиц здесь из описаний. Вы можете видеть, что поколению Stage-I все еще не хватает многих деталей. В поколении Stage-II исправлено множество проблем, возникших на этапе I, и вы можете видеть, что новые изображения имеют гораздо более высокое и лучшее разрешение. Вы можете увидеть всю статью в [20].

Подведем итог: GAN - это генеративные модели, которые используют контролируемое обучение для аппроксимации трудноразрешимой функции затрат. Вы можете моделировать множество различных функций затрат. На самом деле трудно найти равновесие между дискриминатором и генератором. Между прочим, он не может генерировать дискретные данные. Вы по-прежнему можете использовать его для полууправляемой классификации, трансферного обучения, мультимодальных выходов и передачи домена. Сейчас появляется много бумаг. Они также могут создавать выходные данные с высоким разрешением, такие как, например, BigGAN, которые делают изображения с действительно высоким разрешением.

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

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

У нас также есть несколько всеобъемлющих вопросов: в чем основная идея контрастного расхождения? Что определяет характеристику автокодировщика? Как работают шумоподавляющие автокодеры? Также не забывайте о вариационных автокодировщиках. Я думаю, что это очень крутая концепция, и трюк с повторной параметризацией говорит нам, как можно распространять обратное распространение через процесс выборки, что довольно круто. Конечно, вам следует изучить GAN. Что такое оптимальный дискриминатор? В чем проблема коллапса режима? Я особенно рекомендую вам взглянуть на Cycle GAN. Итак, Cycle GAN сейчас очень, очень популярны. Они действительно хороши, потому что вы можете решать такие вещи, как перевод непарных доменов. Это используется во многих, многих различных приложениях. Итак, вам следует знать об этих методах, если вы действительно хотите указать в своем резюме, что у вас есть опыт глубокого обучения. Тогда вы должны знать о таких методах. Что ж, есть еще кое-что. Есть очень приятный разговор о вариационных автокодировщиках, которые мы связываем здесь. Есть отличный учебник по GAN от Гудфеллоу - отца GAN. Так что рекомендую посмотреть это видео здесь. Затем у нас есть еще несколько уловок, которые вы можете найти здесь, в хаках GAN. Если вы когда-нибудь хотели, как назвать свою GAN, то можете взглянуть на эту ссылку. Конечно, у нас также есть много ссылок, и я очень рекомендую просмотреть их все. Итак, большое спасибо за просмотр этого видео. Надеюсь, вам понравился наш небольшой обзор генеративных состязательных сетей, и с нетерпением жду встречи с вами в следующем. Большое спасибо и до свидания!

Если вам понравился этот пост, вы можете найти больше эссе здесь, больше образовательных материалов по машинному обучению здесь или взглянуть на нашу Лекцию Глубокое обучение. Я также был бы признателен за подписку на YouTube, Twitter, Facebook или LinkedIn, если вы хотите получать информацию о новых эссе, видео и исследованиях в будущем. Эта статья выпущена под лицензией Creative Commons 4.0 Attribution License и может быть перепечатана и изменена при наличии ссылки. Если вас интересует создание стенограмм видеолекций, попробуйте Автоблог.

использованная литература

Link - вариационные автоэнкодеры:
Link - NIPS 2016 GAN Tutorial of Goodfellow
Link - Как обучить GAN? Советы и уловки, как заставить GAN работать (осторожно,
все верно!)
Ссылка - Вы когда-нибудь задумывались, как назвать свою GAN?

[1] Си Чен, Си Чен, Янь Дуань и др. «InfoGAN: обучение интерпретируемым представлениям с помощью информационных сетей, обеспечивающих максимальную эффективность генеративных состязательных сетей». В: «Достижения в системах обработки нейронной информации» 29. Curran Associates, Inc., 2016, стр. 2172–2180.
[2] Паскаль Винсент, Хьюго Ларошель, Изабель Ладжуа и др. «Составные автокодеры шумоподавления: изучение полезных представлений в глубокой сети с локальным критерием шумоподавления». В: Journal of Machine Learning Research 11. Dec (2010), pp. 3371–3408.
[3] Эмили Л. Дентон, Сумит Чинтала, Артур Шлам и др. «Глубокие генеративные модели изображений с использованием лапласовской пирамиды состязательных сетей». В: CoRR abs / 1506.05751 (2015). arXiv: 1506.05751.
[4] Ричард О. Дуда, Питер Э. Харт и Дэвид Г. Сторк. Классификация паттернов. 2-е изд. Нью-Йорк: Wiley-Interscience, ноябрь 2000 г.
[5] Ася Фишер и Кристиан Игель. «Обучение ограниченным машинам Больцмана: Введение». В: Распознавание образов 47.1 (2014), стр. 25–39.
[6] Джон Готье. Условные генеративные состязательные сети для генерации лиц. 17 марта 2015 г. URL: «http://www.foldl.me/2015/conditional-gans-face-generation/» (посещение 22.01.2018).
[7] Ян Гудфеллоу. Учебное пособие NIPS 2016: Генеративные состязательные сети. 2016. eprint: arXiv: 1701.00160.
[8] Мартин Хойзель, Хуберт Рамзауэр, Томас Унтертинер и др. «Сети GAN, обученные правилом обновления двух шкал времени, сходятся к локальному равновесию по Нэшу». В: Достижения в системах обработки нейронной информации 30. Curran Associates, Inc., 2017, стр. 6626–6637.
[9] Джеффри Э. Хинтон и Руслан Р. Салахутдинов. «Уменьшение размерности данных с помощью нейронных сетей». В: Science 313.5786 (июль 2006 г.), стр. 504–507. arXiv: 20.
[10] Джеффри Э. Хинтон. «Практическое руководство по обучению ограниченных машин Больцмана». В: Neural Networks: Tricks of the Trade: Second Edition. Берлин, Гейдельберг: Springer Berlin Heidelberg, 2012, стр. 599–619.
[11] Филип Изола, Цзюнь-Ян Чжу, Тинхуэй Чжоу и др. «Преобразование изображения в изображение с использованием сетей с условным противодействием». В: (2016). eprint: arXiv: 1611.07004.
[12] Дидерик П. Кингма и Макс Веллинг. «Автоматическое кодирование вариационного Байеса». В: arXiv e-prints, arXiv: 1312.6114 (декабрь 2013 г.), arXiv: 1312.6114. arXiv: 1312.6114 [stat.ML].
[13] Джонатан Масчи, Ули Мейер, Дэн Чиресан и др. «Сложенные сверточные автокодеры для извлечения иерархических признаков». В: Искусственные нейронные сети и машинное обучение - ICANN 2011. Берлин, Гейдельберг: Springer Berlin Heidelberg, 2011, стр. 52–59.
[14] Люк Мец, Бен Пул, Дэвид Пфау и др. «Развернутые генеративные состязательные сети». В кн .: Международная конференция по обучающимся представлениям. Апрель 2017 г. eprint: arXiv: 1611.02163.
[15] Мехди Мирза и Саймон Осиндеро. «Условно порождающие состязательные сети». В: CoRR abs / 1411.1784 (2014). arXiv: 1411.1784.
[16] Алек Рэдфорд, Люк Мец и Сумит Чинтала. Обучение неконтролируемому представлению с помощью Deep Convolutional Generative Adversarial 2015. eprint: arXiv: 1511.06434.
[17] Тим Салиманс, Ян Гудфеллоу, Войцех Заремба и др. «Улучшенные методы обучения GAN». В: Достижения в системах обработки нейронной информации 29. Curran Associates, Inc., 2016, стр. 2234–2242.
[18] Эндрю Нг. «CS294A Конспект лекций». В: 2011.
[19] Хан Чжан, Тао Сюй, Хуншэн Ли и др. «StackGAN: синтез текста в фотореалистичное изображение с помощью составных генерирующих состязательных сетей». В: CoRR abs / 1612.03242 (2016). arXiv: 1612.03242.
[20] Хан Чжан, Тао Сюй, Хуншэн Ли и др. «Stackgan: синтез текста в фотореалистичное изображение с помощью сложенных генеративных состязательных сетей». В: препринт arXiv arXiv: 1612.03242 (2016).
[21] Болей Чжоу, Адитья Хосла, Агата Лапедриза и др. «Изучение глубоких функций для дискриминационной локализации». В: Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR), 2016 г. Лас-Вегас, июнь 2016 г., стр. 2921–2929. arXiv: 1512.04150.
[22] Джун-Ян Чжу, Парк Тэсун, Филип Изола и др. «Непарный преобразование изображения в изображение с использованием согласованных с циклом состязательных сетей». В: CoRR abs / 1703.10593 (2017). arXiv: 1703.10593.

Обучение без учителя - Часть 5