Радиальные базисные сети

neWRB Радиальная базисная сеть RB

Синтаксис:

net = newrb(P,T,goal,spread)

Описание:

Радиальные базисные сети предназначены для аппроксимации функций. Функция newrb добавляет нейроны к скрытому слою радиальной базисной сети, пока не будет достигнута допустимая средняя квадратичная ошибка обучения.

Функция net = newrb(P, T, goal, spread) формирует радиальную базисную сеть и имеет следующие входные и выходные аргументы.

Входные аргументы:

P – массив размера R´Q из Q входных векторов, R – число элементов вектора входа;

T – массив размера S´Q из Q векторов цели;

goal – средняя квадратичная ошибка, по умолчанию 0.0;

spread – параметр влияния, по умолчанию 1.0.

Выходные аргументы:

net – объект класса network object радиальной базисной сети.

Свойства сети:

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

Пример:

Создадим радиальную базисную сеть для следующей обучающей последовательности при средней квадратичной ошибке 0.1 (рис. 11.20):

P = 0:3;

T = [0.0 2.0 4.1 5.9];

net = newrb(P,T,0.1);

net.layers{1}.size

ans = 3

gensim(net) % Рис.11.20

Рис. 11.20

Сформированная радиальная базисная сеть имеет 3 нейрона с функцией активации radbas.

Выполним моделирование сети для нового входа (рис. 11.21):

plot(P,T,'*r','MarkerSize',2,'LineWidth',2)

hold on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)

P1 = 0.5:2.5;

Y = sim(net,P1)

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.21

Рис. 11.21

Алгоритм:

Функция newrb создает радиальную базисную сеть с двумя слоями. Первый слой включает нейроны с функцией активации radbas и использует функции взвешивания dist
и накопления netprod. Второй, линейный слой включает нейроны с функцией активации purelin и использует функции взвешивания dotprod и накопления netsum.

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

Сопутствующие функции: SIM, NEWRBE, NEWGRNN, NEWPNN.

neWRBE Радиальная базисная сеть с нулевой ошибкой RBE

Синтаксис:

net = newrbe(P,T,spread)

Описание:

Функция net = newrb(P, T, spread) формирует радиальную базисную сеть с нулевой ошибкой и имеет следующие входные и выходные аргументы.

Входные аргументы:

P – массив размера R´Q из Q входных векторов, R – число элементов вектора входа;

T – массив размера S´Q из Q векторов цели;

spread – параметр влияния, по умолчанию 1.0.

Выходные аргументы:

net – объект класса network object радиальной базисной сети с нулевой ошибкой.

Чем больше значение параметра spread, тем более гладкой будет аппроксимация. Слишком большое значение spread может привести к вычислительным проблемам.

Пример:

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

P = 0:3;

T = [0.0 2.0 4.1 5.9];

net = newrbe(P,T);

net.layers{1}.size

ans = 4

Сформированная радиальная базисная сеть с нулевой ошибкой имеет 4 нейрона в первом слое. Сравните с предыдущим случаем, когда число нейронов было равно трем.

Выполним моделирование сети для нового входа (рис. 11.22):

plot(P,T,'*r','MarkerSize',2,'LineWidth',2)

hold on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)

P1 = 0.5:2.5;

Y = sim(net,P1)

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.22

Рис. 11.22

Алгоритм:

Функция newrbe создает радиальную базисную сеть с двумя слоями. Первый слой включает нейроны с функцией активации radbas и использует функции взвешивания dist
и накопления netprod. Второй, линейный слой включает нейроны с функцией активации purelin и использует функции взвешивания dotprod и накопления netsum.

Функция newrbe устанавливает веса первого слоя равными P', а смещения – равными 0.8326/spread, в результате радиальная базисная функция пересекает значение 0.5 при значениях взвешенных входов ±spread. Веса второго слоя IW{2,1} и смещения b{2} определяются путем моделирования выходов первого слоя A{1} и последующего решения системы линейных уравнений:

[W{2,1} b{2}] * [A{1}; ones] = T

Сопутствующие функции: SIM, NEWRB, NEWGRNN, NEWPNN.

neWGRNN Обобщенная регрессионная сеть GRNN

Синтаксис:

net = newgrnn(P,T,spread)

Описание:

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

Функция net = newgrnn(P, T, spread) формирует обобщенную регрессионную сеть
и имеет следующие входные и выходные аргументы.

Входные аргументы:

P – массив размера R´Q из Q входных векторов, R – число элементов вектора входа;

T – массив размера S´Q из Q векторов цели;

spread – параметр влияния, по умолчанию 1.0.

Выходные аргументы:

net – объект класса network object обобщенной регрессионной сети.

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

Свойства:

Функция newgrnn создает двухслойную нейронную сеть, архитектура которой совпадает с архитектурой радиальной базисной сети. Первый слой включает нейроны с функцией активации radbas и использует функции взвешивания dist и накопления netprod.
Второй, линейный слой включает нейроны с функцией активации purelin и использует функции взвешивания normprod и накопления netsum. Смещения используются только
в первом слое.

Функция newgrnn устанавливает веса первого слоя равными P', а смещения – равными 0.8326/spread, что приводит к радиальным базисным функциям, которые пересекают величину 0.5 при значениях взвешенных входов ±spread. Веса второго слоя W2 устанавливаются равными T.

Примеры:

Создадим обобщенную регрессионную сеть с входами P и целями T:

P = 0:3;

T = [0.0 2.0 4.1 5.9];

net = newgrnn(P,T);

gensim(net) % Рис.11.24

Рис. 11.23

На рис. 11.23 мы обращаем внимание на блок функции взвешивания normprod, который отличает обобщенную регрессионную сеть от радиальной базисной. Структура сети может быть проанализирована по дереву в левой части рисунка.

Выполним моделирование сети для нового входа и построим график (рис. 11.24):

plot(P,T,'*r','MarkerSize',2,'LineWidth',2)

hold on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)

P1 = 0.5:2.5;

Y = sim(net,P1);

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.24

Y = sim(net, 0:0.5:3)

Y = 0.8104 1.3759 2.1424 3.0300 3.9030 4.6345 5.1615

Рис. 11.24

Из анализа результатов моделирования следует, что на границах интервала расхождения существенны.

Если уменьшить значение параметра влияния до 0.1, то мы получим аппроксимацию высокой точности:

net = newgrnn(P,T,0.1);

Y = sim(net, 0:0.5:3)

Y = 0.0000 1.0000 2.0000 3.0500 4.1000 5.0000 5.9000

Сопутствующие функции: SIM, NEWRB, NEWRBE, NEWPNN.

neWPNN Вероятностная нейронная сеть PNN

Синтаксис:

net = newpnn(P,T,spread)

Описание:

Вероятностные нейронные сети (PNN) – разновидность радиальных базисных сетей, применяемая для решения задач классификации.

Функция net = newgrnn(P, T, spread) формирует обобщенную регрессионную сеть
и имеет следующие входные и выходные аргументы.

Входные аргументы:

P – массив размера R´Q из Q входных векторов, R – число элементов вектора входа;

T – массив размера S´Q из Q векторов цели;

spread – параметр влияния, по умолчанию 1.0.

Выходные аргументы:

net – объект класса network object вероятностной нейронной сети.

Если параметр spread близок к нулю, то сеть будет действовать как классификатор ближайших соседей. Когда параметр spread возрастает, то вероятностная сеть будет учитывать влияние близлежащих векторов.

Пример:

Задача классификации определена множествами входа P и индексов класса Tc:

P = [1 2 3 4 5 6 7];

Tc = [1 2 3 2 2 3 1];

Индексы класса преобразуем в вектор целей и сформируем вероятностную нейронную сеть (рис. 11.25):

T = ind2vec(Tc)

net = newpnn(P,T);

gensim(net) % Рис.11.25

Рис. 11.25

Обращаем внимание читателя, что в качестве второго слоя сети PNN применяется конкурирующий слой с функцией активации compet.

Выполним моделирование сети, используя обучающее множество входов:

Y = sim(net,P)

Yc = vec2ind(Y)

Yc = 1 2 3 2 2 3 1

Результат, как и следовало ожидать, совпадает с множеством целей.

Алгоритм:

Функция newpnn создает двухслойную нейронную сеть, архитектура которой совпадает с архитектурой радиальной базисной сети. Первый слой включает нейроны с функцией активации radbas и использует функции взвешивания dist и накопления netprod.
Второй, линейный слой включает нейроны с функцией активации compet и использует функции взвешивания dotprod и накопления netsum. Смещения используются только
в первом слое.

Функция newpnn устанавливает веса первого слоя равными P', а смещения слоя – равными 0.8326/spread, в результате чего радиальные базисные функции достигают уровня 0.5 при значениях взвешенных входов ±spread. Веса второго слоя W2 устанавливаются равными T.

Сопутствующие функции: SIM, IND2VEC, VEC2IND, NEWRB, NEWRBE, NEWGRNN.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: