В этом чтении я буду обсуждать функцию потерь GAN и оптимальную точку обучения GAN, как описано в исследовательской статье 2014 года по GAN, ссылка на документ GAN. Учебное пособие написано, чтобы дать представление об оптимальной точке обучения GAN, не углубляясь в математику.

GAN — это класс генеративных моделей, которые неявно моделируют распределение данных. Существуют такие модели, как VAE, явные модели плотности, которые моделируют данные, явно определяя распределение по данным, например нормальное распределение. В GAN мы не определяем какое-либо явное распределение данных модели, но формулировка потерь определяется таким образом, что сгенерированные данные будут близки к фактическому распределению данных.

Сначала обсудите некоторые предварительные понятия, которые потребуются для последующих обсуждений.

Ожидаемое значение и среднее значение
Предположим, что у нас есть игральная кость, и если мы ее бросим, ​​число наверху кости будет случайной величиной. Поскольку это очень элементарно, все мы знаем, что каждый исход (1,2,3,4,5,6) может произойти с вероятностью 1/6. По определению ожидаемое значение случайной величины задается как

Это для дискретных случайных величин, то же самое можно записать в виде интегралов для непрерывного случая. Теперь ожидаемое значение броска костей можно рассчитать как (1+2+3+4+5+6)/6 = 3,5, где 1/6 — вероятность каждого исхода.
Мы заключаем, что ожидаемое значение на самом деле является средним значением, которое происходит в повторных испытаниях, но количество испытаний приближается к бесконечности. Ниже приведен код, который показывает, что при увеличении количества испытаний среднее значение в конечном итоге приблизится к ожидаемому значению.

Как это относится к нашему обсуждению? Что ж, когда мы обсуждаем генеративное моделирование, мы предполагаем, что любые данные, которые мы подсчитываем, поступают из распределения, точно так же, как при броске костей, у нас может быть 100 выборок, таких как (1,3,6,4,1 ,,2,3,6,5,4,….) без явного указания, что они генерируются в результате броска костей, мы могли бы вычислить среднее значение при практической реализации, потому что ни в коем случае с небольшим набором данных, таким как 100 выборок, мы не могли бы оценить распределения, но теоретически мы говорим, что они были сгенерированы из некоторого распределения, и в теоретических обозначениях лучше говорить об ожидаемых значениях, а не о средних. И если мы увидим потерю генеративно-состязательной сети, мы столкнемся с условиями ожидания.

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

Генератор берет случайные входные данные zиз некоторого распределения P(z) и выдает поддельные образцы, которые будут иметь некоторые распределение Pg(x). Исходные данные, лежащие в основе процесса, заключаются в том, что случайный вектор z представляет собой некоторые функции, которые мы определяем, и в соответствии с этими функциями создается выборка, но почему z следуют некоторому распределению, причина в том, что все данные в реальном мире имеют некоторый диапазон значений, например рост человека, попытка найти человека ростом 100 футов в сегодняшнем мире не является разумное решение, средний рост людей в настоящее время составляет около 5,5 футов, поэтому, если какой-либо из признаков является ростом, вы ожидаете, что большинство значений будет около 5,5, а значение 100 футов не имеет никакого смысла по той же причине zдолжно следовать распределению, и эта случайная величина преобразуется с помощью нейронной сети, чтобы получить другую случайную величину xс распределением Pg(x),(из теории вероятностей, если случайная величина xпреобразуется в y,тогда yтакже является случайной величиной с некоторым распределением)

Дискриминатор — это простая сеть классификаторов, которая классифицирует изображения как поддельные и настоящие. Он принимает входные данные x и дает вероятность того, что они реальны.
Входные данные x могут быть получены от генератора, который имеет дистрибутив Pg(x),или настоящий оригинал пример, который следует некоторому неизвестному распределению Pdata(x).

Весь смысл GAN в том, что генератор пытается сгенерировать данные таким образом, что он обманывает дискриминатор, думая, что сгенерированные данные реальны, но оказывается, что при обучении GAN мы стремимся к точке равновесия, которая достигается, когда выход дискриминатора равен 0,5 для каждого сгенерированного образцы, мы увидим, почему?

Функция потери GAN

Прежде всего устраните ожидаемые термины, на данный момент мы знаем, почему они на месте. Теперь мы хотим, чтобы наш дискриминатор давал высокую вероятность правильных выборок (log(D(x))term) и низкую вероятность сгенерированных выборок (). log(1- D(G(z))),это простая бинарная потеря перекрестной энтропии. Следовательно, с точки зрения дискриминатора, мы хотим максимизировать количество, которое приближает D(x)к 1 и D(G(z)) близко к 0. С точки зрения генератора мы хотим приблизить D(G(z))к 1, следовательно, это произойдет, когда мы минимизируем потери по отношению к генератору. Я не буду вдаваться в подробности того, как каждая величина будет играть роль в обучении GAN, это очень ясно в статье, а также упоминается вместо минимизации log(1- D(G(z))) для генератора мы фактически максимизируем log(D(G(z)))по мере насыщения градиентов в начале обучения. Возможно, в каком-то другом посте я расскажу о деталях обучения GAN, объяснив, почему minmax, а не maxmin и т. д.

Я хочу обсудить графическое описание того, что происходит при обучении GAN. Черный гауссов — это фактическое распределение данных, а зеленый — распределение данных, сгенерированных генератором G,(Примечание:практически мы не знаем оба этих распределения, они просто для иллюстрации). Синяя кривая — это реакция дискриминатора на данные, классифицирующие их как фальшивые или настоящие (сигмовидная реакция между 0 и 1). z– это векторы, взятые из некоторого распределения, в данном случае его вид равномерного, как показано, и генератор сопоставляет эти zк зеленому распределению. Обратите внимание, что в (а) синяя кривая имеет высокий отклик, когда она находится на черной стороне гаусса, и низкий отклик на зеленой стороне гаусса, и изначально генератор должен плохо генерировать плохие выборки, которые дискриминатор может легко различить, и графически показаны плохие выборки. таким образом, что зеленое распределение отличается от фактического распределения, но когда начинается обучение, генератор начнет генерировать более качественные образцы, близкие к реальным, и это показано на (b), когда зеленая кривая близка к синей, и снова на (c) и (d) оно становится намного ближе к фактическому распределению, в конечном итоге совпадая с реальным распределением.

Теперь самое интересное. В (а) мы видим, что зеленая кривая может генерировать x, которые являются истинными выборками, но в основном с меньшей вероятностью, но есть некоторые выборки (близкие к истинным), которые она может генерировать с хорошая вероятностная мера. Этого следует ожидать, поскольку мы можем видеть, как две кривые перекрываются в некоторой области, теперь рассмотрим красную точку на рисунке выше, обе кривые могут генерировать эту точку с некоторой вероятностью, но эта точка имеет высокую вероятность в истинном распределении по сравнению с сгенерированным распределением, давайте предположим, что вероятность этой точки в черном распределении равна 0,6, тогда как в зеленом - 0,15, теперь то, что должно быть на выходе дискриминатора для этой точки, подделка или настоящая, зная, что эта точка также может прийти в фактические данные с высокой вероятностью, и генератор также будет генерировать этой точки с некоторой вероятностью 0,15. Ну в таком случае дискриминатор должен давать вероятность, склоняющуюся к реальной, но не полностью 1, так как генератор тоже может генерировать эту выборку. В статье указано оптимальное D для фиксированного G.

Если мы подставим значения, мы должны получить D(x) = 0,6/(0,6+0,15) = 0,8,что 80% вероятность того, что эта выборка реальна. Точно так же в (а) если мы возьмем точки слева от красной точки, вероятность того, что они настоящие, увеличится, а если мы начнем писать, вероятность того, что они будут фальшивыми, увеличится. Обратите внимание, что xимеет высокую вероятность в определенном диапазоне, вне этого диапазона вероятность появления x очень мала.

Теперь, если мы применим тот же процесс для (b), (c) и (d), мы увидим, что для любой выборки xвероятность того, что она настоящая, а фальшивая, будет равна близко друг к другу, в конечном итоге в (d), когда генератор может генерировать выборки, соответствующие фактическому распределению, дискриминатор должен давать вероятность 0,5 для каждой входной выборки, что является оптимальной точкой обучения GAN в этой статье.

В этой статье дается базовое представление об оптимальной точке обучения GAN и объясняется функция потерь GAN.