Привет, Хабр! Data Science уже давно стала привлекательной областью, и все больше и больше людей хотят сменить свою профессиональную траекторию и начать работать с большими данными. Своей историей перехода в data science, советами для начинающих и продвинутых data scientist’ов поделился Кирилл Данилюк, Data Scientist компании RnD Lab. Кроме этого, поговорили о необходимых качествах data scientist’а, о разметке данных, об отличии ML Engineer от data scientist, текущих проектах, крутых командах и людях, чья работа вдохновляет.



— Как ты пришел в data science? Чем тебя изначально привлекала область работы с данными?

— У меня довольно нетипичный бэкграунд: в дату я пришел из мира яндексового PM’ства (Project Management — прим. автора), когда меня позвали в ZeptoLab, пожалуй, лучшую российскую игровую компанию. Я сделал им прототип аналитической системы, дэшборды, фактически в первый раз начав писать код, который использовал кто-то другой. Код был ужасный, но это была реальная практика. Формально, конечно, я координировал работу двух аутсорсеров, но код они писали именно по этому прототипу. Я тогда еще не знал, что примерно это и есть data science, что я им и занимаюсь, пусть парт-тайм. Так что знакомство случилось довольно органически.

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

— С какими трудностями ты сталкивался в профессиональном плане, какие вызовы были в начале и в дальнейшем?

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

Переломный момент был, когда я прочитал книжку “So Good They Can’t Ignore You”, ее, кстати, советует, Эндрю Ын, создатель Google Brain, Coursera, знаменитого курса ML. Книжка именно про мой случай: не важен твой бэкграунд и история. Если ты можешь показать на деле, что ты действительно настолько хорош, что тебя просто нельзя игнорировать, тебя заметят. Я сильно впечатлился от этой книги и решил не бросать data science. Очень всем советую почитать.

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

— Все приходят в data science из разных сфер, в разные части и с разными целями — нет какого-то одного оптимального пути. Но есть несколько советов.

Data science может показаться на первый взгляд сложным — и так оно и есть! Однако, удивительный факт в том, что data science можно сравнить с луковицей: надо изучать слой за слоем. Это называется top-down approach, когда ты сначала на примитивном уровне смотришь, как работают алгоритмы, как за пару строк можно натренировать нейросеть — без фактического знания процессов — просто задаешь входные данные, пару строк кода, и все. Первый слой луковицы снят. Дальше больше. Тебе становится интересно, ты хочешь уже узнать — как. Как оно работает? Ты погружаешься глубже, смотришь на код, реализацию. Потом тебе становится интересно, почему этот код написан так. Оказывается, что есть теоретические обоснования. И так далее. Поддерживайте в себе интерес. Начинайте с верхней части, она вдохновляет. Почитайте Ричарда Фейнмана, он много писал про такой подход.

Другой совет: как можно быстрее вливайтесь в тусовку data scientist’ов. Даже если вы ничего еще не понимаете, но твердо решили развиваться в этой области. Когда я учился, ODS еще не было, тебя никто так не подбадривал, не было никакой организованной дата-саенс тусовки. И я пошел на программу Newprolab в том числе, чтобы получить такую тусовку. Ключ к развитию именно в социализации. Ни в коем случае не варитесь в собственном соку, иначе вы будете двигаться очень медленно.

Третий совет (он же продолжение второго): начинайте как можно раньше участвовать в соревнованиях. К kaggle можно относиться по-разному, но он минимум дает еще один повод к социализации — примыкайте к команде. Старшие коллеги будут рады вам подсказать и помочь. Плюс, kaggle дает хороший пинок в плане вашего портфолио, выступлений и постов в блоги. Крутые data scientist’ы именно так и стали крутыми, кстати.

— Помимо прохождения двух программ в Newprolab, где ты еще учился и учишься? Какие программы можешь порекомендовать новичкам и продвинутым?

— Я стараюсь учиться все время, потому что задачи, особенно у нас, постоянно меняются. Я прошел более-менее базовые онлайн-курсы, такие как яндексовая специализация по DS на Coursera, ML-nanodegree на Udacity, их же курс по беспилотникам. Для начинающих я очень рекомендую специализацию DS на Coursera — это, наверное, наиболее структурированный курс для понимания подходов и задач в целом. Я был также доволен “Специалистом по большим данным”, я с него, в общем-то, и начал вход в data science, мне он очень помог. Еще раз — в начале делайте то, что кажется интересным.

Для более продвинутых есть потрясающий калтековский курс Learning From Data — относительно короткий, но очень по делу. Очень хорошо ставит мозги. Также есть замечательный ШАДовский курс от Воронцова — в открытом доступе лекции и учебник. Я также очень советую гарвардский курс по теорверу Stat 110, там принципиальные основы теории вероятностей и матстата, которые обязательно надо знать. Плюс, есть открытая библиотека курсов MIT, посмотрите там курс про алгоритмы, он очень хорош.

— Из твоих наблюдений: каких soft и hard skills зачастую не хватает как начинающим, так и опытным data scientist-ам, чтобы стать действительно высококлассными специалистами?

— Начнем с soft skills — потому что их и не хватает. Несмотря на то, что data scientist — техническая профессия, крайне важно уметь правильно / красиво подать результат своей работы. Грубо говоря, как айфон — у него хороша не только начинка, но и внешний вид, упаковка, история. Людям надо научиться презентовать свои результаты: писать посты в блоге, выступать, делиться кодом. Лучшие data scientist’ы это отлично понимают, и так и делают. Иначе можно застрять в своей норе, и даже с классным результатом остаться незамеченным.

Про hard skills говорить можно долго, но есть одна вещь, которой не хватает очень многим data scientist’ам — навыка написания грамотного, структурированного, красивого кода. Это прямо бич профессии. Нужно учиться писать красивый читабельный код. Если вы посмотрите на kaggle, то большая часть кода там ужасна. Я понимаю, с чем это связано: люди один раз пишут код и дальше его не используют, это стандартная практика среди data scientist, особенно начинающих. Я и сам раньше так делал, но это плохо, потому что, во-первых, вы никому не можете его расшарить (люди хотят читать красивый читабельный код), во-вторых, вы плохой код не можете использовать в других проектах.

Еще один принципиальный скилл — это знание матчасти: линейной алгебры, аппарата статистики, дискретки, оптимизации. И, честно говоря, нужна еще просто любовь к математике. Мне сложно понять мотивацию data scientist’а, который не видит красоты в математике. При этом, надо отметить, что математика в анализе данных довольно доступная, на уровне первого-второго курса университета.

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

— Здесь довольно интересная причина: изначально цель была в том, чтобы набрать себе консалтингом проектов, которые уже можно показать серьезной компании и устроиться в нее. Ведь раз ты говоришь, что ты data scientist, то покажи, что умеешь.

Сначала мы брали совершенно любые проекты по data science за любые деньги, просто чтобы показать, что мы это можем сделать. Кучу ошибок сделали, на все грабли, на которые можно наступить, наступили. В первый год был просто кошмар, очень тяжело. Если смотреть сейчас назад, то не факт, что консалтинг был хорошим вариантом для старта. Может, надо было пойти на junior’а, и этот год поработать над каким-то проектом.

Мы все преодолели. Проекты стали появляться, уверенность в себе крепла, в какой-то момент появилось понимание, что можно ведь работать и не внутри большой корпорации с ее затянутыми проектами, согласованиями и бюрократией. Так получается, что наши проекты сейчас намного интереснее и разнообразнее, чем большинство крупных компаний смогло бы мне дать: их много, они часто меняются и ты постоянно учишься. Разумеется, сейчас переходить в большую компанию уже не очень-то и хочется.

— Давай немного затронем тему разметки данных. У вас в RnD Lab небольшая команда, вряд ли можете тратить много времени на разметку данных и вручную сами все делать. Как вы размечаете данные?

— О разметке данных можно очень долго говорить! Для работы алгоритмов машинного обучения нужны данные. Причем не просто какие-то данные, а качественно размеченные. И очень много. Например, у нас был проект по определению качества яичницы по фотографии. Для работы алгоритмов нужно каждую фотографию разметить, обвести каждый из ингредиентов — белок, желток, бекон — вручную. Вы представляете, какая это работа — разметить тысячу, десять тысяч таких фотографий? И это лишь для того, чтобы были готовы данные. После этого работа лишь начинается.

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

Хочется сделать этот процесс технологичнее. Например, в нашем проекте мы написали нейросеть, которая в полуавтоматическом режиме размечает данные. Ты ей сначала даешь 20 вручную размеченных фоток яичниц и 20 неразмеченных — она обучается на первых двадцати и размечает, пусть и не очень хорошо, вторые двадцать. Ты исправляешь ошибки вручную и даешь эти исправленные 20 авторазмеченных фотографий на дообучение. Теперь модель уже обучается на 40 фотографиях с разметкой. Подаешь на разметку еще 20 других фотографий, исправляешь ошибки, дообучаешь модель на исправленной разметке. Через несколько итераций ошибок почти не остается. Кстати, именно по этой технике я прямо сейчас пишу пост в блог на Medium.

Есть и другие варианты: можно использовать симулятор, грубо говоря, 3D-редактор, чтобы нагенерировать много уже авторазмеченных изображений. Располагаешь нужные объекты, рендеришь их под разными углами вместе с разметкой — и все. Но не совсем: такие изображения все равно не будут похожи для модели на настоящие, реальные. Чтобы подвести эти изображения к многообразию реальных, надо использовать технику под названием domain adaptation — на GAN'ах. Это сейчас настоящий передний край исследований, такие вещи захватывают. Вы только представьте: вы симулируете целый мир и любые датасеты генерируются буквально из ничего. А теперь представьте, что и модель обучается просто в симуляторе, а затем работает в реальном мире. Это просто будущее!

— Можешь назвать команды \ отдельных людей, чья работа в области больших данных тебя восхищает и вдохновляет?

— Да, конечно! Мне очень нравится не сам research, а его применение в продуктах. Говорю про тех, кого сам знаю — просто топовых специалистов можно загуглить, да и они и так на слуху.

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

Команда connectome.ai — ребята делают систему компьютерного зрения для производства. Это челленджевая задача, и то, что и как у них получается, классно.

Ребята из supervise.ly. Они изначально были консалтерами, как и мы в RnD Lab, но потом сделали систему полуавтоматической разметки и сейчас развивают именно ее.

В плане людей, во-первых, это Эрик Бернхардссон, бывший руководитель рекомендательной системы Spotify. Он ведет потрясающий блог о data science, всем и каждому его рекомендую.

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

— Ты был координатором группы на программе «Специалист по большим данным» и на корп. программе в Люксембурге, а осенью будешь менторить мини-группы на нашей новой онлайн-программе. Скажи, зачем тебе это все надо? Потому что больших денег тут не заработаешь)))

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



— Data Scientist и ML Engineer: в чем отличие?

— На эту тему есть доклад в рамках яндексового Data & Science. Идея в том, что дата-индустрия породила целый набор пересекающихся профессий. При этом разные компании трактуют их по-разному. Data Scientist и MLE — как раз пример таких.

Считается, что data scientist может и не уметь писать продакшен-код, а должен создавать или адаптировать теории (например, научные статьи) и строить модели. А собственно кодом занимаются ML инженеры — профессиональные программисты, которые менее погружены в теоретическую часть и больше — в инженерию.

Такое разделение классно работает, например, в Google. Конечно, есть сильные PhD’шники, которые, строго говоря, могут вообще не программировать, но сильны в теории. И есть высококлассные программисты, которые оборачивают прототипы этих PhD’шников в красивый код. Но если говорить про небольшие команды, типа нашей или даже яндексовых команд, то на чистые исследования с нуля времени нет, но зато есть возможность брать результаты исследований других (в виде статей или кода) и на основе этих статей писать боевой код.

Лично я не верю в практическую ценность data scientist’а, который не пишет код — именно код и является результатом работы датасаентиста. Если ты не пишешь код, ты, скорее всего, дата-аналитик. Это тоже неплохо, но это другая специализация. Кстати, многие компании под соусом data scientist’а продают как раз аналитика. Потому что аналитик — это эксель и скукота, а data scientist — “самая сексуальная профессия 21 века”.

Так что я за ML Engineer.

— Какие мысли и планы на будущее? Куда хочется двигаться в профессиональном и географическом (а вдруг!) плане?

— Мы, RnD Lab, начинали как data science-консалтинг в общем смысле. Но быстро поняли, что невозможно эффективно заниматься всем сразу, надо фокусироваться. Сейчас наш фокус — проекты по компьютерному зрению, такие, как наш проект по распознаванию качества еды. Представьте, что вы можете смотреть футбольный матч на своем столе в 3D. Представьте, что вы, как владелец крупного магазина, видите все кражи с витрин. Представьте, что ваши старые бумажные черно-белые фотографии можно сконвертировать в цветные и добавить им деталей. Мы занимаемся именно такими проектами. Прямо сейчас у нас в разработке два новых невероятно интересных проекта, по сложности не уступают проектам в Яндексе, мы их через некоторое время анонсируем. Сейчас мы сделали прототип, с очень большой вероятностью мы будем продолжать этот проект дальше, масштаб там будет другой и мы будем расширять команду. Мне понадобятся и data engineer’ы, и computer vision engineer в первую очередь, которые подхватят прототип и сделают из него систему. Заказчик большой классный, система большая интересная, и это отличная возможность прокачки себя как специалиста. Для любого портфолио такой проект будет просто отличным!

Поэтому компьютерное зрение и его применение — в AR/VR, GANы, генерация изображений и видео, улучшение изображений и видео, видеоаналитика — мы фокусируемся именно на этом. И здесь у нас уже есть отличная экспертиза и инструменты.



А насчет географии: один из моих важных принципов — возможность 100% удаленной работы откуда угодно. Никто из крупных компаний вам такого не предложит. Если вам хочется путешествовать круглый год, и вы взрослый организованный человек, зачем вас привязывать к офису? Почитайте ребят из Basecamp, они целую книгу про удаленную работу написали. Мы хотим быть как они, у нас очень схожие принципы.

— И напоследок блиц-опрос:
Яичница или омлет?

-Омлет.

— Быстро, но так себе или долго, но идеально?
— Быстро, но так себе.

— Бизнес с друзьями или дружба по бизнесу?
— Дружба по бизнесу.

— Я думала, ты выберешь “долго, но идеально”.
— “Долго, но идеально” не работает, к сожалению. Это была и моя ошибка тоже, у многих перфекционистов такой подход, чтобы все было супер и классно. Такой подход у меня был в ZeptoLab: я хотел сделать идеально и делал долго, дольше, чем надо было, такого уровня качества от меня не требовалось. Надо всегда исходить из задачи.
Сейчас у нас подход прототипирования, когда ты можешь показать результат уже через неделю-две и получить обратную связь. Ты говоришь: “Вот смотрите, все готово, но на 5% на коленке: весь пайплайн работает, датка есть, процессится, идет обучение модели, есть веб интерфейс с кнопочками...” И все видно, никто не спорит, что это на коленке сделано. И заказчики понимают, что, дай они тебе еще 3 месяца, ты это все улучшишь. Такой подход работает, он эффективен, и мы сторонники именно такого подхода.



А в Newprolab 20 сентября стартует 9-ая программа «Специалист по большим данным», приходите в data science.