🐱 Как ИИ рисует котиков. Говорим о генеративно-состязательных нейросетях (GAN)
Теперь компьютеры могут самостоятельно создавать реалистичные изображения, в том числе и картинки с милыми котиками.
Оля Ежак для Skillbox Media
Ян Гудфеллоу — хороший друг
Генеративно-состязательные сети, или GAN, как их сокращённо называют, придумал молодой американский исследователь Ян Гудфеллоу в 2014 году. Идея родилась у него случайно во время спора с друзьями.
Ян учился в аспирантуре Монреальского университета (Канада) и работал над диссертацией по нейронным сетям. Однажды вечером начинающие учёные отмечали в баре защиту диплома своего коллеги. Они обсуждали, как можно научить компьютер рисовать. И не просто рисовать, а создавать изображения, неотличимые от настоящих фотографий. Например, кошек, ведь все же любят разглядывать фото котиков. И почему бы не заставить алгоритмы генерировать их в неограниченном количестве?
Друзья Гудфеллоу полагали, что для этого потребуется заложить в компьютерную программу математические формулы и правила, описывающие, как должны располагаться элементы фотографии, чтобы из них получилось реалистичное изображение. Но Ян утверждал, что такой подход не сработает. Невозможно измерить гармонию и перевести её на сухой язык математики.
Гудфеллоу настаивал на использовании нейронных сетей, исследованием которых занимался. Однако коллеги скептически отнеслись к этой идее. Нейросети ранее уже пытались применять для рисования, и результаты были далеки от идеала. К тому же нейросети требовали длительного процесса обучения с участием человека.
И тогда Гудфеллоу предложил гениальную модель: в ней не одна, а две нейронные сети. И они сами обучают друг друга. Первая генерирует изображения, вторая оценивает плоды её работы. Если созданная картинка выглядит неестественно, вторая сеть вернёт её на доработку. Но если картинка окажется хорошей, нейросеть допустит её для показа людям.
Все сомневались, что это сработает. Вернувшись домой, Гудфеллоу не лёг спать. Всю ночь он писал программу, работающую по этой модели. К утру всё было готово: нейросети успешно генерировали реалистичные изображения. И не только кошек, но и практически чего угодно.
Ян Гудфеллоу опубликовал результаты в научной статье. Новую модель он назвал генеративно-состязательной сетью (GAN). Так молодой учёный не только помог своим друзьям, но и подарил искусственному интеллекту возможность творить.
«Генеративно-состязательные сети — это самая интересная идея в машинном обучении за последние десять лет».
Ян Лекун, директор по исследованиям искусственного интеллекта Facebook* (цитата)
Сейчас GAN повсеместно применяют для автоматической генерации изображений. Они создают картинки с животными (котики традиционно в приоритете) и с людьми, пишут произведения изобразительного искусства, которые выставляются в крупных галереях, в том числе и в нашей Третьяковке.
Пожалуй, самым известным и скандальным достижением генеративно-состязательных сетей стала продажа на аукционе Christie’s картины, созданной искусственным интеллектом. Полотно под названием «Портрет Эдмонда Белами» (на нём изображен вымышленный человек) ушло в 2018 году с молотка
за 432 500 долларов.
Придумав персонажа по фамилии Белами, создатели картины остроумно отдали дань уважения Яну Гудфеллоу, изобретателю GAN. Его фамилия на английском означает «хороший друг». А если перевести её на французский, то как раз получится bel ami.
Судьба Гудфеллоу и его изобретения сложилась успешно. В 2017 году американские учёные внесли его в список «Лучших молодых новаторов». За несколько последних лет Ян успел поработать в передовых лабораториях по созданию искусственного интеллекта: в Google Brain, в проекте Илона Маска OpenAI и в Apple.
Разбираемся, как это работает
Нейронные сети — это упрощённые компьютерные аналоги человеческого мозга, их главное преимущество — способность обучаться на примерах. Они могут менять внутренние настройки, чтобы улучшать результаты работы.
В генеративно-состязательной модели, как мы уже поняли, содержатся две нейронные сети, и работают они автономно, практически без вмешательства человека.
Предположим, что перед ними стоит задача — научиться создавать изображения кошек.
Первая нейросеть называется генератором, её часто обозначают буквой G, мы можем условно именовать её сетью-художником. Она учится рисовать котов и предъявляет результаты работы второй нейросети — дискриминатору, он обозначается буквой D. Её мы можем условно назвать сетью-экспертом.
Чтобы стать экспертом в области изображения кошек, дискриминатор прошёл отдельное предварительное обучение. Он изучил тысячи реально существующих фотографий котиков.
Рассмотрев все эти изображения, сеть-эксперт сформировала своё представление о том, как могут выглядеть кошки (например, что у них есть лапы, хвост, усы, глаза). При этом дискриминатор не получил от программистов никаких дополнительных данных, поэтому его знания не являются полными.
Далее в работу включается сеть-художник. Она вообще не представляет, как могут выглядеть коты. Её задача — постоянно рисовать что-нибудь, предъявлять рисунки сети-эксперту, получать от неё обратную связь и совершенствовать свои творения.
Вначале создаваемые генератором картинки совершенно не похожи на кошек и могут выглядеть как жёлтые кляксы. Естественно, дискриминатор отвергает такие рисунки, но при этом он выдаёт генератору косвенные подсказки о том, как следует изменить изображения, чтобы они более соответствовали его представлениям о кошках.
Получив множество отказов, сеть-художник не теряет оптимизма. С упорством творческого маньяка она раз за разом переделывает рисунки и пытается протащить их через строгую экспертизу дискриминатора.
Сети словно состязаются между собой — отсюда и название модели. При этом победа одной сети неминуемо означает поражение второй и наоборот. Генератор обучается так, что пытается максимизировать вероятность ошибки дискриминатора. Дискриминатор, с другой стороны, пытается минимизировать вероятность своей ошибки. В науке такую ситуацию называют минимаксной игрой.
Через несколько тысяч попыток генератор, наконец, создаёт реалистичное изображение кота, и дискриминатор не может отличить его от настоящего. Для генератора это будет очевидная победа, а вот для дискриминатора — поражение. Ведь он принял фейкового кота за реальную фотографию, а значит, ошибся.
В итоге модель выдает людям только те картинки, которые прошли через фильтр дискриминатора. Поскольку сеть-эксперт не обладает всей полнотой знаний о строении кошек, то, к сожалению, иногда пропускает изображения-уродцы вроде кошек с глазами на хвосте (слабонервным лучше не смотреть!).
Чтобы творить разнообразные изображения, генератор получает на свой вход случайный шум. Элемент случайности позволяет сети-художнику создавать разные варианты изображения котов: менять цвет шерсти, форму тела, расположение лап, глаз и так далее. Иначе был бы велик соблазн всё время предъявлять сети-эксперту одну и ту же картинку, которая однажды успешно прошла через фильтр.
Конечно, это очень упрощённое описание, но оно даёт общее представление о принципах работы GAN.
Посмотрим результаты — с котиками и не только
Крупнейшие IT-компании и простые энтузиасты разработали множество своих вариантов реализации генеративно-состязательных нейросетей.
Например, сотрудники компании Google представили в 2018 году алгоритм под названием BigGAN. Он генерирует настолько правдоподобные изображения, что его результаты впечатлили даже Яна Гудфеллоу.
В том же году NVIDIA создала собственную модель StyleGAN. Её код и вся интересующая специалистов информация были опубликованы на GitHub. Создатели обучили сеть генерировать изображения несуществующих человеческих лиц, автомобилей, спален и, конечно же, кошек. Результаты работы StyleGAN разработчики выложили в интернете.
Вдохновившись этой моделью нейросетей, инженер Филипп Ван создал на базе StyleGAN сервис This Cat Does Not Exist («Этого кота не существует»). Если вы зайдёте на сайт, то увидите на экране изображение несуществующего кота, созданное с помощью генеративно-состязательной сети. Чтобы сгенерировать новую картинку, достаточно просто обновить страницу в браузере.
Аналогичные сайты Ван создал для картинок с лошадьми и для человеческих лиц.
Сервис по генерации изображений несуществующих людей получил неожиданную популярность среди многочисленных злоумышленников. Используя возможности искусственного интеллекта, они создали в соцсетях фейковые страницы, заполненные реалистичными фотографиями вымышленных пользователей. Поддельные аккаунты используются для онлайн-мошенничества, распространения дезинформации и спама.
Руководителям сайтов теперь пришлось озаботиться созданием алгоритмов, способных распознавать таких лжепользователей. Например, администраторы Facebook* уже удалили более трёх миллиардов (!) подозрительных аккаунтов.
Также GAN широко используются в современном изобразительном искусстве. И «Портрет Эдмонда Белами» — далеко не единственный образец. Многие художники применяют компьютерные технологии в своём творчестве.
Например, София Креспо создала с помощью компьютера цикл картин под названием «Нейронный зоопарк». Благодаря GAN ей удалось сгенерировать изображения, сочетающие в себе черты нескольких животных и растений. Получилось довольно симпатично, результаты вы можете оценить и сами, заглянув на сайт Neural Zoo.
Ещё один проект Софии — This Jellyfish Does Not Exist («Этой медузы не существует»). При каждом обновлении страницы сайт выдает фейковое изображение небольшой медузы, полученное с помощью нейронных сетей.
И напоследок, забавный сервис, связанный с нейронными сетями и кошками. Американский учёный Кристофер Гёссе разработал алгоритм edges2cats, что можно перевести как «каракули-в-котов». Он предназначен для превращения нарисованных от руки картинок в фотореалистичные изображения кошек.
Чтобы воспользоваться программой, нужно зайти на сайт и нарисовать что-то, хотя бы отдалённо напоминающее усато-полосатое животное. Остальную работу за вас выполнит нейронная сеть. Кстати, сервис работает ещё с изображениями сумок, обуви и фасадов зданий.
Подведём итоги
Изобретение Яна Гудфеллоу изменило наш мир навсегда. Новая модель нейронных сетей подарила искусственному интеллекту способность творить. Теперь, когда мы смотрим на фотографии людей, котов, лошадей или даже медуз, мы не можем быть до конца уверены в том, что это не искусно сделанная компьютером подделка.
Если вы любите котиков (хотя это необязательно), желаете больше узнать о нейронных сетях и получить востребованную профессию в этой стремительно развивающейся области знаний, то программы Skillbox помогут вам в этом.