Генеративно-состязательная сеть (англ. Generative adversarial network, сокращённо GAN) — алгоритм машинного обучения без учителя, построенный на комбинации из двух нейронных сетей, одна из которых (сеть G) генерирует образцы, а другая (сеть D) старается отличить правильные («подлинные») образцы от неправильных. Так как сети G и D имеют противоположные цели — создать образцы и отбраковать образцы — между ними возникает антагонистическая игра. Генеративно-состязательную сеть описал Ян Гудфеллоу из компании Google в 2014 году.

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


Метод:

В системе GAN одна из сетей (сеть G, от Generator) генерирует образцы, а другая (сеть D, от Discriminator) старается отличить правильные («подлинные») образцы от неправильных. Используя набор переменных латентного пространства, генеративная сеть пытается слепить новый образец, смешав несколько исходных образцов. Дискриминативная сеть обучается различать подлинные и поддельные образцы, а результаты различения подаются на вход генеративной сети так, чтобы она смогла подобрать лучший набор латентных параметров, и дискриминативная сеть уже не смогла бы отличить подлинные образцы от поддельных. Таким образом целью сети G является повысить процент ошибок сети D, а целью сети D является наоборот улучшение точности распознавания.

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

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

Идея состязательного обучения была выдвинута в 2013 году Li, Gauci и Gross. Этот метод называется также «обучением Тьюринга», так как ставит целью пройти тест Тьюринга.


Популярные объяснения метода:

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

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

В статьях исследователей приводятся примеры реализации GAN на базе библиотеки TensorFlow.


Применение:

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


Примеры:

DALL-E

Midjourney

Stable Diffusion


   Мировой опыт