- •Оглавление
- •1. Асоціативне неконтрольоване навчання
- •3. Зміст звіту по практичній роботі
- •Варіанти завдань
- •Аудиторна робота
- •Результат роботи:
- •2. Конкурентні нейронні мережі («Шар і мапа Кохонена»)
- •3. Зміст звіту по практичній роботі
- •Варіанти завдань: кластеризація даних
- •Аудиторна робота
- •1 % Self Organizing Feature Maps sofm (Kohonen networks)
- •3. Конкурентні нейронні мережі («Бінарний класифікатор сигналів екг на основі lvq»)
- •3. Зміст звіту по практичній роботі
- •Варіанти завдань
- •Аудиторна робота
- •1. %Learning Vector Quantization
- •Література
- •4. Нейронні мережі Гросберга
- •Аудиторна робота
- •1. Leaky integrator
- •2. Shunting network demonstration
- •3. Перший та другий шари мережі Grossberg
- •4. Налаштування ваги
- •Art-1 мережі розпізнавання зображень ()
- •3. Зміст звіту по практичній роботі
- •Варіанти завдань: класифікація зображень
- •Аудиторна робота
- •Листинг программы (matlab)
- •Результаты работы программы
- •Мережa Хопфiлда як асоціативна пам'ять ()
- •Варіанти завдань
- •Аудиторна робота
- •7.Рбф-мережа (робота № 5)
- •Варіанти завдань
- •Подбор параметров радиальной функции для каждого радиального нейрона (центр delta и параметр ширины b)
- •Подбор параметров радиальной функции для каждого радиального нейрона (центр с и параметр ширины b)
- •Ортогонализация по методу наименьших квадратов:
- •Работа первого и второго слоев:
- •Адаптация нелинейных параметров радиальных функций всех нейронов первого слоя сети:
- •8.Мережа з використанням га
Подбор параметров радиальной функции для каждого радиального нейрона (центр delta и параметр ширины b)
Вычисляется центр:
delta = (range(2)-range(1))/(S1-1);
Определяется ширина:
b=1.6652/delta;
Определяется длинна диапазона:
total = range(2)-range(1);
Задается вектор весов W1:
W1 = range(1):delta:range(2);
Преобразуется строка W1 в столбец:
W1 = W1(1:(end))';
Создается вектор смещения:
b1 = b*ones(size(W1));
Нахождение длинны вектора р:
Q = length(p);
Формируется матрица по вектору р с количеством строк = S1, и 1 столбца:
pp = repmat(p,S1,1);
Работа первого слоя:
Нахождение значений n1:
n1 = abs(pp-W1*ones(1,Q)).*(b1*ones(1,Q));
Нахождение значений выхода:
a1 = exp(-n1.^2);
Отыскание коэффициентов выходного (линейного) слоя
Добавление строки единиц к матрице а1:
Z = [a1;ones(1,Q)];
Нахождение псевдоинверсной матрицы Грина:
x=pinv(Z*Z'+ro*eye(S1+1))* Z;
Определение параметров выходного слоя (W2 и b2):
x=x*t';
Выделение весов выходного слоя нейронов W2 (из вектора х с исключением последнего значения):
W2 = x(1:end-1)';
Выделение значения смещения b2 (последнее значение вектора х):
b2 = x(end);
Работа второго слоя:
Вычисление значений выхода а2:
a2 = W2*a1 + b2*ones(1,Q);
Вычисление значений вектора р2:
p2 = range(1):(total/1000):range(2);
Нахождение длинны вектора р2:
Q2 = length(p2);
Формируется матрица по вектору р2 с количеством строк = S1, и 1 столбца:
pp2 = repmat(p2,S1,1);
Адаптация нелинейных параметров радиальных функций всех нейронов первого слоя сети:
Нахождение обновленных значений n1:
n12 = abs(pp2-W1*ones(1,Q2)).*(b1*ones(1,Q2));
Нахождение обновленных значений выхода:
a12 = exp(-n12.^2);
Вычисление обновленное значений выхода а2:
a22 = W2*a12 + b2*ones(1,Q2);
Вычисление значений вектора t:
t_exact = sin(2*pi*(freq*p2 + phase/360))+1;
Нахождение значений temp:
temp=[(W2'*ones(1,Q2)).*a12; b2*ones(1,Q2)];
Нахождение квадратической ошибки (sse = sumsqr(t-a2)):
sse = sum(sum((t-a2).*(t-a2)));
Вывод на график:
%fa_plot = plot(P,T,'+','color',nnred);
F1 = figure(1);
subplot(2,1,1);
fa_plot = plot(p,t,'*k','LineWidth',2); Черные кружочки
hold on
fa_plot2 = plot(p2,temp,'--k'); Черная штриховая линия
fa_plot3 = plot(p2,t_exact,'b','LineWidth',2); Синяя сплошная линия
fa_plot4 = plot(p2,a22,'r','LineWidth',1); Красная сплошная линия
title('Function Approximation - Linear Least Squares');
ylabel('a2');
xlabel('p');
hold off
subplot(2,1,2);
fb_plot = plot(p2,a12,'k', 'LineWidth',2); Черная сплошная линия
ylabel('a1');
xlabel('p');
Orthogonal Least Squares
function ols
clc; clear all; close all;
S1 = 5; % HIDDEN NEURONS min = 2
npts = 12; % Number of Points min = 2 max = 20
freq = 1/2; %1/8; % frequency of the function to be fit min = 0.25 max=1
phase = 60; % phase of the function min = 0 max = 360
Задаются границы
range = [-2 2];
Определяется шаг:
d1 = (range(2)-range(1))/(npts-1);
Задается вектор р:
p = range(1):d1:range(2);
Определяется вектор t:
t = sin(2*pi*(freq*p + phase/360))+1;