- •Санкт-Петербургский национальный исследовательский университет
- •Редакторы знаний и функции системы kappa
- •Основные этапы разработки объектной модели
- •Пример. Окно Object Browser
- •Построение функциональной модели с использованием продукционных правил Цикл формирования цепи рассуждений в прямом направлении
- •If посылка then заключение.
- •Формирование цепи рассуждений в обратном направлении
- •Средства отладки базы знаний
- •Окно связи правил (Rule Relations)
- •Окно трассировки правил (Rule Trace)
- •Активная трассировка при прямом формировании цепочки рассуждений
- •Окно просмотра иерархии выводов (Inference Browser)
- •Средства создания интерфейса с пользователем. Окно сеанса (Session Window)
- •Средства объяснений оболочки kappa
- •Практическое задание
- •Разработка и программирование объектной модели предметной области
- •Разработка и программирование функциональной модели предметной области
- •Компьютерный практикум по нечетким системам
- •Аппроксимация функции одной переменной с использованием нечеткой системы
- •Варианты заданий
- •Построение элементарной нечеткой экспертной системы
- •Программирование нечеткой системы в среде matlab с использованием встроенных функций
- •Кластеризация с помощью алгоритма нечетких центров
- •Компьютерный практикум по нейронным сетям
- •Аппроксимация функции на основе нейронных сетей
- •Варианты заданий
- •Использование инструмента nnTool для построения нейронной сети
- •Кластеризация с помощью нейронных сетей
- •Рекуррентные нейронные сети Хопфилда и Хэмминга
- •Нейронные сети радиально-базисных функций. Вероятностные сети
- •Построение нейронечеткой модели с помощью anfis-редактора
- •Приложение 1. Функции пакета «Fuzzy Logic Toolbox» системы matlab для работы с системами нечеткой логики
- •Приложение 2. Функции пакета «Neural Network Toolbox» системы matlab для работы с нейронными сетями
Нейронные сети радиально-базисных функций. Вероятностные сети
Цель: Научиться использовать нейронные сети радиально-базисных функций и вероятностные сети.
Задание: Используя встроенные функции пакета нейронных сетей математической среды 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.
Весовая матрица первого слоя формируется с использованием векторов входа из обучающего множества в виде матрицы Pт. Когда подается новый вход, вычисляет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 с использованием радиально-базисной нейронной сети я решил задачу аппроксимации функции (в качестве радиально-базисной функции я использовал гауссиан), а с использованием вероятностной нейронной сети решил задачу классификации векторов заданным классам.
Контрольные вопросы:
Опишите структуру и принцип функционирования нейронных сетей радиально-базисных функций.
В чем заключаются преимущества и недостатки нейронных сетей радиально-базисных функций?
Какие функции могут быть использованы в качестве активационных функций радиально-базисных нейронных сетей?
Для каких задач могут быть использованы вероятностные сети?
Какая функция активации используется в конкурирующем слое вероятностной сети?
На основе самостоятельно изучения опишите функции (назначение, синтаксис, аргументы) среды MATLAB для работы с нейронными сетями радиально-базисных функций: newrb, newrbe, newpnn, newgrnn.