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




Лабораторная работа № 4

Проектирование сети Хопфилда

Цель работы.

Приобретение навыков построения и использования сети Хопфилда при помощи команды newhop в среде MatLab.

 

Порядок выполнения работы.

1. Изучить теоретический материал, приведённый в методическом пособии.

2. Изучить пример построения сети Хопфилда в пакете MatLab.

3.Смоделировать нейросеть по представленному примеру.

4. Результаты лабораторной работы оформить в виде отчета.

 

Краткие теоретические сведения

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

Дискретная сеть Хопфилда имеет следующие характеристики: она содержит один слой элементов; каждый элемент связывается со всеми другими элементами, но не связан с самим собой; за один шаг работы обновляется только один элемент сети; элементы обновляются в случайном порядке; выход элемента ограничен значениями 0 или 1.

 

Структура сети Хопфилда.

 

Задача, решаемая данной сетью, как правило, формулируется так. Известен некоторый образцовый набор двоичных сигналов (изображений, звуковых оцифровок, других данных, которые описывают определенные объекты или характеристики процессов). Сеть должна уметь с зашумленого сигнала, представленного на ее вход, выделить ("припомнить" по частичной информации) соответствующий образец или "дать вывод" о том, что входные данные не отвечают ни одному из образцов. Выход сети, не соответствующий ни одному из запомненных сетью примеров, иногда называют химерой.

К сожалению, в настоящее время нет полноценных нейросетевых пакетов, реализующих сеть Хопфилда. Существуют отдельные частные программы, решающие, как правило, узкоспециальные задачи. Исключение составляют некоторые наборы инструментов-приложений к популярным языкам программирования для создания сетей Хопфилда вручную (например, пакет нейросетевых компонентов NeuroBase для языка Delphi компании BaseGroup). Также можно выделить моделирование сети Хопфилда в пакете MatLab, хотя и здесь моделирование происходит на низком уровне без каких-либо графических инструментов или настроек.

 

Функция NEWHOP.

В пакете MatLab присутсвует набор специальных функций для создания и использования нейронных сетей. Набор таких функций объединен в пакет Neural Network Toolbox. Одной из функций пакета является функция для создания сети Хопфилда NEWHOP.

 

Синтаксис: NET = newhop (T)

где T –(R х Q) матрица из Q запоминаемых векторов (значения должны быть 1 или -1).

Функция создает новую рекуррентную нейронную сеть Хопфилда с точками равновесия в точках векторов Т.

Для использования построенной сети используется команда Sim() следующего формата:

Y = sim(net,k,[],A);

где net – созданная ранее сеть, k- количество одновременно подаваемых на вход сети примеров, []- временная задержка между слоями (не используется), А-входной вектор (в случае, когда k>1 - вектора) для распознавания.

Пример 1.

Здесь мы создаем сеть Хопфилда с двумя нейроами, которая должна «запомнить» две точки, каждая из которых имеет три координаты:

 

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

NET = newhop (T);

Можно убедиться, что сеть является стабильной в этих точках. Для этого можно передать на вход сети точно такие же вектора. Если сеть является стабильной, можно ожидать, что выход сети Y будет точно таким же.

Ai = T;

У = SIM (NET, 2, [], Аi.);

У

 

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

 

Ai = {[-0,9; -0,8; 0,7]};

У = SIM (NET, {1 5 },{}, Ai);

Y {1}

 

Результатом будет вектор:

-1

-1

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

 

Пример 2

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

 

T = [+1 -1; -1 +1; +1 +1; -1 -1];

T=T';

plot(T(1,:),T(2,:),'rh','MarkerSize',13), hold on;

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

title('Hopfield Network State Space');

xlabel('a(1)');

ylabel('a(2)');

net = newhop(T);

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

Y

Pause

color = 'rgbmy';

for i=1:25

a = {rands(2,1)};

y = 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,:), color(rem(i,5)+1),'LineWidth',5)

Pause

End

 

На рис. показано поведение обученной сети при случайных начальных условиях a. Видно, что для одной из начальных точек сети не удалось получить эталонный вектор. Результатом работы сети для этой точки стала «химера».

 

 

Задание на работу:

 

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

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: