Notebook "нейронные сети" Глава 2

Вид материалаДокументы
С263. newrb
С265. newrbe
С267. newgrnn
С269. newpnn
С271. newc
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   33

С263. NEWRB


Создадим радиальную базисную сеть для следующей обучающей последовательности при средней квадратичной ошибки 0.1:

P = 0:3; T = [0.0 2.0 4.1 5.9];

net = newrb(P,T,0.1); net.layers{1}.size

gensim(net)


NEWRB, neurons = 0, SSE = 1.80858

ans =

3

Сформированная радиальная базисная сеть имеет 3 нейрона с функцией активации radbas.

Выполним моделирование сети для нового входа

figure(1), clf,

plot(P,T,'*r','MarkerSize',2,'LineWidth',2), hold on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2), grid on

P1 = 0.5:2.5; Y = sim(net,P1)

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2)% Рис.11.21


Y =

1.0346 2.8817 5.5053

С265. NEWRBE


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

P = 0:3; T = [0.0 2.0 4.1 5.9];

net = newrbe(P,T); net.layers{1}.size

ans =

4

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

Выполним моделирование сети для нового входа

figure(1), clf, plot(P,T,'*r','MarkerSize',2,'LineWidth',2)

hold on, grid on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)

P1 = 0.5:2.5; Y = sim(net,P1)

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2)% Рис.11.22


Y =

1.0346 2.8817 5.5053

С267. NEWGRNN


Создадим обобщенную регрессионную сеть с входами P и целями T:

P = 0:3; T = [0.0 2.0 4.1 5.9];

net = newgrnn(P,T); gensim(net)

Выполним моделирование сети для нового входа и построим график:

figure(1), clf, plot(P,T,'*r','MarkerSize',2,'LineWidth',2)

hold on, grid on

V = sim(net,P); % Векторы входа из обучающего множества

plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)

P1 = 0.5:2.5; Y = sim(net,P1);

plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2)% Рис.11.25

Y = sim(net, 0:0.5:3)

Y =

Columns 1 through 4

0.8104 1.3759 2.1424 3.0300

Columns 5 through 7

3.9030 4.6345 5.1615

Из анализа результатов моделирования следует, что на границах интервала расхождения существенны.

Если уменьшить значение параметра влияния до 0.1, то мы получим аппроксимацию высокой точности

net = newgrnn(P,T,0.1); Y = sim(net, 0:0.5:3)


Y =

Columns 1 through 4

0.0000 1.0000 2.0000 3.0500

Columns 5 through 7

4.1000 5.0000 5.9000

С269. NEWPNN


Задача классификации определена множествами входа P и индексов класса Tc:

P = [1 2 3 4 5 6 7]; Tc = [1 2 3 2 2 3 1];

Индексы класса преобразуем в вектор целей и сформируем вероятностную нейронную сеть:

T = ind2vec(Tc);

net = newpnn(P,T); gensim(net)

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

Y = sim(net,P); Yc = vec2ind(Y)


Yc =

1 2 3 2 2 3 1

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

С271. NEWC


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

P = [.1 .8 .1 .9; .2 .9 .1 .8];

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

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

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

net = train(net,P);


TRAINR, Epoch 0/100

TRAINR, Epoch 25/100

TRAINR, Epoch 50/100

TRAINR, Epoch 75/100

TRAINR, Epoch 100/100

TRAINR, Maximum epoch reached.

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

w = net.IW{1}

w =

0.8031 0.8031

0.1536 0.1969

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

figure(1), clf,

plot(P(1,:),P(2,:)','+b','MarkerSize',8, 'Linewidth',2) % Рис.7.3

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

hold on, grid on, axis([0 1,0 1])

plot(w(:,1), w(:,2)', 'or', 'MarkerSize',8, 'Linewidth',2)

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

P1 = [0.2:0.1:0.7; 0.2:0.1:0.7]

Y = sim(net,P1); Yc = vec2ind(Y)


P1 =

Columns 1 through 4

0.2000 0.3000 0.4000 0.5000

0.2000 0.3000 0.4000 0.5000

Columns 5 through 6

0.6000 0.7000

0.6000 0.7000

Yc =

2 2 2 1 1 1