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

Получение звонка:

Мне позвонил рекрутер LinkedIn, который рассказал о моем опыте и предпочтениях.

Раунд заданий:

Они дали список наборов данных из разных доменов, таких как Songs DB, NLP, CV, и попросили меня построить на его основе отчет. Это был открытый вопрос, в котором мне нужно было сначала изучить данные, сформулировать задачу и определить метрики оценки, предоставить исходные данные, а затем обучить сеть. Я выбираю набор данных Caltech-101 и отправляю отчет.

Предварительный раунд:

В этом раунде мне задали пару вопросов о структурах данных и метриках оценки проблемы классификации.

Первый вопрос заключался в реализации структуры данных со средней временной сложностью O(1) для вставки элемента, удаления элемента и случайного удаления элемента.

// "O(1)" time :
//    - void add(T val)
//    - void remove(T val)
//    - T removeRandomElement()

Этот вопрос имеет несколько вариантов: один с дубликатами и один без дубликатов.

Затем мы начали обсуждение метрик оценки для задач классификации. Каковы общие показатели для оценки классификатора? Точность, точность, отзыв, F1-Score. Как рассчитываются точность и полнота? Когда мы используем какие показатели? Потом мне задали второй вопрос:

Набор данных классификатора спама содержит 99 % образцов, не являющихся спамом, и 1 % образцов спама. Для записей со спамом модель верна на 99 %, а для не спама модель верна на 99 %. Какова точность и полнота модели? (A: точность: 0,5, полнота: 0,99)

Очные раунды:

1. Раунд кодирования данных

В этом раунде они задали мне пару вопросов о вероятности, статистике и машинном обучении.

Первый вопрос: есть игральная кость с n гранями. Вероятность каждой стороны кости равна p_i. Напишите функцию, генерирующую m бросков такого игрального кубика.

Наивный подход к этой проблеме будет состоять в том, чтобы вычислить CDF вероятности, а затем сгенерировать однородное случайное число [0,1). Так как CDF является возрастающей функцией из [0,1]. Найдите последний индекс i такой, что однородное случайное число ≤ CDF_i.

Например, пусть n = 3, p1 = 0,2, p2 = 0,5, p3 = 0,3. Тогда CDF1 = 0,2, CDF2 = 0,7, CDF3 = 1,0. Если случайное число находится между [0, 0,2), случайный бросок равен 2. Если случайное число, если между [0,2, 0,7), случайный бросок равен 2 и так далее. Так как нам нужно было сгенерировать m таких случайных бросков. Сложность алгоритма будет O(nm). Оптимизация этого заключается в том, чтобы вычислить массив CDF один раз за O (n), а затем использовать двоичный поиск, чтобы найти индекс рулона за O (log (n)). В этом случае сложность будет O(n+mlogn)

Второй вопрос заключался в реализации алгоритма дерева решений.

Design a basic decision tree algorithm. Focus on termination criteria and OOP design. Assume boolean features and boolean label variable.

В этом вопросе интервьюер ожидал полной и аккуратной реализации алгоритма дерева решений. Я начал с создания класса дерева решений с методами fit и predict. Вход X представляет собой логическую матрицу mxn, а вход y представляет собой логический вектор размера m. Поскольку входная функция была логической, вам не нужно искать порог для разделения переменной. Любая переменная была бы разделена в одном месте 0,5, т.е. истина или ложь. Интервьюер интересовался модульной реализацией и разбиением большой проблемы на несколько подзадач и правильной реализацией.

2. Раунд разработки продуктов для интеллектуального анализа данных

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

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

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

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

Подходы. Придумано несколько подходов на основе

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

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

Показатели оценки:

Как бы вы оценили такую ​​систему на местном уровне? : Precision@K, Recall@K, nDCG, mAP.

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

3. Раунд менеджера хоста:

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

Вопрос: Как бы вы определили дубликаты изображений? В LinkedIn люди создают поддельные профили, используя чужое изображение. Там изображения отличаются от исходного изображения с очень минимальной разницей, такой как низкое разрешение, обрезка, измененная яркость и контрастность и т. д. Из набора данных, скажем, миллиона изображений, вам нужно дать по крайней мере 1000 наборов изображений, которые, по вашему мнению, могут быть дубликат.

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

4. Раунд интеллектуального анализа данных

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

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

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

5. Раунд кодирования

Как определить наименьшего общего предка двух элементов в двоичном дереве поиска?

Дополнение: что, если это бинарное дерево, а не бинарное дерево поиска?

Реализовать структуру данных, которая добавляет, удаляет и удаляет Random на O (1)?

Заключение

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