Machine Learning Engineer (или ML-специалист) создаёт, обучает, тестирует алгоритмы, которые учатся по данным. Работу инженера машинного обучения можно разбить на несколько шагов.
Работа с данными. Сначала специалист по машинному обучению собирает массив информации — датасет. Например, для распознавания изображений нужны сами картинки, для фильтрации комментариев — примеры текста. Эти данные чистят от ошибок и дубликатов.
Подготовка наборов. Обычно данные делят на три датасета:
-
Обучающая выборка — для тренировки модели.
-
Валидационная — для уточнения настроек.
-
Тестовая — для оценки работы алгоритма.
Выбор модели и признаков. Дальше специалист выбирает алгоритм, затем задаёт признаки, на которые нужно обращать внимание. Например, в изображении это могут быть форма, контуры, яркость, в видео — длительность, тема, автор.
Обучение. Модель учится замечать повторяющиеся сигналы. Например, пытается понять, какой жанр у трека. Если ошибается, то ML-инженер корректирует параметры обучения.
Улучшение. После обучения модель проверяют на данных, которые она не видела раньше. Если качество ответов оказалось ниже ожидаемого, меняют признаки, выбирают другой алгоритм или расширяют датасет. Например, если модель хорошо распознаёт дневные фото, но плохо — ночные, добавляют больше ночных примеров.
Внедрение в продукт. Готовую модель подключают к нужному сервису — этот этап называют деплоем. Затем остаётся проследить, чтобы качество ответов не проседало. Если обновляются данные или меняется задача, инженер запускает переобучение.
- Учить и подкреплять
Весь процесс выше характерен для метода supervised learning (обучение с учителем) — когда у модели есть примеры и готовые ответы. Но существуют и другие способы обучения. Например, в методе unsupervised learning (обучение без учителя) модель сама ищет закономерности в данных.
В reinforcement learning (обучение с подкреплением) система учится сама, но её решения проверяет инженер. За удачные решения модель получает «плюс», за неудачные — «минус». Со временем она начинает понимать, что от неё требуется, и точнее выполняет поставленные задачи.
Что должен уметь ML-инженер
ML-инженер работает не только с ИИ, но и с людьми: аналитиками, разработчиками, продакт-менеджерами. Команда формулирует задачу, а инженер обучает модель, чтобы эту задачу решить.
Среди хард-скилов, которые понадобятся будущему ML-инженеру, — математика, языки программирования, умение работать с базами данных. Расскажем чуть подробнее.
Математика и статистика. Без них тяжело разобраться, почему модель ошибается или как улучшить результат. Для старта достаточно уверенно владеть теорией вероятностей, линейной алгеброй, базовыми методами анализа.
Основы работы с данными. Здесь инженеру понадобятся:
-
Python. Язык программирования, на котором ML-инженер готовит датасет, запускает обучение, проводит эксперименты. Для ML используют и другие языки, но Python — самый популярный.
-
SQL. Язык запросов для анализа больших данных. С SQL специалист может быстро отобрать только то, что нужно для решения задачи.
-
Pandas. Библиотека для обработки данных. С её помощью легко группировать или визуализировать информацию, собирать сводные таблицы.
Алгоритмы машинного обучения. Инженер должен знать, какие методы когда применять. Например, чтобы определить, поставит ли пользователь лайк ролику, нужны алгоритмы наподобие дерева решений или случайного леса. Сгруппировать же данные по похожим признакам помогает кластеризация.
Библиотеки и фреймворки. Инструменты Sklearn, PyTorch, TensorFlow ускоряют работу с моделями. В них уже есть готовые функции для экспериментов и обучения.