Хабрахабр

Как проходят секции по машинному обучению на собеседованиях в Яндекс

Они требуются и для ранжирования результатов веб-поиска, и для поиска по картинкам, и для формирования рекомендательных блоков. Каждый сервис компании Яндекс во многом основан на анализе данных и методах машинного обучения. Все приложения и не перечислить! Машинное обучение позволяет нам создавать беспилотные автомобили и голосовых ассистентов, уменьшать время бесполезного простоя для таксистов и уменьшать время ожидания для их клиентов.

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

image

1. Собеседования по машинному обучению в Яндексе

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

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

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

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

Кандидатам, рассчитывающим на middle- или junior-позиции, не обязательно уметь всё перечисленное, но им стоит знать, что соответствующие навыки чрезвычайно полезны для карьерного роста – и в Яндексе, и в других компаниях. Разумеется, полный спектр требований применим лишь к тем кандидатам, что претендуют на позиции старших или ведущих специалистов.

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

2. Постановка задачи

Итак, основной задачей секции является проверка, насколько кандидат способен самостоятельно разобраться с задачей во всём её объёме, начиная от её постановки и заканчивая вопросами приёмки в пользовательских экспериментах.

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

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

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

Какие данные для её формирования необходимы, как их получать? Здесь же необходимо затронуть вопрос формирования обучающей выборки. Требуется ли осуществлять семплирование? Что является событием для нашего обучения? Если да, то как его делать?

3. Методы машинного обучения

После того, как задача в полной мере сформулирована, можно приступать к обсуждению методов её решения.

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

Классный специалист способен сходу придумать несколько десятков или даже сотен признаков в новой задаче, предварительно разбив их на несколько классов сообразно используемым видам данных (например, признаки могут зависеть только от пользователя, а могут – от пары «пользователь — объект»). Следующий обязательный для обсуждения пункт — пространство признаков.

Когда сервис Яндекс.Такси уже создан, мы можем использовать информацию о реальных поездках для оптимизации методов маршрутизации по городу; когда уже есть поисковая система Яндекс, можно использовать действия пользователей для получения сигналов о том, какие документы релевантны запросам. Дополнительным плюсом будет рассмотрение проблемы cold start. Нужно предложить какой-то способ построения достаточно хорошего решения в этом случае. Но что делать, если сервис ещё не создан, а решаемая задача критична для его функционирования?

4. Контроль качества

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

Здесь нужно выбрать модель эксперимента и способ проверки статистической значимости изменений. В этот момент кандидату необходимо продемонстрировать свои способности в формулировании экспериментов для проверки соответствующих гипотез. Какие при этом показатели необходимо отслеживать? Скажем, это может быть обычный A/B эксперимент на пользователях сервиса, а может быть экспертное оценивание результатов работы. За чем и как необходимо следить, чтобы обеспечить корректность эксперимента?

5. Как преуспеть на секции

Хорошо проведённая секция по машинному обучению неотличима от секции, известной у наших западных коллег как ML System Design, а слабая секция может быть похожа на обсуждение какого-либо специального вопроса — например, оптимизации LLH линейными разделяющими правилами. Уровень кандидата полностью определяется тем, насколько самостоятельно и глубоко ему удалось изложить решение поставленной задачи.

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

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

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

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

Ну и наше видео на YouTube:

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть