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

Это означает, что нас должно интересовать, когда и как выходные данные этих моделей будут отличаться от реальных процессов, которые они должны моделировать. Проверка модели - один из подходов к этому, например. в виде набора тестов удержания или перекрестной проверки, но это только говорит вам кое-что об общей статистической эффективности вашей модели. Что, если мы хотим узнать больше о надежности одного прогноза? Регрессионные модели часто просто дают точечную оценку вашего результата, и хотя классификаторы дают «достоверность», обычно это некалиброванное преобразование логитов модели, а не надежный статистический показатель; Нередко можно увидеть, как классификатор выдает 99% достоверности при очевидном ложном срабатывании. Это отсутствие прозрачности в индивидуальных прогнозах может затруднить предоставление заинтересованным сторонам бизнеса понимания и уверенности, которые им необходимы, чтобы полностью сесть на поезд ML.

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

Прогнозирование

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

Prophet — это библиотека, разработанная Facebook для крупномасштабного прогнозирования деловых событий [2]. Он создает обобщенную аддитивную модель, что означает, что окончательный прогноз модели делается путем суммирования трех моделей отдельных компонентов: праздников, тренда и сезонности. В этом случае неопределенность не обязательно фиксируется в параметрах модели (они могут быть представлены как апостериорные распределения вероятностей, но по умолчанию являются точечными оценками MAP), но также и в том, как генерируются прогнозы. Это позволяет моделировать множество потенциальных прогнозов, из которых затем можно вычислить интервалы неопределенности для прогноза. Это объясняет неопределенность тренда и, возможно, моделей сезонности, а также позволяет моделировать шум наблюдений. К сожалению, эта симуляция также требует дополнительных вычислительных ресурсов, что означает, что она достижима не во всех условиях.

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

Альтернативный пакет для вероятностного моделирования временных рядов поставляется через TensorFlow Probability в виде пакета tfp.sts. Это также возвращает моделирование структурированных временных рядов к обобщенной аддитивной модели, но оставляет вам гибкость, в отличие от Prophet, которую сложнее настроить. Вы можете определять и комбинировать различные модели с различными предположениями таким образом, который лучше всего подходит для вашего контекста моделирования. В качестве дополнительного бонуса tfp.sts также поддерживает ускорение графического процессора и позволяет выбирать между вариационным выводом и MCMC. «Это сообщение в блоге авторов представляет собой хорошее введение.

Регрессия

Вообще говоря, проблемы регрессии касаются предсказания числового значения на основе набора входных переменных. Стандартные регрессионные подходы дают вам только точечную оценку в качестве прогноза, то есть одно число, без каких-либо указаний на достоверность или неопределенность. Тем не менее, может быть действительно полезно учитывать неопределенность для целей регрессии. Например, прогноз цены дома в 300 000 евро с запасом неопределенности в 100 000 евро — это совсем другая история, чем прогноз с той же ценой и запасом в 2 000 евро. Другой пример использования может быть в производстве: если вам нужно сделать точно расположенный разрез, чтобы разделить два ковра, интервал неопределенности в 2 мм по координате будет приемлемым, но интервал в 20 см может быть триггером для запроса вмешательства человека. Оценка продолжительности отдельных задач для целей планирования — еще одна область, где информация о неопределенности может иметь решающее значение.

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

Оба эти эффекта можно смоделировать. Алеаторическая неопределенность по существу может быть представлена ​​с помощью фактора шума в вашей генерирующей модели, в то время как эпистемическая неопределенность моделируется путем замены фиксированных параметров модели (например, линейной регрессии или весов и смещений MLP) вероятностными распределениями. После того, как они оценены либо с помощью вариационного вывода, либо с помощью MCMC, их можно выбрать для создания выходного распределения для определенного входа. Это можно смоделировать в нескольких вероятностных фреймворках, таких как Tensorflow Probability, Pyro, PyMC4,… Эта серия постов в блоге прекрасно подходит к полной вероятностной модели в Tensorflow. Используя эту методологию, пользователю в конечном итоге предоставляется вывод, содержащий доверительные интервалы (алеаторическая неопределенность) для нескольких выборок (эпистемическая неопределенность).

Также взгляните на MAPIE. Это пакет, основанный на scikit-learn, который реализует оценки неопределенности как для регрессии, так и для классификации (см. ниже).

Классификация

Как упоминалось во введении, классификационные модели обычно выводят некалиброванные значения оценки класса, т. е. при рассмотрении репрезентативной выборки входных данных модели, которые все приводят к доверительному результату 0,95 для класса, мы не гарантируем (и не должны ожидать ), чтобы получить 95% истинных срабатываний и 5% ложных срабатываний. Одним из способов более качественной количественной оценки неопределенности здесь является использование калибровки модели. Sklearn включает для этого функционал.

Глядя на более сложные нейронные сети, особенно в области зрения и НЛП, вероятностные методы, безусловно, существуют (1, 2, 3), но, насколько нам известно, они еще не широко используются в промышленности.

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

Заключение

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

Сноски

[1] Вероятно, прогнозирование — это особый тип регрессии. Для целей данной статьи его стоит рассмотреть отдельно, так как он имеет свои специализированные подходы и пакеты

[2] Существует также вариант Prophet, который использует глубокую сеть для авторегрессионного компонента, который называется NeuralProphet.