равен нулю. Данная технология аналогична сплайновому подходу к аппроксимации кривых, поскольку нейроны работают в изолированных областях. Сплайн является примером такой кусочной полиномиальной аппроксимации.
В [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