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

Машинное обучение - сложная задача, особенно при быстрой разработке продуктов (как в случае с Abnormal Security). Типичные жизненные циклы программной инженерии часто терпят неудачу при разработке систем машинного обучения.

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

Цель этой статьи:

  1. Анализируйте, почему жизненные циклы программной инженерии терпят неудачу для проектов машинного обучения
  2. Предложите решение с сопроводительным шаблоном проектной документации, которое поможет вам и вашей команде более эффективно запускать проекты машинного обучения.

Жизненные циклы проектов в области программного обеспечения и науки о данных

Типичные проекты программной инженерии связаны с разработкой кода и систем. Они могут выглядеть примерно так:

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

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

Этот жизненный цикл тоже кажется неправильным. Научно-исследовательские проекты в области науки о данных предназначены для ответов на вопросы, а не для построения систем. Какая золотая середина?

Машинное обучение

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

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

Типичный жизненный цикл ML Engineering выглядит следующим образом: (1) определение проблемы (2) разработка программного обеспечения и эксперимент (они взаимосвязаны, поскольку модели, которые вы можете запланировать реализовать, будут зависеть от того, какие эксперименты работают. вне, но вам может потребоваться разработать код функции и модели для запуска ваших экспериментов в первую очередь) (3) реализовать код и обрабатывать данные (они могут быть взаимосвязаны, потому что вам может потребоваться реализовать программное обеспечение, чтобы данные, которые вам нужны, и вам могут потребоваться данные для написания и тестирования извлечения функций или кода обучения модели) (4) Анализ данных, обучение моделей, оценка результатов (5) публикация результатов (6) тестирование, развертывание и код монитора и модели.

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

Младшие инженеры по машинному обучению vs старшие инженеры по машинному обучению

В фантастической статье Джули Чжуо она наглядно сравнивает Младшие дизайнеры и старшие дизайнеры - эта визуализация точно также относится к младшим и старшим инженерам машинного обучения.

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

Разработайте документы, чтобы помочь жизненным циклам машинного обучения

Как мы можем способствовать лучшему инженерному проектированию машинного обучения?

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

Что следует поощрять при разработке проектов машинного обучения?

  1. Перед тем как приступить к реализации, поставьте перед собой явные дальновидные эксперименты. Это предотвращает бесконечные и бесплодные итерации экспериментов с ML / Data / тиддлинг-экспериментов, в которых мы все время от времени оказываемся.
  2. Назовите «работу» эксперимента полезной, независимо от того, подтверждает ли эксперимент гипотезу. Есть смысл опровергнуть гипотезу, даже если это не приведет к улучшению продукта машинного обучения.
  3. Разрабатывайте программное обеспечение с учетом экспериментов и разрабатывайте эксперименты с учетом программного обеспечения (т. Е. Того, что можно отправить в производство). Измените свои данные в свете систем, которые вы будете строить, и того, как эти данные будут доступны в производственной среде.

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

- - - - - - - - - - - - - - - - - - - - - -
Шаблон документа дизайна машинного обучения Abnormal Security (для копирования и заполнения в начале нового инжиниринга машинного обучения проект). Не стесняйтесь использовать, изменять и делиться!

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

Что мы конкретно пытаемся решить и почему решаем именно сейчас? Сильное оправдание свяжет это с проблемой продукта или клиента.

Цели

Программные цели

Опишите программную систему, которую мы хотим создать, и ее возможности.

Метрические цели

Желаемое улучшение показателей, как мы собираемся измерять влияние этой работы, почему мы хотим улучшить систему таким образом:

  • Плохой пример: повышение эффективности модели
  • ОК Пример: улучшение AUC модели на X%
  • Хороший пример: улучшить отзыв на X% для класса ложноотрицательных результатов без уменьшения отзыва для любых других классов более чем на Y%.

Возможные компромиссы с показателями, если таковые имеются: например: увеличение полноты информации без снижения точности более чем на 5%.

Дизайн эксперимента

В отличие от чисто программных проектов, проекты по науке о данных / машинному обучению часто требуют исследования данных, экспериментирования, сбоев и изменения дизайна по ходу сбора данных. Чтобы сделать проект успешным, полезно определить ваши потенциальные точки разветвления и то, как вы будете принимать решения на этом пути. Кроме того, все эксперименты следует оценивать по базовому уровню, который является либо простым решением проблемы (простой алгоритм, простая эвристика), либо текущим производственным решением, если оно существует.

Мотивация данными

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

Гипотезы

Гипотеза 1. метод A улучшит показатель B на X% по сравнению с базовым уровнем

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

Гипотеза 2:…
Одинаковый набор вопросов для каждой гипотезы

Разработка программного обеспечения

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

Исполнение

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

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

Прогулка: более тщательный дизайн должен стать относительно законченным компонентом.

Запуск: здесь долгосрочный дизайн; как мы можем сделать из этой системы действительно первоклассную систему или модель.

Соображения

Критерии успеха для запуска?

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

Что может пойти не так?

Опишите все возможности, которые могут пойти не так, когда мы запустим это?

  • Какие поверхности продукта могут быть повреждены?
  • Как это повлияет на клиентов?
  • Как мы будем отслеживать?
  • Что мы будем делать для отката?

Вопросы безопасности и конфиденциальности

  • Как это изменение может повлиять на безопасность?
  • Как это изменение может повлиять на конфиденциальность?

Приложение: журнал экспериментов

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

— — — — — — — — — — — — — — — — — — — — — — —

Этот шаблон менялся с годами. Спасибо Дмитрию Чечику, Ю Чжоу Ли, Кевину Лау, Умуту Гюльтепе и Абхиджиту Багри за вклад в этот процесс проектирования с течением времени.

Если вас интересует увлекательная инженерия прикладного машинного обучения в сфере кибербезопасности, да, мы нанимаем!