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. Далее для каждого выбирается размер слоя и функция активации.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.