Взгляните на недавнюю захватывающую статью Массачусетского технологического института Дифференцируемое расширение для эффективного обучения GAN с точки зрения данных.

Необходимое условие для понимания этой статьи: вы обучили GAN или понимаете общие трудности, возникающие при обучении GAN, такие как переобучение дискриминатора на обучающих данных. В противном случае прочтите эту статью и эту статью или потратьте пару часов на поиск в GAN самостоятельно. А потом возвращайтесь сюда и наслаждайтесь этой статьей!

Итак, вы читали о GAN. Может быть, вы даже тренировали его. Может быть, вы пробовали тренировать кого-то и наблюдали, как потери дискриминатора все уменьшаются и уменьшаются, и «БУМ!» Вы переобучились на тренировочных данных. Вы распечатываете 100 изображений, и 50 из них - это то же самое искаженное изображение золотистого ретривера. Вы пошли к своему профессору, может быть, со слезами на глазах, и вы заявили:

«РЕЖИМ ОБНАРУЖИВАЕТСЯ, ЧТО ДЕЛАТЬ?»

«Добавьте больше данных», - говорит ваш профессор. «И, может быть, вздремнуть».

Не бойся! Недавняя статья Дифференцируемое расширение для обучения GAN, эффективное использование данных от Массачусетского технологического института утверждает, что это ваше спасение или, по крайней мере, его часть (Zhao, Liu, Lin, Zhu & Han, 2020). В документе утверждается, что требуется меньше данных, но при этом достигаются самые современные результаты с использованием особого вида увеличения данных, называемого дифференцируемым увеличением. В этом сообщении в блоге я проливаю чай на эту бумагу (что, если вы еще не можете сказать, меня очень взволновало). Я расскажу вам, как этот документ утверждает, что улучшает обучение GAN, и расскажу о том, работает ли он на самом деле. Так что возьмите чашку чая и блокнот и молитесь богам GAN, чтобы это помогло победить старого монстра краха режима.

Проблема с GAN: краткий обзор

Одна из первых и наиболее важных концепций, которые вы узнаете в машинном обучении, - это «переоснащение». В контексте GAN, дискриминатор, D продолжает улучшаться при обучении, но работает ужасно во время валидации, потому что он начал «запоминать» 'данные изображения. Это не обязательно приводит к коллапсу режима, когда вы получаете много одинаковых выходных изображений, хотя это часто бывает. Если вы наблюдаете коллапс режима, это свидетельствует о том, что дискриминатор переоборудовал данные. Часто мы просто добавляем дополнительные данные, чтобы предотвратить эту проблему - и, конечно, это часто помогает… но собрать такой объем данных не всегда просто. В документе приводится убедительный пример: что, если мы пытаемся создать изображения редкого вида? У нас нет доступа к дополнительным данным. Однако мы не должны ограничиваться такими крайними случаями, как редкие виды. Даже когда мы говорим о таких обычных вещах, как одежда, сбор данных стоит дорого. Аннотирование данных стоит дорого. На это уходит лет (Zhao et al, 2020). Мы хотим, чтобы модель работала сейчас.

Решение: расширение?

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

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

Вариант 1. Увеличивайте только реальные деньги

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

Неправильный.

Чжао и др. (2020) сообщают, что увеличение случайных горизонтальных переворотов умеренно улучшает результаты. Но более сильные дополнения, такие как переводы и вырезки только к реальным, вызывают такие проблемы, как искажение и странные цвета в сгенерированных изображениях. Хотя обычное расширение может работать для обычных задач классификации, с GAN мы не классифицируем, мы пытаемся сгенерировать истинное распределение данных. Но если мы идем и искажаем реальные входные данные, то наши сгенерированные выходные данные также будут искажены. Генератору рекомендуется соответствовать расширенному и искаженному распределению, а НЕ истинному распределению. Так что насчет варианта №2 для увеличения данных?

Вариант 2. Расширьте все входные данные дискриминатора

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

генератор полностью обманывает дискриминатор

Вариант 3. Ввести дифференцированное расширение

Здесь авторы представляют тип улучшения, который действительно работает, а именно дифференцированное увеличение. Чтобы решить проблемы как с вариантом 1, так и с вариантом 2, авторы предлагают решение, которое 1. дополняет реальные и поддельные изображения, используемые в сети дискриминатора, но также 2. успешно «распространяет градиенты расширенных выборок на G.» Это позволяет избежать проблемы выявления подделок без дополнений, о которой мы говорили ранее в варианте 2. В этом суть статьи: чтобы позволить распространение градиента к генератору G, они просто очень уверены, что увеличение, как следует из названия, дифференцируемое . Авторы приводят три основных примера такого дифференцируемого увеличения:

Перевод (в пределах [−1/8, 1/8] размера изображения, заполненный нулями),

Cutout (маскирование случайным квадратом размером в половину изображения) и

Цвет (включая случайную яркость в пределах [-0,5, 0,5], контраст в пределах [0,5, 1,5] и насыщенность в пределах [0, 2]).

Результаты

Так это работает? ДА. Да вроде работает. Авторы перечисляют несколько довольно крутых результатов, и я перечислю некоторые из них здесь. Я настоятельно рекомендую вам взглянуть на остальные результаты в основной статье - они действительно поразили меня.

Достижение №1: Наборы данных CIFAR-10 и CIFAR-100. Авторы использовали два известных GAN, а именно BigGAN и StyleGAN2, и попробовали несколько размеров наборов данных (100% данных, 10% данных, 20% данных). Чтобы их сравнение было справедливым с базовой линией, они даже использовали регуляризацию и горизонтальные перевороты в методе базовой линии. Как для CIFAR-10, так и для CIFAR-100 они демонстрируют улучшения по сравнению с базовым уровнем и являются новейшим современным как для CIFAR-10, так и для CIFAR-100.

Достижение №2: ImageNet. Дифференцируемое дополнение улучшило состояние как 100% наборов данных, так и наборов данных уменьшенного размера.

Решение, представленное в этой статье, мне нравится потому, что оно настолько логично. Авторы 1. попробовали различные методы увеличения для GAN, 2. определили точные трудности и 3. быстро устранили проблему, используя особый вид увеличения, то есть дифференцируемое увеличение, которое выполняется как для реальных, так и для фальшивых изображений, и, таким образом, разрешили градиент быть распространяется на генератор. И все же это логически выведенное решение так много делает. Теперь любой, кто занимается обучением GAN, может добавить «использовать дифференцируемое увеличение» к своему набору правил, например «добавить шум к входам дискриминатора» и «снизить [упорядочить] веса дискриминатора» («Generative Adversarial Networks», n.d.).

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

В заключение приведу красивую диаграмму из статьи, которая ясно показывает их методологию:

Ссылки

Чжао, С., Лю, З., Лин, Дж., Чжу, Дж. Й., и Хань, С. (2020). Дифференцируемое дополнение для обучения GAN, эффективно использующего данные. Препринт arXiv arXiv: 2006.10738. Получено с https://arxiv.org/pdf/2006.10738v1.pdf.

Генеративные состязательные сети (нет данных). Общие проблемы. Разработчики Google. Получено с https://developers.google.com/machine-learning/gan/problems.