Генерация изображений и текстур

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Специалист по Computer Science Виктор Лемпицкий о распознающих нейросетях, методах математической статистики и роли теории игр в машинном обучении

Вместе со Сколковским институтом науки и технологий мы сняли курс «Машинное обучение», посвященный математическому моделированию и методам машинного обучения. В этой лекции преподаватель магистерской программы «Вычислительные системы в науке и технике» Сколтеха Виктор Лемпицкий рассказывает об алгоритмах обучения нейронных сетей.

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

Почему эта задача интересна? Во-первых, эта задача сложнее распознавания. Для того чтобы генерировать новые изображения лиц, компьютер должен понимать, что такое лицо, лучше, чем для того, чтобы распознавать лица. Распознавать лица компьютер уже сейчас умеет во многих условиях не хуже, чем человек. Наилучшая система, которая синтезирует изображения лиц, просто посмотрев перед этим набор других изображений лиц, не достигает особенно хороших результатов. Лица получаются или размытые, или на них есть существенные артефакты и искажения, или эти лица получаются слишком похожими на те, которые компьютер видел в процессе обучения. То есть данная задача представляет собой новый фронтир, новый вызов в области искусственного интеллекта. С математической точки зрения в этой задаче есть много всего интересного, и прежде всего потому, что нам нужно каким-то образом явно или неявно моделировать вероятностное распределение в высокомерном пространстве, в котором живут изображения. Причем моделировать их так, чтобы точки, соответствующие реальному изображению, имели бы большую вероятность, а остальные точки имели бы маленькую вероятность.

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

Концептуально все довольно просто, но загвоздка в том, как именно измерить успешность нейросети, как именно измерить, что распределение, которое нейросеть выдает, совпадает с распределением, которое нам нужно. Проблема в том, что распределение настоящих, истинных изображений задается в виде 10 тысяч, 100 тысяч или 1 миллиона точек. Звучит это внушительно, но для высокомерных пространств это не так много. К тому же нам надо обучать нейросеть, причем достаточно эффективно. Это значит, что распределение, которое нейросеть выдает, мы можем судить по достаточно небольшим отборам, скажем сотне или тысяче точек. В итоге ключевая задача, которая появляется в области синтеза изображений с помощью нейросети, заключается в том, чтобы сравнивать вероятностные распределения, заданные небольшим количеством образцов. Это область математической статистики, и в последние годы исследователи в области нейросетей вернулись к разработке или, может, к переоткрытию классических методов математической статистики. Работа с такими высокоразмерными представлениями требует привлечения методов и теории вероятности, и дифференциальной геометрии, и функционального анализа. Значительная часть современной математики в этой области очень востребованна.

Один подход, который в последние месяцы стал особенно популярным, в который многие исследователи очень верят, ? это подход, связанный с противоборствующими сетями, adversarial networks. Он заключается в том, что к генерирующей сети, которая искривляет простое распределение в нужное нам распределение, учится еще одна сеть ? дискриминирующая (ее по-русски точнее назвать оценивающей сетью). Процесс обучения заключается в игре, то есть привлекается теория игр.

Процесс совместного обучения генерирующей сети и оценивающей сети заключается в противоборстве, которое устроено следующим образом. Целью генерирующей сети, как и раньше, является синтез, генерация реалистичных изображений. А цель оценивающей сети ? научиться отличать изображения подделки, изображения, которые создает генерирующая сеть, от настоящих, от реальных изображений. Правила игры таковы, что в процессе противоборства оценивающая сеть передает в генерирующую сеть информацию о том, почему она сочла то или иное изображение подделкой. Она передает некоторый вектор градиента, который говорит, в какую сторону генерирующая сеть должна поменять изображение-подделку так, чтобы это изображение-подделка выглядело бы для оценивающей сети менее фальшивым. В результате генерирующая сеть может подстроить свои параметры так, чтобы на выходе изображения-подделки выглядели бы более реалистичными и в математическом пределе, который на самом деле никогда не достигается, потому что нейросети не всесильны, потому что методы оптимизации не всесильны, потому что нахождение равновесия в теории игр — это сложная вещь. В пределе, если процесс обучения идет успешно, генерирующая сеть создает подделки, которые выглядят все лучше и лучше, которые все сложнее и сложнее отличить от реальных изображений, и они сходятся к распределению, которое нам нужно, — к распределению реальных картинок.

Обучение противоборствующих сетей сейчас самая горячая тема в машинном обучении ? по крайней мере, если судить по ажиотажу вокруг этой темы, который наблюдается на ведущих конференциях по машинному обучению. Нейросети могут генерировать маленькие изображения, которые выглядят очень реалистично, если прищуриться или просто не смотреть на них слишком пристально. На первый взгляд они выглядят как настоящие картинки. А когда мы переходим к изображениям большего разрешения, то нереалистичность становится заметной. Видно, что текстуры нейросеть может выучить хорошо, они выглядят как настоящие, а вот формы нейросети удаются куда хуже. Если мы обучим нейросеть на изображениях кошечек, то те изображения, которые она будет синтезировать, будут иметь кошечек с реалистичной шерстью, кошечка будет стоять на реалистичной траве. Но если мы посмотрим, то сразу видно, что, вопреки известной песне, у кошки будет не четыре ноги, а, скажем, две с половиной, при этом еще три глаза. Чтобы решить эту проблему — проблему кошек с двумя ногами и тремя глазами, — нужен синтез методов компьютерного трехмерного зрения и текущих методов генерации изображений.

Если пока что полноразмерные изображения нейросетям не удаются, то есть ли пока что от этой темы какая-то польза? Оказывается, что есть. Во-первых, нейросети уже умеют преобразовывать существующее изображение нетривиальными способами. Например, они могут увеличивать разрешение изображения или стилизовать изображения под различные стили живописи, удалять шумы с изображений. Получается, что любой прогресс в области синтеза и генерации изображений с нуля приводит к прогрессу в области нейросетей, которые преобразуют, обрабатывают изображения. Во-вторых, для того чтобы генерировать изображения, нейросетям нужно научиться понимать, как устроен тот или иной визуальный класс. В результате текущие системы генерации уже оказываются очень полезными для систем распознавания.

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

Синтез изображений с помощью нейросетей — это на данный момент уникальная область. Тут есть что делать и математикам, и людям, которым интересны алгоритмы и программирование. Еще есть ощущение быстрого прогресса, быстрого улучшения качества результатов. Есть надежда, что через несколько лет эта задача будет более или менее решена, хотя с такими прогнозами нужно быть осторожным.



Источник: postnauka.ru

Комментарии: