Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2015_for_stud_Практика_С.doc
Скачиваний:
16
Добавлен:
17.03.2016
Размер:
1.69 Mб
Скачать

3. Зміст звіту по практичній роботі

1. Назва і мета роботи.

2. Постановка задачі (завдання).

3. Приклад розв’язання завдання.

Контрольні запитання

Задачі для самостійного розв’язання з теми 5

Варіанти завдань: класифікація зображень

варіанту

Розпізнати зображення символів або фігур при наявності виправлень (шуму)

1

Зображення біологічних об’єктів у вигляді клітин

2

Зображення біологічних об’єктів – результат КТ

3

Зображення біологічних об’єктів – результат МРТ

4

Зображення біологічних об’єктів системи травлення

5

Зображення біологічних об’єктів серцево-судинної системи

6

Зображення біологічних об’єктів кровоносної системи

7

Зображення біологічних об’єктів видільної системи

8

Зображення біологічних об’єктів опорно-рухової системи

Аудиторна робота

1. %ART1 Neural Net

clc; clear;

b=[0.57 0.0 0.3;0.0 0.0 0.3;0.0 0.57 0.3;0.0 0.47 0.3];

t=[1 1 0 0;1 0 0 1;1 1 1 1];

vp=0.4;

L=2;

x=[1 0 1 1];

s=x;

ns=sum(s);

y=x*b;

con=1;

while con

for i=1:3

if y(i)==max(y)

J=i;

end

end

x=s.*t(J,:);

nx=sum(x);

if nx/ns >= vp

b(:,J)=L*x(:)/(L-1+nx);

t(J,:)=x(1,:);

con=0;

else

y(J)=-1;

con=1;

end

if y+1==0

con=0;

end

end

disp('Top Down Weights');

disp(t);

disp('Bottom up Weights');

disp(b);

Output

Top-down Weights

1 1 0 0

1 0 0 1

1 1 1 1

Bottom-up Weights

0.5700 0.6667 0.3000

0 0 0.3000

0 0 0.3000

0 0.6667 0.3000

%ART1 Neural Net for pattern classification

clc; close all; clear all;

q=3;r=3;

W12=zeros(q,r)+0.5;

W21=ones(q,r);

P(:,1)=[0.000 1.000 0.000]; %ORANGE

P(:,2)=[1.000 0.000 0.000]; %APPlE1

P(:,3)=[1.000 1.000 0.000]; %APPlE2

y1= P(:,1);

y2=W12*y1;

if max(y2)==y2(1) & max(y2)==y2(2)

y2=[1; 0; 0];

else

if max(y2)==y2(2) & max(y2)==y2(3)

y2=[0; 1; 0];

end;

wi21=W21*y2

rab1=size(P(1,:)); b=rab1(2);1

alfa=0.5;

y1=[0;0];

s1=abs(sum(W(1,:)-P(1,:)));

s2=abs(sum(W(2,:)-P(2,:)));

while (s1 > 0.0005 && s2 > 0.0005)

y1(1)= W(1,:)*P(1,:)'+b;

y1(2)= W(2,:)*P(2,:)'+b;

W(1,:)=(W(1,:)'+alfa*y1(1)*(P(1,:)'-W(1,:)'))';

W(2,:)=(W(2,:)'+alfa*y1(2)*(P(2,:)'-W(2,:)'))';

s1=abs(sum(W(1,:)-P(1,:)));

s2=abs(sum(W(2,:)-P(2,:)));

end;

W1=W; % W2=[1 -0.5; -0.5 1]

for i=1:q

for j=1:q

if i==j

W2(i,j) =1;

else

W2(i,j)=-0.5

end; end;end

y1=[0;0]; Pt=[-1.000; -1.000; -1.000];

y1=purelin(W1*Pt+b);

y2=[0;0]

while (y2~=y1)

y2=poslin(W2*y1); y1=y2;

end;

for i=1:q

if y2(i)>0

s=sprintf('This is class #%d', i); disp (s);break;

else

s=sprintf('This is class #%d', i); disp (s);break;

end; end;

y2

clc; clear;

vp=0.5;

m=15;

L=40;

n=63;

epn=1;

b=zeros(n,m)+1/(1+n);

t=zeros(m,n)+1;

data=open('data.mat');

s=data.x;

figure(1);

k=1;

for i=1:3

for j=1:7

charplot(s(k,:),10+(j-1)*15,50-(i-1)*15,9,7);

k=k+1;

end

end

axis([0 110 0 60]);

title('Input Pattern');

con=1;

epoch=0;

while con

for I=1:21

x=s(I,:);

y=zeros(1,m);

ns=sum(s(I,:));

for j=1:m

if y(j)~=-1

for i=1:63

y(j)=b(i,j)*x(i);

end

end

end

con1=1;

while con1

for j=1:m

if y(j)==max(y)

J=j;

break;

end

end

if y(J)==-1

con1=0;

else

for i=1:n

x(i)=s(I,i)*t(J,i);

end

nx=sum(x);

if nx/ns <vp

y(J)=-1;

con1=1;

else

con1=0;

end

end

end

cl(I)=J;

for i=1:n

b(i,J)=L*x(i)/(L-1+nx);

t(J,i)=x(i);

end

end

epoch=epoch+1;

if epoch==epn

con=0;

end

end

for i=1:n

for j=1:m

if b(i,j)>0

pb(i,j)=1;

else

pb(i,j)=-1;

end

end

end

pb=pb';

figure(2);

k=1;

for i=1:3

for j=1:5

charplot(pb(k,:),10+(j-1)*15,50-(i-1)*15,9,7);

k=k+1;

end

end

axis([0 110 0 60]);

title('Final weight matrix after 1 epoch');

subprogram used:

function charplot(x,xs,ys,row,col)

k=1;

for i=1:row

for j=1:col

xl(i,j)=x(k);

k=k+1;

end

end

for i=1:row

for j=1:col

if xl(i,j)==-1

plot(j+xs-1,ys-i+1,'r');

hold on

else

plot(j+xs-1,ys-i+1,'k*');

hold on

end

end

end

%Parameter are assumed

a=10;b=10;

c=0.1;d=0.9;e=0;

alpha=0.6;row=0.9;theta=0.7;

n=2;

m=3;

tw=zeros(m,n);

bw=(zeros(n,m)+1)*1/((1-d)*sqrt(n));

s=[0.59 0.41];

%Update F1 unit activations

u=zeros(1,n);

x=s/(e+norm(s));

w=s;

q=0;p=0;

v=actfun(x,theta);

%Update F1 unit activations again

u=v/(e+norm(v));

w=s+a*u;

p=u;

x=w/(e+norm(w));

q=p/(e+norm(p));

v=actfun(x,theta)+b*actfun(q,theta);

%Compute signals to F2 Units

y=p*bw;

con=1;

while con

for j=1:n

if y(j)==max(y)

J=j;

end

end

u=v/(e+norm(v));

p=u+d*tw(J,:);

r=(u+c*p)/(e+norm(u)+c*norm(p));

if norm(r)>=row-e

w=s+a*u;

x=w/(e+norm(w));

q=p/(e+norm(p));

v=actfun(x,theta)+b*actfun(q,theta);

con=0;

else

y(J)=-1;

if y+1~=0

con=1;

end

end

end

con=1;

no=0;

while con

%Update Weights for Winning Unit

tw(J,:)=alpha*d*u(1,:)+(1+alpha*d*(d-1))*tw(J,:);

bw(:,J)=alpha*d*u(1,:)'+(1+alpha*d*(d-1))*bw(:,J);

u=v/(e+norm(v));

w=s+a*u;

p=u+d*tw(J,:);

x=w/(e+norm(w));

q=p/(e+norm(p));

v=actfun(x,theta)+b*actfun(q,theta);

no=no+1;

if no==10

con=0;

end

end

disp('Number of inputs');

disp(n);

disp('Number Cluster Formed');

disp(m);

disp('Top Down Weight');

disp(tw);

disp('Bottom Up Weight');

disp(bw);

Output

Number of inputs

2

Number Cluster Formed

3

Top Down Weight

0 0

4.2600 0

0 0

Bottom Up Weight

7.0711 8.3188 7.0711

7.0711 4.0588 7.0711

2. При построении классификаторов может возникать проблема стабильности, которая заключается в необходимости постоянного разрешения проблемы: является ли текущий образ искажением "старого", т.е. уже предъявлявшегося ранее, или это "новый" образ, существенно отличающийся от "старых". Восприятие системы должно бытьгнучким (способно воспринимать новую информацию, и при этом - стабильно, т.е. не разрушать память о старых образах). Решение этой проблемы было предложено С.Гроссбергом в теории адаптивного резонанса (ART). Согласно ей общая схема интеллектуальной системы состоит из двух типов памяти: кратковременной (STM) и долговременной (LTM), которые связаны между собой. Текущий входной образ помещается в кратковременную память и сравнивается с хранящимися в долговременной памяти. Если содержимое STM похоже на образ из LTM то возникает состояние резонанса - т.е. система "узнаёт" входной образ. В противном случае текущий входной образ считается "новым". Таким образом реализуется детектор новизны образов.

Сеть ART-1 обучается без учителя, она реализует алгоритм кластеризации, очень похожий на алгоритм "последовательного лидера" (sequential leader clustering algorithm). В соответствии с этим алгоритмом первый входной сигнал считается образцом первого кластера. Следующий входной сигнал сравнивается с образцом первого кластера. Говорят, что входной сигнал "следует за лидером" и принадлежит первому кластеру, если расстояние до образца первого кластера меньше порога. В противном случае второй входной сигнал - образец второго кластера. Этот процесс повторяется для всех следующих входных сигналов. Таким образом, число кластеров растет с течением времени и зависит как от значения порога, так и от метрики расстояния, использующейся для сравнения входных сигналов и образцов классов.

Рис. 5.1.Архитектура сети адаптивных резонансов

Первый слой. Каждый нейронiпервого слоя имеет три входа.

Первый вход это соответствующая компонента xiвходного образа.

Второй вход - сигнал от блока управления G, он выдаётся при активном входеXи неактивном втором слое, это состояние соответствует начальному состоянию сети.

(1)

Третий вход это взвешенный выход нейронов второго слоя , где - выходk-го нейрона второго слоя, - весовой коэффициент.

Второй слой реализует алгоритм "победитель берёт всё" (WTA), поэтому выход только одного нейрона второго слоя будет активен.

Выход нейрона первого слоя будет активен только если активны два или три его входа (т.н. правило "два из трёх").

(2)

Второй слой. Здесь реализуется немного усложнённый алгоритм "победитель берёт всё" (WTA). "Победителем" считается нейрон второго слоя с максимальным состоянием .

(3)

(4)

где - выход -го нейрона первого слоя, - весовой коэффициент.

Выходная активность нейрона-победителя устанавливается равной единице, остальные нейроны остаются неактивны.

(5)

В начале функционирования все веса B и T нейронов, а также параметр сходства получают начальные значения. Согласно теории АРТ, эти значения должны удовлетворять условию

где m - число компонент входного вектора X, значение L>1 (например L=2). Такой выбор весов будет приводить к устойчивому обучению. Уровень сходства выбирается на основе требований решаемой задачи. При высоких значениях этого параметра будет сформировано большое число категорий, к каждой из которых будут относиться только очень похожие вектора. При низком уровнесеть сформирует небольшое число категорий с высокой степенью обобщения.

Процесс обучения происходит без учителя, на основе самоорганизации. Обучение производится для весов нейрона-победителя в случае как успешной, так и неуспеншной классификации. При этом веса вектора B стремятся к нормализованной величине компонент вектора C:

При этом роль нормализации компонент крайне важна. Вектора с большим число единиц приводят к небольшим значениям весов b, и наоборот. Таким образом, произведение

оказывается масштабированным.

Входные паттерны: от 0 до 9. Изображения для распознавания: 22, 33, 44, 55, 88.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]