Machine Learning: где деньги лежат?

Машинное обучение сейчас в тренде, вот только если коснуться коммерческого применения — возникает много вопросов. Потому мы нашли человека, у которого есть ответы. Мы поговорили с Александром Сербулом из »1С-Битрикс», который рассказал о применении машинного обучения для решения бизнес-задач, причинах хайпа вокруг deep learning и пользе чат-ботов для пользователей и бизнеса. За подробностями добро пожаловать под кат.

a935ec2725fd2d09bac9f06f30ffd3cb.jpg



487b656929fd88a4575c83f2197b85a9.jpgАлександр Сербул — эксперт в области Big Data, разработки программного обеспечения, системного анализа и проектирования. В »1С-Битрикс» курирует направление контроля качества интеграции и внедрений, активно участвует как архитектор и разработчик в проектах компании, связанных с высокой нагрузкой и отказоустойчивостью («Битрикс24»), консультирует партнеров и клиентов по вопросам архитектуры высоконагруженных решений, эффективному использованию технологий кластеризации продуктов »1С-Битрикс» в контексте современных облачных сервисов (Amazon Web Services и др.).

 — Как Вы пришли в машинное обучение и чем обусловлен Ваш интерес к нему?

Александр Сербул: В машинное обучение я пришел на волне хайпа. Я опытный инженер, но у меня нет математического образования и научной степени. Мне было интересно, насколько машинное обучение помогает решать реальные бизнес-задачи. Постепенно я втянулся и разобрался с алгоритмами и основными подходами, со всей математикой под капотом, с популярными библиотеками.

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

 — Вы курируете направления AI, deep learning и big data. Расскажите об основных задачах, которые вы решали с использованием машинного обучения?  

Александр Сербул: Официально я курирую направление контроля качества и интеграции внедрений, но, кроме того, несколько лет занимаюсь направлениями big data, machine learning (в том числе deep learning) и искусственного интеллекта.

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

Дальше мы решили улучшать систему рекомендаций с помощью проведения АБ-тестирования. Мы внедрили в продукт Битрикс инструменты для проведения АБ-тестов. В итоге после серии тестов и анализа их результатов мы упростили модель рекомендаций и взяли за основу content-based-подход. Мы составляем профиль интересов пользователя в зависимости от того, какие сайты он посещает. Затем, когда человек приходит в магазин, мы можем понять, какие товары могут его заинтересовать, а какие — нет.

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

После этого мы использовали машинное обучение внутри компании, в том числе для предиктивной аналитики в маркетинге. Создали модель, которая предсказывает, какие клиенты в скором времени начнут платить деньги за продвинутое пользование сервисом, насколько долго они будут пользоваться приложением, а также научились предсказывать отток аудитории. Затем мы делали модель, которая составляет портрет пользователя и кластеризует клиентов в зависимости от того, какие продукты им интересны.

 — А как насчет модного сейчас deep learning? У вас были проекты, где нужно было обучать глубокие сети?

Александр Сербул: Последний год мы активно копаем тему искусственного интеллекта и глубокого обучения для создания чат-ботов. Мы сделали пилот вместе с мэрией Москвы. Датасет, на котором мы обучались, состоял из 500 тыс. вопросов с ответами. Пока разработка не пошла дальше пилота, хотя качество было нормальным: accuracy получилось около 75%. Не слишком круто, но тем не менее чат-бот позволял людям находить ответы на свои вопросы быстрее и эффективнее.

 — Раз уж мы заговорили о чат-ботах, как Вы относитесь к технологиям, которые создают ребята из iPavlov? Ваше решение принципиально отличается от их?

Александр Сербул: Я читал про их продукты, но, честно говоря, считаю, что пока машинное обучение в сфере чат-ботов не может дать необходимого бизнес-качества. Подобные алгоритмы пока скорее относятся к продвинутым исследованиям и науке, чем к бизнесу. Чат-бот может служить помощником, советчиком, но никак не заменять стандартные колл-центры или техподдержку. Я не верю, что на сегодняшний день боты смогут эффективно заменить людей. Deep learning помог сделать ботов более умными. Теперь вполне возможно решать узкие задачи (заказ пиццы, например) с их помощью, но вести диалог с ботом и получать осмысленные ответы все равно не получается.

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

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

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

Александр Сербул: Конечно, это связано с тем, что научились правильно обучать глубокие сети. Появился софт для этого, появилось железо (GPUшки). В некоторых сферах (самодвижущиеся автомобили, например) стали пытаться заменить человека алгоритмами на основе нейронных сетей. Все это мне напоминает компьютеризацию: с помощью компьютеров автоматизировали бухгалтерию, банковскую сферу. Но все равно сидят люди, перебирают бумажки, а в некоторых банках до сих пор работает принцип «где карту открывали, туда и идите». Рутинная работа уходит, но очень медленно.

Вторая важная причина — появились большие датасеты. Доступность big data и наличие железа для обработки больших данных позволяет получать крутые результаты с помощью глубоких сетей.

Третья причина — ученые стали активнее заниматься нейронными сетями. Появились рекуррентные сети, значительно продвинулись исследования в области сверточных сетей.

Но все-таки корень этого хайпа — интерес вендоров к подобным технологиям. Грамотная работа с контекстной рекламой, например, позволяет получать огромную прибыль. Поэтому крупным IT-гигантам, вроде Google или Facebook, выгодно тратить деньги на исследования в области глубокого обучения, нанимать ведущих ученых, обеспечивать условия развития этой области. Способствуя развитию передовых технологий, они не только двигают передовой край науки, но и зарабатывают миллионы.

 — Как правильно выбрать архитектуру нейронной сети для решения своей бизнес-задачи? Есть какие-то универсальные рецепты, как «приготовить» хорошую нейронку?

Александр Сербул: Нет рецепта, на самом деле. Обучение нейронных сетей пока похоже на искусство. Даже вопрос инициализации сети остается открытым: есть много способов, и непонятно, какой из них хорошо сработает для конкретной задачи.

Однако есть общие подходы, описанные в различных книгах. Моя любимая — книга I. Goodfellow, Y. Bengio и A. Courville (можно скачать тут. Мой совет — начинать обучать нейронки для решения практических задач и развивать интуицию. В любом фреймфорке с нейросетями (TensorFlow, например) есть примеры и готовые архитектуры. Нужно садиться и пробовать, разбираться.

 — Какими знаниями нужно обладать, чтобы начать внедрять нейронные сети в свои проекты? Навыков кодинга и знания библиотек для deep learning достаточно?

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

 — А как же готовые фреймворки и библиотеки машинного обучения (sklearn, например)? С ними нельзя работать, не понимая досконально математику под капотом?

Александр Сербул: Конечно, нет. Без понимания хотя бы базовых принципов теорвера это все спекуляция какая-то. Чтобы начать эффективно использовать библиотеки машинного обучения, надо быть квалифицированным специалистом, иметь хорошую математическую базу. Там же клингонский язык 95 уровня: «тервер», мат. статистика, линейная алгебра. Многие разработчики всего этого не знают. Можно, конечно, не обладая специальными знаниями сделать «from sklearn import RandomForest», но такой data scientist с нулевыми знаниями математики далеко не уедет.

Все машинное обучение пропитано математикой. Это как музыка: как можно играть, не зная ноты? Три аккорда побренчать в переходе, и все. Настоящая музыка требует сольфеджио. Есть самоучки, конечно. У меня нет математического образования, и это мне доставляло жуткие страдания. Открываешь книжку по машинному обучению, а там с первой страницы «eigen vectors», «eigen values», «априорная вероятность» и пошло-поехало. Приходилось разбираться самостоятельно, читать книги и тратить много времени.

 — Что насчет выбора инструментов? В качестве языка программирования используете только Python, а для обучения нейронок популярные фреймворки (тот же TensorFlow)?

Александр Сербул: Да, TensorFlow, несомненно, популярен. Но все-таки выбор технологии и языка программирования для обучения нейронок — это открытый вопрос. Я сам писал код на Java для обучения нейросетей. Я нашел библиотеку тензоров на Java (ND4J). Я и дифференцирование писал сам, там не было готового. Эта нейросеть сейчас у нас работает в продакшне, для техподдержки. Работает хорошо, стабильно, быстро, надежно. Качество устраивает бизнес: они заменили часть сотрудников нейронкой.

 — Кроме deep learning, какие алгоритмы используете для решения бизнес-кейсов?

Александр Сербул: Мы используем не только нейросети. Нейронки обычно идут в ход, когда более простые алгоритмы работают плохо. Мы работаем с разными алгоритмами: Random Forest, SVM, логистическая регрессия, линейные модели, деревья решений. Для каждой задачи нужно подбирать свой инструмент, от данных зависит очень много. Сейчас, например, Яндекс выпустил библиотеку CatBoost. Сам алгоритм (градиентный бустинг) придуман давно, но на многих задачах работает не хуже нейросети. Мы попробовали использовать CatBoost и остались очень довольны результатами.

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

Александр Сербул: Сейчас что хорошо продается? Точные алгоритмы, которые быстро и хорошо решают конкретную задачу. По моему мнению, есть три главные составляющие успеха.

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

Во-вторых, у любого продукта должна быть бизнес-измеримость. Как продать искусственный интеллект? Надо его померять и продать, продать гарантии качества продукта. Необходимо четко ставить задачи: «Сократить издержки на 10%» или «Внедрить чат-бот и увеличить эффективность работы тех. поддержки на 20%». Задача может быть поставлена математически нечетко, задача менеджера и аналитиков — превратить бизнес-требования в понятную для науки проблему, а затем результат исследовательской работы — в понятную для бизнеса модель.

В-третьих, нужно создавать быстрые прототипы. Кажется, в банке Тинькофф рассказывали, что из 10 сделанных у них моделей взлетает только 1–2. Еще важно, чтобы у части команды, ответственной за research, был доступ к данным от заказчика. На сбор данных надо обращать много внимания.

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

Александр Сербул: Я часто работал в режиме стартапа. Например, в веб-студии Qsoft. В свое время мы запускали Эльдорадо.ру. По своему опыту могу сказать, что в режиме стартапа работать намного эффективнее. Люди быстро учатся, увлечены созданием продукта, могут поработать поздно вечером или в выходные ради «идеи».
В небольшой компании все друг друга знают, все свои.

Крупные компании — это обычно «игра престолов»: повышения, премии, кто главный и т.д. Бывает, что становится скучно, все задачи переделаны, а брать новые и выполнять снова рутинную работу не хочется. Конечно, далеко не везде так. Но мне все-таки комфортнее работать в режиме стартапа.

 — И в завершение, как Вы думаете, в каком направлении будет дальше развиваться машинное обучение? Превзойдут ли нейронные сети людей в умении решать рутинные задачи?

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

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


Хотите узнать детали еще большего количества кейсов по применению Machine Learning, приходите послушать доклад Александра Сербула «Прикладное машинное обучение в электронной коммерции: сценарии и архитектуры пилотов и боевых проектов» на нашу октябрьскую конференцию SmartData 2017. Кроме него там выступят еще 16 спикеров с различными докладами, среди которых:
 — Neurona: зачем мы научили нейросеть писать стихи в стиле Курта Кобейна? (Иван Ямщиков, Институт Макса Планка, Лейпциг, Германия / Created Labs)
 — Deep Learning: Распознавание сцен и достопримечательностей на изображениях (Андрей Бояров, Mail.Ru Group)
 — Глубокое обучение, вероятностное программирование и метавычисления: точка пересечения (Алексей Потапов, ИТМО)

© Habrahabr.ru