Материал: Модели и алгоритмы проектирования и разработки систем поддержки принятия инвестиционных решений. Морозов В.П., Баркалов С.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

В [225] предложено обоснование использования двух скрытых слоев в контексте обратных задач. Постановка данной задачи формулировалась следующим образом.

Для данной непрерывной вектор-функции f : m M , компактного

подмножества C M , которое содержится в пространстве образов функции f, и некоторого положительного 0 требуется найти вектор-функцию :

M m , удовлетворяющую условию

(f)(u) u для любого u C.

Эта задача относится к области обратной динамики, где наблюдаемое состояние х(n) системы является функцией текущих действий u(n) и предыдущего состояния х(n — 1) системы

x(n) = f(x(n-l),u(n)).

Здесь предполагается, что функция f является обратимой, т.е. u(n) можно представить как функцию от х(n) для любого х(n - 1). Функция f описывает прямую динамику, а функция – обратную. В контексте излагаемого материала

необходимо построить такую функцию , которая может быть реализована

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

задач одного скрытого слоя недостаточно, даже при использовании нейронной модели с разрывными активационными функциями, а персептрона с двумя скрытыми слоями вполне достаточно для любых возможныхС, f и [225].

Блок-схема алгоритма формирования многослойного персептрона представлена на рис. 2.27.

Блоки 1, 12 обеспечивают пуск и остановку алгоритма формирования многослойного персептрона.

В блоке 2 реализован ввод исходных данных, таких как:

-начальные значения весовых коэффициентов межнейронных связей;

-вид функции активации. При проведении исследований использовались такие функции активации, как: линейная; пороговая; сигмоидальная; логистическая; гиперболический тангенс; радиально-базисная. Специальный компонент, реализующий сигмоидальную функцию активации в среде Delphi, приведен на рис. 2.28.

В блоке 3 задается число входов во входном слое.

Блок 4 предназначен для задания значений обучающей выборки. Блок 5 используется для нормализации обучающей выборки. В блоке 6 задается число скрытых слоев персептрона.

В блоке 7 задается число нейронов в скрытом слое.

111

1

Начало

2

Ввод исходных данных

3

Задание числа входов

4

Задание обучающей выборки

5

Нормализация обучающей выборки

6

Задание числа скрытых слоев

персептрона

7

Задание числа нейронов в скрытом

слое

Нет 8

Удовлетворяет ли

 

число слоев ?

Да

Нет

9Удовлетворяет ли

число нейронов?

Да

10

Задание числа разрывов связей ней-

ронов в скрытых слоях

11

Вывод результатов

12

Конец

Рис. 2.27. Блок-схема алгоритма формированиямногослойного персептрона

112

Рис. 2.28. Компонент Delphi, реализующий сигмоидальную функцию активации

Блок 8 обеспечивает проверку условия удовлетворенности пользователем заданного числа слоев.

Блок 9 обеспечивает проверку условия удовлетворенности пользователем заданного числа нейронов.

В блоке 10 в интересах исследования нового класса ИНС задается число разрывов связей нейронов в скрытых слоях. Детализация данного вида исследований приведена в описании подсистемы управления.

Блок 11 реализует вывод результатов. В качестве результата выступает сформированный многослойный персептрон.

Ниже приведен фрагмент программного кодадля данногоалгоритма. nset := TNSet.Create; // создаем нейросеть

// вводим число слоев

//LayerCount:=se3.Value;

LayerCount:=se3.Value+2; //вводим число нейронов в слоях

Layers[0]:=StrToInt(FrmPers.strngrd1.Cells[1,1]);// число нейронов во входном слое

for i:=1 to se3.Value do Layers[i]:=StrToInt(FrmPers.strngrd1.Cells[1,i+1]); // число нейроновв выходном слое

Layers[se3.Value+1]:=StrToInt(FrmPers.strngrd1.Cells[1,se3.Value+2]); // Layers[2]:=0;

//выводим напросмотр for i:=1 to se3.Value do begin

FrmPers.strngrd2.Cells[1,0]:='Кол.нейронов';

FrmPers.strngrd2.Cells[0,1]:='Входнойслой';

FrmPers.strngrd2.Cells[1,1]:=IntToStr(Layers[0]); FrmPers.strngrd2.Cells[0,i+1]:='Скрытый '+IntToStr(i); FrmPers.strngrd2.Cells[1,i+1]:=IntToStr(Layers[i]); FrmPers.strngrd2.Cells[0,i+2]:='Выходной слой'; FrmPers.strngrd2.Cells[1,i+2]:=IntToStr(Layers[i+1]); end;

113

Экранная форма исследования персептронов приведена на рис. 2.29.

Рис. 2.29. Экранная форма исследования персетронов

Модуль «Алгоритм обратного распространения ошибок» предназначен для обучения многослойного персептрона вышеназванным методом в интересах минимизации ошибок его функционирования. Впервые данный метод обучения был предложен Руммельхартом и Хинтоном в 1986 г. На рис. 2.30 показаны потоки функциональных сигналов и сигналов ошибок в многослойном персептроне.

Функциональные сигналы

Сигналы ошибки

Рис. 2.30. Потоки функциональных сигналов и сигналов ошибок в многослойном персептроне

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

114

слоев можно получить как взвешенную сумму ошибок последующих слоев.

С целью упращения пояснения механизма обучения ИНС на основе алгоритма обратного распространения ошибки, ограничимся рассмотрением персептрона с одним скрытым слоем. Матрицу весовых коэффициентов от входов к скрытому слою обозначим W, а матрицу весов, соединяющих скрытый и выходной слой, V. Для индексов примем следующие обозначения: входы будем нумеровать только индексом i, элементы скрытого слоя - индексом j, а выходы, соответственно, индексом k.

Пусть сеть обучается на выборке (X ,Y ), =1..p. Активности нейронов будем обозначать малыми буквами y с соотвествующим индексом, а суммарные взвешенные входы нейронов малыми буквами x.

Пошаговое описание алгоритма обратного распостранения ошибок представлено в табл. 2.11.

Как видно из описания шагов 2-3, обучение сводится к решению задачи оптимизации функционала ошибки градиентным методом.

Параметр характеризует темп обучения ИНС. При его выборе необхо-

дим компромисс. С одной стороны его увеличение приводит к более быстрому обучению ИНС, а с другой – к возрастанию ее неустойчивости (сходимости). Теоретически он (параметр) выбирается достаточно малым для сходимости метода. Результаты экспериментов показали, что сходимость данного метода не высокая. Это обусловлено несовпадением локального направления градиента с направлением к минимуму и независимостью подстройки весов для каждой пары образов обучающей выборки. Последнее означает, что улучшение функционирования на некоторой заданной паре может приводить к ухудшению работы на предыдущих образах.

Для повышения темпа обучения ИНС с учетом сохранения ее устойчивости использовалась следующая методика.

Рассмотрим детализацию шага 3 вышеизложенного алгоритма. Обратный проход начинается с выходного слоя предъявлением ему сигнала ошибки, который передается справа налево от слоя к слою с параллельным вычислением локального градиента для каждого нейрона. Этот рекурсивный процесс предполагает изменение синаптических весов в соответствии с дельта-правилом:

wji(n) j(n)yi(n)

(2.59)

где j (n) – локальный градиент; yi (n) – входной сигнал нейрона.

Для нейрона, расположенного в выходном слое, локальный градиент равен соответствующему сигналу ошибки, умноженному на первую производную нелинейной функции активации. Затем соотношение (2.59) используется для вычисления изменений весов, связанных с выходным слоем нейронов. Зная локальные градиенты для всех нейронов выходного слоя, с помощью (2.60) можно вычислить локальные градиенты всех нейронов предыдущего слоя, а значит, и величину коррекции весов связей с этим слоем:

j (n) 'j (vj (n)) k (n)wkj (n).

(2.60)

115

Источник: https://studfile.net/preview/16563833/