Нейронные сети. Импульсные нейронные сети: мозг в компьютере. Программная реализация класса

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно.

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод - это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это - ввод нашего искусственного нейрона.

Потом нейрон производит какое-то вычисление и выдает выходное значение. Мы получили 1, т.к. округлённое значение сигмоиды в точке 5 равно 1 (более подробно об этой функции поговорим позже).

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

Если вы объедините эти нейроны, то получите прямо распространяющуюся нейронную сеть - процесс идёт от ввода к выводу, через нейроны, соединённые синапсами, как на картинке слева.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera , посвящённой нейронным сетям - она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

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

Это заняло целый день, и вряд ли результат получился удовлетворительным. Но это неважно, ведь я разобрался, как всё работает. Код можно увидеть .

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

Шаг 3. Метод обратного распространения ошибки

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

18.07.2017, ВТ, 15:53, Мск, Текст: Владимир Бахур

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

Гибкое использование числовых и нечисловых данных

«Яндекс» представил новый метод машинного обучения CatBoost и выложил в открытый доступ для всех желающих библиотеку CatBoost на GitHub по лицензии Apache License 2.0. Методика позволяет эффективно обучать модели на разнородных данных - таких как местонахождение пользователя, история операций и тип устройства.

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

«Яндекс много лет занимается машинным обучением, и CatBoost создавали лучшие специалисты в этой области. Выкладывая библиотеку CatBoost в открытый доступ, мы хотим внести свой вклад в развитие машинного обучения, - сказал Михаил Биленко , руководитель управления машинного интеллекта и исследований «Яндекса». - Надо сказать, что CatBoost - первый российский метод машинного обучения, который стал доступен в Open Source. Надеемся, что сообщество специалистов оценит его по достоинству и поможет сделать ещё лучше».

Как пояснили CNews в «Яндексе», методика CatBoost является наследником метода машинного обучения «Матрикcнет», который применяется почти во всех сервисах «Яндекса». По аналогии с «Матрикснет», CatBoost задействует механизм градиентного бустинга, который хорошо подходит для работы с разнородными данными.

Методика CatBoost интересна сокращенным временем переобучения благодаря применению патентованного алгоритма построения моделей, который, в свою очередь, отличается от стандартной схемы градиентного бустинга.

Логотип проекта CatBoost

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

Теперь такие данные можно использовать в первоначальном виде, благодаря чему CatBoost показывает более высокое качество обучения, чем аналогичные методы для работы с разнородными данными. Его можно применять в самых разных областях - от банковской сферы до промышленности.

CatBoost можно запустить прямо из командной строки или воспользоваться удобным для пользователя API для Python или R с инструментами для анализа формул и визуализации обучения.

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

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

Сравнение алгоритмов машинного обучения (GitHub)

Разработчики также планируют развивать технологию внутри компании: сейчас над ней работает отдельная команда, которые занимается улучшением и внедрением в большее количество сервисов. С течением времени библиотека применений CatBoost будет расти. Поскольку технология выложена в открытый доступ, весь прогресс будет сразу же доступен всем пользователям. Учитывая количество и качество сервисов «Яндекса» и нетривиальные задачи, которые в них решаются, в компании уверены, что технология останется лидирующей в своем классе еще долгое время.

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

Наиболее эффективный с практической точки зрения способ - это подсчет «счетчиков», его активно используют соревнующиеся на Kaggle, и этот способ используется в победных решениях. В существующих открытых решениях такой способ не используется, а используются более простые методы, такие как one-hot-encoding, они работают обычно хуже. Например, такую предобработку можно использовать в алгоритме lightgbm.

В CatBoost используется более интеллектуальная работа с категориальными факторами, где статистики по ним подсчитываются не заранее, а во время обучения, причем выбираются самые полезные статистики по данным и их комбинациям. One-hot encoding в CatBoost, конечно, тоже поддержан; для характеристик, у которых мало значений иногда такой способ дает плюс в качестве, пояснили в «Яндексе».

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

Практические приложения

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

В дальнейшем CatBoost будет работать и на других сервисах, отмечают в «Яндексе». Его использует также команда Yandex Data Factory - в своих решениях для промышленности, в частности для оптимизации расхода сырья и предсказания дефектов.

CatBoost уже имеет опыт международного использования: этот метод машинного обучения был внедрен Европейским центром ядерных исследований (ЦЕРН) для объединения данных, полученных с разных частей детектора LHCb.

Данные, собранные в ходе эксперимента, обрабатываются для индивидуальных столкновений с помощью CatBoost со скоростью 40 миллионов в секунду.

Доступность CatBoost

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

«Яндекс» разработал также программу визуализации CatBoost Viewer, которая позволяет следить за процессом обучения на графиках. Скачать CatBoost и CatBoost Viewer можно на GitHub .

Рассмотрим импульсные нейронные сети: особенности, перспективы и преимущества, благодаря которым успешно вытесняется 2-е поколение.

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

Импульсные нейронные сети: принцип работы

К природной физиологии ближе импульсные (спайковые) нейронные сети (spiking neural network, SNN). Импульсные нейронные сети преодолевают разрыв между нейронаукой и машинным обучением, используя для обработки информации биологически реалистичные модели нейронов.

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


Пример сигналов на трех нейронах импульсной нейронной сети

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


Потенциал на мембране нейрона в процессе передачи сигнала

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

Импульсные нейронные сети: расстояние и время

На первый взгляд, подход SNN может показаться шагом назад – от непрерывной, своего рода аналоговой картины, к импульсной, двоичной. Однако преимущество SNN состоит в том, что импульсный подход позволяет оперировать данными, учитывая расстояния между нейронами и длительность распространения сигнала, то есть в контексте пространства и времени. За счет этого сети SNN гораздо лучше приспособлены для обработки данных от настоящих сенсоров.

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

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

Пр облемы для практического использования

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

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

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

Перспективы развития

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

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

«Яндекс» внедрил новый алгоритм поиска на основе нейронных сетей. По мнению экспертов, это должно помочь компании увеличить на российском рынке отрыв от основного конкурента - Google

Российский интернет-холдинг ​«Яндекс» внедрил новый поисковый алгоритм на основе нейронных сетей. Об этом сообщил руководитель службы релевантности сервиса Александр Сафронов​. Новый алгоритм, получивший название «Королев», ищет не только по ключевым словам, но и по смыслу, и на сложные вопросы выдаются более точные ответы, пояснил представитель «Яндекса».

В 2016 году «Яндекс» внедрил алгоритм «Палех», который в режиме реального времени сопоставляет смысл редкого и уникального запроса и заголовка веб-страницы, даже если у них нет общих ключевых слов. Например, при запросе «картина, где небо закручивается» поисковик сможет выдать полотно Ван Гога «Звездная ночь». В отличие от «Палеха» «Королев» способен анализировать страницу целиком, а также смысл запросов, по которым на нее переходят другие пользователи.

Руководитель направления поиска «Яндекса» Андрей Стыскин привел другой пример сложного запроса: «фильм про космос где отец общается с дочерью через секундные стрелки». В данном случае запрос не содержит ключевых слов, но поисковый алгоритм способен понять, что речь идет о фильме «Интерстеллар», говорит Стыскин.

По словам представителей сервиса, нейросеть способна самообучаться, поэтому чем больше пользователи ищут в поисковике, тем точнее будут результаты. Для обкатки будет использоваться открытая краудсорсинговая платформа «​Яндекс.Толока», запущенная в 2014 году. По сути, это сервис, где любой желающий может участвовать в тестировании продуктов «Яндекса», давать им оценки и оставлять замечания. Компании это позволяет улучшать свои услуги, а пользователи получают за это денежные вознаграждения. Сейчас в «Яндекс.Толоке» зарегистрированы более 1 млн пользователей.

«Проблема нейросетей состояла в том, что они очень медленные и их нельзя было использовать в работе с огромными массивами текста в режиме реального времени, — говорит основатель и управляющий партнер компании «Ашманов и партнеры» Игорь Ашманов. — Если «Яндекс» реально смог привлечь нейросети к индексированию всего объема Рунета — это интересно, это довольно серьезный прорыв с технологической точки зрения». Насколько новый алгоритм улучшит качество поиска и улучшит ли его в принципе, еще предстоит проанализировать, отметил Ашманов.

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


Догнать и перегнать

По словам аналитика «ВТБ Капитала» Владимира Беспалова, новая версия российского поисковика — шаг по удержанию доли «Яндекса» на рынке. «Обновленное мобильное приложение «Поиска», новый алгоритм поисковика — все это должно помочь «Яндексу» стабилизировать и увеличивать свою долю на рынке поиска, — говорит эксперт. — Эффект будет ощутим не сразу, но снижение поисковых запросов в долгосрочной перспективе может менее благоприятно сказаться на будущих показателях. Поиск — главный продукт «Яндекса», основной доход компании — это реклама, которая привязана к поиску».

Удерживать свои позиции в мобильном поиске «Яндексу» может помочь решение ФАС, напоминает Беспалов. В апреле этого года ведомство заключило мировое соглашение с главным конкурентом российской компании на поисковом рынке — Google. Согласно ему американский интернет-гигант пересмотрит соглашения с производителями смартфонов на Android в России и позволит пользователям выбирать в качестве основных на своих устройствах альтернативные Google поисковые сервисы.

По итогам второго квартала этого года доля «Яндекса» на рынке поиска в России составила 54,3%, как сообщала Yandex N.V. (головная компания «Яндекса») в своем финансовом отчете со ссылкой на собственный сервис аналитики «Яндекс.Радар». На 31 июля, по данным «Яндекс.Радар», Google занимал 40,36% среди поисковых систем в России. По данным LiveInternet, в среднем за последние три месяца среди поисковиков «Яндекс» лидировал с долей 51,1%, у Google было 43,9%. Yandex N.V. не раскрывает выручку от поиска, но направление «поиск и портал» принесло компании 20,135 млрд руб., что на 22% больше, чем за аналогичный период 2016 года.

«Предыдущая революционная версия поиска «Матрикснет» позволила «Яндексу» оторваться от Google и нарастить свою долю почти на 10 п.п. за полгода. Это наглядный пример того, как применение прорывных технологий приводит к очевидным бизнес-результатам даже на таком сложном рынке, как поисковый», — считает управляющий партнер онлайн-школы Skyeng и бывший директор по международному развитию «Яндекса» Александр Ларьяновский.

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

  • Python ,
  • Машинное обучение ,
  • Поисковые технологии
  • Сегодня Яндекс выложил в open source собственную библиотеку CatBoost, разработанную с учетом многолетнего опыта компании в области машинного обучения. С ее помощью можно эффективно обучать модели на разнородных данных, в том числе таких, которые трудно представить в виде чисел (например, виды облаков или категории товаров). Исходный код, документация, бенчмарки и необходимые инструменты уже опубликованы на GitHub под лицензией Apache 2.0.

    CatBoost – это новый метод машинного обучения, основанный на градиентном бустинге. Он внедряется в Яндексе для решения задач ранжирования, предсказания и построения рекомендаций. Более того, он уже применяется в рамках сотрудничества с Европейской организацией по ядерным исследованиям (CERN) и промышленными клиентами Yandex Data Factory. Так чем же CatBoost отличается от других открытых аналогов? Почему бустинг, а не метод нейронных сетей? Как эта технология связана с уже известным Матрикснетом? И причем здесь котики? Сегодня мы ответим на все эти вопросы.

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

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

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

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

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

    Матрикснет

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

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

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

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

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

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

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

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

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

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

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

    Кстати, название технологии происходит как раз от Categorical Boosting (категориальный бустинг). И ни один кот при разработке не пострадал.

    Бенчмарки

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

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

    CatBoost на практике

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

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

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

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