Когда Вадим Никулин, ведущий специалист по Data Science, ушел из лондонского офиса Facebook, чтобы работать с Flo, у него уже был опыт работы в Яндексе и Microsoft. В интервью для IT-портала dev.by Вадим рассказал, как предотвратил некорректное поведение в Facebook, почему променял крупную корпорацию на стартап и над каким прорывом работает во Flo.

Биография Вадима Никулина

Вадим родился в Ярославле. В 2006 году окончил математический факультет Ярославского государственного университета по специальности «Прикладная математика и информатика». Вадим участвовал в соревнованиях по программированию ACM ICPC, дойдя до мирового финала 2006 года.

На втором курсе он начал работать в Tensor. В 2009 году Вадим устроился на работу в московский офис Яндекса. Он начинал как бэкэнд-разработчик, а затем перешел на машинное обучение и науку о данных. В Яндексе он занимался завершающим этапом ранжирования в поиске, разрабатывая компонент, который собирает все релевантные результаты поиска (новости, статьи, видео и изображения) и выводит их пользователю в наилучшем порядке.

В 2016 году Вадим был принят на работу в Microsoft и переехал в Лондон, где в течение года работал над рейтингом поисковых предложений Bing.

В 2017 году он устроился на должность старшего разработчика машинного обучения в лондонском офисе Facebook.

В 2021 году он был принят на работу на должность руководителя отдела анализа данных в лондонском офисе Flo.

Начало: соревнования по программированию и первые шаги в карьере

— Будучи студентом, я участвовал во многих студенческих соревнованиях по программированию, вплоть до выхода в финал Кубка мира по программированию на первом курсе аспирантуры, и это помогло определиться с моей карьерой. ACM ICPC (Association for Computing Machinery International Collegiate Programming Contest) спонсируется IBM, Google и другими крупными компаниями. Если они заметят вас, продвижение в этой области станет намного проще.

Тогда я одновременно отправил свое резюме в Google и Яндекс. Яндекс долго не отвечал, поэтому я переехал в Москву. Там я начал работать над бэкендом, прежде чем перешел к машинному обучению. С тех пор я придерживаюсь Data Science и ML-инжиниринга.

В Яндексе все было хорошо — и задачи интересные, и команда отличная, — но хотелось сделать что-то более масштабное. Так я оказался в Лондоне в 2016 году.

Сначала я устроился на работу в Microsoft. Там я работал над рейтингом поисковых предложений Bing. Через год мне предложили должность Senior ML Developer в Facebook.

– Легко ли вам было получить работу в Facebook?

— С технической частью интервью у меня не возникло сложностей: у сотрудников Яндекса сильная экспертиза, и любой из них может решить задачи олимпиадного уровня на интервью в Facebook.

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

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

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

Оба подхода имеют свои плюсы и минусы. Кроме того, многое зависит от того, на каком этапе находится компания.

Facebook придает большое значение культуре обратной связи: тому, как люди адаптируются к другим, как они реагируют на критику и как они разрешают конфликты. При этом «конфликт» в ФБ и Яндексе имеет совершенно разное значение.

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

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

— О том, что кто-то забыл помыть кофейную кружку?

— Да, это один из примеров. Или кому-то наступили на ногу в лифте. Это совершенно разные вещи.

Работа в Facebook

— Я искал работу в Facebook, потому что всегда хотел работать в сфере цифровой безопасности пользователей.

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

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

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

— Был ли автоматизирован поиск потенциальных жертв суицида и нарушителей? Вы написали специальные алгоритмы?

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

— Этот алгоритм ограничен англоязычным сегментом?

— Нет, это не так. Именно поэтому я хотел уйти с Яндекса на Facebook: там задачи другого масштаба. В Facebook от нас требовалось написать не просто алгоритм, а такой, который будет эффективно работать в любой стране.

— То есть этот алгоритм масштабируется на все языки одновременно?

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

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

— Насколько интересной и эффективной была эта работа?

- Это было очень интересно. Время от времени нам присылали ссылки на статьи о том, как ФБ помог предотвратить преступление или самоубийство. Таких случаев сотни, а может и тысячи. Это мотивирует. Когда вы работаете с метриками и сухими цифрами, это одно. Но когда видишь примеры из жизни, четко понимаешь, что день прошел не зря.

— Но самими кейсами вы не занимались — вы отвечали только за разработку, верно?

— Иногда мне приходилось рассматривать отдельные случаи, чтобы понять, почему алгоритм работал так, а не иначе. Но, как правило, такими ситуациями занималась специальная команда.

— Где еще вы использовали такие алгоритмы?

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

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

Переключиться на Flo

— Фло заманила вас с Facebook? Или вы уже были готовы двигаться дальше?

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

— В то время вы не искали работу активно, не так ли?

— Нет, я не искал. Но есть нюанс: в начале 2020 года я получил визу Global Talent, которая позволяла мне работать в Великобритании без привязки к одному конкретному работодателю. До этого мне приходилось получать специальные разрешения на смену работы. Визу мне дали потому, что у меня есть несколько патентов в Яндексе и я соавтор нескольких научных статей и книги по программированию олимпиадного уровня.

С Global Talent я больше не зависела от Facebook, и хотя у меня не было планов уезжать на тот момент — виза просто облегчила мне получение вида на жительство — это чувство свободы, должно быть, повлияло на мое решение: Предлагает работу начал медленно вливаться, и в итоге я принял один.

— Почему вы решили сменить корпорацию на стартап? Надоело быть винтиком?

— Нет, как раз наоборот: у Facebook возникали очень интересные задачи, и он предлагал явные возможности роста в обозримом будущем, в том числе межкомандное сотрудничество, участие в паре десятков команд, построение и масштабирование процессов.

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

— Превзошла ли Фло Facebook по зарплате?

— Работа в стартапе всегда сопряжена со своими рисками и выгодами: нужно найти баланс между ними. В краткосрочной перспективе мой переход во Flo — это скорее небольшая неудача: хотя зарплата здесь вполне адекватная, через год я, вероятно, буду зарабатывать в Facebook больше. Но если принять во внимание перспективы Фло, то это очень хороший выбор. Если компании удастся реализовать план и совершить технологический скачок, то после выхода на IPO цифры будут совсем другими.

— Значит, вы променяли Facebook на стартап в надежде стать частью технологического прорыва и IPO?

— Это было сочетание многих факторов: миссии и возможности напрямую влиять на процессы. Ну и перспектива IPO тоже заманчива.

Технологический скачок, который может привести Flo к IPO

— Расскажите о технологическом прорыве? Чем вы занимаетесь во Flo?

— По сути, то же самое, что я делал в FB — автоматизировал конвейеры процессов. Я ускоряю итерацию и обобщаю работу ML-инженеров, чтобы позволить выполнять больше задач одновременно, сокращая время подготовки релизов.

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

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

То же самое относится и к нашей работе, чтобы показать закономерности, которые могут быть связаны с заболеваниями или состояниями, и предложить пользователям посетить врача. Обычно это длительный, по существу научный процесс. Например, представьте, что мы систематически, шаг за шагом, работаем над возможными признаками риска синдрома поликистозных яичников: мы собрали правильные выборочные данные, создали модель и проверили ее с врачами. А теперь представьте, что завтра мы захотим сделать то же самое для эндометриоза или других заболеваний. Мы должны пройти все этапы заново?

В идеальном будущем мы сможем создать playbook, набор правил, который позволит нам «запустить новое условие в производство» всего за три месяца, а не за год.

— Как вы собираетесь это сделать?

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

Наша цель — убедиться, что мы можем построить это дерево решений и выбрать правильные значения. Если нам удастся проверить этот подход, мы сможем быстрее строить модели.

— Так это просто анкета? Тогда где он использует большие данные?

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

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

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

— Получаете ли вы прямые сообщения от пользователей, которые предлагают реальные отзывы об эффективности прогнозов?

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

— Как узнать, верны ли ваши прогнозы?

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

— Как вы собираете и передаете данные со смарт-устройств?

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

— Есть ли проблемы с правильным анализом и интерпретацией данных?

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

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

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

— Фло долгое время работала над виртуальным помощником, связанным с синдромом поликистозных яичников. Над какими еще условиями вы планируете начать работать в обозримом будущем? Есть ли причина, по которой вы упомянули именно эндометриоз?

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

В нашей дорожной карте пока нет конкретных заболеваний или состояний. Прямо сейчас мы сосредоточены на процессе, так что мы сможем создавать готовые к выпуску функции с нуля всего за 3–4 месяца. Как только схема будет готова, мы сможем выбрать наиболее распространенные заболевания и работать с ними.

Вот почему мы сначала работали с синдромом поликистозных яичников — потому что им страдают не менее 10 процентов женщин.

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

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

Полина Легина для dev.by

Переведено Flo Health на английский язык