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.