Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

It_Kompyuterny_Praktikum

.Pdf
Скачиваний:
40
Добавлен:
21.03.2016
Размер:
1.65 Mб
Скачать

Рис. 6.16. Выявленные центры кластеров

Рассмотрим применение нейронной сети со слоем Кохонена для кластеризации массива данных из файла clusterdemo.dat, уже использованный нами в п. 5.4. Данный массив имеет размерность 600х3. Используем из данного файла матрицу, состоящую из первых двух столбцов и всех строк. Определим для данного множества 9 кластеров, после чего подадим новый вектор и определим номер кластера, к которому он отнесен:

load clusterdemo.dat

P=[clusterdemo(:,1)'; clusterdemo(:,2)']*100

%создаем НС Кохонена с 9 кластерами (нормальный росто-весовой показатель, избыток веса и недостаток веса)

h=newc([0 105; 0 105],9,.1)

h.trainParam.epochs=100; %Задание количества циклов обучения h=train(h,P)

w=h.IW{1} plot(P(1,:),P(2,:),'^r');

hold on; plot(w(:,1),w(:,2),'ob'); A=62

B=50

p=[A;B]; % Задание нового входного вектора plot(A,B,'+k'),grid

y=sim(h,p)

Результат работы программы представлен на рис.6.17. Кроме того, его можно увидеть в командном окне:

w =

82.0621 89.6343

81

60.3012

8.5841

15.0290

66.3286

46.3310

19.4929

67.0821

27.2685

86.8517

69.9695

34.1376

64.4572

14.8135

47.9045

69.8167

73.3353

y = (5,1)

1

Предъявленный вектор отнесен к пятому кластеру, центр которого имеет координаты (67.0821, 27.2685).

Рис. 6.17. Выявленные кластеры (плюс на рисунке – входной вектор)

Рассмотрим понятие самоорганизующейся карты.

Самоорганизующиеся карты (Self Organizing Maps – SOM) – это одна из разновидностей нейросетевых алгоритмов. Основным отличием данной технологии от рассмотренных нами ранее нейросетей, обучаемых по алгоритму обратного распространения, является то, что при обучении используется метод обучения без учителя, то есть результат обучения зависит только от структуры входных данных. Нейронные сети данного типа часто применяются для решения самых различных задач, от восстановления пропусков в данных до анализа данных и поиска закономерностей, например, в финансовой задаче.

Алгоритм функционирования самообучающихся карт представляет собой один из вариантов кластеризации многомерных векторов. Примером таких алгоритмов может служить алгоритм k-ближайших средних (c-means). Важным отличием алгоритма SOM является то, что в нем все нейроны (узлы, центры классов) упорядочены в некоторую структуру (обычно двумерную

82

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

Структура самоорганизующихся карт. SOM подразумевает использование упорядоченной структуры нейронов. Обычно используются одно и двумерные сетки. При этом каждый нейрон представляет собой n-

мерный вектор-столбец w [w , w ,..., w ]T , где n определяется

1 2

n

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

Обычно нейроны располагаются в узлах двумерной сетки с прямоугольными или шестиугольными ячейками (рис. 6.18.). При этом, как было сказано выше, нейроны также взаимодействуют друг с другом. Величина этого взаимодействия определяется расстоянием между нейронами на карте. На рисунке дан пример расстояния для шестиугольной и четырехугольной сеток.

Рис. 6.18. Расположение нейронов в узлах двумерной сетки с четырехугольными и шестиугольными ячейками

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

При этом количество нейронов в сетке определяет степень детализации результата работы алгоритма, и, в конечном счете, от этого зависит точность обобщающей способности карты.

Начальная инициализация карты. При реализации алгоритма SOM

заранее задается конфигурация сетки (прямоугольная или шестиугольная), а также количество нейронов в сети. Некоторые источники рекомендуют использовать максимально возможное количество нейронов в карте. При этом начальный радиус обучения (neighborhood в англоязычной литературе)

83

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

Перед началом обучения карты необходимо проинициализировать весовые коэффициенты нейронов. Удачно выбранный способ инициализации может существенно ускорить обучение, и привести к получению более качественных результатов. Существуют три способа инициирования начальных весов.

Инициализация случайными значениями, когда всем весам даются малые случайные величины.

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

Линейная инициализация. В этом случае веса инициируются значениями векторов, линейно упорядоченных вдоль линейного подпространства, проходящего между двумя главных собственными векторами исходного набора данных. Собственные вектора могут быть найдены например при помощи процедуры Грама-Шмидта.

Обучение самоорганизующихся карт. Обучение состоит из последовательности коррекций векторов, представляющих собой нейроны. На каждом шаге обучения из исходного набора данным случайно выбирается один из векторов, а затем производится поиск наиболее похожего на него вектора коэффициентов нейронов. При этом выбирается нейрон-победитель, который наиболее похож на вектор входов. Под похожестью в данной задаче понимается расстояние между векторами, обычно вычисляемое в евклидовом пространстве. После того, как найден нейрон-победитель производится корректировка весов нейросети. При этом вектор, описывающий нейронпобедитель и вектора, описывающие его соседей в сетке перемещаются в направлении входного вектора.

Приведем пример использования самоорганизующейся карты на примере двумерных векторов. Используя самоорганизующиеся карты двумерные вектора необходимо разбить на кластеры, затем подать на вход самоорганизующей карты новый вектор и определить кластер к которому он относится.

P=rands(2,100)

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

figure(1)

 

hold on

 

plot(P(1,:),P(2,:),'+r')

%визуальное изображение входных векторов

84

%Создание НС с 3*4 нейронами

%По умолчанию функция TFCN = ‘hextop’, то есть нейроны располагаются в узлах двумерной сетки с шестиугольными ячейками

net=newsom([0 1;0 1],[3 4]);

net.trainParam.epoch=1

%Задание числа циклов настройки

net=train(net,P)

 

% настройка сети

A=0.5

 

 

B=0.3

 

 

p=[A;B];

% Задание нового входного вектора

plot(A,B,'^k') %прорисовка на рисунке входного вектора (черный треугольник) figure(2)

plotsom(net.iw{1,1},net.layers{1}.distances) a=sim(net,p) %опрос сети

Результат работы программы представлен на рис.6.19-6.20.

Рис. 6.19. Входные векторы

85

Рис. 6.20. Выявленные центры кластеров

Результат работы программы можно увидеть и в командном окне:

a=

(12,1) 1

Предъявленный вектор отнесен к двенадцатому кластеру.

Вывод (пример):

В ходе выполнения лабораторной работы я ознакомился с теоретическими сведениями, необходимыми для решения задачи кластеризации с помощью нейронной сети со слоем Кохонена. С использованием встроенных функций пакета нейронных сетей математической среды MATLAB была решена задача кластеризации весоростовых показателей. Также было рассмотрено использование самоорганизующей карты на примере двумерных векторов.

Контрольные вопросы:

1.Что понимается под кластеризацией?

2.Опишите встроенные операторы MATLAB для кластеризации.

3.Опишите сеть Кохонена.

4.Зачем используются самоорганизующиеся карты.

5.Опишите отличие сети Кохонена от SOM.

86

3.4.Рекуррентные нейронные сети Хопфилда и Хэмминга

Цель: Научиться использовать рекуррентные нейронные сети Хопфилда и Хэмминга.

Задание: Используя встроенные функции пакета нейронных сетей математической среды MATLAB рассмотреть использование рекуррентной нейронной сети Хопфилда на примере решения задачи ассоциативной памяти.

Пример выполнения:

Задача. Используя нейронную сеть Хопфилда из поданных на вход неидеальных сигналов восстановить соответствующий образец. Используя нейронную сеть Хэмминга из поданных на вход неидеальных сигналов

восстановить номера соответствующих образцов.

NEWHOP(T) – функция создание рекуррентной сети Хопфилда, использует один входной аргумент, где Т – матрица размерностью RxQ, при этом Q – целевой вектор (значения должны быть +1 или -1), возвращает новую рекуррентную нейронную сеть Хопфилда со стабильными точками в векторе Т.

Рассмотрим сеть Хопфилда с четырьмя устойчивыми точками в двумерном пространстве:

T = [1 -1; -1 1; 1 1; -1 -1]'

%определение 4 целевых стабильных точек

plot(T(1, : ),T(2, : ), '*r')

 

axis([-1.1 1.1 -1.1 1.1]);

 

net =newhop(T);

% создание сети Хопфилда

W=net.LW{1,1}

 

b=net.b{1,1}

 

Ai = T;

 

Y=sim(net,4,[],Ai)

 

plot(T(1, : ),T(2, : ), '*r'), hold on

 

axis([-1.1 1.1 -1.1 1.1])

 

new=newhop(T);

 

[Y,Pf,Af]=sim(net,4,[],T);

%опрос сети

for i=1:25

 

a={rands(2,1)};

%генерация случайного вектора

[Y,Pf,Af]=sim(net,{1,20},{},a);

 

record=[cell2mat(a),cell2mat(Y)]

start=cell2mat(a);

plot(start(1,1), start(2,1),'kx',record(1,:),record(2,:)),grid end

Произведя незначительные изменения в коде программы можно описать сеть в трехмерном пространстве:

87

%построение отрезка между указанной точкой и образцом, расстояние Хэмминга между которыми наименьшее

T = [1 -1 1; -1 1 1; 1 1 1; -1 -1 -1]' %определение 4 целевых стабильных точек plot3(T(1, : ),T(2, : ), T(3, : ), '*r')

net =newhop(T); % создание сети Хопфилда

W=net.LW{1,1}

b=net.b{1,1} Ai = T;

Y=sim(net,4,[],Ai)

plot3(T(1, : ),T(2, : ),T(3, : ), '*r'), hold on new=newhop(T); [Y,Pf,Af]=sim(net,4,[],T);

for i=1:25 a={rands(3,1)};

[Y,Pf,Af]=sim(net,{1,20},{},a);

record=[cell2mat(a),cell2mat(Y)]

start=cell2mat(a);

plot3(start(1,1),

start(2,1),start(3,1),'kx',record(1,:),record(2,:),record(3,:)),grid end

Результат работы программ иллюстрируют рис. 6.21-6.22.

Рассмотрим сеть Хэмминга:

plot ([-1 1], [-1 1], 'm*');

%построение двух стабильных точек (образцов)

xlabel('X'); ylabel('Y');

%подписи осей

 

 

 

W1=[1 1 ; -1 -1 ];

%образцы,

до

которых

рассчитывается

 

расстояние

 

 

 

hold on;

 

 

 

 

b=[3;3];

%значение порога активации

 

W2=[1 -0.5; -0.5 1];

 

 

 

 

vec={[-0.8; 0.6; ]};

%входной вектор, который сравнивается с образцом

Q=cell2mat(vec); Q

%перевод вектора в матрицу

 

plot(Q(1),Q(2), 'r*');

%построение указанной точки

 

a1=purelin(W1*Q+b); a1

%линейная функция активации для первого слоя

 

нейронов

 

 

 

a2=poslin(W2*a1); a2

%положительная линейная функция активации

 

возвращает макс. между 0 и значением матрицы

if a2(1)<a2(2)

X1=[Q(1) -1]; Y1=[Q(2) -1]; plot(X1, Y1, 'r--') else X1=[Q(1) 1]; Y1=[Q(2) 1]; plot(X1, Y1, 'r--') end;

Результат работы программы: a1 = (2.8 3.2), a2 = (1.2 1.8).

88

Расстояние между входной точкой (-0.8, 0.6) и эталонной точкой с координатами (-1,-1) гораздо меньше, чем расстояние между входной точкой и эталонной точкой (1,1), поэтому сеть Хэмминга относит входную точку к эталону (-1,-1).

Результат работы программы иллюстрируется на рис. 6.23.

Рис. 6.21. Результат работы сети Хопфилда в двумерном пространстве после 25 инициализаций

Рис. 6.22. Результат работы сети Хопфилда в трехмерном пространстве после 25 инициализаций

89

Рис. 6.23. Нахождение расстояния Хэмминга в трехмерном пространстве

Вывод (пример):

В ходе выполнения лабораторной работы я ознакомился с теоретическими сведениями о рекуррентных нейронных сетях Хопфилда и Хэмминга. С использованием встроенных функций пакета нейронных сетей среды MATLAB построил сеть Хопфилда, с помощью которой из неидеальных сигналов поданных на вход были восстановлены соответствующие образцы. С использованием среды MATLAB построил сеть Хэмминга, с помощью которой из неидеального сигнала поданного на вход был восстановлен номер соответствующего образца. Был построен отрезок между указанной точкой и образцом, расстояние Хэмминга между которыми наименьшее.

Контрольные вопросы:

1.Почему при классификации нейронных сетей по принципу обучения для сетей Хопфилда и Хэмминга не подходят ни обучение с учителем ни обучение без учителя?

2.Для чего предназначена сеть Хопфилда?

3.В каких случаях сеть Хопфилда не может провести распознание?

4.Чем объясняется невысокая емкость сети Хопфилда?

5.Для чего предназначена сеть Хэмминга?

6.Что называют хэмминговым расстоянием?

90

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