iTechArt logo

ML-инженеры: от А до Я об одной из самых востребованных профессий в 2021

Students Lab Development & QA

Machine Learning (ML) — технологическое направление, специалисты которого (ML-инженеры/разработчики) обучают компьютеры решать задачи на основе имеющихся данных. В результате те становятся способны обрабатывать большие объемы информации за короткое время, показывая более точные результаты, чем специалист-человек. Это направление также иногда называют называют Artificial Intelligence (AI).

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

 

График Hard skills и Soft SkillsДля начала, немного терминологии — пригодится, чтобы глубже разобраться в материале.

  • Машинное обучение (Machine Learning, aka.AI) — алгоритмы, способные самостоятельно обучаться благодаря обрабатываемым ими же данным.
  • Модель машинного обучения (ML Model) — алгоритм машинного обучения, описывающий то, каким именно образом будет обучаться компьютер, какие данные и параметры потребуется задействовать в процессе, в какой очередности будут выполняться те или иные команды и др. 
  • Если модель машинного обучения — нейронная сеть, то говорят, что имеет место глубокое обучение (Deep Learning). Это подкласс алгоритмов Machine Learning, содержащий в себе методы, основанные на работе искусственных нейронных сетей. Нейронные сети — математические конструкции, чаще всего состоящие из множества настраиваемых слоев. Каждый слой — функциональная единица, способная анализировать входные данные, извлекать из них полезную информацию, передавать ее следующим слоям. От типа и количества слоев обычно зависит то, насколько сложные задачи сможет выполнять нейросеть: чем больше, тем сложнее. При этом, чем выше число параметров в нейросети, тем больше данных и времени нужно для ее обучения.
  • Метрика машинного обучения (ML Metric). Важно понимать, насколько полезна для задачи модель. Для оценки используются метрики машинного обучения — числовые характеристики, отражающие эффективность модели. Метрики вычисляются при помощи экспериментов над данными, которые не использовались для настройки (обучения) модели. Т.е. на данных, которые она «видит» впервые. Пример: модель определяет, болен ли пациент коронавирусом, анализируя его компьютерную томографию. В данном случае, метрикой может стать доля верных ответов (accuracy) — отношение числа верно поставленных моделью диагнозов к общему числу проанализированных КТ.

Где применяется ML?

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

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

Доменные области, в которых применяется ML

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

  • Ритейл и электронная коммерция
  • Банкинг и финансы
  • Здравоохранение
  • Маркетинг, продажи, реклама
  • Биология, физика, химия и другие точные науки

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

  • Saas-решения и мобильные приложения 
  • Инженерные работы
  • Роботы и системы автопилотирования

делает пометки в блокноте

Жизненный цикл ML-разработки 

Он похож на любой другой цикл разработки ПО, однако имеет свои особенности:

1 этап: сбор требований и дизайн системы

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

  • Выбрать метрики Machine Learning, наиболее важные для бизнес-целей проекта, позволяющие закрыть задачи, которые ставит клиент перед проектной командой;
  • Решить вопросы юридические и этические. Например, нельзя забывать о General Data Protection Regulation, GDPR, общем регламенте защиты персональных данных, установленном Евросоюзом. 

2 этап: реализация 

Процесс реализации ML-системы отличается от того, что обычно происходит во время разработки ПО. Кроме написания программы под задачу, в него также входит обучение алгоритмов, поиск статей для создания более точной и идеальной нейросети, эксперименты: инженер может подготовить 100, 500, 1000 алгоритмов, чтобы в итоге выбрать лучший из них, наиболее точно решающий поставленную задачу.

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

3 этап: развертывание и интеграция ML-модели.

Это может быть развертывание в облако или развертывание в мобильное приложение, изредка — развертывание на устройствах в рамках встраиваемой системы. Под «развертыванием» понимаем «все действия, которые делают программную систему готовой к использованию».

4 этап: тестирование.

Такое же, как и при обычной разработке ПО. Собираются тест-кейсы, отчеты о багах и передаем тестировщикам. 

5 этап: поддержка и мониторинг.

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

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

Какие знания пригодятся ML Engineer?

  • Знание Python (основной язык разработки) и C++ (применяется гораздо реже)
  • Знание фреймворков: NumPy, Scikit-learn, Tensorflow, PyTorch
  • Хорошее понимание ML
  • Понимание Flask, Docker, Pip, PyTest
  • Высшая математика на уровне понимания векторов и матриц, производных, основ теории вероятности и статистики
  • Алгоритмы и структуры данных