Обнаружение аномалий во временных рядах нейросетями

Статья о применении нейросетей для обнаружения аномалий во временных рядах данных. Рассмотрены подходы автокодировщики RNN и GAN RNN и GAN

Обнаружение аномалий во временных рядах нейросетями

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

Постановка задачи

Пусть у нас есть временной ряд данных {x1, x2, …, xn}. Наша задача — определить, являются ли некоторые значения xi аномальными, т.е. значительно отличающимися от общей закономерности данных.

Подходы к решению

Существует несколько подходов к решению этой задачи с помощью нейросетей:

  1. Автокодировщики. Обучаем сеть воспроизводить на входе то же самое значение. Нормальные данные будут кодироваться с малой ошибкой, аномальные — с большой.
  2. Рекуррентные нейросети (RNN). Моделируем зависимость последовательных значений друг от друга, что позволяет определить аномалии.
  3. Сети на основе GAN. Генеративно-состязательная сеть обучается моделировать нормальное поведение временного ряда.

Автокодировщики

Автокодировщик — это нейросеть, которая обучается воспроизводить на выходе то же значение, которое подано на вход. Такая сеть состоит из двух частей:

  • Кодировщик — сжимает данные в низкоразмерное представление (код)
  • Декодировщик — восстанавливает исходные данные из кода

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

Основная формула для расчета аномальности:

anomaly_score = mean(|x - x'|)

где x — исходный временной ряд, x’ — реконструированный автокодировщиком.

Рекуррентные нейросети

Рекуррентные нейронные сети, такие как LSTM и GRU, хорошо подходят для моделирования последовательных данных. Они учитывают не только текущее значение, но и контекст — предыдущие значения.

Мы можем использовать RNN в двух режимах:

  1. Обучение на нормальных данных и определение аномалий по ошибке предсказания
  2. Обучение на аномальных данных для их распознавания

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

Генеративно-состязательные сети

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

Мы можем использовать GAN следующим образом:

  1. Обучаем GAN на нормальных данных
  2. Подаем на вход GAN новые данные
  3. Если дискриминатор их отвергает как поддельные — значит, данные аномальные

Вопросы и ответы

Вопрос: Какие типы аномалий можно обнаружить с помощью нейросетей?

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

Вопрос: Какие данные нужны для обучения нейросети?

Ответ: Для обучения обычно требуется выборка, содержащая преимущественно нормальные данные. Также полезно добавить некоторое количество подтвержденных аномалий.

Вопрос: Как оценить качество обнаружения аномалий нейросетью?

Ответ: Используются стандартные метрики: точность, полнота, F1-мера. Для этого нужны тестовые данные с подтвержденными аномалиями.

Оцените статью
Учеба легко