.

«Яндекс» открыл доступ к своей системе машинного обучения

7:00:00



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

Компания «Яндекс» разработала и первая среди российских компаний открыла для всех пользователей систему машинного обучения CatBoost. Она уже используется для обработки данных Большого адронного коллайдера в рамках сотрудничества с Европейской организацией по ядерным исследованиям (ЦЕРН), сообщили в пресс-службе компании. Сейчас исходный код, документация, бенчмарки и необходимые инструменты уже доступны на GitHub по открытой лицензии Apache 2.0. Как представители рынка отнеслись к продукту интернет-корпорации?

Описание CatBoost

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

«CatBoost — первый российский метод машинного обучения, который стал доступен публике», — сообщил руководитель управления машинного интеллекта и исследований «Яндекса» Михаил Биленко. В компании пояснили, что CatBoost — наследник метода машинного обучения Матрикcнет, который применяется почти во всех сервисах компании.

Как и предшественник, CatBoost подходит для работы с разнородными данными, используя механизм градиентного бустинга (множество деревьев решений, которые в совокупности делают некий прогноз), применяемый почти во всех технологических компаниях, где есть машинное обучение, уточнили в «Яндексе». «Но если Матрикснет обучает модели на числовых данных, то CatBoost учитывает и нечисловые, например виды облаков или типы зданий. Раньше такие данные приходилось переводить на язык цифр, что могло изменить их суть и повлиять на точность работы модели», — объясняет руководитель разработки систем машинного обучения «Яндекса» Анна Вероника Дорогуш. Теперь же такие данные можно использовать в первоначальном виде, благодаря чему, по ее словам, CatBoost показывает более высокое качество обучения, чем аналогичные методы для работы с разнородными данными.

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

Реакция участников рынка

Сравнивая систему с подобными продуктами Google (Tensorflow) и Microsoft (LightGBM), представитель «Яндекса» отметила, что Tensorflow решает другой класс задач, эффективно анализируя однородные данные — например, если речь идет об анализе изображений. «CatBoost работает с данными разной природы и может быть использован в связке с Tensorflow и другими алгоритмами машинного обучения в зависимости от конкретных задач», — говорит Дорогуш. Она подчеркивает, что у LightGBM российские разработчики выигрывают по качеству, что демонстрирует таблица тестов с общепринятым в машинном обучении сравнением. Пока компания проигрывает другим продуктам в скорости, но обещает догнать их и по этому показателю. Дорогуш добавляет, что CatBoost — результат долгой работы и, выкладывая технологию в открытый доступ, «Яндекс» обеспечивает серьезный вклад в развитие машинного обучения и рассчитывает, что сообщество специалистов оценит алгоритм по достоинству и поможет сделать его еще лучше: «Мы даем что-то сообществу, сообщество дает нам что-то в ответ».

«По тестам он [CatBoost] обходит на некоторых стандартных задачах [конкурирующие] алгоритмы на единицы процентов, в machine learning это довольно много», — пояснил Анатолий Орлов, руководитель Лаборатории больших данных ФРИИ. Важность развития алгоритма для российского поисковика он объяснил тем, что выдача поисковиков ранжируется именно по градиентному бустингу, используемому в CatBoost, а не по более привычным для среднестатистического пользователя нейросетям. Директор по стратегии и анализу Mail.Ru Group, куратор образовательной платформы для программистов GeekBrains Александр Горный уточнил, что сложно оценить качество нового продукта «Яндекса» за сутки и требуется более внимательное изучение эффекта его применения. Он считает, что даже если эффект будет заметен в одной задаче из десяти — это все равно хороший результат.


«Яндекс» пока не планирует зарабатывать на Catboost, он бесплатен для всех пользователей. В чем тогда выгода компании? «Очень правильный и своевременный шаг со стороны «Яндекса», — оценил выход CatBoost в открытых исходных кодах генеральный директор специализирующейся на компьютерном зрении компании VisionLabs Александр Ханин. Он объяснил, что наличие OpenSource-проектов подобного класса важно для PR и репутации в комьюнити машинного обучения, но отметил, что успешность фреймворка, покажет время и количество активных пользователей. В качестве индикатора успешности продукта Ханин предлагает количество использований этой библиотеки в конкурсах kaggle по отношению к случаям использования конкурентов.

«Компании выкладывают свой продукт в открытый доступ для создания сообщества и экосистемы вокруг разработки, авторитета среди разработчиков и популяризации компании. Любое упоминание об использовании Catboost в, например, конкурсах kaggle — плюс к репутации «Яндекса» как технологической компании. Для комьюнити это плюс, так как у xgboost появился серьезный конкурент, отточенный годами практики в продакшене большой компании», — объяснил Ханин мотивацию «Яндекса» и сообщества.

Александр Горный считает, что кроме очевидного социально-морального фактора есть, как минимум, три причины «за». Во-первых, дополнительное тестирование: «Чем больше людей будет использовать наш Tarantool или яндексовский CatBoost, тем больше интересных идей или пожеланий получат разработчики и тем лучше отрасль будет развиваться». В качестве второго аргумента он отметил, что мир становится лучше, а интернет-компании — одни из бенефициаров этого улучшения: «Каждый новый стартап — это не только приятный пользователю сервис, но и покупатель рекламы, и потенциальный объект для инвестиций. Чем больше и чем качественнее, будут стартапы, тем лучше будет всем». И наконец согласился с коллегами, что открытый доступ к кодам важен в качестве подготовки кадров: «Разработчика, заранее научившегося принятому в компании технологическому стеку, не надо доучивать или переучивать после приема на работу».

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

Нейросети или градиентный бустинг

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

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

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

Матрикснет

Первые поисковые системы были не такими сложными, как сейчас. Фактически сначала был просто поиск слов – сайтов было так мало, что особой конкуренции между ними не было. Потом страниц стало больше, их стало нужно ранжировать. Начали учитываться разные усложнения — частота слов, tf-idf. Затем страниц стало слишком много на любую тему, произошёл первый важный прорыв — начали учитывать ссылки.

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

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

Яндекс еще в 2009 году внедрили собственный метод Матрикснет, основанный на градиентном бустинге. Можно сказать, что ранжированию помогает коллективный разум пользователей и «мудрость толпы». Информация о сайтах и поведении людей преобразуется во множество факторов, каждый из которых используется Матрикснетом для построения формулы ранжирования. Фактически, формулу ранжирования теперь пишет машина. Кстати, в качестве отдельных факторов мы в том числе используем результаты работы нейронных сетей (к примеру, так работает алгоритм Палех).

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

Ещё одна важная особенность Матрикснета — в том, что формулу ранжирования можно настраивать отдельно для достаточно узких классов запросов. Например, улучшить качество поиска только по запросам про музыку. При этом ранжирование по остальным классам запросов не ухудшится.

Именно Матрикснет и его достоинства легли в основу CatBoost. Но зачем нам вообще понадобилось изобретать что-то новое?

Категориальный бустинг

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

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

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

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

Бенчмарки

Можно долго говорить о теоретических отличиях библиотеки, но лучше один раз показать на практике. Для наглядности мы сравнили работу библиотеки CatBoost с открытыми аналогами XGBoost, LightGBM и H20 на наборе публичных датасетов. И вот результаты (чем меньше, тем лучше):



Не хотим быть голословными, поэтому вместе с библиотекой в open source выложены описание процесса сравнения, код для запуска сравнения методов и контейнер с использованными версиями всех библиотек. Любой пользователь может повторить эксперимент у себя или на своих данных.

CatBoost на практике

Новый метод уже протестировали на сервисах Яндекса. Он применялся для улучшения результатов поиска, ранжирования ленты рекомендаций Яндекс.Дзен и для расчета прогноза погоды в технологии Метеум — и во всех случаях показал себя лучше Матрикснета. В дальнейшем CatBoost будет работать и на других сервисах. Не будем здесь останавливаться – лучше сразу расскажем про Большой адронный коллайдер (БАК).

CatBoost успел найти себе применение и в рамках сотрудничества с Европейской организацией по ядерным исследованиям. В БАК работает детектор LHCb, используемый для исследования асимметрии материи и антиматерии во взаимодействиях тяжёлых прелестных кварков. Чтобы точно отслеживать разные частицы, регистрируемые в эксперименте, в детекторе существуют несколько специфических частей, каждая из которых определяет специальные свойства частиц. Наиболее сложной задачей при этом является объединение информации с различных частей детектора в максимально точное, агрегированное знание о частице. Здесь и приходит на помощь машинное обучение. Используя для комбинирования данных CatBoost, учёным удалось добиться улучшения качественных характеристик финального решения. Результаты CatBoost оказались лучше результатов, получаемых с использованием других методов.

Как начать использовать CatBoost?

Для работы с CatBoost достаточно установить его на свой компьютер. Библиотека поддерживает операционные системы Linux, Windows и macOS и доступна на языках программирования Python и R. Яндекс разработал также программу визуализации CatBoost Viewer, которая позволяет следить за процессом обучения на графиках.



Более подробно все описано в нашей документации.

CatBoost — первая российская технология машинного обучения такого масштаба, которая стала доступна в open sourсe. Выкладывая библиотеку в открытый доступ, мы хотим внести свой вклад в развитие машинного обучения. Надеемся, что сообщество специалистов оценит технологию и примет участие в ее развитии.

You Might Also Like

0 коммент.

Рассылка обновлений по Email:

.