Cracking the Machine Learning Interview: подходы к проектированию систем

Cracking the Machine Learning Interview Изучение

Машинное обучение (ML) — одна из самых быстрорастущих областей, и прогнозируется, что она вырастет с 7,3 млрд долларов в 2020 году до 30,6 млрд долларов в 2024 году. Работа в области машинного обучения увлекательна и прибыльна. Но если вы хотите получить работу специалиста по данным, вам нужно будет пройти конкурсное собеседование.

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

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

Эта статья является частью серии собеседований по машинному обучению от Educative, поэтому следите за нашей статьей о самых популярных вопросах и ответах на собеседованиях по машинному обучению.

Что такое собеседование по ML?

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

Компании в различных отраслях, от здравоохранения и сельского хозяйства

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

Во время собеседования вы будете проверены на различные навыки:

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

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

Например, кандидата могут попросить:

  • Создайте систему рекомендаций, которая показывает пользователям релевантные продукты.
  • Создайте систему визуального понимания для беспилотного автомобиля
  • Также создайте систему ранжирования в поиске

Обзор концепций и методов собеседования с ML

Вопросы производительности и емкости

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

SLA на основе производительности гарантирует, что мы вернем результаты в течение заданного периода времени (например, 500 мс) для 99% запросов. Емкость относится к нагрузке, которую может выдержать наша система, например, система может поддерживать 1000 QPS (запросов в секунду). Основные обсуждения производительности и мощности происходят на следующих двух этапах построения системы машинного обучения:

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

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

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

Стратегии сбора данных для обучения

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

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

  • Пользователь: взаимодействие пользователя с существующей системой (онлайн)
  • Люди-этикетировщики (офлайн) : краудсорсинг, наборы данных с открытым исходным кодом, такие как BDD100K Dataset
  • Специализированные этикетировщики
Читайте также:  Руководство по Notion для новичков

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

  • Разделение данных
  • Обучение работе с данными
  • Тест / проверка
  • Количество данных
  • Фильтрация данных

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

Интернет-эксперименты

Успешная система машинного обучения должна оценивать свою производительность путем тестирования различных сценариев. Это может привести к большему количеству нововведений в конструкции модели. Для системы машинного обучения «успех» можно измерить множеством способов.

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

  • Нулевая гипотеза
  • Альтернативная гипотеза

Мы также используем этот этап для измерения долгосрочных эффектов с помощью обратного тестирования и длительных A / B-тестов.

Этапы экспериментальной основы

Этапы экспериментальной основы

Вложения

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

  • CBOW: непрерывный набор слов (CBOW) предсказывает текущее слово из окружающих его слов
  • Skipgram: в этой архитектуре мы пытаемся предсказать окружающие слова на основе текущего слова.

Другие концепции и методы собеседования с ML

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

  • Передача обучения
  • Отладка и тестирование модели
  • Фильтрация обучающих данных
  • Построение моделей и улучшение итерационных моделей

Как настроить систему машинного обучения

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

Постановка проблемы

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

Ваш разговор должен также включать вопросы о производительности / скорости и производительности системы.

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

Определение метрики проблемы

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

Например, если вы выполняете двоичную классификацию, вы будете использовать следующие автономные показатели: площадь под кривой (AUC), потеря журнала, точность, отзыв и F1-оценка.

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

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

An впритык метрические оценивает производительность системы после того

Обсуждение архитектуры

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

Читайте также:  Взгляните на предстоящие улучшения LINQ в .NET 6

Архитектурные компоненты для системы машинного обучения поисковой системы

Архитектурные компоненты для системы машинного обучения поисковой системы

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

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

  1. Генерация обучающих данных:это включает в себя поиск данных для использования при обучении ваших моделей. Это могут быть данные, помеченные вручную, или они могут быть собраны при взаимодействии пользователя с ранее существовавшей системой.
  2. Разработка функций:чтобы реализовать функцию, вам необходимо определить основных участников, участвующих в данной задаче, индивидуально проверить этих участников и изучить их отношения.
  3. Обучение модели:здесь вы примете решение о том, какую модель использовать для вашей системы.
  4. Автономная оценка:это очень полезно, так как позволяет быстро тестировать множество различных моделей. Для онлайн-тестирования отбираются наиболее перспективные модели, что является медленным процессом.
  5. Онлайн-исполнение, оценка и итеративное улучшение

Теперь давайте познакомимся с задачей построения системы связывания сущностей в следующем разделе.

Создание системы связывания сущностей

Связывание именованных сущностей (NEL) — это процесс обнаружения и связывания упоминаний сущностей в заданном тексте с соответствующими сущностями в целевой базе знаний. Связывание сущностей состоит из двух частей:

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

Давайте посмотрим на Entity Linking в действии в следующем примере:

Давайте посмотрим на Entity Linking в действии в следующем примере

Обзор связывания сущностей

В предложении / тексте говорится: «Майкл Джордан — профессор машинного обучения в Калифорнийском университете в Беркли». Первый NER обнаруживает и классифицирует названные сущности Майкла Джордана и Калифорнийского университета в Беркли как человека и организацию.

Затем имеет место разрешение неоднозначности. Предположим, что в данной базе знаний есть две сущности «Майкл Джордан», профессор Калифорнийского университета в Беркли и спортсмен. Майкл Джордан в тексте связан с профессором Калифорнийского университета в Беркли, сущностью в базе знаний. Точно так же Калифорнийский университет в Беркли в тексте связан с юридическим лицом Калифорнийского университета в базе знаний.

Приложения

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

  • Семантический поиск
  • Анализ содержания
  • Вопросно-ответные системы / чат-боты / виртуальные помощники

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

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

Интервьюер попросил вас разработать систему связывания сущностей, которая:

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

Постановка проблемы переводится в следующую проблему машинного обучения:

«Имея текст и базу знаний, найдите все объекты, упомянутые в тексте (Распознать). А затем свяжите их с соответствующей правильной записью в базе знаний (Устранение неоднозначности)».

Вопросы на собеседовании для связывания сущностей

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

  • Как бы вы построили систему распознавания сущностей?
  • Как бы вы построили систему устранения неоднозначности?
  • Учитывая фрагмент текста, как бы вы извлекли всех людей, страны и предприятия, упомянутые в нем?
  • Как бы вы измерили производительность средства устранения неоднозначности / распознавателя объектов / компоновщика объектов?
  • Учитывая несколько средств устранения неоднозначности / распознавателей / лайнеров, как бы вы определить, какой из них лучший?
Оцените статью
bestprogrammer.ru
Добавить комментарий