Этот пример демонстрирует обучение двумерной карты Кохонена. Сначала создадим обучающий набор случайных двумерных векторов, элементы которых распределены
по равномерному закону в интервале [–1 1]:
P = rands(2,1000);
plot(P(1,:),P(2,:),'+') % Рис.7.14
Рис. 7.14
Для кластеризации векторов входа создадим самоорганизующуюся карту Кохонена размера 5´6 с 30 нейронами, размещенными на гексагональной сетке:
net = newsom([–1 1; –1 1],[5,6]);
net.trainParam.epochs = 1000;
net.trainParam.show = 100;
net = train(net,P);
plotsom(net.IW{1,1},net.layers{1}.distances)
Результирующая карта после этапа размещения показана на рис. 7.15, а. Продолжим обучение и зафиксируем карту после 1000 шагов этапа подстройки (рис. 7.15, б), а затем после 4000 шагов (рис. 7.15, в). Нетрудно убедиться, что нейроны карты весьма равномерно покрывают область векторов входа.
а | б | в |
Рис. 7.15
Определим принадлежность нового вектора к одному из кластеров карты Кохонена
и построим соответствующую вершину вектора на рис. 7.15, в:
a = sim(net,[0.5;0.3])
a = (19,1) 1
hold on, plot(0.5,0.3,'*k') % Рис.7.15,в
Нетрудно убедиться, что вектор отнесен к 19-му кластеру.
Промоделируем обученную карту Кохонена, используя массив векторов входа:
a = sim(net,P);
bar(sum(a')) % Рис.7.16
Из анализа рис. 7.16 следует, что количество векторов входной последовательности, отнесенных к определенному кластеру, колеблется от 13 до 50.
Рис. 7.16
Таким образом, в процессе обучения двумерная самоорганизующаяся карта Кохонена выполнила кластеризацию массива векторов входа. Следует отметить, что на этапе размещения было выполнено лишь 20 % от общего числа шагов обучения, т. е. 80 % общего времени обучения связано с тонкой подстройкой весовых векторов. Фактически на этом этапе выполняется в определенной степени классификация входных векторов.
Слой нейронов карты Кохонена можно представлять в виде гибкой сетки, которая натянута на пространство входных векторов. В процессе обучения карты, в отличие от обучения слоя Кохонена, участвуют соседи нейрона-победителя, и, таким образом, топологическая карта выглядит более упорядоченной, чем области кластеризации слоя Кохонена.
Читатель может продолжить изучение самоорганизующихся сетей, обратившись
к демонстрационным программам demosm1 и demosm2.