Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
871
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

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

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.