В последнее время было предпринято множество попыток решения задач НЛП (обработка естественного языка), и в большинстве из них используется предварительно обученная модель. Канал задач НЛП — это в основном данные, созданные людьми, полные плодотворной и превосходной информации, которую почти можно считать единицей данных. В прогнозировании временных рядов мы можем чувствовать нехватку таких предварительно обученных моделей. Почему мы не можем использовать это преимущество во временных рядах, как в НЛП?! Эта статья является подробной иллюстрацией предложения такой модели. Эта модель разработана с учетом двух точек зрения и состоит из 4 разделов от входа до выхода. Также для лучшего понимания добавлен код Python.

TSFormer

  • Это модель неконтролируемого предварительного обучения для TTime Sсерий, основанная на T БлокиransFormer (TSFormer) с хорошо реализованным Mзадайте стратегию AautoEncoder (MAE).
  • Эта модель способна фиксировать очень длинные зависимости в наших данных.

НЛП и временные ряды:

В некоторой степени информация НЛП и данные временных рядов одинаковы. Оба они являются последовательными данными и локально чувствительными , что означает, что они связаны со следующими/предыдущими точками данных. Кстати, есть некоторые различия, о которых я расскажу ниже:

Есть два факта (на самом деле это различия), которые мы должны учитывать, предлагая нашу предварительно обученную модель, как мы сделали для задач НЛП:

  1. плотность намного ниже в данных временных рядов, чем в естественном языке.
  2. Нам нужна более длинная последовательность данных временных рядов, чем данные NLP.

TSFormer From ZERO

Его процесс, как и все другие модели, похож на путешествие (ничего нового, но хорошая перспектива). Как я уже говорил вам о стратегии MAE, основная архитектура проходит через кодировщик, а затем обрабатывается в декодере, наконецпросто для восстановления цели.

Вы можете увидеть его архитектуру на рисунке 1:

Вот так дружище!! Нет ничего, кроме этой Фигуры. 😆 Однако; если вы хотите узнать, как это работает, я проиллюстрирую это в следующем разделе:

Процесс: 1. Маскирование2. Кодирование3. Расшифровка4. Реконструкция цели

1. Маскировка

Это первый шаг к обеспечению подачи на следующий шаг (кодер). Мы видим, что входная последовательность(Sᶦ) была распределена на Pпатчидлиной L. Следовательно, длина скользящего окна, которое используется для прогнозирования следующего временного шага, составляет Px L.

Коэффициент прибыльности(r) составляет 75% (относительно высокий, не так ли?) ; это всего лишь создание задачи с самостоятельным контролем, что делает кодировщикболее продуктивным.

Основные причины для этого (я имею в виду исправление входной последовательности):

  1. Сегменты (т. е. патчи) лучше, чем отдельные точки.
  2. Это делает упрощением использования моделей нисходящего потока(STGNN принимает единичный сегмент в качестве входных данных)
  3. Таким образом, мы можем уменьшить размер входных данных для кодировщика.

2. Кодирование

Как видите, это порядок внедрения входных данных, позиционного кодирования и блоков преобразования. Кодировщик может работать только с немаскированными патчами. Подожди!! Что это было??

Внедрение ввода

В) Предыдущий шаг касался маскировки, а теперь я сказал, что нам нужны демаскированные??!!

A) Внедрение ввода.

В) Как?

A) На самом деле это линейная проекция, которая преобразует немаскированное пространство в скрытое пространство. Его формулу можно увидеть ниже:

Wи bявляются обучаемыми параметрами, а U — это входные векторы модели в dскрытом измерении.

Позиционное кодирование

Простые слои позиционного кодирования используются для добавления новой последовательной информации. Добавлен термин «Обучаемый», который помог показать более высокую производительность, чем синусоидальный. Кроме того, обучаемое позиционное встраивание показывает хорошие результаты для временных рядов.

Блоки-трансформеры

Исследователи использовали 4 слоя преобразователей, что чуть меньше обычного количества в задачах компьютерного зрения и НЛП. Иллюстрация типа трансформатора, используемого здесь, представляет собой наиболее часто используемую архитектуру трансформатора. Вы можете подробно прочитать об этом в статье Внимание — это все, что вам нужно», опубликованной в 2017 году. Кстати, я собираюсь дать вам ее краткое изложение (эта короткая иллюстрация взята из одной из моих предыдущих статей Информатор: за гранью эффективности). Преобразователь для прогнозирования длинных последовательностей временных рядов'»):

Трансформеры — это новые модели глубокого обучения, которые представлены с возрастающей скоростью. Они внедрили механизм самовнимания и продемонстрировали значительное повышение производительности модели при выполнении сложных задач в НЛП и компьютерном зрении. Архитектуру Transformer можно разделить на две части, известные как кодировщики декодер, как показано на рис. 4. , ниже:

Главное достоинство трансформаторов — их независимость от местности. В отличие от других популярных моделей, таких как CNN, трансформеры не ограничены локализацией. Кроме того, мы не предлагаем архитектуру CNN в трансформаторах; вместо этого мы используем структуры на основе внимания в преобразователях, что позволяет нам достигать лучших результатов.
Архитектуру внимания можно обобщить на рис. 5:

Функция Scaled Dot-Product Attention: Eq. 2

Q (Запрос), K (Ключ) и V (Вектор) — это входы нашего внимания.

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

Я думаю, что этого количества резюме достаточно для трансформеров

3. Расшифровка

Декодер включает в себя ряд блоков трансформатора. Работает со всеми наборами патчей (маскированные токены и т.д.). В отличие от MAE (Masked AutoEncoders), позиционные вложения отсутствуют, так как патчи уже содержат позиционную информацию. количество слоев равно одному. После этого использовались простые MLP(Multi-Layer Perceptions) (хочется быть уверенным, что нет необходимости иллюстрировать MLP😉), что делает выходная длина равнакаждому патчу.

4. Реконструкция цели

Параллельно с этим вычисление по замаскированным патчам выполняется для каждой точки данных (i) . Кроме того, mae(Mean-Absolute-Error) выбирается в качестве функции потерьосновного последовательность и последовательность реконструкции.

Вот и все!! Ты сделал это! Не слишком сложно, не так ли??!😉😉

Теперь давайте посмотрим на архитектуру:

Конец

Источником кода и архитектуры является это и это соответственно.

Вы можете связаться со мной в Twitter здесь или LinkedIn здесь. Наконец, если эта статья показалась вам интересной и полезной, вы можете подписаться на средний уровень, чтобы получать от меня больше статей.