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

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

Насколько уверена моя модель в том или ином прогнозе?

Оглавление

Фон

Мы сталкиваемся с проблемой прогнозирования для бизнеса, поэтому исследуем новые методы прогнозирования, особенно новый подход к нейронным сетям. (Мне известно о LSTM / encoder-decoder / seq2seq, но я не слышал от него особо впечатляющих результатов). Не так много публичных обсуждений временных рядов со стороны большой компании, которые я могу найти , ближе всего, что я могу найти, это Пророк от Facebook, который представляет собой чисто статистический базовый метод прогнозирования.

У Uber есть статья Глубокое и достоверное прогнозирование временных рядов в Uber, которая привлекает наше внимание, поскольку они являются одним из игроков отрасли, которые вкладывают много ресурсов в вероятностное программирование. После некоторого исследования я обнаружил, что Uber также выиграл конкурс M4 (широко известный конкурс временных рядов). Конкурс M4 требует не только точного прогноза, но и его доверительного интервала. У них также есть открытый исходный код Pyro, библиотека вероятностного программирования, поэтому, комбинируя эти факты, я вполне уверен, что они делают некоторые интересные (и практически полезные) работы.

У меня нет глубокого статистического опыта, и слово байесовский для меня почти бессмысленно, все, что я знаю, это то, что оно относится к условной вероятности, вот и все. Я очень стараюсь вспомнить свой STAT1000 о байесовском и частотном преобразовании, эта фантастическая ветка объясняет это довольно хорошо.

Глубокое и надежное прогнозирование временных рядов в Uber

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

Мы показываем, что использование dropout (и его вариантов) в NN можно интерпретировать как байесовское приближение известной вероятностной модели: гауссовский процесс (GP) ¹

Лично я не на 100% убежден в работе, но они показали большой практический результат, а это самое главное. (Как и BatchNorm, люди долгое время думали, почему он работает по неправильной причине, но это никому не мешает использовать его, поскольку он действительно улучшил конвергенцию моделей)

Изучаемые статьи:

  1. Глубокое и надежное прогнозирование временных рядов в Uber
  2. Прогнозирование экстремальных событий по временным рядам с помощью нейронных сетей в Uber
  3. Отсев как байесовское приближение: представление неопределенности модели в глубоком обучении
  4. Вариационный байесовский отсев: подводные камни и исправления
  5. Вариационный гауссовский отсев не является байесовским
  6. Риск против неопределенности в глубоком обучении: Байес, бутстрап и опасность отсева

Другие источники:

  1. Конкурс M4: результаты, выводы, выводы и дальнейшие шаги
  2. Неопределенность в глубоком обучении (тезис Ярина Гала)

При чтении серии материалов полезно иметь временную шкалу.

Оценка неопределенности

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

Ошибка = неопределенность модели + неправильная спецификация модели + собственный шум

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

MCDropout

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

Они используют MCDropout для устранения неопределенности модели и ошибок в спецификации. По сути, они утверждали, что использование Dropout во время вывода эквивалентно выполнению байесовского приближения. Ключевая идея здесь - позволить выбывшим делать одно и то же во время обучения и тестирования. Во время тестирования вы повторите B раз (несколько сотен раз, как сказано в документе), то есть передавая один и тот же вход в сеть со случайным отключением. Затем вы берете средства своего предсказания и можете сгенерировать интервал предсказания с этим # из B предсказаний. MC имеет в виду Монте-Карло, поскольку процесс отсева подобен отбору нейронов.

Собственный шум

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

Обсуждение

Вы можете найти интересную дискуссию на Reddit, которая дает некоторый теоретический аргумент. На самом деле, газета Uber меня не на 100% убеждает. Тем не менее, они показали хороший результат как очно, так и в соревнованиях М4. Как и большой прогресс в глубоком обучении, теория приходит позже, чем практические результаты. Если вам интересно, не стесняйтесь попробовать, реализация должна быть относительно простой, так как вам просто нужно сохранить отсев во время вывода.

Заключение

Вывод: неопределенность существует не только в вашей модели, но и в вашем весе. Байесовская нейронная сеть пытается моделировать веса как распределения.

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

Я очень хочу услышать больше дискуссий о последнем прогнозе временных рядов и методе оценки неопределенности с NN, дайте мне знать, если вы знаете какой-нибудь способ получше!

Приложение

Когда начать? Имя ключа для Google по адресу:

  • Ярин Гал (в своей диссертации он предлагает использовать отсев для байесовского приближения)
  • Славек Смил (победитель конкурса M4)

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

[4] - отличный обзор некоторых подводных камней использования исключения

  1. Глубокое и надежное прогнозирование временных рядов в Uber
  2. Прогнозирование экстремальных событий по временным рядам с помощью нейронных сетей в Uber
  3. Отсев как байесовское приближение: представление неопределенности модели в глубоком обучении
  4. Вариационный байесовский отсев: подводные камни и исправления
  5. Вариационный гауссовский отсев не является байесовским
  6. Риск против неопределенности в глубоком обучении: Байес, бутстрап и опасность отсева

Https://tensorchiefs.github.io/bbs/files/dropouts-brownbag.pdf (Ярин Гал)