Самоорганизующиеся сети

neWC Слой Кохонена WC

Синтаксис:

net = newc(PR,s,klr,clr)

Описание:

Конкурирующий слой Кохонена относится к классу самоорганизующихся нейронных сетей, которые предназначены для решения задач кластеризации и классификации.

Функция net = newc(PR, s, klr, clr) формирует слой Кохонена и имеет следующие входные и выходные аргументы.

Входные аргументы:

PR – массив размера R´2 из Q минимальных и максимальных значений вектора входа;

s – число нейронов;

klr – параметр настройки функции learnk, по умолчанию 0.01;

clr – параметр настройки функции learncon, по умолчанию 0.001.

Выходные аргументы:

net – объект класса network object, определяющий слой Кохонена.

Свойства:

Конкурирующий слой Кохонена использует функции взвешивания negdist, накопления netsum и активации compet. Веса и смещения слоя инициализируются с помощью
М-функций midpoint и initcon. Адаптация и обучение выполняются функциями adaptwb
и trainwb1, которые модифицируют значения веса и смещения, применяя функции настройки learnk и learncon.

Примеры:

Зададим массив входа P в виде четырех двухэлементных векторов:

P = [.1.8.1.9;

.2.9.1.8];

Необходимо определить центры группирования (кластеризации) близких векторов.
В этой задаче интуитивно ясно, что существует 2 таких центра. Поэтому сформируем слой Кохонена с двумя нейронами и определим диапазон расположения входных векторов в интервале [0 1]:

net = newc([0 1; 0 1],2);

gensim(net) % Рис.11.26

На рис. 11.26 показана структура конкурирующего слоя Кохонена.

 

Рис. 11.26

Выполним настройку параметров слоя, чтобы решить задачу для заданного входа:

net = train(net,P);

Центры кластеризации расположены в точках

w = net.IW{1}

w =

0.8031 0.8031

0.1536 0.1969

Построим на плоскости входных векторов точки кластеризации и сами входные векторы:

plot(P(1,:), P(2,:),'+k') % Рис.11.27

title(' Векторы входа'), xlabel('P(1,:)'), ylabel('P(2,:)')

hold on

plot(w, 'or')

Рис. 11.27

На рис. 11.27 явно выделены 2 центра кластеризации, отмеченные цифрами 1 и 2.

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

P1 = [0.2:0.1:0.7;

0.2:0.1:0.7]

Y = sim(net,P1);

Yc = vec2ind(Y)

P1 =

0.2000 0.3000 0.4000 0.5000 0.6000 0.7000

0.2000 0.3000 0.4000 0.5000 0.6000 0.7000

Yc = 2 2 2 1 1 1

Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, ADAPTWB, TRAINWB1.

neWSOM Карта Кохонена SOM

Синтаксис:

net = newsom(PR,[d1,d2,...],tfcn,dfcn,olr,osteps,tlr,tnd)

Описание:

Карта Кохонена относится к классу самоорганизующихся многослойных нейронных сетей, которые предназначены для решения задач кластеризации и классификации.

Функция net = newsom(PR, [d1, d2,...], tfcn, dfcn, olr, osteps, tlr, tnd) формирует многомерную карту Кохонена и имеет следующие входные и выходные аргументы.

Входные аргументы:

PR – массив размера R´2 из Q минимальных и максимальных значений вектора входа;

di – число нейронов по i-размерности карты, по умолчанию двумерная карта с числом нейронов [5 8];

tfcn – функция топологии карты, по умолчанию hextop;

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

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

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

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

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

Выходные аргументы:

net – объект класса network object, определяющий многомерную самоорганизующуюся карту Кохонена.

Свойства сети:

Самоорганизующаяся карта Кохонена имеет единственный слой с функциями взвешивания negdist, накопления netsum и активации compet. Слой характеризуется весовой матрицей входа, но не имеет смещений. Инициализация слоя реализуется с помощью функции midpoint. Адаптация и обучение выполняются функциями adaptwb и trainwb1, которые используют функцию настройки learnsom. Топология карты задается функциями hextop, gridtop и randtop. Функциями расстояния могут быть выбраны из списка {linkdist | dist | mandist}.

Пример:

Задан случайный вектор входа, элементы которого расположены в диапазонах [0 2]
и [0 1]. Построить двумерную самоорганизующуюся карту Кохонена с числом нейронов [3 5] для классификации входных векторов:

P = [rand(1,400)*2; rand(1,400)];

net = newsom([0 2; 0 1],[3 5]);

gensim(net) % Рис. 11.28

Структура карты Кохонена показана на рис. 11.28 и включает 15 функций взвешивания negdist, функции накопления netsum и активации compet.

 

Рис. 11.28

Построим топологию двумерной карты Кохонена (рис. 11.29):

plotsom(net.layers{1}.positions) % Рис.11.29

Рис. 11.29

Затем реализуется процедура обучения. Следует отметить, что процедура обучения длится достаточно долго; компьютер с частотой 500 MГц просчитывает 25 циклов приблизительно за 90 с, и строятся входные векторы с их отображениями (рис.10.30), которые формируются весами SOM:

net.trainparam.epochs = 2000;

net = train(net,P);

plot(P(1,:),P(2,:),’.g’,’markersize’,10)

hold on

plotsom(net.iw{1,1},net.layers{1}.distances)

Рис. 11.30

Промоделируем обученную карту Кохонена на массиве векторов входа (рис. 11.31):

a = sim(net,P);

bar(sum(a')) % Рис.11.31

Рис. 11.31

Из анализа рис. 11.31 следует, что количество входных векторов, отнесенных к определенному кластеру, колеблется от 12 до 35. Таким образом, в процессе обучения двумерная самоорганизующаяся карта Кохонена выполнила кластеризацию массива векторов входа.

Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, ADAPTWB, TRAINWB1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: