1. Введение
Точное прогнозирование объемов трафика в периоды высокой изменчивости (такие как праздники, спортивные мероприятия и т. д.) имеет решающее значение для обнаружения аномалий, распределения ресурсов, планирования бюджета и других связанных задач, которые способствуют крупномасштабной оптимизации взаимодействия с пользователем. Чрезвычайно сложно прогнозировать эти переменные, потому что такие прогнозы экстремальных явлений зависят от погоды, роста городского населения и других внешних факторов, которые вносят вклад в неопределенность прогноза. В последние годы сетевая технология с долговременной кратковременной памятью стала популярной структурой моделирования временных рядов благодаря сквозному моделированию, легкому включению экзогенных переменных и автоматическому извлечению признаков. Используя большие объемы данных в нескольких измерениях, методы LSTM могут моделировать сложные нелинейные взаимодействия функций, которые имеют решающее значение для прогнозирования экстремальных событий. В статье IEEE Линсюэ Чжу и Николая ЛаптеваDeep and Confident Prediction for Time Series at UberВ , мы представляем новую сквозную архитектуру байесовской нейронной сети (BNN), которая может более точно прогнозировать результаты временных рядов и прогнозы неопределенности в больших масштабах.
2. Обзор
2.1 Прогноз неопределенности
Сначала воспользуемся функцией
- неопределенность модели
- Неверная идентификация модели
- собственный шум
Эти три аспекта подробно описаны далее.
2.1.1 Неопределенность модели
Ключом к оценке неопределенности модели является апостериорное распределение
2.1.2 Неверная идентификация модели
Далее нам нужно решить проблему потенциальной ошибочной идентификации модели с помощью модели BNN. Мы решаем эту проблему, беря неопределенность, полученную при прогнозировании неизвестных выборок с несоизмеримыми закономерностями в обучающем наборе данных, и обучая кодировщик, который автоматически извлекает репрезентативные признаки из временных рядов, чтобы определить этот источник достоверности неопределенности. Во время тестирования эффект кодирования каждого образца поможет рассчитать расстояние между набором образцов и обучающим набором. Другой способ вычислить расстояние между ними — использовать структуру кодировщика-декодера, чтобы подогнать скрытое пространство встраивания для всех временных рядов обучающей выборки. Таким образом, мы можем измерить расстояние между тестовыми и обучающими выборками в этом пространстве встраивания. Следующий вопрос, который нам необходимо решить, заключается в том, как совместить эту неправильную идентификацию с модельной неопределенностью. Здесь мы используем метод, который соединяет сеть кодера-декодера с сетью прогнозирования и использует ее как большую сеть во время вывода.Алгоритм показан на рисунке 1:
2.1.3 Собственный шум
Наконец, оценим собственный шум
3. Эксперимент
Экспериментальные результаты в этой статье получены на основе сети lstm + полное соединение. Полная структура нейронной сети в основном состоит из двух частей: (i) структура кодера-декодера, которая используется для получения самоотношения во временном ряду и изучается во время предварительного обучения (ii) сеть прогнозирования, чья входные данные поступают от уровня кодировщика — Embedding, изученного структурой декодера, и потенциальных внешних функций (таких как погодные явления и т. д.). Эта надежная архитектура показана на рис. 3 ниже:
3.1 Экспериментальные данные
Здесь мы находим набор данных от kaggleNYC Uber Pickups with Weather and Holidays, этот набор данных имеет много необходимых нам функций, но нам все еще нужно с ним разобраться, объединить поля площади, изменить поля праздников на числа 0-1, и объединенные данные показаны на рисунке 4:
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 Экспериментальная модель
Учитывая временной ряд
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 (тезисная модель):
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Платформа онлайн-моделирования искусственного интеллекта, который помогает быстро разрабатывать, обучать и развертывать модели.
Клуб искусственного интеллекта МоЭто клуб, созданный командой разработчиков и дизайнеров веб-сайта и посвященный снижению порога для разработки и использования искусственного интеллекта. Команда имеет опыт обработки и анализа больших данных, визуализации и моделирования данных, реализовывала многодисциплинарные интеллектуальные проекты и обладает полным спектром возможностей проектирования и разработки от начала до конца. Основными направлениями исследований являются анализ управления большими данными и технологии искусственного интеллекта, и их использование для продвижения научных исследований, основанных на данных.
В настоящее время клуб каждую субботу проводит офлайн-мероприятия технического салона на тему машинного обучения в Ханчжоу, а также время от времени проводит обмен документами и академические обмены. Я надеюсь собрать друзей из всех слоев общества, которые интересуются искусственным интеллектом, продолжать общаться и расти вместе, а также способствовать демократизации и популяризации искусственного интеллекта.