Лабораторная работа № 7. Сети Хопфилда

Цели работы: 1) изучение архитектуры рекуррентных нейронных сетей Хопфилда и специальных функций для их создания, взвешивания входов, накопления и активизации; 2) ознакомление с демонстрационными примерами и их скриптами, а также приобретение навыков построения таких сетей для решения задач распознавания образов и создания ассоциативной памяти.

Задание 1. Создать сеть Хопфилда с двумя устойчивыми точками в трёхмерном пространстве, выполнив следующие команды:

T =[-1 -1 1 ; 1 -1 1]¢ % целевые вершины

net =newhop(T); % создание сети

net, gensim(net) % параметры и структура сети

Ai = T ; % начальные условия для линий задержки

Y = sim(net,2,[], Ai); % сеть устойчива

Ai ={[-0.9 ; -0.8 ; 0.7]};

Y=sim(net,{1 5},{}, Ai); % переход к устойчивому состоянию [-1 -1 1]

Задание 2. Создать сеть Хопфилда с четырьмя устойчивыми точками в двухмерном пространстве, выполнив следующие команды:

T = [1 -1; -1 1; 1 1; -1 -1]′

plot(T(1, : ),T(2, : ), ′*r′) % точки равновесия;

axis([-1.1 1.1 -1.1 1.1]);

title(′Точки равновесия проектируемой сети′);

xlabel(′a(1)′), ylabel(′a(2)′)

net =newhop(T);

W=net.LW{1,1}

b=net.b{1,1}

Ai = T;

Y=sim(net,4,[],Ai)

plot(T(1, : ),T(2, : ), ′*r′), hold on ]

axis([-1.1 1.1 -1.1 1.1]) xlabel(‘a(1)’), ylabel(′a(2)′)

new=newhop(T);

[Y,Pf,Af]=sim(net,4,[],T);

for i=1:25

a={rands(2,1)};

[Y,Pf,Af]=sim(net,{1,20},{},a);

record=[cell2mat(a),cell2mat(Y)]

start=cell2mat(a);

plot(start(1.1), start(2.1),′kx′.record(1,:),record(2,:))

end

 

Лабораторная работа № 8. Радиальные базисные сети общего вида

Цели работы: 1) изучение архитектуры радиальных базисных нейронных сетей общего вида и специальных функций для их создания и автоматической настройки весов и смещений, ознакомление с демонстрационными примерами и их скриптами; 2) приобретение навыков построения таких сетей для классификации векторов и аппроксимации функций.

Задание 1. Создать радиальную базисную сеть с нулевой ошибкой для обучающей последовательности P = 0:3 и T = [0.0 2.0 4.1 5.9], проанализировать структурную схему построенной сети и значения параметров ее вычислительной модели, выполнив следующие действия:

1. Создать радиальную базисную сеть с нулевой ошибкой:

P = 0:3;

T = [0.0 2.0 4.1 5.9];

net = newrbe(P, T);

2. Проанализировать структурную схему построенной сети:

gensim(net);

3. Проанализировать параметры вычислительной модели сети:

net

net.layers{1}.size % число нейронов в 1-м слое

net.layers{2}.size % число нейронов во 2-м слое

net.layers{1}.initFcn

net.layers{1}.netInputFcn

net.layers{1}.transferFcn

net.layers{2}.initFcn

net.layers{2}.transferFcn

net.layers{2}.netInputFcn

net.inputWeights{1, 1}.initFcn

net.inputWeights{1, 1}.weightFcn

net.inputWeights{2, 1}.initFcn

net.inputWeights{2, 1}.weightFcn

net.inputWeights{1, 1}.learnFcn

net.IW{1, 1}, net.b{1}

net.LW{2, 1}, net.b{2}

net.inputWeights{1, 1},

net.biases{1} net.inputWeights{2, 1},

net.biases{2}

4. Выполнить моделирование сети и построить графики:

plot(P, T, ‘*r’, ′MarkerSize′, 2, ′LineWidth′, 2)

hold on

V=sim(net, P);

plot(P, V, ′*b′, ′MarkerSize′, 9, ′LineWidth′, 2) P1=0.5:2.5;

Y=sim(net, P1);

plot(P1, Y, ′*k′, ′MarkerSize′, 10, ′LineWidth′, 2)

Задание 2. Создать радиальную базисную сеть для обучающей последовательности P = 0:3 и T = [0.0 2.0 4.1 5.9] при средней квадратичной ошибке 0.1, проанализировать структурную схему построенной сети и значения параметров ее вычислительной модели, выполнив действия задания и заменив в командах функцию newrbe(P, T) на newrb(P, T, 0.1).

Задание 3. Создать радиальную базисную сеть с нулевой ошибкой для большого числа значений входа и цели, выполнив следующие действия:

1. Задать обучающую последовательность и построить для нее график:

P = –1:0.1:1;

T = [–0.9602 –0.5770 –0.0729 0.3771 0.6405 0.6600 …

0.4609 0.1336 –0.2013 –0.4344 –0.5000 –0.3930…

–0,1647 0.988 0.3072 0.3960 0.3449 0.1816

–0.0312 –0.2189 –0.3201];

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

hold on

2. Создать сеть и определить число нейронов в слоях:

net = newrbe(P, T);

net.layers{1}.size % 21нейрон в первом слое

net.layers{2}.size % 1 нейрон во втором слое

gensim(net);

3. Выполнить моделирование сети и построить график:

V = sim(net, P);

plot(P, V, ′*b′, ′MarkerSize′, 5, ′LineWidth′, 2) P = [–0.75 –0.25 0.25 0.75]

V = sim(net, P);

hold on

plot(P, V, ′*b′, ′MarkerSize′, 10, ′LineWidth′, 2).

Задание 4. Создать радиальную базисную сеть для большого числа значений входа и цели при средней квадратичной ошибке 0.01, выполнив действия задания 3 и заменив функцию newrbe(P, T) на функцию newrb(P, T, 0.01).

Задание 5. Провести аппроксимацию функции f(x) с помощью разложения в ряд радиальных базисных функций:

p = –3:0.1:3;

a1 = radbas(P);

a2 = padbas(P–1.5);

a3 = radbas(P+2);

a = a1 + a2 + 0.5*a3;

plot(P, a1, p, a2, p, 0.5*a3, p, a).

Разложение указанного вида может быть реализовано на двухслойной нейронной сети, первый слой которой состоит из радиальных базисных нейронов, а второй – из единственного нейрона с линейной характеристикой, на котором суммируются выходы нейронов первого слоя.