1. Введение
Точное прогнозирование объемов трафика в периоды высокой изменчивости (такие как праздники, спортивные мероприятия и т. д.) имеет решающее значение для обнаружения аномалий, распределения ресурсов, планирования бюджета и других связанных задач, которые способствуют крупномасштабной оптимизации взаимодействия с пользователем. Чрезвычайно сложно прогнозировать эти переменные, потому что такие прогнозы экстремальных явлений зависят от погоды, роста городского населения и других внешних факторов, которые вносят вклад в неопределенность прогноза. В последние годы сетевая технология с долговременной кратковременной памятью стала популярной структурой моделирования временных рядов благодаря сквозному моделированию, легкому включению экзогенных переменных и автоматическому извлечению признаков. Используя большие объемы данных в нескольких измерениях, методы LSTM могут моделировать сложные нелинейные взаимодействия функций, которые имеют решающее значение для прогнозирования экстремальных событий. В статье IEEE Линсюэ Чжу и Николая ЛаптеваDeep and Confident Prediction for Time Series at UberВ , мы представляем новую сквозную архитектуру байесовской нейронной сети (BNN), которая может более точно прогнозировать результаты временных рядов и прогнозы неопределенности в больших масштабах.
2. Обзор
2.1 Прогноз неопределенности
Сначала воспользуемся функцией
Чтобы представить нейронную сеть, где f представляет структуру сети, с **W** для представления набора параметров модели. В модели BNN вводится априор для весовых параметров, и цель модели состоит в том, чтобы подобрать оптимальное апостериорное распределение. Например, гауссовы априорные значения обычно предполагают:. Затем мы дополнительно устанавливаем распределение генерации данных как. В задачах регрессии мы обычно предполагаем:(с небольшим шумом). Далее, учитывая N наблюдений и, цель байесовского вывода состоит в том, чтобы найти апостериорное распределение параметров модели. Наконец-то дана новая точка данных, после маргинализации апостериорного распределения можно получить прогнозируемое распределение. где дисперсия количественно определяет неопределенность прогноза и может использоватьсязакон полной дисперсииСломай:, мы сразу видим, что дисперсия разлагается на два слагаемых,(отражающие наши предположения о параметрах модели _W_ неопределенность спецификации, известная как неопределенность модели) и(указывает на собственный шум). Основное предположение для приведенной выше формулы разложения состоит в том, чтопроизводятся одним и тем же процессом, но на практике это часто не так. Особенно при обнаружении аномалий, если некоторые временные ряды имеют необычные закономерности, это может иметь большое значение для обученной модели. Поэтому нам необходимо объединить следующие три аспекта для измерения неопределенности прогноза:- неопределенность модели
- Неверная идентификация модели
- собственный шум
Эти три аспекта подробно описаны далее.
2.1.1 Неопределенность модели
Ключом к оценке неопределенности модели является апостериорное распределение
(т.е. байесовский вывод). Апостериорные распределения чрезвычайно сложны в нейронных сетях из-за несопряжения, вызванного нелинейностями. В глубоком обучении было проведено много исследований по аналогичным рассуждениям.После тщательного сравнения мы выбираем метод отсева Монте-Карло (отсев MC) для моделирования неопределенности модели. Конкретный алгоритм выглядит следующим образом: Учитывая новый ввод, а затем случайным образом отбрасываем часть вывода на каждом слое нейронной сети., то есть с некоторой вероятностью**p** Случайным образом отбрасывайте каждую скрытую единицу слоя. Затем случайная обратная связь повторяется B раз, чтобы получить. Таким образом, неопределенность модели может быть аппроксимирована как выборочная дисперсия(в). В последние годы было проведено много исследований по адаптивному выбору оптимальной частоты отбраковки p в составе параметров модели, но такой подход требует модификации этапа обучения. Фактически мы обнаруживаем, что оценки неопределенности модели обычно находятся в _pРазумный диапазон для _ является надежным.2.1.2 Неверная идентификация модели
Далее нам нужно решить проблему потенциальной ошибочной идентификации модели с помощью модели BNN. Мы решаем эту проблему, беря неопределенность, полученную при прогнозировании неизвестных выборок с несоизмеримыми закономерностями в обучающем наборе данных, и обучая кодировщик, который автоматически извлекает репрезентативные признаки из временных рядов, чтобы определить этот источник достоверности неопределенности. Во время тестирования эффект кодирования каждого образца поможет рассчитать расстояние между набором образцов и обучающим набором. Другой способ вычислить расстояние между ними — использовать структуру кодировщика-декодера, чтобы подогнать скрытое пространство встраивания для всех временных рядов обучающей выборки. Таким образом, мы можем измерить расстояние между тестовыми и обучающими выборками в этом пространстве встраивания. Следующий вопрос, который нам необходимо решить, заключается в том, как совместить эту неправильную идентификацию с модельной неопределенностью. Здесь мы используем метод, который соединяет сеть кодера-декодера с сетью прогнозирования и использует ее как большую сеть во время вывода.Алгоритм показан на рисунке 1:
Рисунок 1: Аппроксимация неопределенности модели и ошибочной идентификации модели с использованием алгоритма исключения MC Алгоритм 1 выше демонстрирует такую сеть логического вывода с использованием алгоритма исключения MC. В частности, учитывая входной временной ряд, кодировщик строит изученный вектор встраивания, и передать его как функцию прогнозной сети_h_середина. Во время этого процесса прямой связи исключение MC применяется ко всем уровням кодера и сети предсказания. Следовательно, случайное отбрасывание весов уровня кодировщика будет разумно мешать входным данным в пространстве встраивания, что приведет к потенциальной ошибочной идентификации модели и дальнейшему распространению по сети прогнозирования.2.1.3 Собственный шум
Наконец, оценим собственный шум
. В этом сценарии мы предлагаем простой, но адаптивный подход к оценке уровня шума путем оценки независимого проверочного набора по сумме квадратов остатков. Конкретно,модель установлена на тренировочном наборе,является независимым проверочным набором, то мы передаем формулучтобы оценить. Уведомлениене зависит отиз. Если мы далее предположимявляется несмещенной оценкой истинной модели, то имеем, где член смещения, и он уменьшается по мере увеличения количества обучающих выборок, особенно когда выборка обучающей выборки N стремится к ∞, член смещения стремится к 0. Следовательно, если модель несмещена,Это обеспечивает приблизительную объективную оценку уровня собственных шумов. С ограниченной выборкой,Уровни шума могут быть только переоценены и, как правило, являются более консервативными. Алгоритм окончательного вывода нашей модели BNN сочетает оценку собственного шума и отсев MC.Алгоритм 2 дает окончательный алгоритм вывода, как показано на рисунке 2:Рис. 2. Алгоритм логического вывода, сочетающий оценку собственного шума и алгоритм исключения MC3. Эксперимент
Экспериментальные результаты в этой статье получены на основе сети lstm + полное соединение. Полная структура нейронной сети в основном состоит из двух частей: (i) структура кодера-декодера, которая используется для получения самоотношения во временном ряду и изучается во время предварительного обучения (ii) сеть прогнозирования, чья входные данные поступают от уровня кодировщика — Embedding, изученного структурой декодера, и потенциальных внешних функций (таких как погодные явления и т. д.). Эта надежная архитектура показана на рис. 3 ниже:
Рис. 3. Полная архитектура Перед подгонкой модели прогнозирования мы сначала проводим предварительное обучение, чтобы подобрать кодировщик, который может извлекать полезные и репрезентативные встраивания из временных рядов. Его цели преследуют две цели: (i) убедиться, что изученные вложения предоставляют полезные функции для прогнозирования; (ii) продемонстрировать, что аномальные входные данные могут быть захвачены во вложениях для дальнейшего распространения в сети прогнозирования.3.1 Экспериментальные данные
Здесь мы находим набор данных от kaggleNYC Uber Pickups with Weather and Holidays, этот набор данных имеет много необходимых нам функций, но нам все еще нужно с ним разобраться, объединить поля площади, изменить поля праздников на числа 0-1, и объединенные данные показаны на рисунке 4:
Рисунок 4: Обработанные экспериментальные данные Поскольку сеть LSTM должна использоваться в качестве платформы кодировщика-декодера, мы считываем обработанные выше данные в данные временных рядов, а затем преобразуем их в контролируемые данные задачи. Код ссылки:def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
cols, names = list(), list()
# input sequence (t-n, ... t-1)
for i in range(n_in, 0, -1):
cols.append(df.shift(i))
names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
# forecast sequence (t, t+1, ... t+n)
for i in range(0, n_out):
cols.append(df.shift(-i))
if i == 0:
names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
else:
names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
# put it all together
agg = pd.concat(cols, axis=1)
agg.columns = names
# drop rows with NaN values
if dropnan:
agg.dropna(inplace=True)
return agg
3.2 Экспериментальная модель
Учитывая временной ряд
, LSTM кодировщика считывает данные первой метки времени Tпостроить вектор состояния встраивания фиксированной размерности. Затем LSTM декодера основан на этом векторе состояния внедрения иЧтобы построить следующие данные метки времени F. Чтобы построить следующие данные метки времени из вектора состояния внедрения, вектор состояния внедрения должен содержать наиболее репрезентативные и значимые элементы из входного временного ряда. После предварительной обработки структуры кодер-декодер мы используем эту структуру как черный ящик, который может интеллектуально извлекать признаки. В частности, состояния узлов LSTM извлекаются как векторы встраивания фиксированной размерности. Затем используйте этот вектор встраивания в качестве функции, чтобы обучить модель прогнозировать данные для следующих нескольких периодов времени. В сценариях, где доступны внешние функции, эти функции могут быть объединены с вектором встраивания и вместе переданы в окончательную сеть прогнозирования. Необходимо указать два гиперпараметра: скорость выпадения_Pи количество итерацийB. Для скорости падения оценки неопределенности относятся к рядуPотносительно стабилен, поэтому мы хотим выбрать тот, который лучше всего работает на проверочном наборе.P_. Для количества итераций стандартное отклонение оценочной неопределенности прогноза такое же, какпропорциональный. После измерения стандартного отклонения для различного количества итераций было обнаружено, что нескольких сотен итераций достаточно для получения стабильной оценки. Структура кодера-декодера модели состоит из двух слоев блоков LSTM, содержащих 128 и 32 скрытых состояния соответственно, а сеть прогнозирования состоит из трех полностью связанных слоев, содержащих 128, 64 и 16 скрытых блоков соответственно. Наши входные выборки создаются с использованием скользящего окна, где каждая выборка использует предыдущие 15 часов в качестве входных данных для прогнозирования данных на один час вперед. А нормализация MinMaxScaler выполняется для исходных данных, и данные масштабируются от 0 до 1, чтобы уменьшить экспоненциальный эффект. Код ссылки:encoder_inputs = Input(shape=(train_X.shape[1], train_X.shape[2]))
encoder_lstm1 = LSTM((128), return_state=True,return_sequences=True)
encoder_outputs1, state_h1, state_c1 = encoder_lstm1(encoder_inputs)
drop_out1 = Dropout(0.05)
encoder_lstm2 = LSTM((64), return_state=True,return_sequences=False)
encoder_outputs2, state_h2, state_c2 = encoder_lstm2(encoder_outputs1)
drop_out2 = Dropout(0.05)
external_features = Input(shape=(6,))
print(external_features)
dense1 = Dense(128,activation='tanh')
temp = Concatenate(axis=1)([state_c2,external_features])
dense1_output = dense1(temp)
drop_out3 = Dropout(0.05)
dense2 = Dense(64,activation='tanh')
dense2_output = dense2(dense1_output)
drop_out4 = Dropout(0.05)
dense3 = Dense(16,activation='tanh')
dense3_output = dense3(dense2_output)
drop_out5 = Dropout(0.05)
dense4 = Dense(1,activation='tanh')
dense4_output = dense4(dense3_output)
model = Model(inputs=[encoder_inputs,external_features], outputs=dense4_output)
model.compile(loss='mse', optimizer='adam')
## fit network
input_list = []
input_list.append(train_X)
input_list.append(temp_train)
history = model.fit(input_list, train_y, epochs=1000, batch_size=10, validation_data=([test_X,temp_test], test_y), verbose=2,shuffle=False)
3.3 Экспериментальные результаты
Мы используем модель LSTM и эту модель отдельно для прогнозирования наших данных, мы используем 150 лучших24 часа данных послужили нашим обучающим набором, осталось 30 часов.В качестве нашего проверочного набора используются данные за 24 часа.Экспериментальные результаты показаны на рисунке 5 (модель LSTM) и рисунке 6 (тезисная модель):
Рисунок 5: Прогнозы модели LSTMРисунок 6: Вышеупомянутая ситуация прогнозирования модели Мы можем ясно видеть, что эффект прогнозирования модели LSTM явно не так хорош, как у бумажной модели, показанной в этой статье, особенно в пиковое время прогнозирования Модель, которую мы показали, почти полностью соответствует .4. Резюме
В этой статье представлена сквозная архитектура нейронной сети для оценки неопределенности в Uber. Используя выпадение MC и оценку собственного шума, представлен простой метод оценки неопределенности для прогнозов нейронной сети, который охватывает большинство факторов неопределенности. Ключевой особенностью этого фреймворка является то, что он работает с любой нейронной сетью без изменения базовой архитектуры. Использование этого предлагаемого метода оценки неопределенности для оценки неопределенности особых событий (таких как праздники, спортивные мероприятия, погода и т. д.) повышает точность обнаружения аномалий. Для некоторых событий с высокой степенью неопределенности мы можем скорректировать доверительный интервал внутренней модели обнаружения аномалий и соответствующим образом повысить точность, что иногда может значительно улучшить фактическую работу.Адрес исходного кода проекта:https://momodel.cn/explore/5d3fb3121afd943289223b91?&tab=1&type=app
5. Ссылки
бумага:Deep and Confident Prediction for Time Series at Uberбумага:Long short-term memoryБлог:Engineering Uncertainty Estimation in Neural Networks for Time Series Prediction at Uberбумага:Learning phrase representations using rnn encoder-decoder for statistical machine translationБлог:Как глубокое обучение оценивает эпистемическую неопределенность
о нас
Mo(URL:momodel.cn) поддерживает PythonПлатформа онлайн-моделирования искусственного интеллекта, который помогает быстро разрабатывать, обучать и развертывать модели.
Клуб искусственного интеллекта МоЭто клуб, созданный командой разработчиков и дизайнеров веб-сайта и посвященный снижению порога для разработки и использования искусственного интеллекта. Команда имеет опыт обработки и анализа больших данных, визуализации и моделирования данных, реализовывала многодисциплинарные интеллектуальные проекты и обладает полным спектром возможностей проектирования и разработки от начала до конца. Основными направлениями исследований являются анализ управления большими данными и технологии искусственного интеллекта, и их использование для продвижения научных исследований, основанных на данных.
В настоящее время клуб каждую субботу проводит офлайн-мероприятия технического салона на тему машинного обучения в Ханчжоу, а также время от времени проводит обмен документами и академические обмены. Я надеюсь собрать друзей из всех слоев общества, которые интересуются искусственным интеллектом, продолжать общаться и расти вместе, а также способствовать демократизации и популяризации искусственного интеллекта.