Автоматическое машинное обучение: когда data scientist’ы будут не нужны

fxfgijhbvrerikokc1n9sfa1usk.jpeg

Уже третий год мы проводим форум по искусственному интеллекту RAIF (Russian Artificial Intelligence Forum), на котором спикеры из мира бизнеса и науки рассказывают о своей работе. Самыми интересными докладами мы решили поделиться. В этом посте Андрей Фильченков, руководитель лаборатории машинного обучения ИТМО, рассказывает всю правду об AutoML.

В рамках прошедшего в Сколково форума RAIF 2019, организованного «Инфосистемы Джет», я выступил с докладом, в котором рассказал об AutoML и перспективах его использования. Поскольку я ученый, мне не так уж часто приходится выступать на подобных мероприятиях: обычно я участвую в научных конференциях.

Одной из основных областей, которой мы занимаемся, является AutoML. Кроме того, я являюсь техническим директором двух небольших стартапов. Один из них — Statanly technologies — создает сервисы AutoML и занимается анализом данных. Фактически я являюсь тем человеком, который придумывает алгоритмы, внедряет их и пользуется ими. Наверное, я единственный человек, который может рассказать про AutoML со всех трех возможных позиций.

Что же такое AutoML?


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

Ответ прост — спрос на data scientist-ов растет значительно быстрее, чем они успевают выпускаться из ВУЗов и заканчивать курсы. При этом большую часть времени (до 80%) они тратят на то, чтобы выбрать модель, настроить ее и подождать, пока все обсчитается. Все потому, что не существует идеального алгоритма — к сожалению, любой из них обладает ограниченной областью применения, и специалистам по анализу данных приходится для каждой конкретной задачи подбирать тот алгоритм, который будет оптимален, а потом еще и настраивать его. Тут уже многое зависит от квалификации аналитика: чем больше он знает в предметной области и разбирается в алгоритмах, тем более оптимальное решение может подобрать за определенное время. Здесь-то и помогает AutoML. Собственно, AutoML позволяет автоматизировать и ускорить подбор решений и задач машинного обучения.

Давайте сразу определимся: есть два связанных, но отличных друг от друга направления. 

Первое: данные представлены в таблице, есть метки, и когда нам нужно их классифицировать, мы выбираем объект из большого списка и настраиваем его гипер-параметры, а заодно можем обработать данные. 

Второй сценарий — более сложный. Например, изображения, последовательности и те области, где сейчас глубокое обучение является стандартом — здесь задача становится чуть интереснее, поскольку можно придумывать новые архитектуры: их не так-то просто перебрать. Так, «Поиск нейронных архитектур», занимается тем, что подбирает оптимальную сеть и настраивает гипер-параметры, которые позволяют решать ту или иную задачу. При этом AutoML не учитывает семантику данных. Есть и методы, которые позволяют «вынимать» описания данных и использовать их для прогноза, но это лишь способствует повышению универсальной применимости AutoML. Совершенно неважно, откуда пришли данные: газовик ли вы, продавец мороженого или кто-то еще — методы универсальны. При этом AutoML позволяет с одной стороны строить наиболее эффективные решения, подбирая сложные и не самые очевидные даже для специалиста по анализу данных конструкции, с другой — быстрее искать и оптимизировать такие решения. И еще одна неочевидная вещь — AutoML дает возможность ускорить написание кода. Вот, например:

547ebcf49589c24024f94be34a8092f6.png

Справа код написан на Keras для распознавания MNIST, а слева код для Auto-Keras в библиотеке автоматизации, написанной под Keras. Разница видна, время на написании при этом сэкономлено.

Обилие существующих решений (2019 г.)


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

722f6779f9ad61924333d9af2ecfbfd5.png

Есть как открытые, которые реализуют ограниченный функционал, так и проприетарные варианты. Наиболее известным, наверное, является Google AutoML, который не дает вам модель, а обучает ее на ваших данных, позволяя пользоваться за 20 долларов в час. Плюс есть большое количество приличных сценариев, когда базовый функционал дается бесплатно, а вот за более продвинутые компоненты приходится платить.

Светлые прогнозы


Само сообщество крайне высоко оценивает перспективы AutoML. Например, Джефф Дин (Jeff Dean) — ученый в области искусственного интеллекта и старший научный сотрудник Google — еще в марте 2018 года заявил, что существующую экспертизу в машинном обучении можно заменить, увеличив в сто раз вычислительные мощности (практически все, что делают data scientist-ы, можно будет автоматизировать). Чуть более сдержанный, но все еще пугающий прогноз от Gartner гласит, что к 2020 году 40% data scientist-ов можно будет заменить AutoML. 

Немножко дегтя


Так выглядит стандартная методология CRISP DM:

ae069b1ea24bd81c1eb792e559a69a5b.png

Это расширенный вариант, с мониторингом, но тем не менее. Сегодня решение задач по анализу данных не сводится только к построению моделей. У нас есть большое число задач, которые нужно решать, и нужно решать именно людьми. 
На текущий момент в большинстве случаев AutoML стоит лишь на 2,5 столпах: выбор модели, ее настройка и иногда, когда получается, выбор синтез-признаков и просто данных. 

176d9cd8d8ed4fba3a27204504c79a41.png

Вне возможностей AutoML


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

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

d9ab411ae32176cd3ec6be5f5e82afb8.png

Чем мы занимаемся?


Вот как выглядит идеальная схема (такой, какой она видится мне):

9c7df34e3a38b754c7475c990c23a8f6.png

Есть лаборатория машинного обучения, которая разрабатывает алгоритмы, плюс есть Statanly Technologies — продуктовая команда, которая на основе наших алгоритмов реализует сервисы по AutoML. Они работают на компании, у которых есть большой отдел Data Science. Эти же продукты используются командой аналитиков данных в самом Statanly Technologies и решают конкретно задачи компаний, которые пока свой отдел анализа данных не расширили или даже не создали. Выглядит модель здорово, но реальность, конечно, чуть прозаичнее.

Начинали мы в 2017 году примерно с того, что никакого анализа данных здесь не было:  

7e2b0cb32499d515b5d31f6608330a8c.png

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

На текущий момент мы ничего не продаем, как компания, которая разрабатывает AutoML-решения, мы лишь облегчаем себе жизнь, как команда, которая занимается анализом данных:

f66d07f38f949d0cc70c2e3c64270bd8.png

Немного о том, как мы это делаем. Естественно, мы настраиваем гипер-параметры (никакого grid-search), но кроме их настройки мы практически всегда пытаемся построить какие-то базовые решения на основе AutoML, и иногда помогаем себе в шагах по предобработке данных.

У меня есть несколько вдохновляющих и разнообразных примеров — фактически все, что мы с AutoML делали, от простого к сложному. 

Простой пример — это задача в «Газпромнефти»: есть скважина, нужно предсказать потенциальное время отказа. В нашем распоряжении классические табличные данные и признаки. В итоге мы построили прогнозную модель при помощи AutoML, при этом ни один аналитик не то, что не пострадал, но даже и не участвовал в процессе. Фактически это оказалось лучшим решением:

dc9c76702de20989de1230fe1a7f3c64.png

Вторая история: Sinara Technologies. Здесь задача была чуть сложнее, потому что фактически там было ровно две колонки: время/параметр + как он изменялся. Нужно было предсказать отказ двигателя. Здесь мы использовали AutoML, чтобы немножко помочь себе с обработкой данных — построили baseline, который потом сами же и превзошли:

83e69e544abc3f4cef4ce98d83ce0768.png 

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

Как мы подошли к решению этого вопроса?  

Решили проиндексировать все документы на основе гибких кластеров похожих слов, потому что так индексация удобнее. Более того, в базе более 100 тысяч документов, и если этого не сделать, то поиск будет бесконечно долгим. Далее мы построили векторное представление (надеюсь, все про него слышали) и кластеризацию над векторными представлениями, чтобы позволить себе индексировать. 
Вторая проблема: как нам кластеризовать данные? Мы применили AutoML, чтобы выбрать меры оценки качества кластеризации, а также подобрать алгоритмы и гипер-параметры для кластеризации:

d1bd4b81b25ba721c3866c6db8b7dc6e.png

При этом чаще всего мы AutoML не применяем. Вот два очень показательных примера.

Во втором нашем стартапе «Cпецвидеоаналитика» продукт — это система распознавания признаков автомобилей для обеспечения их централизованного доступа на закрытую территорию. Здесь основная проблема — в малом числе данных. В этом случае довольно сложно настраивать параметры моделей. А еще мы сильно ограничены, потому что часто AutoML применяют бездумно и пытаются настраивать модели на тех же данных, на которых тестируют. Так делать нельзя: по классике машинного обучения нужно выделять валидационное множество: чем больше поиск, тем больше машин должно быть. Так вот, когда у нас мало данных, мы больше переживаем, чтобы эти данные найти и разметить, чем по поводу того, чтобы строить более сложную модель.

Еще один пример — наша совместная разработка с Huawei. Мы делали для них проект по распознаванию текста на изображениях. Здесь вроде бы можно применять AutoML, поскольку в наличии аж три метрики, которые можно оптимизировать: качество распознавания, время распознавания и параметр модели (поскольку все это предполагалось к внедрению в мобильные устройства).  Но сейчас ни у кого нет достаточной экспертизы, чтобы оптимально реализовать все три аспекта.

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

Заключение


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

Автор: Андрей Фильченков, руководитель лаборатории машинного обучения ИТМО

© Habrahabr.ru