Пример нейронной сети Кохонена


Самоорганизующиеся сети - это самые полезные и неприхотливые сети. Вот один из их примеров.

 

% Этот способ обучения сети вам понадобиться, если вы не знаете цели (значение Т).

% Как видите из этого графика, система сама автоматически определила и разнесла центры кластеров.

% Также имеются параметры для тонкой настройки этой сети, их можно посмотреть при обучении сети, такие как количество эпох, градиент, погрешность и т.д.,

% к ним нужно обращаться как имя_сети.команда, например net.time

 

% Сеть - самоорганизующаяся сеть Кохонена

% Количество нейронов - 4

% База знаний - z

% Размерность базы знаний - 2х200

% Зададим одно из множеств значений кластера №1.

% Центром кластера будет является точка (3;0) с небольшим разбросом от центра rand(1,30) и количеством отсчетов 50.


% Т.е x1 и y1 будет являться массивом размерность 1х30

y1=0+rand(1,30)

x1=3+rand(1,30)


% посмотрим получившиеся значения

plot(x1,y1,'ob')

распределение первого кластера

% Также зададим множество значений для второго кластера с центром (-3;0)

y2=0+rand(1,30)

x2=-3+rand(1,30)


% Также можно посмотреть получившиеся значения

plot(x2,y2,'or')

распределение второго кластера

% Далее зададим третий и четвертый кластеры с центрами

% (0;3) и (0;-3)

y3=3+rand(1,30)

x3=0+rand(1,30)

x4=0+rand(1,30)

y4=-2+rand(1,30)


% Для полной наглядности посмотрим все кластеры на одном графике.

% Посмотрим что у нас получилось на figure (1)

figure (1)

hold on

plot(x3,y3,'og')

plot(x4,y4,'oy')

plot(x1,y1,'ob')

plot(x2,y2,'or')

grid on

hold off

распределение четырех кластера

% Зададим цели наших четырех кластеров

T3(1:30)=10;

T4(1:30)=20;

T1(1:30)=30;

T2(1:30)=40;


% Также как в примере про feed forward сети, соединим все цели кластеров

T(1:30)=T1;

T(31:60)=T2;

T(61:90)=T3;

T(91:120)=T4;


% Перед тек подавать это на вход нейросети,

% нам необходимо соединить всю базу знаний для нейронной

% системы в одну матрицу, а именно соедимим x и y и все

% это присвоим в переменную z

x(1:30)=x1;

x(31:60)=x2;

x(61:90)=x3;

x(91:120)=x4;

y(1:30)=y1;

y(31:60)=y2;

y(61:90)=y3;

y(91:120)=y4;

z(1,1:120)=x

z(2,1:120)=y


% Зададим сетку карты Кохонена гексогональную 2х2,

% так как этого нам вполне хватит

net = newsom(z,[2 2]);

% Проведем цикл обучения

net = train(net, z)

nntraintool при обучение сети Кохонена

 

% Вот так выглядит карта Кохонена, которую мы задали

nntraintool при обучение сети Кохонена

 

% Вот так распределились по кластерам все спектры,

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

nntraintool при обучение сети Кохонена


% Вот так распределились центры кластеров нейронной сети Кохонена

nntraintool при обучение сети Кохонена


% Теперь проверим получившуюся сеть на тех

% спектрах с помощью, которых мы обучали сеть

a = sim(net,z)

% Аналогично можете проверить на других спектрах

 

% Этот способ обучения сети вам понадобиться, если вы не знаете цели (значение Т).

% Как видите из этого графика, система сама автоматически определила и разнесла центры кластеров.

% Также имеются параметры для тонкой настройки этой сети, их можно посмотреть при обучении сети, такие как колличество эпох, градиент, погрешность и т.д.,

% к ним нужно обращаться как имя_сети.команда, например net.time

%

%

% Сеть - самоорганизующаяся сеть Кохонена

% Колличество нейронов - 4

% База знаний - z

% Размерность базы знаний - 2х200

% Зададим одно из множеств значений кластера №1.

% Центром кластера будет является точка (3;0) с небольшим разбросом от центра rand(1,30) и колличеством отсчетов 50.

% Т.е x1 и y1 будет являться массивом размерность 1х30

y1=0+rand(1,30)

x1=3+rand(1,30)

% посмотрим получившиеся значения

plot(x1,y1)

% Также зададим множество значений для второго кластера с центром (-3;0)

y2=0+rand(1,30)

x2=-3+rand(1,30)

% Также можно посмотреть получившиеся значения

plot(x2,y2)

% Далее зададим третий и четвертый кластеры с центрами

% (0;3) и (0;-3)

y3=3+rand(1,30)

x3=0+rand(1,30)

x4=0+rand(1,30)

y4=-2+rand(1,30)

% Для полной наглядности посмтрим все кластеры на

% одном графике. Посмотрим что у нас получилось на figure (1)

figure (1)

hold on

plot(x3,y3,'og')

plot(x4,y4,'oy')

plot(x1,y1,'ob')

plot(x2,y2,'or')

grid on

hold off

% Зададим цели наших четырех кластеров

T3(1:50)=10;

T4(1:50)=20;

T1(1:50)=30;

T2(1:50)=40;

% Также как в примере про feed forward сети, соединим все цели кластеров

T(1:30)=T1;

T(31:60)=T2;

T(61:90)=T3;

T(91:120)=T4;

% Перед тек подавать это на вход нейросети,

% нам необходимо соединить всю базу знаний для нейронной

% системы в одну матрицу, а именно соедимим x и y и все

% это присвоим в переменную z

x(1:30)=x1;

x(31:60)=x2;

x(61:90)=x3;

x(91:120)=x4;

y(1:30)=y1;

y(31:60)=y2;

y(61:90)=y3;

y(91:120)=y4;

z(1,1:200)=x

z(2,1:200)=y

% зададим сетку карты Кохонена гексогональную 2х2,

% так как этого нам вполне хватит

net = newsom(z,[2 2]);

% Проведем цикл обучения

net = train(net, z)

% Теперь проверим получившуюся сеть на тех

% спектрах с помощью, которых мы обучали сеть

a = sim(net,z)

% Аналогично можете проверить на других спектрах

Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!


Комментарии 

 
+1 #2 Виктор 12.12.2012 15:15
что в конечном результате реализует эта сеть?и где ее можно применить?
Цитировать
 
 
+9 #1 Александр 27.11.2011 11:49
хмммм, интересный пример
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Сайт создан в Seo-Dubna.ru