Планирование проектов машинного обучения отличается от планирования типичных проектов разработки программного обеспечения. Проекты ML характерны нелинейностью и имеют разную степень неопределенности. Они требуют итеративного подхода и экспериментального мышления.
Неопределенность проекта
Планирование на ранней стадии может быть затруднено, поскольку лучший подход обычно не очевиден в начале проекта. Эта присущая неопределенность затрудняет оценку сроков.
Недавний конкурс Kaggle иллюстрирует неопределенность проектов ML. За первые несколько недель соревнований приняли участие 350 команд. Некоторым командам удалось повысить качество прогнозов с 35% до 65%. В течение следующих двух недель количество команд, работающих над проблемой, увеличилось с 350 до 1400. Однако лучшая модель достигла качества прогнозирования только 68%.
Рисунок 3 иллюстрирует неопределенность в развитии машинного обучения, показывая значительное увеличение усилий, но лишь минимальное улучшение качества модели.
Рисунок 3 . За две недели количество команд, работающих над проблемой, увеличилось в 4 раза, но качество модели осталось почти таким же, что подчеркивает сложность оценки усилий по решению ML.
Другими словами, более тысячи команд, каждая из которых экспериментировала с различными преобразованиями данных, архитектурами и гиперпараметрами, добились создания модели с качеством прогнозирования только 68%.
Пример из промышленности иллюстрирует нелинейность проектов машинного обучения, где результаты не пропорциональны затратам. Двум командам потребовалось несколько месяцев, чтобы обучить модель до качества прогнозирования 90%. Однако нескольким командам потребовалось более пяти лет, чтобы подготовить модель к производству с качеством прогнозирования 99,9%.
Эти примеры подчеркивают, что готовое к производству машинное обучение — это исследовательский процесс, требующий как научного, так и инженерного мышления.
Экспериментальный подход
В большинстве случаев разработка машинного обучения больше похожа на проведение экспериментов, чем на традиционную разработку программного обеспечения. ML требует тестирования различных функций, тестирования нескольких архитектур и правильной настройки гиперпараметров. По определению, эксперименты не обязательно будут успешными. По этой причине лучше всего планировать, используя экспериментальную структуру.
Давайте посмотрим на типичный план разработки программного обеспечения, чтобы увидеть, чем он отличается от плана проекта ML.
Планирование проектов по разработке программного обеспечения
В типичном плане разработки программного обеспечения вы определяете требования, обрисовываете компоненты, оцениваете трудозатраты и планируете работу. Существует четко определенный путь к решению. Например, инженеры часто с высокой степенью уверенности знают, какие задачи им необходимо выполнить для создания приложения, соответствующего проектным спецификациям.
Когда они прогнозируют время, необходимое для выполнения задачи, они могут оценить работу на основе аналогичных проектов. Хотя неизменно возникают проблемы (например, неизвестные зависимости или изменяющиеся требования), которые иногда могут затруднить оценку, обычно существует ясный путь к решению.
Напротив, проекты ML обычно не имеют одного четкого пути к успеху.
Планирование проектов ML
Для большинства проектов машинного обучения вы найдете лучшее решение, экспериментируя с несколькими подходами методом проб и ошибок. Обычно вы не знаете оптимального решения вашей проблемы, прежде чем попытаетесь ее решить. Например, архитектура оптимального решения может представлять собой простую линейную модель, нейронную сеть или, возможно, дерево решений. Только опробовав каждый подход, вы сможете найти лучшее решение.
Эта двусмысленность затрудняет планирование. Как обсуждалось ранее, предсказать усилия, которые потребуются для проекта ML, сложно. Только попытавшись решить проблему, вы сможете лучше понять, сколько времени и ресурсов может потребоваться для ее решения.
Ниже приведены рекомендуемые стратегии планирования работы ML:
Таймбокс для работы . Установите четкие сроки для выполнения задач или попытки конкретного решения. Например, вы можете выделить две недели, чтобы определить, сможете ли вы получить доступ к нужным данным. Если вы сможете получить данные, вы можете выделить еще две недели, чтобы проверить, показывает ли простая модель, что решение ML осуществимо. Если простая модель не сработает, вы можете выделить еще две недели на тестирование нейронной сети. В конце каждого периода времени вы получите дополнительную информацию, позволяющую определить, стоит ли продолжать использовать ресурсы для решения проблемы.
Уменьшите требования к проекту . Если решение ML кажется многообещающим, но не является критически важной функцией для вашего продукта или услуги, уменьшите его требования. Например, планируя работу на следующий квартал, вы можете попробовать очень простое решение. Затем в последующих кварталах вы можете запланировать итеративное улучшение решения. Внедрение решения ML путем поэтапных улучшений в течение длительного периода времени стало способом, которым многие команды пришли к эффективным решениям ML.
Стажер или проект Noogler . Направление и сопровождение стажера или Noogler в попытке найти решение ML может быть хорошим способом начать исследование новой области с неизвестными результатами. После завершения проекта вы будете лучше понимать, какие усилия потребуются для решения ML, и какие потенциально многообещающие подходы следует использовать, или следует ли направить ресурсы куда-то еще.
При любой стратегии разумно быстро потерпеть неудачу. Сначала попробуйте подходы с наименьшими затратами, но потенциально с самой высокой отдачей. Если подход работает, вы нашли хорошее решение. Если это не так, вы не потратили много времени и ресурсов.
По мере того, как команды приобретают опыт проведения экспериментов, они смогут лучше оценить усилия, которые может потребоваться для проведения эксперимента, что сделает планирование более предсказуемым. Однако результат эксперимента почти всегда неизвестен, поэтому количество экспериментов, необходимых для поиска лучшего решения, невозможно оценить заранее.
Планирование подходов с экспериментальным мышлением помогает настроить вашу команду на успех. Когда какой-то подход заводит в тупик, члены команды не разочаровываются, а понимают, что это часть процесса поиска решения ML. Что еще более важно, обсуждая неопределенность, присущую разработке машинного обучения, с заинтересованными сторонами, вы сможете установить более реалистичные ожидания.
Иметь ввиду
Обучение вероятностному планированию нескольких подходов к машинному обучению требует времени и опыта. План вашего проекта может потребовать частых обновлений. Думайте об этом как о динамичном документе, который постоянно развивается, пока ваша команда экспериментирует с различными подходами. Сосредоточив внимание на следующих ключевых идеях, вы увеличите свои шансы на успех:
- Оцените стоимость и вероятность успеха каждого подхода.
- Попробуйте портфолио подходов.
- Определите извлеченные уроки и попытайтесь улучшить систему по одному шагу.
- Планируйте неудачи.
Иногда ранний подход приводит к прорыву. Кто-то может обнаружить ошибку в конвейере генерации данных или разделении обучения и проверки. Благодаря хорошему планированию и тщательной документации вы увеличиваете вероятность того, что найдете модель, которая решит вашу бизнес-задачу раньше, чем ожидалось.