Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ Компьютерный практикум.doc
Скачиваний:
486
Добавлен:
20.03.2016
Размер:
3.35 Mб
Скачать
    1. Рекуррентные нейронные сети Хопфилда и Хэмминга

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

Задание: Используя встроенные функции пакета нейронных сетей математической среды 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

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

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).

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

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

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

после 25 инициализаций

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

после 25 инициализаций

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

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

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

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

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

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

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

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

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

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

  7. Чем объясняется невысокая емкость сети Хэмминга?