Подход предложен в статье Generative Adversarial Nets и заключается в том, что одновременно тренируют две модели: генеративную и дискриминирующую. Генеративная модель, как вы, думаю, догадались, генерирует (в данном случае, изображения). Дискриминирующая модель получает на вход настоящее изображение и сгенерированное и определяет, какое из них где (то есть, решает задачу бинарной классификации). Далее для избежания тавтологии я буду их также называть «генератор» и «дискриминатор».
Цель обеих моделей – победить оппонента: сгененрировать изображение, неотличимое от реального или научиться отличать сгенерированные изображения от реальных по мельчайшим признакам. Авторы статьи приводят такой пример: генеративная модель выполняет роль мошенника, который подделывает деньги, а дискриминирующая – роль полицейского, который должен распознать подлог.
Цель процесса – достичь такого состояния, когда дискриминирующая модель будет ошибаться в половине случаев.
Мотивацией для разработки такого подхода стало неравное соотношение между генеративными и дискриминирующими моделями: в то время как дискриминирующие модели были достаточно успешны на момент исследования, генеративные были слишком дороги с точки зрения необходимых вычислительных мощностей и не могли развиваться столь же успешно. Поэтому разумным оказалось использовать преимущества одних моделей для устранения недостатков других.
В статье обе модели – многослойные перцептроны (multilayer perceptron). Это один из простейших видов нейронных сетей, который относится к линейным (полносвязным) сетями. Мы их как-то упоминали в предыдущих постах, я кратко напомню: данные подаются на входной слой, затем последовательно преобразуются в каждом следующем слое (они называются скрытыми слоями). Преобразование на каждом этапе линейное: полученный результат умножается на определенный весовой коэффициент, потом к нему добавляется свободный коэффициент (bias – смещение). В конце к результату применяется некоторая нелинейная функция (потому что реальные данные имеют более сложное распределение, и его нужно отразить в полученном результате). Затем высчитывается ошибка полученного результата по сравнению с ожидаемым, и весовые коэффициенты в скрытых слоях корректируются так, чтобы ее уменьшить.
людей нужно учить а не нейросети...