Искусственные нейронные сети




Скачать 1.3 Mb.
страница 14/17
Дата 27.09.2016
Размер 1.3 Mb.
1   ...   9   10   11   12   13   14   15   16   17

Лабораторная работа № 12

Исследование самоорганизующихся
карт Кохонена


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

Теоретические сведения

Cамоорганизующаяся карта Кохонена – это однослойная нейронная сеть без смешения с конкурирующей функцией compet, имеющая определенную топологию размещения нейронов в N-мерном пространстве. В отличие от слоя Кохонена карта Кохонена после обучения поддерживает такое топологическое свойство, когда близким входным векторам соответствуют близко расположенные активные нейроны.

Первоначальная топология размещения нейронов в карте Кохонена формируется при создание карты с помощью функции newsom, одним из параметров которого является имя топологической функции gridtop, nextop или randtop, что соответствует размещению нейронов в узлах либо прямоугольной, либо гексагональной сетки, либо в узлах сетки со случайной топологией.

Расстояния между нейронами и векторами входов вычисляются с помощью следующих функций:

dist – евклидово расстояние d=sqrt((posi-pj).^2);

boxdist – максимальное координатное смещение d=max(abs(posi-pj));

mandist – расстояние суммарного координатного смещения d=sum(abs(posi-pj));

linkdist – расстояние связи

Формирование саморганизующейся карты Кохонена осуществляется функцией



net=newsom(PR,[d1, d2,…],tfcn, dfсn, olr, osteps, tlr, tnd)),
где Pr – массив размера R*2 минимальных значений векторов входа;

d1, d2…– число нейронов по iразмерности карты. По умолчанию – двумерная карта с числом нейронов 5*8;

tfсn – функция топологии карты, по умолчанию nextop;

dfcn – функция расстояния, по умолчанию linkdist;

olr – параметр скорости обучения на этапе размещения, по умолчанию 0.9;

osteps – число циклов обучения на этапе подстройки, по умолчанию 1000;

tlr – параметр скорости на этапе подстройки, по умолчанию 0.02;

tnd – размер окрестности на этапе подстройки, по умолчанию 1.

Настройка карты Кохонена производится по каждому входному вектору независимо от того, применяется метод адаптации или метод обучения. В любом случае функция learnsom выполняет настройку карты нейронов.

Прежде всего определяется нейрон-победитель и корректируется его вектор весов и векторы соседних нейронов согласно соотношению

dw=lr*A2*(p′ – w),

где lr – параметр скорости обучения, равный olr для этапа упорядочения нейронов и tlr для этапа подстройки;



A2 – массив соседства для нейронов, расположенных в окрестности нейрона-победителя i:

Здесь а(i,q) – элемент выхода нейронной сети;

D(i,j) – расстояние между нейронами i и j;

nd – размер окрестности нейрона-победителя.

Таким образом, вес нейрона-победителя изменяется пропорционально половинному параметру скорости обучения, а веса соседних нейронов – пропорционально половинному значению этого параметра.

Весь процесс обучения карты Кохонена делится на два этапа:

А) этап упорядоченности векторов весовых коэффициентов в пространстве признаков;

Б) этап подстройки весов нейронов по отношению к набору векторов входа.

На этапе упорядочения используется фиксированное количество шагов. Начальный размер окрестности назначается равным максимальному расстоянию между нейронами для выбранной топологии и затем уменьшается до величины, используемой на следующем этапе, и вычисляется по следующей формуле:

nd=1.00001+(max(d)-1)(1-s/S),

где max(d) – максимальное расстояние между нейронами; s – номер текущего шага, а S – количество циклов на этапе упорядочения.

Параметр скорости обучения изменяется по правилу

lr =tlr+(olr-tlr)(1-s/S).

На этапе подстройки, который продолжается в течение оставшейся части процедуры обучения, размер окрестности остается постоянным и равным



nd=tnd+0.00001,

а параметр скорости обучения изменяется по следующему правилу



lr= tlr*S/s.

Параметр скорости обучения продолжает уменьшаться, но очень медленно. Малое значение окрестности и медленное уменьшение параметра скорости обучения хорошо настраивают сеть при сохранении размещения, найденного на предыдущем этапе. Число шагов на этапе подстройки должно значительно превышать число шагов на этапе размещения. На этом этапе происходит тонкая настройка весов нейронов по отношению к набору векторов входов.

Нейроны карты Кохонена будут упорядочиваться так, чтобы при равномерной плотности векторов входа нейроны также были распределены равномерно. Если векторы входа распределены неравномерно, то и нейроны будут иметь тенденцию распределяться в соответствии с плотностью размещения векторов входа.

Таким образом, при обучении карты Кохонена решается не только задачи кластеризации входных векторов, но и выполняется частичная классификация.



Практические задания

Задание 1. Рассчитать положение нейронов на четырехмерной сетке с прямоугольной топологией размера 5*4*3*2 и сделать попытку построить график расположения нейронов, выполнив следующие команды:

pos=gridtop(5,4,3,2) %массив координат узлов размера N*S,

% где N – количество измерений, равное 4,
% а – количество узлов сетки,
% равное произведению числа нейронов по
% каждому измерению 5*4*3*2=120;


plotsom(pos) % – вывод только трех размерностей.

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

р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], holdon

plot(0.5, 0.3, ′*k′).
1   ...   9   10   11   12   13   14   15   16   17


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница