Решение задач кластеризации и аппроксимации в нейросетевом логическом базисе. Описание сети Кохонена (алгоритм работы), страница 5

3.  Раздел II. Задача аппроксимации функции двух переменных.

3.1 Описание структуры многослойной сети.

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

М - число слоев сети (включая входной и выходной);

Nm - количество нейронов m-го слоя (синоптические связи между нейронами одного слоя отсутствуют).

Выходы нейронов m-го слоя m=1,М-1 поступают на входы нейронов только следующего m+1 слоя.

Внешний векторный сигнал X поступает на входы только первого слоя.

Выход i-го нейрона m-го слоя определяется по следующей формуле :

Nm-1

y(m,i) = f(a0(m,i) + aj(m,i) * y(m -1,j))=f(aT(m,i) * U(m,i)) ,

j=1   где f - дифференцируемая функция активации формального нейрона.

Для скрытых слоев входные сигналы нейронов m-го слоя  X соответствуют выходным сигналам  y  m-1 слоя.

Процесс обучения сети осуществляется в результате минимизации некоторого критерия качества J(a), который характеризует меру близости выходов сети.

J(a)= , где n - определяет длину обучающей последовательности; m - такт работы сети, которому соответствует требуемое  m-е значение из обучающей последовательности.

a - вектор синоптических весов.

Вектор ошибки e имеет вид : e(a,m)=y(m)(m) - y*(m), где y*(m) - m-е значение обучающей последовательности.

Рационально формировать выражение для Q[e(a,m)] в квадратичной форме вида Q[e(a,m)]=eT(a,m)Re(a,m), где R - заданная положительно полуопределенная матрица.

Для обучения МНС часто используется градиентный метод, который получил название метода обратного распространения ошибки (back propagation).

3.2 Алгоритм обучения.

Для рассмотренной задачи формируется обучающая последовательность вида :

 


m              X                  y*

 


1            X(1)             y*(1)  

 


2            X(2)             y*(2)

 


...             ...                 ...  

 


              n             X(n)             y*(n)

Обучение сети выполняется по следующей рекуррентной функции :

a(m)=a(m-1) - g=aQ[e(a(m-1),m)] .

1 шаг

m=1, j=0. Задаются начальные значения a(m), Jj.

2 шаг

Вычисляются y(m)(m) для текущего X(m).

2 шаг

Вычисляются S(m) = y(m)(m) - y*(m), m=1,M-1

4 шаг

Определяется матрица D(m+1) = A1(m+1)TdiagF’(A(m+1)U(m+1)),  где F - нелинейное преобразование f над каждой строкой полученной матрицы.

5 шаг

Определяется S(m) = D(m+1) S(m+1)

6 шаг

Вычисляются элементы градиента  = [diag[F’(A(m) U(m))]S(m)]U(m)

7 шаг

Вычисляются новые значения синоптических весов.

a(m)(m+1) = a(m)(m) - n

8 шаг

m = m-1

если m1 идти к шагу 4.

9 шаг

m = m+1

если mn идти к шагу 2.

10 шаг

Вычисляется J0 = J(j), j = j+1

J(j)=[y(m)(m) - y*(m)]2

11 шаг

Если |J(j) - J0|d, то m = 1 и идти к шагу 2.

12 шаг

Фиксируются результаты обучения МНС в виде векторов синоптических весов.

3.3 Тестовый пример.

Для задачи аппроксимации выбрана функция.

Набор входных и выходных значений для этой функции представлены в файле образцов для эмулятора нейронной сети WinNN p1.pat .

3.4 Описание этапов решения задачи на эмуляторе.

Для начала работы с эмулятором WinNN необходимо создать обучающий файл образцов с расширением p1.pat . Этот файл содержит входные и выходные обучающие образцы. Первая строчка файла содержит 3 числа :

1. Число обучающих наборов в файле.

2. Число входов.

3.  Число выходов.

Задание размера сети производится в области, обозначенной «Net Size». Выбирается число слоев (включая входной и выходной слои). Их количество может быть от 2 до 5. Далее для каждого выбирается размер слоя и функция активации.