Гроссмейстеры больших данных: интервью с чемпионом мирового рейтинга Kaggle Станиславом Семеновым

Когда мы запускали журнал, на визитках наших героев часто встречались аббревиатуры «Д.Ф.-М.Н.», PHD, «Д.Т.Н.», а то и вовсе «ЧЛ.-КОРР.РАН». Лет шесть назад визитки исчезли, зато появились интересные собеседники, которые указывали рейтинг Codeforces — сайта, где проводятся соревнования по спортивному программированию. Часто по одной этой цифре можно было узнать о человеке гораздо больше, чем из резюме. Но в прошлом году у нас появился первый герой с новым рейтингом — Kaggle.
Гроссмейстеры больших данных: интервью с чемпионом мирового рейтинга Kaggle Станиславом Семеновым
@linaflwrs
Kaggle — самая известная в мире платформа для специалистов Data Science. Она выросла в комьюнити, которое объединило опытных и начинающих исследователей в области анализа данных и машинного обучения. Платформа была запущена в апреле 2010 года как площадка для проведения соревнований по машинному обучению.

Сейчас на Kaggle можно проходить курсы по AI, пользоваться облачными ресурсами для решения задач, общаться со специалистами по всему миру, искать работу и, конечно, участвовать в соревнованиях. В 2017 году платформу купила компания Google, усилив свои позиции в сообществе исследователей по искусственному интеллекту и повысив шансы в борьбе за лучших специалистов на рынке.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Мастер над соревнованиями

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

Новичком пользователь становится автоматически, как только присоединяется к Kaggle. Приняв участие во всех четырех категориях, попадаешь в участники. Переход в следующую категорию, эксперт, обеспечивают медали — например, две бронзовые за соревнования или 50 бронзовых — за обсуждения. Чтобы стать мастером соревнований потребуется одна золотая и две серебряные медали, а для мастера наборов данных — одна золотая и четыре серебряных. Но цель каждого участника (а их уже более 16 млн!) — звание гроссмейстера. В категории соревнований для этого надо иметь пять золотых медалей и еще одно сольное золото — взятое в одиночку. А в категории обсуждений потребуется 50 золотых медалей и 500 наград других достоинств.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
база данных, специалист, программист
Алексей Трясков, @linaflwrs

Как правило, золотые медали получают первые 10% соревнующихся с лучшими результатами. Серебро — те, кто вошел в топ-20, бронзу — топ-40. При очень большом количестве участников (более 250 команд) условия немного меняются. По словам специалиста по обработке данных Nvidia и гроссмейстера Kaggle Бояна Тунгуза, чтобы получить звание гроссмейстера, нужно разбираться в машинном обучении и прогнозной аналитике лучше, чем кто-либо другой, и при этом постоянно пересматривать гипотезы. Боян был первым, кто пробился в топ-10 во всех четырех категориях Kaggle после участия в 252 соревнованиях и победы в двух.

Когда я лет двадцать назад ездил в исследовательский центр Bell Laboratories, заметил, что на видном месте висит напоминание: здесь в разное время работали 19 нобелевских лауреатов.

Сейчас на сайтах крупнейших компаний в области анализа данных и машинного обучения указывается, сколько там работает мастеров и гроссмейстеров Kaggle. Например, на сегодня в мире всего 312 гроссмейстеров, из них в Nvidia работает 10 из топ-100 и еще 9 — в H2O.ai. Интересно, что 70 гроссмейстеров родом из США, 31 — из Японии, 29 — из России и 25 — из Китая.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Как проходят соревнования

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

Станислав Семенов, российская легенда, который в 2016 году стал № 1 в мировом рейтинге, попал туда, решая задачи, которые размещала на платформе Школа анализа данных «Яндекса», где он учился.

«Многие университеты и учебные группы используют платформу для своих внутренних соревнований, в ШАД это обычная история»
Станислав Семенов
Станислав Семенов, гроссмейстер Kaggle, база данных
Станислав Семенов гроссмейстер Kaggle
Редакция Techinsider.ru
Станислав Семенов окончил МФТИ, Школу анализа данных «Яндекса» и Высшую школу экономики, факультет компьютерных наук. Стал № 1 в Kaggle в 2016 году. Основатель компании Eqvilent, специализирующейся на алгоритмической торговле финансовыми инструментами на основе современных методов машинного обучения.

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

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

Работать над моделью можно индивидуально, а можно в команде. «Я в одиночку решил чуть меньше половины задач, остальные — вместе с другими участниками, — говорит Станислав Семенов. — Как происходит объединение в команду? Допустим, ты целый месяц один возишься с задачей и поднялся с ней высоко в рейтинге — например, на пятое место. И видишь рядом, месте на шестом, другого одиночку. Ну и предлагаешь: мол, давай объединимся в команду, соединим свои идеи и решения и сможем занять первое место».

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

Главный учитель

Несмотря на то, что за плечами у Станислава Семенова факультет общей и прикладной физики — самый сложный в МФТИ — и факультет компьютерных наук ВШЭ, главным учителем в области машинного обучения он считает Kaggle. «У тебя есть данные, и ты сидишь и ищешь в них какие-то интересные закономерности. Для этого никто не нужен: о том, как код писать или необходимые алгоритмы, можно в интернете прочитать», — делится Станислав.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

Как стать чемпионом

Больше всего мне о Kaggle рассказал начальник центра технологий искусственного интеллекта «Газпромбанка» Адель Валиуллин — человек, входивший в мировой топ-100 этой платформы. Понятное дело, я сразу же спросил его: «Как?!.»

Адель Валиуллин, машинное обучение
Адель Валиуллин
Редакция Techinsider.ru
Адель Валиуллин, начальник Центра технологий искусственного интеллекта АО «Газпромбанк», преподаватель курсов по машинному обучению и ИИ в НИУ ВШЭ, МГТУ им. Н. Э. Баумана и «Сириусе». Максимальный рейтинг Kaggle — 68-е место.

Выяснилось, что впервые с Kaggle Адель столкнулся в магистратуре, когда на курсах по машинному обучению на Coursera пришлось решать задачу из Kaggle по предсказанию победителя онлайн-игры Dota 2. Из 810 участников состязания Валиуллин занял 39-е место, и после этого его было уже не остановить. На вопрос, сколько времени у него уходило на работу над задачами, Адель просто ответил: «Все свободное. И еще немного несвободного».

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

В день можно отправить до пяти сабмитов, и если какой-то день пропустить, то теряешь возможность протестировать решения и идеи. К тому же параллельно идет несколько соревнований, и на определенных отрезках времени необходимо решать ряд задач одновременно. В среднем это занимало два-три часа в будни, весь день в выходные, а под конец приходилось засиживаться до последней секунды дедлайна — на Kaggle он наступает в три часа ночи по Москве. Отпуск у Аделя также проходил в обнимку с ноутбуком: задачи он начинал решать прямо в аэропорту и заканчивал там же по возвращении.

Менее чем за три года Валиуллин сумел подняться на 68-е место в мировом рейтинге. И кстати, он ни о чем не жалеет; более того, этот период своей жизни Адель вспоминает с восторгом и рассказывает о нем с заметным воодушевлением.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
программирование, искусственный интеллект
Shutterstock.com

Еще невероятнее история Станислава Семенова. Впервые он принял участие в соревнованиях Kaggle всего через пару месяцев после того, как начал изучать машинное обучение в ВШЭ, — и сразу попал в первую пятерку участников с самым высоким результатом. Состязания Станиславу понравились, и он поставил себе задачу: за полтора года стать № 1 в мировом рейтинге. «Через полтора года — номером один в мировом рейтинге, я не ослышался?» — переспросил я. «Да», — последовал спокойный ответ. «И как?» — «Стал».

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

В то время Станислав одновременно учился в вузе, работал на полную ставку и решал Kaggle. «Но как можно все это успеть?» — изумляюсь я. «Если не спать, то успеваешь везде», — отвечает мой визави, и я не могу понять, шутит он или говорит серьезно.

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

Есть спортсмены с доступом к почти неограниченным ресурсам — например, участники команды гроссмейстеров Kaggle из Nvidia — KGMoN. Адель Валиуллин в свое время купил сервер с четырьмя видеокартами Nvidia GeForce GTX 1080 Ti 11 Гб, 64 ядрами и оперативной памятью на 128 Гб за 300 тыс. рублей. «Думаю, это было одним из самых удачных вложений в моей жизни», — смеется он. Станислав арендовал сервера на Amazon.

«А что с призовыми? — полюбопытствовал я напоследок. — Говорят, были конкурсы с выплатами более 1 млн долларов?» «Я не обращал на это особого внимания. У меня много денег уходило на аренду серверов — наверное, с призовыми все же оставался в плюсе, — говорит Семенов. — Выплаты в Kaggle для меня никогда не были основным заработком. Мой главный источник дохода и тогда, и сейчас — навыки, которые я приобрел, участвуя в соревнованиях».