Эксперименты

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

  • Определите базовую производительность. Начните с установления базовой метрики. Базовый уровень действует как мера для сравнения экспериментов.

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

  • Вносите отдельные небольшие изменения. Вносите только одно небольшое изменение за раз, например, в гиперпараметры, архитектуру или функции. Если изменение улучшает модель, метрики этой модели становятся новой базой для сравнения будущих экспериментов.

    Ниже приведены примеры экспериментов, в которых вносится одно небольшое изменение:

    • включить функцию X.
    • используйте дропаут 0,5 на первом скрытом слое.
    • возьмите логарифмическое преобразование признака Y.
    • измените скорость обучения на 0,001.
  • Запишите ход экспериментов. Скорее всего, вам придется провести множество экспериментов. Эксперименты с плохим (или нейтральным) качеством прогнозов по сравнению с базовым уровнем по-прежнему полезно отслеживать. Они сигнализируют, какие подходы не сработают. Поскольку прогресс обычно нелинейный, важно показать, что вы работаете над проблемой, выделив все обнаруженные вами способы, которые не работают, — в дополнение к вашему прогрессу в повышении базового качества.

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

Шум в экспериментальных результатах

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

  • Перетасовка данных. Порядок представления данных в модели может повлиять на производительность модели.

  • Инициализация переменных. Способ инициализации переменных модели также может повлиять на ее производительность.

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

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

Проведение эксперимента несколько раз помогает подтвердить экспериментальные результаты.

Согласуйте методы экспериментирования

Ваша команда должна иметь четкое представление о том, что такое «эксперимент», с определенным набором практик и артефактов. Вам понадобится документация, в которой описывается следующее:

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

  • Практика кодирования. Будет ли каждый использовать свою собственную экспериментальную среду? Насколько возможно (или легко) объединить работу каждого в общие библиотеки?

  • Воспроизводимость и отслеживание. Каковы стандарты воспроизводимости? Например, должна ли команда использовать один и тот же конвейер данных и методы управления версиями или можно показывать только графики? Как будут сохраняться экспериментальные данные: в виде SQL-запросов или в виде снимков модели? Где будут документироваться журналы каждого эксперимента: в документе, электронной таблице или CMS для управления экспериментами?

Неправильные прогнозы

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

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

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

Внедрить комплексное решение

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

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

Устранение неполадок в замороженных проектах

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

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

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

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

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

    Если вы работаете над проблемой, требующей наборов данных, помеченных человеком, получить помеченный набор данных для оценки модели может быть сложно. Найдите ресурсы, чтобы получить наборы данных, необходимые для оценки.

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