TechFusion.ruКейсыСинтетические данные: новая надежда искусственного интеллекта

Синтетические данные: новая надежда искусственного интеллекта

Синтетические данные

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

Neuromation

Сергей Николенко. Фото из личного архива

О набирающем популярность подходе, который обещает решить эту проблему — создании синтетических данных — TechFusion.ru рассказал директор по науке Neuromation Сергей Николенко.

Научный сотрудник Математического института им. В. А. Стеклова в области машинного обучения (глубокое обучение, байесовские методы, обработка естественного языка и др.) и анализа алгоритмов (сетевые алгоритмы, конкурентный анализ) Сергей Николенко — автор более чем 120 научных работ, нескольких книг, курсов «Машинное обучение», «Глубокое обучение» и других. Помимо Neuromation, он участвовал в проектах SolidOpinion, Surfingbird, Deloitte Analytics Institute.

 

О данных и об их отсутствии

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

Современные методы обучения глубоких нейронных сетей уже показали свою эффективность в ситуациях, когда огромные наборы размеченных данных доступны. Так, основной классический датасет для компьютерного зрения под названием ImageNet содержит более 14 миллионов изображений, разбитых на почти 22 тысячи классов. Иначе говоря, каждая фотография в ImageNet снабжена меткой, которую проверили люди и которая показывает, что на ней изображено. Метки очень подробные: например, в ImageNet 120 разных пород собак.

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

Синтетические данные

Точность классификации на ImageNet: с 2015 года глубокие сети распознают изображения лучше людей (источник)

Так почему же мы до сих пор не живем в окружении роботов, которые видят и понимают окружающий мир и умеют приносить нам кофе? Почему беспилотные автомобили только-только начинают появляться, причем очень осторожно и неуверенно? Где хотя бы автоматические диагносты, которые рассматривают медицинские снимки тщательнее и лучше любого врача из плоти и крови, не уставая и не ошибаясь?

Проблема в том, что на нашем этапе развития искусственного интеллекта мы все-таки не можем просто сказать модели «смотри вокруг себя и учись». Точнее, теоретически можем, но пока из этого вряд ли что-то хорошее получится. Для каждого из многочисленных применений требуется свой большой набор данных.

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

И хотя такие наборы данных иногда появляются, но готовить их для каждой новой задачи — идея совершенно неподъемная. А для некоторых задач это и просто невозможно. Например, даже если у вас есть армия высококлассных радиологов, готовых расшифровывать миллионы МРТ-снимков, их будет совершенно неоткуда взять.

Что же делать? Сегодня мы говорим о методе, который дает новую надежду многим приложениям искусственного интеллекта — о синтетических данных.

Что такое синтетические данные

Базовая идея очень проста: если мы не можем собрать и разметить данные, может быть, мы сможем их сделать самостоятельно? Обычно синтетические данные применяются в задачах компьютерного зрения. Мы можем сделать 3D-модели интересующих нас объектов (вручную) и поместить их в нужное виртуальное окружение, а затем порождать картинки как рендеры этих 3D-сцен. Будут получаться кадры из «мультфильма», и мы можем «снять» нужные объекты со всех сторон, в любых комбинациях и ракурсах. Очень важно, что разметка тоже получается автоматически и абсолютно идеально. Раз мы сами создали эту 3D-сцену и сами разместили камеру, мы можем понять, к какому объекту относится буквально каждый пиксель полученного рендера.

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

Остается подход с синтетическими данными: создать 3D-модели упаковок товаров (здесь можно сэкономить: разных типов упаковок, конечно, вовсе не 170 тысяч), наложить на них текстуры разных этикеток, разместить (случайным образом, с шумом и возможными ошибками) эти модели на виртуальной полке виртуального супермаркета и получить неограниченный поток идеально размеченных синтетических данных, на которых затем обучать нейронную сеть.

 

Синтетические данные

Примеры созданных в Neuromation синтетических изображений для распознавания товаров на полках супермаркетов

 

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

 

Синтетические данные

Пример синтетических данных из проекта по распознаванию видео (источник)

Легко понять, как это теоретически может работать. Например, если показать нам с вами мультфильм, рекламирующий некий объект, например новый пакет сока, мы потом вряд ли затруднимся узнать его в супермаркете. При этом мультфильм может быть далек от реализма. Создатели мультфильма, конечно, должны будут изобразить характерные черты, отличающие новый пакет от старых, но делать сверхреалистичную картинку вовсе не обязательно, мы с вами справимся и так.

Тут работает, тут не работает

На опыте компании Neuromation и других современных проектов мы видим, что синтетические данные хорошо работают в задачах компьютерного зрения. То есть в задачах, где искусственному интеллекту нужно распознать объекты на фотографиях или в окружающем его мире.

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

Это значит, что заранее подготовить размеченный набор данных невозможно: мы же не знаем заранее, что будет делать робот и, как следствие, что он «увидит». Но и вживую обучать роботов тоже не вариант. Представьте себе, что автомобильные концерны выпустили бы на улицы тысячи машин, обучающихся не давить людей методом проб и ошибок?

Поэтому для задач роботики совершенно необходимо делать синтетические данные. Причем не простые рендеры, а целые симуляционные среды, в которых модели искусственного интеллекта могли бы что-то делать и смотреть на результаты. Беспилотные автомобили так и обучают — создают виртуальные города, по которым можно ездить. Были даже исследования по обучению автомобилей при помощи движка игры Grand Theft Auto V.

Синтетические данные

Симуляционная среда для беспилотных автомобилей от NVIDIA (источник)

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

Причины для этого интуитивно довольно понятны: представьте себе, что вы делаете синтетические тексты, чтобы обучить компьютер понимать тексты и писать по-русски. Если вы уже умеете порождать хорошие и разнообразные тексты с заданным смыслом (что бы это ни значило), скорее всего, это значит, что задача уже решена — вы уже научились создавать хорошие тексты. Здесь нет аналога «3D-сцены» и «рендера», которые выручают в компьютерном зрении.

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

Фото на обложке: pixabay.com