Как стать автором
Обновить
654.79
Сбер
Технологии, меняющие мир

Как нейронка обогнала бустинг, а команда Сбера заняла 1 место в конкурсе Data Fusion Contest 2022

Время на прочтение7 мин
Количество просмотров3.5K

Привет, Хабр! Буквально недавно стали известны итоги открытого соревнования по машинному обучению Data Fusion Contest 2022. Это уже второе соревнование, причём более масштабное, чем первое. В конкурсе с общим призовым фондом 2 млн рублей приняли участие более тысячи человек. Участники соревновались не один и не два дня, битва умов продолжалась целых 3,5 месяца. За это время организаторы получили 6,5 тыс. решений.

Что нужно было делать участникам? Если кратко, то главная задача была такой: при помощи машинного обучения решить проблему сопоставления из двух совершенно разных массивов данных. Требовалось сопоставить данные клиентов из датасета с транзакциями клиентов ВТБ по банковским картам и данные кликстрима (информация о посещении web-страниц) клиентов Ростелекома. Нужно было установить соответствие между клиентами двух организаций. Оно устанавливалось, если два клиента из датасетов – один и тот же человек. Конечно же, данные были деперсонализированы, сохранялась лишь весьма ограниченная информация о самом поведении пользователей. Сопоставлять всё это обучали искусственный интеллект. Подробности – под катом. А ещё там будет ссылка на исходники крутой библиотеки для ИИ, которую использовали победители конкурса. Поехали!

Зачем всё это?

Технологии Data Fusion и алгоритмы слияния данных становятся всё более востребованными в арсенале специалистов по анализу данных. Благодаря этим технологиям, с одной стороны, появляется возможность оперативно решать задачи бизнеса, с другой – удаётся сохранять высокий уровень безопасности клиентских данных, не выводя их за пределы компании.

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

Сбер создал и опубликовал в открытом доступе программную библиотеку PyTorch-LifeStream, содержащую несколько алгоритмов построения эмбеддингов событийных данных.

Эмбеддинг (Embedding) – преобразования сложноструктурированных данных,  например слов, текстов, атрибутов событий, событий и их последовательностей, в машинно-читаемый набор чисел – числовой вектор.

Событийные данные – разные последовательности. Это истории посещений сайтов,  банковских транзакций, истории мобильных звонков, истории покупок, событий в онлайн-играх и т. п. Сгенерированный на основе алгоритмов библиотеки эмбеддинг такой последовательности не содержит каких-либо персональных данных.

В библиотеке реализован уникальный алгоритм применения нейросетевого контрастного обучения к событийным данным, созданный и запатентованный в Лаборатории по искусственному интеллекту Сбера.

Про задачу

Самой популярной из трёх задач соревнования стала главная – Matching. Всего было представлено более 3 тысяч вариантов её решения от 84 команд. От участников требовалось сделать решение, которое устанавливало бы соответствие между клиентами крупного банка и интернет-провайдера, о чём говорилось выше. В качестве ответа для каждого клиента банка нужно было предоставить 100 наиболее вероятных клиентов провайдера. Оценка велась для ранжирования – то есть чем ближе правильный ответ был к началу списка, тем выше оценка.

Решения, предложенные участниками, оценивались и ранжировались автоматически. Победителей номинаций выбирали члены жюри – организаторы соревнования и приглашённые эксперты. Принять участие в Data Fusion Contest 2022 могли все желающие, если им исполнилось 17 лет.

Команда Сбера Sberbank AI Lab пришла на соревнование, имея обширный опыт работы с событийными данными. Участники – учёные из Лаборатории по искусственному интеллекту Сбера. Стоит отметить, что и для них всё было непросто – конкурсная задача матчинга позволила удачно применить разработанный в Лаборатории ИИ метод генерации эмбеддингов транзакционных данных одновременно для двух разных доменов событийных данных (транзакции и кликстрим – атрибуты посещения веб-страниц).

Предложенное решение оценивалось автоматически по метрике оценки качества, так что команда Сбера заняла первое место и получила главный приз в полмиллиона рублей. В команду вошли управляющий директор по исследованию данных Лаборатории ИИ СберБанка Дмитрий Бабаев и руководители направления по исследованию данных Лаборатории ИИ Иван Киреев и Никита Овсов. Победители создали лучшее решение благодаря применению собственной библиотеки PyTorch-LifeStream, которая позволила ускорить разработку решения, так как содержит много готовых инструментов для работы с событийными данными, и дала возможность стать фаворитом престижного конкурса.

Про данные

Всего в датасете было 15,4 млн транзакций для 17581 уникального клиента банка и 94,8 млн событий кликстрима для 14671 уникального клиента провайдера. Примерно 16,6% клиентов банка были без матчинга. Кроме того, организаторы предоставили неразмеченные данные в виде датасета из 4952 клиентов банка с 4,4 млн транзакций и столько же клиентов интернет-провайдера с 32 млн кликов. Вот как выглядели сами данные. Сопоставленные пары идентификаторов клиентов в банке и у провайдера:

Банковские транзакции:

ID клиента, mcc-код и два поля с его текстовым описанием, код валюты с расшифровкой, сумма транзакции и время транзакции.

Кликстрим – данные о веб-сёрфинге:

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

Базовое решение

Организаторы соревнования предложили baseline, в котором в качестве фичей считались простые статистики (sum, mean, count) по сумме транзакции или количеству кликов в разрезе каждого mcc-кода или категории. Фичи для транзакций и кликов объединялись и подавались в алгоритм бустинга. Алгоритм обучался как задача бинарной классификации. Правильным ответом была 1, если транзакции и кликстрим соответствуют одному человеку (есть мэтч). Ну и 0 получался, если клиенты были разными людьми. Для каждого клиента банка был доступен один правильный клиент интернет-провайдера (соответствие из разметки) и несколько случайно выбранных из всей выборки неправильных примеров. На public leaderboard базовое решение получило оценку качества R1 = 0.2217.

Первоначально у команды Сбера получилось улучшить бейзлайн до R1 = 0.2757, но основные усилия команде хотелось приложить именно к решению задачи с помощью нейронных сетей. В качестве примера подхода, основанного на генерации признаков для бустинга, доступен код решения, занявшего второе место в задаче Matching.

Модель Sberbank AI Lab

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

Сеть включает два этапа:

  • TrxEncoder, который преобразует каждую отдельную транзакцию или  клик в векторное представление.

  • SequenceEncoder, который сжимает последовательность векторов из TrxEncoder в один конечный вектор.

В качестве кодировщика транзакций был взят готовый слой из библиотеки TrxEncoder. Его работа показана на схеме:

Обучающий батч содержит 128 пар пользователей банк-провайдер. Это короткие последовательности событий - по две выборки на основе транзакций в банке и по две выборки на основе его истории посещений сайтов. Таким образом, есть 256 образцов последовательностей транзакций для 128 пользователей банка и 256 образцов последовательностей кликов для 128 пользователей провайдера. Затем создаётся матрица 256*256 с попарными расстояниями L2 и матрица с совпадением-несовпадением меток. Метки использованы для выборки положительных и отрицательных образцов для функции потерь Softmax Loss.

SequenceEncoder – рекурентно-нейронная сеть (RNN), совместно используемая для транзакций и кликов. Веса инициализируются случайным образом. TrxEncoder представляет собой конкатенацию обучаемых векторов (эмбеддингов) категориальных признаков и нормализованных числовых значений.

Команду вдохновила архитектура BERT для предварительной подготовки. Поэтому использована схема TrxEncoder + TransformerEncoder и задача MLM (Masked Language Model). TransformerEncoder предсказывает маскированные векторы TrxEncoder. TrxEncoder обучается транзакциями, а затем отдельный TrxEncoder обучается на данных кликов.

Аугментации

На всех этапах обучения сети использовались аугментации.

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

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

Ансамблирование

В финальном варианте решения команда добавила использование ансамбля сетей. Несколько сетей обучались с разными random seeds. Каждая сеть выдавала матрицу попарных расстояний, а эти матрицы усреднялись по всем сетям ансамбля. В итоге это дало самый большой прирост качества: для ансамбля из пяти моделей метрика качества R1 выросла с 0.2819 до 0.2949. Вот график зависимости качества от количества сетей в ансамбле:

В финальном решении удалось уместить 11 сетей, вычисление ответа для которых выполнялось почти за час. Можно было ускорить инференс и взять больше моделей в ансамбль, если бы команда вовремя заметила, что GPU в контейнер не подключилось. Позже были проведены точные замеры на локальной машине, оказалось, что с GPU инференс с пятью моделями в ансамбле работает 2 минуты, из них полторы – это предобработка данных.

Итоговое решение команды Сбера доступно на GitHub

Что же, на этом всё. Если вам интересны подробности решения либо есть другие вопросы – пишите в комментариях, а мы обязательно ответим.

Теги:
Хабы:
Всего голосов 25: ↑23 и ↓2+21
Комментарии2

Информация

Сайт
www.sber.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия