Учредитель журнала

Многофакторное нейросетевое прогнозирование: разработка уточнённого алгоритма

УДК 004.8:519.8

DOI 10.52815/0204-3653_2023_5194_
EDN: JTWPKE

Соловьев Дмитрий
Старший научный сотрудник, к. ф.‑ м. н.,
Институт океанологии им. П. П. Ширшова РАН
E-mail: solovev@ocean.ru

Сокотущенко Наталья
Начальник отдела, Государственный
университет «Дубна»
E-mail: sokotushenko.nat@mail.ru

Введение

История нейронных сетей и их использования в прогнозировании насчитывает десятилетия инноваций и исследований, начиная с первых теоретических концепций и до современных прорывов в области искусственного интеллекта.
История нейронных сетей начинается в 1940‑х гг. с работ Уоррена Маккаллока и Уолтера Питтса, которые создали модель искусственного нейрона. Их работа, опубликованная в статье «A Logical Calculus of the Ideas Immanent in Nervous Activity» (1943) [1], положила начало изучению нейросетей.
В 1950‑х и 1960‑х гг. появились первые модели и алгоритмы обучения. Фрэнк Розенблатт создал Перцептрон, который был одной из первых и наиболее влиятельных нейронных сетей. Его работа, подробно описанная в книге «Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms» (1962) [2], была фундаментальной для дальнейшего развития области.
1970‑е гг. ознаменовались замедлением развития нейронных сетей, во многом из-за критики их ограничений, особенно в работах Марвина Мински и Сеймура Паперта, изложенных в книге «Perceptrons» (1969). Однако в 1980‑е гг. интерес к нейросетям возродился благодаря новым алгоритмам обучения, таким как алгоритм обратного распространения ошибки, который был представлен в работе Румельхарта, Хинтона и Уильямса «Learning representations by back-propagating errors» (1986) [3].
С 2000‑х гг. и до наших дней нейронные сети переживают период бурного роста, особенно с развитием глубокого обучения. Одним из ключевых моментов стало использование глубоких нейронных сетей для победы в конкурсе ImageNet в 2012 г. командой под руководством Джеффри Хинтона. Это событие, описанное в их работе «ImageNet Classification with Deep Convolutional Neural Networks» (2012) [4], значительно усилило интерес к глубокому обучению в научном сообществе и промышленности.
Нейронные сети нашли широкое применение в прогнозировании в самых разных областях: от финансов и экономики до метеорологии и здравоохранения. Они способны анализировать большие объемы данных и выявлять сложные закономерности, что делает их идеальными для создания точных прогностических моделей. Примеры включают прогнозирование рынков ценных бумаг, погодных условий и распространения заболеваний.
История нейронных сетей – это история постоянных инноваций и преодоления трудностей. От первых теоретических моделей до современных глубоких нейросетей, эта область продолжает развиваться, открывая новые горизонты в научных исследованиях и практическом применении.
Многофакторное нейронное прогнозирование – это подход, при котором для прогнозирования используются модели искусственных нейронных сетей, способные интегрировать и анализировать большое количество разнородных данных. В отличие от традиционных статистических методов, нейронные сети могут обрабатывать данные, содержащие сложные нелинейные связи и взаимодействия между множеством переменных [5].
Традиционные нейронные сети часто ориентированы на анализ данных с ограниченным числом входных параметров и предназначены для специфических задач, таких как классификация изображений или распознавание речи. Многофакторные нейронные сети, напротив, разработаны для работы с большим количеством переменных и их взаимосвязей. Это позволяет им анализировать более сложные системы, такие как финансовые рынки, погодные условия или медицинские данные, где результат зависит от множества факторов.
Многофакторное нейросетевое прогнозирование представляет собой передовой подход в анализе сложных, динамических систем, где традиционные методы часто оказываются недостаточными для учета всех взаимосвязей и взаимозависимостей. Этот подход объединяет глубокое обучение и многослойные архитектуры нейронных сетей для анализа и прогнозирования систем, характеризующихся большим количеством взаимодействующих параметров. В нашей работе мы исследуем новый алгоритм многофакторного нейросетевого прогнозирования, основанный на интеграции множественных входных параметров, и рассмотрим его применение в различных областях.
В географии этот подход может быть использован для моделирования и прогнозирования климатических изменений. Интеграция данных о температуре, осадках, уровнях загрязнения и изменениях ландшафта позволит более точно предсказывать погодные условия и климатические аномалии, что имеет ключевое значение для адаптации и планирования в сельском хозяйстве и городском планировании.
В области экономики такая система может применяться для анализа и прогнозирования рыночных тенденций. Обработка большого объема данных, включая индексы цен, финансовые отчеты компаний, экономические индикаторы и новостные потоки, позволяет получить более глубокое понимание рыночной динамики и способствует более точному прогнозированию экономических циклов.
В сфере энергетики этот подход может быть использован для оптимизации работы энергосистем. Интегрируя данные о потреблении энергии, производственных мощностях, погодных условиях и ценах на энергоносители, можно эффективно управлять распределением и производством энергии, снижая затраты и повышая эффективность работы системы.
В информационных технологиях многофакторное нейросетевое прогнозирование может быть использовано для обеспечения безопасности данных. Анализируя большие массивы данных о сетевом трафике, паттернах доступа и поведении пользователей, можно предсказывать и предотвращать кибератаки, обеспечивая тем самым более высокий уровень защиты информационных систем.
Эти примеры демонстрируют универсальность и мощь многофакторного нейросетевого прогнозирования. Он предлагает новые перспективы и решения для множества сложных задач, связанных с анализом и прогнозированием в различных сферах жизни общества. Основываясь на комплексном анализе больших данных, данный подход дает новые возможности для понимания и управления сложными системами, что является ключевым для прогресса в современном мире.
Таким образом, многофакторное нейросетевое прогнозирование открывает новые горизонты в различных областях, обеспечивая более глубокий и всесторонний анализ сложных, взаимосвязанных систем. В данной статье мы исследуем потенциал данного подхода и представляем результаты, которые подчеркивают его эффективность и универсальность.

Описание уточненного алгоритма работы нейросети с подмешиваемыми функциями

В нашей работе мы представляем уточнённый алгоритм многослойной нейронной сети с обратным распространением ошибки, основанный на интеграции «подмешиваемых» функций для анализа взаимосвязанных факторов в динамических многосвязных системах. Этот подход позволяет более точно моделировать и прогнозировать сложные нестационарные ряды, учитывая многочисленные коррелированные процессы, которые мы ранее исследовали с помощью нейронных сетей в своих научных публикациях, например такие как, различные социально-­экономические явления, описываемые временными рядами [6].
Предметом дальнейшей разработки является создание уточнённого алгоритма с «подмешиванием» для нейросетевого прогнозирования нестационарных рядов, описывающих поведение многосвязных систем.
Если необходимо сформировать прогноз с учетом «подмешивания» других входных параметров, связанных между собой явлений (например, цены на нефть, ВВП, солнечная активность, и т. п.), то для каждого параметра, реализованы следующие процедуры [7]:

1. Пользователь разделяет нейроны на три основных типа: входной, скрытый и выходной:

Входные нейроны представляют собой ячейки памяти, в которые записываются входные данные. Программа перебирает исследуемые данные (по одному значению на каждый нейрон) начиная с самого первого. Количество входных нейронов может варьироваться по указанию пользователя-­эксперта, но не может быть больше количества исследуемых данных.

2. Между слоями от каждого нейрона в одном слое к каждому нейрону соседнего слоя идёт связь, называемая синапс. У синапсов есть один параметр – вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. У того нейрона, чей вес будет больше, информация и будет доминирующей в следующем нейроне. В самом начале работы программа случайными образом задаёт вес каждому из синапсов от входных нейронов к нейронам скрытого слоя и от нейронов скрытого слоя к выходному нейрону. Значение каждого веса находится в интервале от 0 до 1:

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

Произведя эту операцию, есть вероятность получить очень отличающееся от исходных значение. Чтобы минимизировать эти различия, в программе, используем функцию активации. Функция активации – это способ нормализации входных данных. В данной программе используется функция активации под названием биполярная сигмоида.

4. После производится те же вычисления между нейронами скрытого слоя и нейроном выходного слоя. Производится вычисление суммы произведений значений нейронов с весами и нормализируется значение с помощью функции активации.

5. Для того, чтобы программа могла производить анализ предложенных данных, ей необходимо обучение. Эта процедура нужна для того, чтобы подстроить веса под заданные входные значения. Обучение происходит методом обратного распространения ошибки [8]:

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

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

8. Новизна алгоритма в разрабатываемой программе заключается в вычислении совместных весов при формировании прогноза с «подмешиванием», и, следовательно, более обоснованному учету взаимовлияния друг на друга или корреляции множества входных параметров.
Для этого в программе разработан дополнительный пункт алгоритма вычисления, а именно, после повторения шагов 1–7 для каждого входного параметра из множества входных параметров, находим их среднее значение и вводим непосредственно в нейрон сети вычисленный таким образом совокупный вес. Совместный вес для подмешивания:

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

  1. При этом задача формирования прогноза «с подмешиванием» осложняется тем, прогнозируемые параметры могут иметь различные размерности. Поэтому предлагаемое уточнение при формировании нейронного прогноза с «подмешиванием» заключается в том, что предварительно необходимо нормировать (обезразмерить) все входные разнородные данные. После выполнения этой процедуры, становится возможным посторенние нейропрогноза взаимовлияющих друг на друга разнородных параметров по уточненному алгоритму.
  2. Из многочисленного анализа прогнозов с «подмешиванием» можно сделать вывод о том, что существенным фактором на оправдываемость прогноза является точка начала прогноза (точка входа).
  3. Уточнение в алгоритме нейросети с «подмешиванием» заключается в том, что в новом алгоритме включаются в рассмотрение различные виды активационной функции, а также возможность выбора (назначение) даты начала прогноза (точка входа). Тем самым расширяются возможные варианты настроек и получение обученной кривой нейросети – отклика нейросети, т. е. кривой получающаяся по итогу реализации алгоритма обучения.

Реализация построенного алгоритма

Для того, чтобы построить прогноз некоторой функции F1, мы должны подать на вход нейросети f точек, и считать f+1‑ю точку с выхода нейросети.
Тем не менее, перед подобным вычислением следует определиться с топологией сети, её типом, и обучить её.
В нашем случае используется персептрон с обратным распространением ошибки. Каждый из нейронов одного слоя (кол-во нейронов = i) соединён с каждым из нейронов соседнего слоя (кол-во нейронов = j), образуя i*j связей (синапсов). Каждый синапс обладает некотором весом – значимостью выхода предыдущего нейрона к последующему. Так, нейрон с большим весом будет наиболее сильно влиять на выходное значение нейронов в следующем слое, связанных с ним.
Выход (OUT) каждого нейрона определяется как сумма входных весов, помноженных на соответствующие входные сигналы (Sum(IN)) и пропущенные через функцию активации. Функция активации, как правило, выбирается экспоненциальной: OUT = 1/(1 + exp(–Sum(IN))). Однако, многочисленные численные эксперименты позволяют нам сделать вывод о том, что предварительное выявление структурных (внутренних) закономерностей заданного временного ряда, в частности, волнами Эллиотта, позволяет выявить сначала скрытые закономерности в данных, и затем уже, на основе имеющихся выявленных закономерностей формировать вид активационной функции, которая имеет различный вид на различных временных интервалах прогнозирования.
Для обучения нейросети используется следующий алгоритм:

  1. Инициализация. Все веса нейросетевых связей случайно заполняются числами от 0 до 0,01.
  2. Обучение. На вход подаются различные выборки. Выборка – это несколько подряд идущих значений функции, предшествующие результирующему значению.
    Количество таких входных точек (f, «размер кадра») определяет сам пользователь нейросети. При необходимости сгладить слишком подробную и зашумлённую выборку он может предварительно сделать это, например средствами Excel.

Neuronet(F(X[n-f]),…, F(X[n‑2]), F(X[n‑1]), F(X[n])) = F(X[n+1])

Результирующее значение F1 проверяется по известной уже точке. Очевидно, что при обучении последняя точка функции никогда не используется в качестве входной, а является только проверочной.
Точки подаются, начиная с первой и смещаясь на 1 после каждого прогона сквозь нейросеть. Далее оценивается правильность результата и корректируются весы связей между нейронами: в сторону укрепления (увеличения) в случае правильного срабатывания связи и в сторону ослабления (уменьшения) в случае неверного срабатывания связи.
Данная итерация повторяется определенное пользователем кол-во раз («кол-во эпох обучения»).

  1. Прогнозирование. На вход нейросети точно также подаются входные значения, а на выходе получаются требуемые значения. Так как эти значения изначально неизвестны, то обучающей коррекции весов не происходит.
    Далее каждая вычисленная точка принимается за известную и может быть использована в качестве входного значения для вычисления значения идущего вслед за ним.
  2. «Подмешивание» входных функций. Иногда встречается ситуация, когда предположительно некоторая функция F1 имеет корреляцию с некой функцией F2 (в более общем случае – корреляцию с функциями F2…FN). В этом случае необходимо на этапе обучения объяснить это нейросети.
    Метод, избранный для осуществления этого заключается в следующем: кол-во входов и выходов нейросети становится больше в N раз (N – общее количество функций) при подмешивании N‑1 функций.
    На вход теперь подаются не только значения искомой функции, но и значения других функций. В остальном нейросеть продолжает действовать по тем же принципам: порядок обучения нейросети, активационная функция и т. д. не меняются.
    Корректировка весов при обучении в данном случае производится по всем выходам. Очевидно, что количество значений тестовой выборки у подмешиваемых функций должно быть точно таким же, как и у функции искомой.
    После обучения, на этапе прогнозирования входов остаётся то же самое количество (топология сети неизменна (рис. 1), но значения подмешиваемых функций не учитываются в результате, а используются лишь для подачи на вход нейросети при вычислении последующих значений.
    Давайте рассмотрим конкретный пример использования нейронных сетей с подмешиванием функций для прогнозирования будущих значений функции F1(X) на основе исторических данных. В этом примере у нас есть N функций (F1 до FN), и мы хотим прогнозировать значение F1(X) на n+1 точке временного ряда, где n – количество доступных точек для анализа.
    Шаг 1: Подготовка данных. Первым шагом является подготовка данных. Мы имеем n точек временного ряда для каждой из N функций. Размер окна (количество точек, используемых для прогноза) определяется пользователем и обозначается как f.
    Шаг 2: Обучение нейросети. Процесс обучения начинается с инициализации весов всех связей между нейронами в сети. Веса инициализируются случайными значениями в диапазоне от 0 до 0,01. Далее мы подаем на вход нейросети данные для обучения. Входные данные составляются из последовательности значений функций F1 до FN на каждой точке временного ряда. Это выглядит следующим образом:
    Вход:
    F1(X[n-f]),…, F1(X[n‑2]), F1(X[n‑1]), F1(X[n]),
    F2(X[n-f]),…, F2(X[n‑2]), F2(X[n‑1]), F2(X[n]),
    …………………………………………
    FN(X[n-f]),…, FN(X[n‑2]), FN(X[n‑1]), FN(X[n])
    Сеть имеет N выходов, где каждый выход представляет собой прогнозное значение для соответствующей функции F1 до FN на n+1 точке временного ряда.
    Выход:
    F1(X[n+1]),
    F2(X[n+1]),
    ……….
    FN(X[n+1])
    Затем сравниваются все N выходных значений с фактическими значениями соответствующих функций. Если прогноз правильный, связи в нейросети укрепляются (веса увеличиваются), если прогноз неверный, связи ослабляются (веса уменьшаются). Это осуществляется с использованием алгоритма обратного распространения ошибки.
    Этот процесс обучения повторяется для всех точек временного ряда и может продолжаться в течение нескольких эпох обучения, которое задается пользователем.
    Шаг 3: Прогнозирование. После завершения обучения мы можем использовать обученную нейросеть для прогнозирования будущих значений функции F1(X). Для этого мы подаем на вход нейросети последние f точек данных для каждой функции F1 до FN.
    Чтобы вычислить следующее значение функции F1(X[n+2]), мы используем полученные выходные значения нейросети как новый вход, отбрасывая самую дальнюю точку и сдвигая остальные точки входа, что позволяет нейросети учитывать последние f точек данных:
    Вход:
    F1(X[n-f+1]),…, F1(X[n‑1]), F1(X[n]), F1(X[n+1]),
    F2(X[n-f+1]),…, F2(X[n‑1]), F2(X[n]), F2(X[n+1]),
    …………………………………………
    FN(X[n-f+1]),…, FN(X[n‑1]), FN(X[n]), FN(X[n+1])
    Выход:
    F1(X[n+2]),
    F2(X[n+2]),
    ……….
    FN(X[n+2])
    Этот процесс может быть повторен для прогнозирования последующих значений функций F1 до FN.
    Это лишь один из примеров того, как можно использовать нейронные сети с подмешиванием функций для анализа и прогнозирования временных рядов. Реальная реализация может потребовать настройки параметров и дополнительных алгоритмов для обработки данных.
Рис. 1. Топология простейшего персептрона при подмешивании функций

Выводы

В данной статье был представлен уточнённый алгоритм многофакторного нейросетевого прогнозирования, разработанный на основе интеграции «подмешиваемых» функций для анализа взаимосвязанных факторов в динамических многосвязных системах. Этот алгоритм позволяет более точно моделировать и прогнозировать сложные нестационарные временные ряды, учитывая многочисленные коррелированные процессы.
Важными этапами алгоритма являются:

  1. Подготовка данных и разделение нейронов на входные, скрытые и выходные.
  2. Инициализация весов между нейронами и выбор функции активации (биполярная сигмоида).
  3. Вычисление значений в нейронах скрытого и выходного слоев с использованием функций активации.
  4. Обучение нейросети с помощью алгоритма обратного распространения ошибки, включая коррекцию весов.
  5. Прогнозирование будущих значений функции на основе обученной нейросети.
  6. Внедрение «подмешивания» других входных параметров для учета их взаимодействия и корреляции.

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

Работа выполнена при поддержке Министерства науки и высшего образования Российской Федерации (гос. задание № FMWE-2021-0003). Авторы выражают благодарность за ценные замечания при подготовке статьи д. т. н., профессору В. В. Бушуеву.