Как обучаются ML модели?
Если вы планируете работать менеджером в командах, которые занимаются разработкой ML продуктов, стоит разобраться из чего же состоит процесс обучения ML моделей. Можно выделить пять основных этапов разработки модели:
- Проработка требований
- Сбор и подготовка данных
- Исследование моделей и эксперименты
- Развертывание модели
- Мониторинг качества модели

Сбор требований
Как менеджер продукта, перед началом работы вы должны ответить на несколько вопросов:
- Что мы улучшаем с помощью модели? Всем в команде должен быть понятен ответ на вопрос: "Зачем мы это делаем?". Если модель внедряется ради модели, то стоит остановиться и еще раз подумать, точно ли нужно внедрять ML решение.
- Можно ли использовать готовые решения? Помните, что если вы решаете разрабатывать модель самостоятельно, то помимо средств на разработку, вам предстоит тратить еще много ресурсов на поддержку модели. Убедитесь, что нет уже готовых аналогов, или, если они есть, убедитесь, что их покупка или внедрение дороже, чем собственная разработка.
- Как будет работать модель? Вы должны быть готовы ответить на вопросы связанные с применением модели: "Как часто пользователь будет с моделью взаимодействовать?", "Должен ли пользователь получать результаты работы модели в реальном времени?", "Как сильно модель может ошибаться?", "Какие убытки мы несем каждый раз, когда модель ошибается?". Из ответов на эти вопросы будут формироваться технические требования для команды разработки.
- Куда мы идем? На этот вопрос тяжело ответить в начале разработки, но если ваша команда не знает о ваших целях, то разработчики могут построить архитектуру сервиса таким образом, что со временем сама архитектура станет препятствием на пути к цели.
- Как мы поймем, что модель готова? Менеджер должен понимать, как отвечать на вопрос: "Готова ли модель?". Возможно, это положительный результат АБ или достаточное значение метрики на заранее отложенных данных. Вся команда должна понимать, при наступлении каких условий мы считаем, что модель готова, иначе, процесс разработки может растянуться.
Невозможно перечислить все вопросы, на которые должен подготовить ответ продакт менеджер, но вопросы перечисленные выше задают основное направление. Вы должны точно знать на них ответы. Если этого не знаете вы, этого не знает никто.

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

Откуда брать данные? Источники данных можно условно разделить на две категории:
- Внутренние. Уже есть в компании, лежат на диске. Не нужно прилагать больших усилий, чтобы их достать.
- Внешние. Этих данных у компании нет. Компании предстоит их "добыть", например, купить у кого они есть.
Важное свойство данных, которые используются для обучения моделей, они должны быть размечены. Это значит, что к каждому примеру из данных должны быть известны ответы. Если мы решаем задачу: "Надел ли работник защитные очки?", нам нужны фотографии работников и правильные ответы к каждой фотографии, чтобы обучить модель. Допустим, что у нас уже есть достаточный объем фотографий, но нет разметки, как нам ее получить?
Есть несколько способов разметить данные, выделим четыре основных:
- Разметить данные внутри компании. Ставим перед сотрудниками задачу, чтобы они взяли определенный объем фотографий и внесли в таблицу для каждой фотографии правильный ответ, в нашем случае 1 - если очки есть, 0 - если очков нет.
- Заказать разметку у краудсорсинговых платформ. Есть специальные платформы, где можно заказать разметку данных. Например, Я.Толока или Я.Задания.
- Заказать разметку у сторонней компании. С развитием ML, на рынке появилось много компаний, которые могут помочь вам в разметке данных за деньги.
- Использовать модель, которая уже умеет решать вашу задачу. Часто так бывает, что вы разрабатываете модель, которая решает задачу, которую уже решают другие модели, но ваша будет: быстрее/меньше весить/работать в браузере или другое важное для вас отличие. Тогда, для разметки данных вы можете использовать уже готовую модель. Вы прогоняете ваши данные через обученную модель, а потом учите вашу модель угадывать ответы старой модели.
Важно отметить, что обычно, перечисленные выше методы используют в комбинации, например, сотрудников просят посмотреть результаты из последнего пункта и исправить неправильные ответы, это быстрее и дешевле, чем просить сотрудников размечать данные с нуля.
Исследование модели и эксперименты
После этапа сбора данных наступает этап моделирования. На данном этапе инженер по машинному обучению подбирает такую архитектуру модели, которая удовлетворят заданным заранее техническим требованиям и выдает максимальное качество. На данном этапе важно сформулировать, как ML-инженер будет валидировать результаты работы модели. Важно выбрать подходящую метрику.
Пример плохой метрики:
В упомянутой выше задаче про очки на производстве интуитивно правильной метрикой кажется точность. Предположим, что мы показали модели 100 фотографий, которые она не видела в процессе обучения, и она правильно определила наличие очков на 90 из них, тогда, Точность = 90 / 100 = 0.9. Можно сказать, что точность 90% это хорошо - катим модель в продакшн. Но, обычно, цена ошибки не равнозначна. В нашем случае, если мы скажем, что очков нет, а они есть, мы просто потратим лишние 5 минут на проверку. Если мы скажем, что очки есть, а их не было, то ценой ошибки может быть здоровье сотрудника. Поэтому, менеджеру стоит поставить ограничение, например, вероятность ошибки "Когда модель говорит, что очки есть, а их нет" - не должна превышать 5%. И ML инженеру придется учитывать это ограничение при разработке модели.
На этапе экспериментов ML-инженер решает какой тип модели у нас будет работать, как часто модель будет переобучаться, какие данные мы будем использовать для обучения, а какие данные, наоборот, только уменьшают целевую метрику. Может быть, что ML-инженер заметит, что данных недостаточно или что не хватает каких-то специфических данных, например, рабочих с рыжими волосами, и тогда придется вернуться на этап сбора данных.
Почему я привел такой странный пример с рыжими волосами? Представьте ситуацию, у вас в данных всего три фотографии рабочих с рыжими волосами, и на всех трех фотографиях - рабочий в очках. Может произойти ситуация, что ваша модель в процессе обучения, выучит следующую закономерность: "Волосы рыжие -> очки есть". Поэтому, на этапе сбора данных важно собирать разнообразные примеры.
Развертывание модели
Итак, данные собираются, модель обучается, что дальше? Вам надо доставить вашу модель пользователям. На данном этапе ML-инженеры или Backend-разработчики выбирают инструменты с помощью которых модель будет работать. Вам как менеджеру необходимо убедиться, что модель приносит ожидаемый бизнес-эффект.
Если вы проводите АБ тест, то вам необходимо убедиться в корректности работы вашего АБ инструмента, для этого можно провести АА тест.
АА тест - такой эксперимент, в котором группы идентичны. В АА тесте вы должны убедиться, что не наблюдаете статистически значимых различий между группами. Если различия наблюдаются, значит вы бьете пользователей по группам неравномерно и ваш инструмент АБ требует доработки.
АБ тест прошел успешно - можно катить. Дадим несколько советов:
- Убедитесь, что логируется вся необходимая информация о работе модели. Если что-то пойдет не так, то потом вы сможете понять, где именно ошибка.
- Настройте графики по основным техническим метрикам модели. Если код написан некачественно, то со временем технические метрики могут ухудшиться.
- Проверяйте работу модели глазами. Метрики это хорошо, но возможно, что вы не учли какой-то крайний случай.
- Не катите новые модели перед выходными. Иначе будет тяжело найти того, кто будет исправлять ошибки в срочном порядке.
Мониторинг качества модели
Работа над моделью не заканчивается даже после того, как вы доставили ее до пользователя. Вам необходимо следить за метриками модели, которые вы заранее вывели в специальном инструменте для визуализации, мы используем Grafana, вы можете выбрать любой понравившийся вам аналог. Также, продакт должен постоянно думать как можно улучшить модель.
Вы можете заметить, что модель плохо работает в каких-то конкретных случаях, тогда необходимо собрать дополнительные данные для обучения. Можете заметить, что с увеличением количества пользователей - время ответа модели увеличилось, возможно, вам надо переписать сервис модели или увеличить количество ресурсов выделенных под работу модели.
Бывает такое, что метрики упали и вы не понимаете с чем это связано. Тогда, возможно, вам стоит повторить проведенный ранее АБ тест.
Главное, что вы должны помнить, что вы как менеджер отвечаете не только за разработку модели, но и за ее работу и следить за работой модели вы должны постоянно.
