Как стать топ-100 на Kaggle и топовым Data Scientist, за которым охотятся работодатели
Адель Валиуллин делится опытом участия в соревнованиях и рассказывает, как занять высокое место в рейтинге Kaggle.
4К открытий14К показов
Руководитель Центра технологий искусственного интеллекта Газпромбанка Адель Валиуллин смог войти в топ-100 международного рейтинга Kaggle профессионалов в области машинного обучения и подняться на 68-е место. В октябре 2023 года Адель выступил с лекцией для студентов в МФТИ, на которой рассказал, что помогло ему достичь топовых позиций и как Kaggle повлиял на его дальнейшее профессиональное развитие в Data Science. По материалам прочитанной лекции решили опубликовать эту статью.
Адель Валиуллин
Начальник центра технологий искусственного интеллекта Газпромбанка
Kaggle — самая известная в мире платформа для специалистов по Data Science. Она выросла в комьюнити, которое объединило в себе опытных и начинающих исследователей в области анализа данных и машинного обучения.
Платформа была запущена в апреле 2010 года как площадка для проведения соревнований по машинному обучению, но сегодня это уже целая экосистема с более чем 16 млн зарегистрированных пользователей. Сейчас на Kaggle можно проходить курсы по AI, пользоваться облачными ресурсами для решения задач, общаться со специалистами по всему миру, искать работу и, конечно же, участвовать в соревнованиях. В 2017 году Google купила платформу Kaggle, усилив позиции в сообществе исследователей по искусственному интеллекту, а также в борьбе за лучших специалистов на рынке.
Основное предназначение платформы в том, что на ней проводятся различные хакатоны и соревнования от крупных компаний, таких как Google, Amazon, Facebook, Microsoft, Baidu и других, по результатам которых участники получают очки и формируется мировой рейтинг лучших профессионалов в области машинного обучения.
В среднем одно соревнование идёт два-три месяца, в течение которых участники могут загружать свои решения в систему.
Всего на платформе проведено уже более 300 соревнований. Каждое представляет собой актуальную задачу машинного обучения от компании, например, решение задачи кредитного скоринга — необходимо обучить систему принимать решения по кредитным заявкам банка на основе данных клиента (возраст, пол, образование, стаж работы, анкетные данные и других). Или, например, обучить модель компьютерного зрения, которая распознаёт одинаковые достопримечательности на различных фотографиях. Или как можно точнее предсказать цену продажи объектов недвижимости по их описанию и фото.
В каждой из задач есть определённая метрика, по которой оценивается точность решения и формируется лидерборд участников. Качество решений участников проверяется на закрытом наборе данных — это гарантирует максимально честную оценку.
Также каждое соревнование имеет призовой фонд, в среднем это 30-50 тысяч долларов, но были и несколько соревнований с призовыми в 1.2 млн и 1.5 млн долларов. То есть можно успешно решить соревнование, купить себе яхту и отправиться в кругосветное путешествие. Но, конечно, никто не решает соревнования только ради денег, это скорее приятный бонус.
Составляющие успеха на Kaggle
Хороший бэкграунд
Я учился в физико-математическом лицее 131 в Казани. В школе увлекался олимпиадами по математике и физике, а летом выезжал на смены в летние физмат школы. Мне в какой-то степени повезло, что у меня появилась такая сильная техническая база.
В таких точных науках, как математика, физика и программирование, короткая и однозначная цепочка обратной связи. Ты решил задачку и моментально понимаешь, что молодец. Тебя не должен оценивать кто-то извне, как в гуманитарных науках, художке или музыке. Плюс достаточно легко перейти с одного уровня сложности на следующий. Думаю, этим мне и нравится математика, поэтому после окончания школы я с большим удовольствием преподавал её в Физтех-школе в группах для школьников. Было приятно видеть, как ребята учатся решать всё более сложные задачи и получают удовольствие от этого процесса. Уже в аспирантуре я узнал, что это называется зоной ближайшего развития.
После лицея поступил на факультет Робототехники и Комплексной Автоматизации МГТУ им. Н. Э. Баумана, который закончил с отличием. Но думаю, всё-таки кругозор в IT хорошенько меня ударил на двухгодичной программе Технопарка от Mail.Ru Group. Это дополнительная программа обучения для студентов Бауманки по направлению веб-разработки, где молодые заряженные специалисты компании читают лекции по разным предметам: углублённое программирование на C/С++, алгоритмы и структуры данных, разработка веб-сервисов, мобильная разработка, безопасность интернет-приложений, тестирование, управление проектом и другим.
Преподаватели были действительно очень крутыми. Например, по безопасности Ярослав Рабоволюк, CIO Mail.Ru Group, мог на занятии открыть любой сайт, рассказать обо всех его уязвимостях и как с ними работать. Самым ценным опытом были групповые проекты на трех-четырех человек после каждого предмета. Это позволило реализовать достаточно много интересных практических проектов и научиться работать в команде. Сейчас аналогичные программы обучения от VK (ранее Mail.Ru Group) запущены в ведущих технических университетах: МФТИ, МГУ, МИФИ и ИТМО.
На последнем курсе магистратуры встал вопрос выбора задачи для диссертации. Посмотрев онлайн-лекции по анализу данных от ШАДа (Школы анализа данных от Яндекса) в 2012 году, наткнулся на задачу кредитного скоринга в банках, которой и решил заниматься в рамках дипломной работы и в аспирантуре.
Дальше всё было как в тумане: прошёл чуть ли не все курсы по машинному обучению на Coursera. На одном финальном проекте было решение задачи на Kaggle по предсказанию победителя онлайн-игры Dota 2. Я неплохо справился с задачей, занял 39-е место по точности решения из 810 участников курса. Впервые узнал о Kaggle и ощутил, что это довольно увлекательно — соревноваться с другими участниками со всего мира в точности решения.
Меня уже было не остановить. Постепенно я набирался опыта на Kaggle-соревнованиях, программировал свои наработки по различным задачам на табличных данных, текстах и картинках. Суммарно я решил около 80+ задач. Самое успешное соревнование было по сегментации данных на изображениях (необходимо было автоматизировать процесс идентификации ядер клеток, что позволит проводить более эффективное тестирование лекарств, сокращая 10 лет, которые требуются для выхода каждого нового препарата на рынок), во время которого я валялся дома со сломанной ногой (во время прыжка с парашютом не раскрылся парашют) и мог уделить много времени задаче на Kaggle.
Думаю, в первую очередь сильный бэкграунд по математике и программированию помогал мне в дальнейшем быстро погружаться в различные задачи машинного обучения, разбираться в подходах решения, необходимых алгоритмах. Это не исчерпывающий список, поэтому хотел бы выделить ещё некоторые основные моменты.
Удовольствие от процесса
Главным фактором успеха на Kaggle, конечно, считаю то, что я получал удовольствие от участия в соревнованиях. Мне действительно было интересно заниматься решением новых и сложных задач.
Помню, на хакатоне в Сан-Франциско, мы с командой заняли пятое место среди квалифицированных команд. Второе место заняла команда из Google Brain (одно из исследовательских подразделений Google), это была группа из пяти китайцев. После хакатона мне удалось немного пообщаться с ребятами. В конце беседы я уточнил у них, собираются ли они на афтерпати хакатона в бар неподалёку. На что мне ответили, что не пойдут, а планируют разобрать командой своё финальное решение и решения победителей.
Думаю, именно благодаря такому подходу эти ребята и оказались выше нас по результатам. «Вот это уровень интереса!», — подумал я и убежал на афтерпати 🙂
Достаточное количество времени
Каждое соревнование имеет дедлайн, одно соревнование в среднем проходит 2-3 месяца.
В день можно отправить до пяти сабмитов. Если какой-то день вы пропускаете, то теряете возможность протестировать свои решения и идеи. Поэтому, как только у меня выдавалась свободная минута, я программировал, старался побыстрее протестировать и как можно чаще отправлять свои решения. Параллельно идут несколько соревнований, то есть вам необходимо решать несколько задач одновременно на определённых отрезках времени.
Уходило на это по несколько часов в день, два-три точно. В выходные я тратил больше времени. Обычно мой день выглядел так: до вечера был на работе, приходил домой, открывал Kaggle и решал соревнования. Порой я не замечал хода времени, мне искренне нравилось находить новые подходы и улучшать свои текущие решения. В последние дни соревнований я увлекался и засиживался до самого дедлайна — до 3 ночи (11:59 PM UTC). Конечно, я не решал всё, что публикуется на платформе, но думаю, большую часть в этот период всё-таки решил. Я брал ноутбук с собой в отпуск и старался находить время и на Kaggle. Мне понадобилось около 2-3 лет, чтобы подняться до 68-го места.
Командная работа
Большую часть соревнований выигрывают команды. И немудрено: когда несколько участников объединяют свои идеи, финальное решение будет более качественным и точным.
К тому же вы можете чему-то научиться у своих тиммейтов, понять их идеи, узнать, какими инструментами они пользуются и как организуют свою работу над проектом.
В этом я не сильно преуспел, только 5 из 87 (6%) соревнований я решал в командах. Думаю, если бы я чаще объединялся с другими участниками, результаты были бы выше.
Вычислительное железо
Все задачи на Kaggle вычислительно сложные. Платформа предоставляет мощности, но для быстрой проверки гипотез и идей их бывает недостаточно. Понимая, что без своего девбокса соревноваться за высокие места намного сложнее, я купил сервер с четырьмя видеокартами NVIDIA GeForce GTX 1080 Ti 11Gb, 64 ядрами и оперативной памятью на 128 ГБ за 300 000 рублей. И думаю, это было одним из самых удачных вложений в моей жизни. Сервер позволял относительно дёшево, минуя аренду облачных сервисов, делать вычисления, усиленно нагревать квартиру летом и зимой и относительно быстро обучать модели. Но мне все равно было сложно конкурировать с участниками из больших ИТ-корпораций, у которых в компаниях были вычислительные ресурсы в десятки, а то и сотни раз мощнее.
Сегодня Kaggle старается делать соревнования доступнее для участников, у которых нет возможности доступа к большим вычислительным ресурсам. Главный критерий — решения должны запускаться в Kaggle Kernels. Поэтому для таких облачных вычислений будет достаточно обычного ноутбука.
Упорство и целеустремлённость
Когда решения выстреливают, ты поднимаешься на лидерборде участников соревнования, занимаешь призовые места, это сильно мотивирует.
Но стоит помнить, что в анализе данных или машинном обучении много неудач. Ты постоянно тестируешь различные идеи решений, и не все из них приводят к результату. Помню, как в одном из соревнований от Zillow по предсказанию цены продажи недвижимости по описанию и фото, которое длилось целый год, участвовала команда, которая тратила на аренду облачных серверов около 10 тысяч долларов в месяц, и в конце не заняла призового места.
Главное здесь — не опускать руки, если что-то не получается, продолжать набираться опыта и находить новые решения.
Ключевые выводы
Считаю, что успех в построении AI карьеры обеспечивает следующая комбинация:
- фундаментальное образование в области математики, физики или компьютерных наук;
- хорошие навыки программирования (Python);
- умение работать с базами данных (SQL);
- знание AI, традиционных алгоритмов ML, CV, NLP, RL.
В Data Science решения создаются на Python. У языка простой синтаксис, который легко изучить, даже если раньше вы на нем не писали. Особенно если у вас есть опыт разработки на других более низкоуровневых языках: C, C++. Также важно владеть различными инструментами по работе с данными. Ключевым здесь является язык SQL и особенности баз данных (Oracle, Postgres и др).
Плюсом будут знания конкретной предметной области. Если вы разбираетесь в финансах, вам будет проще решать, например, задачу кредитного скоринга. В дальнейшем это поможет ориентироваться и в понимании бизнеса.
Что даёт Kaggle
Разнообразный и уникальный опыт
Уникальность платформы Kaggle в том, что у вас появляется возможность решить наиболее актуальные задачи крупных компаний. Например, во время новогодних каникул я смог весьма неплохо решить соревнование от Baidu по 6D позиционированию автомобилей по фотографиям, сделанным с камер беспилотников. Получил серебро и приглашение в VK (ранее Mail.Ru Group) на митап, чтобы рассказать о своём решении.
Или, например, решал задачи по распознаванию рака на медицинских снимках, кораблей на спутниковых снимках и много других.
В итоге ты становишься специалистом в области беспилотного транспорта, распознавания медицинских изображений, спутниковых снимков, вопросно-ответных систем и множества других направлений AI.
На Kaggle можно решать задачи кредитного скоринга для крупного банка и параллельно помогать физикам-исследователям CERN найти траекторию движения частиц в адронном коллайдере, предсказывать победителя в Dota 2 и вместе с океанологами определять вид китов по фотографиям плавников. Вы можете построить оптимальный маршрут для Санта-Клауса, чтобы тот раздал как можно больше подарков. Или, например, я впервые узнал, что позиционирование объектов в задачах беспилотного транспорта происходит по 6 координатам (Х, Y, Z и углы поворота по трём осям). Это безграничное поле для развития и возможностей по обучению.
На KaggleDays в Дубай перед нами однажды стояла задача от полиции Дубая спрогнозировать на карте города районы, где могут произойти преступления. Нам выдали исторические данные по разным происшествиям (кражи, хищения, криптоинциденты): координаты, время и дату. А также статистику по погодным условиям, температуре, окружению в городе. Нужно было построить модель, которая будет прогнозировать области и время с потенциальными преступлениями.
Когда на работе вам попадётся похожая задача, вы сразу понимаете, какие алгоритмы использовать и какую модель построить. Сейчас, когда я сталкиваюсь с задачами на изображениях и видео, или работаю с текстами, или с табличными данными — намного быстрее понимаю, какие подходы применимы в решении этих задач и как создать более качественное решение, и в короткие сроки могу собрать MVP благодаря опыту, который получил на Kaggle.
Связи и потенциальных работодателей
Kaggle — огромное комьюнити людей со схожими ценностями, я бы сказал с одним ДНК.
Благодаря успешному выступлению на платформе, в один день я получил приглашение от Google на ежегодную конференцию Google Next19 в Сан-Франциско, где параллельно с конференцией проходил хакатон KaggleDays. В одной команде со мной были вице-президент технологической компании в Калифорнии и аспирант UCLA. Мы прогнозировали, пройдёт ли деталь автомобиля краш-тест на заводе. Среди квалифицировавшихся команд, участвовавших в хакатоне, заняли пятое место.
На конференции можно было вживую увидеть выступление Сундара Пичаи или, например, лично познакомиться с Винтоном Серфом, вице-президентом компании Google, одним из создателей интернета, участником группы DARPA. Удивительно, конечно, какая открытая культура общения на таких ИТ-мероприятиях мирового уровня. Афтерпати конференции проходил на огромном стадионе Oracle Park (домашняя арена команды San Francisco Giants) с выступлением Гвен Стефани.
Высокий рейтинг на платформе помогает легко устанавливать контакты со многими известными участниками Kaggle, у вас появляется огромное количество друзей по всему миру. Люди сразу понимают, что вы «свой» и вам можно доверять.
Если вы находитесь даже в топ-200 или топ-300 рейтинга на Kaggle, вам начинают регулярно поступать предложения о работе от крупных технологических компаний и амбициозных стартапов. Например, знаю, что большая концентрация людей с высоким рейтингом на платформе работают в NVIDIA или успешном стартапе H2O.ai.
В России при трудоустройстве в любую ИТ-компанию по ML и DS направлениям рейтинг Kaggle будет несомненным плюсом. Если вас собеседует опытный специалист, будьте уверены, он по достоинству оценит ваши навыки, полученные на Kaggle.
Подытожим
Чтобы достичь успеха на Kaggle, нужно уверенно владеть математикой и программированием, уметь себя дисциплинировать и не сдаваться при неудачах, а также много и упорно решать сложные задачи, не теряя мотивацию. Важно получать удовольствие от этого процесса. Не стесняться обмениваться опытом с другими специалистами — так вы не только получите ответ на свой вопрос, но и обзаведётесь полезными связями. Со многими ребятами с Kaggle мы общаемся и сегодня.
В итоге вы получите практический опыт, который сможете применить в своей работе, добавить в резюме, и, возможно, именно он поможет вам найти работу мечты.
4К открытий14К показов