Резюме полевого руководства Facebook по серии видеороликов по машинному обучению

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

1. Определение проблемы
2. Данные
3. Оценка
4. Особенности
5. Модель
6. Экспериментирование

1. Определение проблемы

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

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

Как найти событие прокси?

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

Он не должен быть слишком редким. Если положительное событие — одно на миллион, то в миллиардном наборе данных у вас будет всего 1000 точек данных.

У нас должны быть функции, которые содержат прогнозную информацию о прокси-событии.

Мы можем создать простое прокси-событие для количественной оценки фактического события. Например, у нас может быть простая кнопка с надписью «нерелевантное объявление», и наша модель может прогнозировать вероятность нажатия этой кнопки.

2. Данные

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

Актуальность данных и обучение в режиме реального времени

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

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

Постепенная оценка модели, обученной до дней n, в дни n+1, n+2, n+3 и т. д., может дать вам представление о производительности вашей модели. Если со временем производительность падает, возможно, стоит заняться дополнительными инженерными разработками
для проведения обучения в режиме реального времени. Обработка в реальном времени имеет дополнительные проблемы, поскольку Presto и Hive не оптимизированы для запросов в реальном времени.

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

Оффлайн/онлайн согласованность

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

Записи и выборка

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

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

3. Оценка

Двумя распространенными способами оценки модели являются онлайновая и автономная оценка. Хорошим способом является использование автономной оценки, а затем проверка с помощью онлайн-оценки.

Создайте простую базовую модель

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

Набор данных для обучения/тестирования/проверки

Разделите набор данных случайным образом на набор данных для обучения, тестирования и проверки. Модель обучается на наборе данных поезда, а гиперпараметр настраивается на наборе данных проверки. Тестовый набор данных используется для окончательного отчета о метриках. Недостатком случайного разделения является то, что тестовый набор данных может содержать более свежие точки данных, что нежелательно. Другой популярный подход — прогрессивная оценка, при которой мы разделяем данные по времени.

Компромисс специфичности/разреженности

В задаче прогнозирования кликов нас могут особенно заинтересовать «первые кликеры». Если мы построим модель только на данных о первых пользователях, мы можем упустить некоторые полезные взаимодействия. Мы создаем eval/test для «первых кликеров» и используем полные обучающие данные, чтобы установить базовый уровень. Затем мы можем решить, должны ли мы сжимать обучающие данные до первых кликеров.

Метрики

Показатели должны быть интерпретируемыми и чувствительными к улучшениям в модели. Точность, полнота легко интерпретируются, но если базовый уровень положительных результатов составляет 0,001. Тогда всегда предсказывать 0 было бы очень трудно превзойти. В этом случае метрикам не хватает чувствительности. Такие показатели, как AUC и R-квадрат, имеют базовый уровень (0,5 и 0 соответственно).

Калибровка

Калибровка = (Сумма прогнозов)/(Сумма меток)

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

Оценка малых групп

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

4. Особенности

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

Исторические особенности

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

  1. Уменьшить способность интерпретировать модели. Мы не узнаем, как эти функции повлияли на нашу производительность. Таким образом, это препятствует процессу генерации новой гипотезы.
  2. Они могут ввести петлю обратной связи. Таким образом, когда регистрируются обучающие данные, на нас влияет модель, которую мы использовали для сбора того, какой контент показывать пользователю. Эти функции также очень неявно обусловлены нашей моделью.

Изменение семантики признаков

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

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

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

Утечка функций

Убедитесь, что функции не выдают метку: запись о рождении функции может содержать информацию о породе домашнего животного.

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

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

Покрытие функций

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

5. Модели

Как выбрать модель

Факторы, влияющие на выбор модели:

  1. Функции
  2. Объем данных
  3. Интерпретируемость
  4. Рекомендации по обучению и прогнозированию

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

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

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

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

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

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

Компромисс между погрешностью и дисперсией

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

Настройка модели

Тюнинг моделей можно разделить на:

  1. Настройка гиперпараметров, таких как скорость обучения и параметр регуляризации
  2. Настройки архитектуры модели
    i) Взаимодействие функций для линейной модели
    ii) Количество листьев/деревьев для древовидной
    iii) Количество, тип и ширина слоев для нейронной сети

Это пространство гиперпараметров обычно огромно. Такие системы, как блокнот iPython, позволяют совмещать анализ и заметки. Поймите все шаги, которые привели к экспериментальному результату. Обычно неправильно называть ваш тренировочный набор, например, tmp_1234.

Поддерживайте версии модели и научитесь триангулировать ошибки при создании последовательности моделей. Это поможет в воспроизводимости или результатов и ошибок. Автоматизируйте процесс настройки с помощью таких методов, как поиск по сетке.

Сравнение моделей

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

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

Одной из распространенных метрик для сравнения моделей является нормализованная энтропия.

6. Эксперимент

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

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

Разрыв онлайн-офлайн: разница между онлайн- и офлайн-показателями и их влияние на результаты модели в реальном мире.

A/B-тест — это золотой стандарт онлайн-оценки.

Изолируйте инженерные ошибки от проблем с производительностью ML

Попытайтесь понять влияние изменений вашего кода и влияние вашей модели ML. Возможно, добавьте еще один раздел в A/B-тест, чтобы сравнить влияние изменений кода.

Проблемы обратной связи в реальном мире

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

Будьте бдительны, если результаты нейтральны. Возможно, система сломана, и вы смотрите на A/A-тест.

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

Объединение нескольких изменений в один эксперимент — это ложная экономия, половина может помочь, половина может навредить, или оба нейтральны.

Калибровка может быть полезной метрикой для мониторинга и предоставления информации о нашей модели.

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

Неправильная калибровка означает, что проблема обычно фундаментальна. Имеет смысл тщательно диагностировать модель.