Одноэтапный подход к обучению

Экстремальная обучающая машина

Наиболее распространенной архитектурой искусственной нейронной сети является нейронная сеть с прямой связью. Информация этой сети распространяется (потоки) в одном направлении от входного слоя к выходному слою.

Extreme Learning Machine (ELM) — это нейронные сети с прямой связью, которые можно использовать, например, для подходов регрессии и классификации. Веса между входным слоем и скрытым слоем назначаются случайным образом. В то время как веса между скрытым слоем и выходным слоем вычисляются или изучаются за один шаг. Второй набор весов вычисляется обратной матрицей Мура-Пенроуза выходной матрицы скрытого слоя.

Нейронная сеть прямой связи

На рисунке ниже показана нейронная сеть с прямой связью, которая демонстрирует элементы ELM.

Входной слой состоит из входной матрицы X размера M x N плюс смещение размера M x 1, где M — количество примеров, а N (равное 3 на изображении) — количество признаков. Далее следует показать веса W1, назначенные случайным образом размером L x N + 1, где L — количество нейронов в скрытом слое.

Выход скрытого слоя вычисляется по следующему уравнению:

Где Xa — это конкатенация смещения и входной матрицы X, а tanh — функция активации гиперболического тангенса, которая ограничивает выход каждого нейрона до -1 и 1.

Веса W2 получаются путем умножения на обратный коэффициент Мура-Пенроуза для Ha и целевого значения y, как показано в уравнении ниже:

Где Ha — смещение плюс выходная матрица скрытого слоя H. Таким образом, мы можем делать прогнозы по следующему уравнению:

Все шаги для получения параметров W1 и W2 выполняются обучающими данными, и с этими параметрами мы можем делать новые прогнозы данных, которых нет в процессе обучения, в данном случае тестовых данных. Приведенная ниже функция показывает одноэтапное обучение ELM для получения прогнозов и параметров W1 и W2:

Прогнозирование временных рядов

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

Таким образом, мы используем понятие запаздывания, которое представляет собой прошлые значения во временном ряду. Для нашей задачи отставание используется для установки количества признаков во входной матрице, если мы используем отставание 3, входная матрица будет иметь размер M x 3, и используются три прошлых значения временного ряда. в качестве ввода. Целевой переменной присваивается следующее значение в ряду, которое может быть сразу после первого отставания (на один шаг вперед) или на несколько шагов вперед.

В качестве примера рассмотрим пример ниже:

# Time series
series = [3.93, 4.58, 4.8, 5.07, 5.14, 4.94]
# Three lags and one-step forward
X = [[3.93, 4.58, 4.8],
[4.58, 4.8, 5.07],
[4.8, 5.07, 5.14]]
y = [[5.07],
[5.14],
[4.94]]
# Two lags and two-steps forward
X = [[3.93, 4.58],
[4.58, 4.8],
[4.8, 5.07]]
y = [[5.07],
[5.14],
[4.94]]

В этом примере временной ряд — это серия, X и y — входная матрица и цель соответственно. В первом примере представлены три задержки и один шаг вперед, поэтому для предсказания значения в X(t) необходимы значения в X(t-1), X(t-2) и X(t-3). В последнем примере с двумя задержками и двумя шагами вперед значения X(t-2) и X(t-3) используются для прогнозирования значений X(t).

Функция ниже настраивает временной ряд на проблему машинного обучения:

Входными данными функции являются временной ряд, количество задержек (lag) и количество шагов вперед (step_forward). В то время как выходами являются входная матрица размера (M-(lag+step_forward-1)) x lag и целевая переменная размера (M-(lag+step_forward-1)) x 1.

Результаты и оценка

Для оценки прогнозов ELM используется среднеквадратическая ошибка (MSE), как показано в уравнении ниже:

Где M — количество примеров, C — количество выходных данных, y — истинные целевые переменные, а y_pred — прогнозируемая целевая переменная.

Функция ниже вычисляет MSE:

Перед обучением модели ELM и получением заданных весов для прогнозирования мы должны нормализовать временной ряд. Здесь используется минимальная-максимальная нормализация, которая нормализует входные данные в определенный диапазон (a, b), в данном случае (0, 1), как показано в функции ниже.

Для получения параметров нормализации используются только обучающие данные, и с этими параметрами мы нормализуем как обучающие, так и тестовые данные. Таким образом, после обучения модели и создания прогноза для обоих данных мы выполняем обратную нормализацию, чтобы правильно оценить производительность модели.

Мы использовали временные ряды валового внутреннего продукта Бразилии за период с 1980 по 1997 год, а частота данных — ежемесячная (всего 256 месяцев), доступная по ссылке. Используется 80% данных за первый месяц для обучения модели и 20% данных за последний месяц для проверки параметров обучения. На рисунке ниже показан временной ряд, разделенный на обучающие (синяя линия) и тестовые (зеленая линия) данные, где черная пунктирная линия представляет разделение.

Во-первых, для создания X и y используется отставание 2 и один шаг вперед для прогнозирования. Обученная модель с 3 скрытыми нейронами показывает хорошие результаты в прогнозировании временных рядов, которые достигают MSE 30,99 и 38,74 в обучающих и тестовых данных соответственно. На рисунке ниже показаны прогнозы в тестовых данных, обозначенные красной пунктирной линией, которые аналогичны реальным тестовым данным (зеленая линия).

При изменении отставания на 3 и сохранении одного шага вперед происходит ухудшение производительности модели, достигая MSE 180,83 в тестовых данных. Поэтому не рекомендуется увеличивать количество прошлых значений для прогнозирования на один шаг вперед для анализируемого временного ряда.

Заключение

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

Полный код доступен на Github и Colab. Подпишитесь на блог, если пост полезен для вас.