Лабораторная работа № 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′).

Литература

  1. А.В. Сивохин, А.А. Лушников, С.В. Шибанов. Искусственные нейронные сети. – Пенза: Изд-во Пенз. гос. ун-та, 2004. – 136 с.
  2. Д.А. Тархов. Нейронные сети. Модели и алгоритмы. – М.: Радиотехника, 2005. – 256 с.
  3. С.Хайкин. Нейронные сети: полный курс, 2-е издание. – М.: Издательский дом «Вильямс», 2006. – 1104 с.
  4. М.С. Тарков Нейрокомпьютерные системы. – М.: Интернет-Университет Информационных Технологий: Бином. Лаборатория знаний, 2006. – 142 с.
  5. Р. Тадеусевич, Б. Боровик, Т. Гончаж, Б. Леппер. Элементарное введение в технологию нейронных сетей с примерами программ. – М.: Горячая линия – Телеком, 2011 – 408 с.