Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_IIS2007.doc
Скачиваний:
36
Добавлен:
10.11.2018
Размер:
281.6 Кб
Скачать

Лабораторная работа 7 Сети Хопфилда

Для создания модифицированной сети Хопфилда используется функция newhop

Синтаксис:

net=newhop(T)

Входной аргумент:

Массив T размера RхQ, объединяющий Q целевых векторов (со значениями +1 или –1). R- число элементов входного вектора

Выходные аргументы:

net – объект класса network object

Пример:

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

net = newhop(T);

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

Архитектура сети:

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

В сети используется линейная функция активации с насыщением satlins(),

которая описывается следующим образом:

-1, n<-1

n, -1<=n<=1

1, n>1

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

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

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

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

T = -1 1

T = -1 -1

T = 1 1

Для корректной работе сети необходимо взять обратную матрицу T:

T = T’;

Выполним синтез сети:

net=newhop(T);

gensim(net);

После создания сети можно получить информацию о ее структуре, используя метод layers{}

net.layers{1};

Далее удостоверимся, что разработанная сеть имеет устойчивые состояния в этих двух точках используя функцию sim(net,n,[],AI), аргументами которой будут net – объект типа сеть Хопфилда, n=2- число входных целевых векторов, AI=T-начальное состояние слоя:

АI = T;

Y = sim(net,2,[],AI);

Y

На выходе получим:

Y= -1 1

-1 –1

1 1

Что соответствует точкам равновесия.

Если теперь мы зададим другой начальный массив точек, например

AI={[-0.9,-0.8,-0.7]};

и вызовем функцию sim

Y = sim(net,{1 5},{},AI);

то получим выходной вектор Y= [-1,-1, 1]1:

Y =

-1 -1 -1 -1 -1

-1 -1 -1 -1 -1

1 1 1 1 1

т.е. сеть из заданного начального состояния вернулась в положение равновесия. Следует обратить внимание, что при втором вызове функции sim в качестве входного параметра указывается такт дискретности (1) и количество шагов моделирования (5).

Задание.

  1. Создать в рабочем пространстве MATLAB сеть Хопфилда с четырмя нейронами (входной массив из четырех векторов) и получить о ней информацию используя метод net.layers();

  2. Исследовать поведение сети, задавая начальные условия случайным образом с помощью функции rands(). Вывести результаты на экран функцией plot().

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