Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ Компьютерный практикум.doc
Скачиваний:
288
Добавлен:
20.03.2016
Размер:
3.35 Mб
Скачать
    1. Нейронные сети радиально-базисных функций. Вероятностные сети

Цель: Научиться использовать нейронные сети радиально-базисных функций и вероятностные сети.

Задание: Используя встроенные функции пакета нейронных сетей математической среды MATLAB рассмотреть использование нейронных сетей радиально-базисных функций и вероятностных сетей.

Пример выполнения:

Задача. 1) В среде MATLAB необходимо построить и обучить нейронную сеть радиально-базисных функций для аппроксимации заданной функции ,,.

2) В среде MATLAB создать и обучить вероятностную нейронную сеть для классификации 8 векторов 3 заданным классам. Произвести классификацию произвольного вектора, не принадлежащий обучающему множеству ранее созданной сети.

В первую очередь в математической среде MATLAB создаем новый M-File, в котором записываем код программы создания и обучения нейронной сети радиально-базисных функций с использованием функций пакета нейронных сетей Neural Networks Toolbox:

clear all %очищаем память

close all

P=0:0.5:10; %входы

for i=1:21

T(i)=sin(P(i))-cos(P(i)); %целевые выходы

end

net=newrb(P,T,0); %создание радиально-базисной сети

NEWRB, neurons = 0, SSE = 13.9849

net.layers{1}.size %число нейронов скрытого слоя НС

net.layers{2}.size

E1=sim(net,P); %опрос сети на обучающую выборку

P2=[0.75 3.82 6.77 8.24 9.73];%тестовая выборка

E2=sim(net,P2); %опрос сети на тестовую выборку

sum=0;

for i=1:5

T2(i)=sin(P2(i))-cos(P2(i));

error(i)=T2(i)-E2(i);

sum=sum+error(i)^2;

end

sko=sqrt(sum/5) %среднеквадратичное отклонение между

%идеальными значениями сигнала тестовой выборки и выходом сети

figure(1); %построение графика

hold on;

plot(P,T,'LineWidth',1),grid;

plot(P,E1,'or','LineWidth',2);

plot(P2,E2,'+k','MarkerSize',10,'LineWidth',2);

xlabel('P,P2'); ylabel('T,E1,E2');

legend ('Исходные данные','Выходы НС на обучающую выборку','Выходы НС на тестовую выборку',0);

Ниже представлен сформированный массив ошибок между идеальными значениями сигнала тестовой выборки и выходами сети, рассчитанное среднеквадратичное отклонение и графическое отображение результатов работы нейронной сети (рис. 6.25):

error =1.0e-004 *

0.7597 -0.0055 -0.0316 0.0541 0.6102

sko = 4.3667e-005.

Рис. 6.25. Выходы нейронной сети на обучающую и тестовую выборки

Переходя ко второму заданию напомним, что вероятностные нейронные сети PNN предназначены для решения вероятностных задач и, в частности, задач классификации.

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

Предполагается, что задано обучающее множество, состоящее из Q пар векторов вход/цель. Каждый вектор цели имеет K элементов, указывающих класс принадлежности, и, таким образом, каждый вектор входа ставится в соответствие одному из K классов. В результате может быть образована матрица связности T размера K×Q, состоящая из нулей и единиц, строки которой соответствуют классам принадлежности, а столбцы – векторам входа. Таким образом, если элемент ti,j матрицы связности равен 1, то это означает, что j-й входной вектор принадлежит к классу i.

Весовая матрица первого слоя формируется с использованием векторов входа из обучающего множества в виде матрицы . Когда подается новый вход, вычисляетcя близость нового вектора к векторам обучающего множества; затем вычисленные расстояния умножаются на смещения и подаются на вход функции активации radbas. Вектор обучающего множества, наиболее близкий к вектору входа, будет представлен в векторе выхода y(1) числом близким к 1.

Весовая матрица второго слоя соответствует матрице связности T, построенной для данной обучающей последовательности. В среде MATLAB эта операция может быть выполнена с помощью функции ind2vec, которая преобразует вектор целей в матрицу связности T. Произведение T*y(1) определяет элементы вектора y(1), соответствующие каждому из К классов. В результате конкурирующая функция активации второго слоя формирует на выходе значение, равное 1 для самого большего по величине квадрата элемента вектора y(1) и 0 в остальных случаях. В среде MATLAB конкурирующая функция активации реализована в функции compet. Таким образом, сеть PNN выполняет классификацию векторов входа по K классам.

Для выполнения второго задания в математической среде MATLAB создаем новый M-File, в котором записываем код программы создания и обучения вероятностной нейронной сети с использованием функций пакета нейронных сетей Neural Networks Toolbox:

clear all; %очищаем память

close all;

P=[1 2; 3 6; 2 8; 6 9; 1 7; 8 6; 10 17; 23 29]'; %вектора входа

Tc=[1 1 2 2 2 3 3 3]; %вектор отнесения заданных векторов входа заданным классам

T=ind2vec(Tc) %матрица связанности

T=full(T) %полная матрица %связанности

net=newpnn(P,T); %создание вероятностной сети

E1=sim(net,P); %опрос сети на обучающую выборку

E1c=vec2ind(E1)

P1=[1 6; 4 7; 9 19]'; %произвольные вектора

E2=sim(net,P1); %опрос сети

E2c=vec2ind(E2)

Ниже приведен результат выполнения программы:

T = %матрица связанности, которая определяет принадлежность первых двух векторов 1-му классу, последующих трех векторов 2-у классу и последних трех векторов 3-му классу

(1,1) 1

(1,2) 1

(2,3) 1

(2,4) 1

(2,5) 1

(3,6) 1

(3,7) 1

(3,8) 1

T = %полная матрица связанности

1 1 0 0 0 0 0 0

0 0 1 1 1 0 0 0

0 0 0 0 0 1 1 1

E1c = %результат опроса сети на обучающую выборку, который подтверждает правильность решения задачи классификации

1 1 2 2 2 3 3 3

E2c = %результат опроса сети на произвольные вектора: 1-й вектор отнесен ко второму классу, 2-й вектор к первому классу, 3-й вектор к третьему классу

2 1 3

Вывод (пример):

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

Контрольные вопросы:

  1. Опишите структуру и принцип функционирования нейронных сетей радиально-базисных функций.

  2. В чем заключаются преимущества и недостатки нейронных сетей радиально-базисных функций?

  3. Какие функции могут быть использованы в качестве активационных функций радиально-базисных нейронных сетей?

  4. Для каких задач могут быть использованы вероятностные сети?

  5. Какая функция активации используется в конкурирующем слое вероятностной сети?

  6. На основе самостоятельно изучения опишите функции (назначение, синтаксис, аргументы) среды MATLAB для работы с нейронными сетями радиально-базисных функций: newrb, newrbe, newpnn, newgrnn.