Лабораторная работа № 12 Самоорганизующиеся карты Кохонена
Цели работы: 1) изучение архитектуры самоорганизующихся нейронных сетей в виде карт Кохонена и специальных функций для создания карты и её топологии, взвешивания, накопления, настройки весов (размещение нейронов), адаптации и обучения; 2) ознакомление с демонстрационными примерами и их скриптами, а также приобретение навыков построения самоорганизующихся карт для решения задач кластеризации входных векторов.
Задание 1. Рассчитать положение нейронов на четырехмерной сетке с прямоугольной топологией размера 5´4´3´2 и построить график расположения нейронов, выполнив следующие команды:
pos=gridtop(5,4,3,2) % массив координат узлов размера N*S
% где N – количество измерений, равное 4
% S – количество узлов сетки
% равное произведению числа нейронов по
% каждому измерению 5*4*3*2=120
plotsom(pos) % вывод только трех размерностей.
Задание 2. Рассчитать положение нейронов на двухмерной сетке с прямоугольной топологией размера 2´3 и построить график расположения нейронов, выполнив следующие команды:
рos =gridtop(2,3) % 0 1 0 1 0 1
% 0 0 1 1 2 2
plotsom(pos) % плоский график.
Задание 3. Рассчитать положение нейронов на двухмерной сетке с прямоугольной топологией размера 3´2 и построить график расположения нейронов, выполнив следующие команды:
рos =gridtop(3,2) % 0 1 0 1 0 1
% 0 0 1 1 2 2
plotsom(pos) % плоский график.
Задание 4. Рассчитать положение нейронов на трехмерной сетке с гексагональной топологией размера 5´4´3 с 60 нейронами и построить график их расположения, выполнив следующие команды:
рos =Hextop(5,4,3) % массив размера 3*60;
рlotsom(pos) % построение графика.
Задание 5. Сформировать гексагональную сетку размером 2´3 и построить график, выполнив команды:
pos=hextop(2,3) % 0 1,0 0,5 1,5 0 1,.0
% 0 0 0,866 0,866 1,7321 1,7321
plotsom(pos)
Задание 6. Создать сетку размера 2´3 со случайным расположением узлов и построить график расположения нейронов, выполнив следующие действия:
pos=randtop(2,3) % 0,062 0,647 0,49 и т. д.
% 0 0,122 0,904 и т. д.
plotsom(pos) % построение графика.
Задание 7. Создать сетку размера 5´4´3 со случайным расположением узлов и построить график расположения нейронов, выполнив команды:
pos=randtop(5,4,3) % создание сетки
plotsom(pos) % построение графика.
Задание 8. Вычислить евклидово расстояние между нейронами сети с теологией, для которой задана матрица для 10 нейронов в трехмерном пространстве, выполнив следующие команды:
pos=rand(3,10) % случайная матрица координат
d=dist(pos) % евклидово расстояние между нейронами
Задание 9. Вычислить расстояние максимального смещения координат нейронов, размещенных в трехмерном пространстве, выполнив команды
pos = rand(3,10); % случайная матрица координат
d = boxdist(pos) % максимальное координатное смещение, для
% векторов х и у вычисляется как d = max(abs(x –y))
Задание 10. Вычислить суммарные координатные смещения для сетки из 10 нейронов в трехмерном пространстве со случайной матрицей координат, выполнив следующие действия:
pos = rand(3,10) % случайные координаты для 10 нейронов
d = mandist(pos) % суммарное координатное смещение, для
% векторов х и у вычисляется как d = sum(abs(x –y))
Задание 11. Вычислить расстояние связи между нейронами, распределёнными случайным образом в трехмерном пространстве, выполнив команды:
pos = rand(3,10) % массив случайных координат для 10 нейронов.
d = linkdist(pos) % расстояния связи между нейронами,
% определяемые следующим образом:
% 0 1 1 1 1 1 1 1 1 1 1 1
% 1 0 1 1 1 1 1 1 1 1 1 1
% 1 1 0 1 1 1 1 1 1 1 1 1
% 1 1 1 0 2 1 2 1 1 1 1 1 и т. д.
Задание 12. Создать гексагональную карту Кохонена размером 2´3, проанализировать ее структурную схему и параметры вычислительной модели, произвести обучение карты и ее моделирование, а также построить необходимые графики, выполнив следующие команды:
net = newsom([0 2; 0 1],[2 3]); % два входа
net, net.layers{1} % вычислительная модель
P = [0.1 0.3 1.2 1.1 1.8 1.7 0.1 0.3 1.2 1.1 1.8 1.7;…….
0.2 0.1 0.3 0.1 0.3 0.2 1.8 1.8 1.9 1.9 1.7 1.8];
plotsom(net.IW{1,1}, net.layers{1}.distances)
hold on
plot(P(1,:),P(2,:),′*k′,′MarkerSize′,10)
net.trainParam.epochs = 2000;
net.trainParam.show = 100;
net = train(net,P);
plot(P(1,:),P(2,:),′*′,′MarkerSize′,10)
hold on
plotsom(net.IW{1,1}, net.layers{1}.distances)
net.IW{1,1}
a = sim(net,[1.5;1] % a = (3,1) 1
Задание 13. Создать одномерную карту Кохонена из 10 нейронов, обучить её на последовательности из 100 двухэлементных векторов единичной длины, распределенных равномерно в пределах от 0 до 90º, построить график распределения векторов по кластерам и выполнить моделирование сети для одного вектора входа, выполнив следующие команды:
аngels=0 : 0.5 +pi/99 : 0.5*pi;
p=[sin(angels); cos(angels)];
plot(P(1, 1:10:end), P(2, 1:10:end), ′*8′)
hold on
net=newsom([0 1 ;0 1], [10]);
net.trainparam.epochs=2000;
net.trainparam.show=100;
[net,tr]=train(net,P);
plotsom(net.iw{1,1}, net.layers{1}.distances)
figure(2)
a=sim(net,P) % моделирование на обучающем множестве и
% построение столбцовой диаграммы
a=sim(net,[1;0]) % отнесен к 10–му кластеру.
Задание 14. Создать двухмерную карту Кохонена размеров 5´6 с гексагональной топологией, обучить на последовательности из 1000 двухэлементных случайных векторов, элементы которых распределены по равномерному закону в интервале [ –1; 1], и выполнить моделирование, используя команды:
P=rands(2,1000)
plot(P(1,:), P(2,:), ′+′)
net.trainparam.epochs=1000;
net.trainparam.show=100;
net=train(net,P);
plotsom(net, w{1, 2}, net.layers{1}.distances)
a=sim(net, P); bar(sum(a′)) % столбцы
a=sim(net, [0.5; 0.3], hold on
plot(0.5, 0.3, ′*k′).
Литература
- А.В. Сивохин, А.А. Лушников, С.В. Шибанов. Искусственные нейронные сети. – Пенза: Изд-во Пенз. гос. ун-та, 2004. – 136 с.
- Д.А. Тархов. Нейронные сети. Модели и алгоритмы. – М.: Радиотехника, 2005. – 256 с.
- С.Хайкин. Нейронные сети: полный курс, 2-е издание. – М.: Издательский дом «Вильямс», 2006. – 1104 с.
- М.С. Тарков Нейрокомпьютерные системы. – М.: Интернет-Университет Информационных Технологий: Бином. Лаборатория знаний, 2006. – 142 с.
- Р. Тадеусевич, Б. Боровик, Т. Гончаж, Б. Леппер. Элементарное введение в технологию нейронных сетей с примерами программ. – М.: Горячая линия – Телеком, 2011 – 408 с.