Как
вершиной творчества А.С.Пушкина стал “Евгений Онегин”, как основой прикладного
применения теории вероятностей является нормальное распределение
так и квинтэссенцией теории нейронных сетей предстал алгоритм обратного
распространения ошибки (АОРО). Для решения каких задач
прогнозирования применим АОРО?
Рассмотрим некоторую сложную систему
(экономическую, техническую, социальную,..) (рис. 1).
Обозначим
- вектор входных воздействий,
- вектор выходных
величин, F – функциональное преобразование, осуществляемое
системой S. Например -количество
ресурсов, - фондовооруженность,
- энергоёмкость производства, - квалификация сотрудников и т.д., - количество произведённой продукции, - себестоимость продукции, - валовый доход.
Очевидно, , ,
а чистая прибыль
(*)
Идентификация
последней зависимости – дело почти безнадёжное известными
интегро-дифференциальными методами. Нейронная сеть может решить эту постижимым
только ею одной способом, правда, по указанному
алгоритму. Эта идентификация не совсем обычная, она синтетическая. Это
означает, что зависимость (*) аналитически получена
так и не будет. Но по заданным значениям вектора будет вычислять и даже
определять чувствительность изменения Z к изменению каждой
компоненты .
Алгоритм
back propagation приведён ниже с выделением
этапов обучения и использования НС (нейронной сети).
Рассмотрим нейронную
сеть (перцептрон) следующего вида (рис. 2)
В шаре А – n нейронов, в шаре S – l
нейронов, в шаре R – m нейронов. Нейроны слоя А никаких функций не выполняют. Функционирует нейронная
сеть следующим образом. Изначально существуют начальные данные в виде таблицы
1.
Таблица 1. – Исходные
данные.
|
|
……
|
|
|
|
……
|
|
|
|
……
|
|
|
|
……
|
|
|
|
……
|
|
|
|
……
|
|
……
|
……
|
……
|
……
|
……
|
……
|
……
|
……
|
|
|
……
|
|
|
|
……
|
|
к – количество исходных образов.
- вектор
входных параметров, - реальные выходные
величины, полученные в результате наблюдений, экспериментов или данные
статистики. В качестве примера можно рассмотреть таблицу 2.
Таблица 2. –
Пример.
|
|
|
|
|
|
1
|
1
|
2
|
0
|
1
|
1
|
1
|
2
|
3
|
-1
|
2
|
0.5
|
…
|
…
|
…
|
…
|
…
|
…
|
9
|
9
|
18
|
0
|
81
|
1
|
В этой таблице , , , , , . Обученная нейронная сеть по двум числам, поданным на вход,
должна определять их сумму, разность, произведение и частное.
Итак, первое, что необходимо сделать, это
проинициализировать весовые коэффициенты , , , и , , случайными числами из
интервала (0,1). Далее, для приведения исходных данных к единой шкале, их
необходимо нормировать. Для этого можно использовать одно из выражений:
, ,
, , .
У каждого из этих выражений есть свои преимущества и
недостатки. Наиболее часто используют выражения (1) и (4). Далее для каждого
нейрона скрытого слоя S вычисляется сумма , , называемая активацией (activation). На выходе нейронов слоя S
получаем , где f(*) – активационная функция.
Для нашего примера и для большинства других рационально использовать также
функции (гиперболический
тангенс) и
(классический сигмоид).
Поскольку область значений , то вместе с ним уместно использовать нормировку , а с
, где (1),(2),(5). Кроме того при необходимости используют смещения (bios)
для нейронов, для получения нужной области на выходе.
Рассчитаем
выходы нейронов слоя R по формуле , . - представляют собой
рассчитанные выходы. Естественно, что они будут
отличаться от реальных выходов , . Процесс обучения нейронной сети заключается в
преобразованиях весовых коэффициентов, с целью приближения реальных значений
рассчитанными. Для этого необходимо минимизировать функцию
, где
- реальное значение j-го
выхода сети при поданном i-м образе, - вычисленное.
Минимизировать сумму можно, как сказано выше, путём адаптации весовых
коэффициентов. Сделать это весьма проблематично, поскольку слоёв для постройки
два, а ошибки, как известно, имеют свойство накапливаться. В 1986 году Руммельхарт Хинтон и Вильямс предложили
алгоритм обратного распространения ошибки, главная идея которого состояла в
том, что ошибку на последнем слое можно просто вычислить, а соответственно, по
методу градиентного спуска скорректировать весовые коэффициенты последнего
спуска. Далее используя тот факт, что входы нейронов следующего шара являются
выходами нейронов предыдущего шара, вычислить ошибки и скорректировать весовые
коэффициенты других слоёв.
Алгоритм ОРО для сети с тремя входами, двумя выходами и
тремя нейронами скрытого слоя.
Шаг 1. Инициализируем
весовые коэффициенты случайными числами.
Шаг 2. Подаём
на вход обучающий образ и рассчитываем выход сети (описано выше).
Шаг 3. Рассчитываем ошибки выходного шара. В
нашем случае
.
Шаг
4. Рассчитываем ошибки предыдущего
шара по формуле
В таком случае:
.
Осуществляем коррекцию весовых
коэффициентов следующим образом:
а) для последнего (второго) слоя:
,
где ; ; ; ; ; ;
б) для предпоследнего слоя:
; ; ;
; ; ;
; ; .
Вместо
вышеперечисленных выражений можно было бы воспользоваться и такими:
,
где
- коэффициент инерционности, - номер текущей итерации, Î(0;1).
Шаг
5. Если поданы все входные образы,
то переход на шаг 5, иначе переход на шаг 2 (подаём следующий образ).
Шаг
6. Если ,
то переход на шаг 7, иначе снова переходим на шаг 2 (подаём первый образ).
Шаг
7. Подаём на вход
уже обученной сети контрольный вектор X и сеть рассчитает Y (решается задача
прогнозирования).
Таким образом, нейронная сеть с
алгоритмом АОРО является единственно приемлимым
средством для решения задачи прогнозирования в случае сложных зависимостей
между входными параметрами и выходными характеристиками, особенно если
последние представлены вектором.
|