Использование псевдоинверсии для синтеза сети Хопфилда

Для синтеза сети Хопфилда можно использовать псевдоинверсию [4]. Такой подход называют еще обучением сети Хопфилда методом проекций. Подход основан на предположении, что при правильно подобранных весах каждая поданная на вход выборка генерирует на выходе самоё себя. Применительно к известным целевым векторам Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru в матричной форме можно записать

Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru ,

где Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru — неизвестная матрица весов размерностью Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru (в сети Хопфилда число нейронов равно числу входов), Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru — известная матрица Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru , составленная из Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru целевых векторов.

Необходимо найти матрицу Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru . Так как Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru — прямоугольная матрица, то для нахождения Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru можно использовать псевдообратную матрицу [13]

Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru ,

где Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru — псевдообратная матрица (матрица Мура‑Пенроуза) для Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru .

В MATLAB псевдообратную матрицу вычисляет функция pinv, основанная на сингулярном разложении (SVD) матрицы Использование псевдоинверсии для синтеза сети Хопфилда - student2.ru [13]. Этот метод обладает большой устойчивостью к неточностям задания элементов матрицы и погрешностям округления. Тогда

W=T*pinv(T).

Программу Hopfield_pinv.m, использующую псевдоинверсию для синтеза сети Хопфилда, построим на основе программы Hopfield.m.Отличие состоит в вычислении матрицы весов по формуле W=T*pinv(T) и присвоении весам модели, созданной стандартной функцией newhop(T), вычисленных значений. Смещения принимаются нулевыми [14].

% Синтез сети Хопфилда с использованием псевдоинверсии

clear % очистка рабочего пространства

clc % очистка командного окна

close all % Закрытие всех окон

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

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

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

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

title('Точки равновесия сети Хопфилда');

xlabel('a(1)'), ylabel('a(2)');

grid on;

disp('Нажмите Enter')

pause

% Создание сети

disp('Веса, вычисленные псевдоинверсией');

WP=T*pinv(T) % Вычисление весов методом псевдоинверсии

net=newhop(T); % Синтез модифицированной сети Хопфилда

disp('Веса модифицированной сети Хопфилда');

W=net.LW{1,1} % Веса модифицированной сети

%b=net.b{1,1} % СмещениЯ модифицированной сети

% Присвоение параметрам модифицированной сети значений,

% полученных псевдоинверсией

b=[0;0;0]; %В сети, синтезированной псевдоинверсией, нулевой вектор b

W={WP}; % Преобразование в массив ячеек

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

Ai = {T};

Y = net(cell(1,2),{},Ai);

disp('Проверка принадлежности вершин квадрата к сети Хопфилда');

Y{1,1}

% Поведение сети при случайных начальных условиях

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

hold on;

axis([-1.5 1.5 -1.5 1.5]);

xlabel('a(1)'), ylabel('a(2)');

for i=1:25

a={[-1.5; -1.5]+3*rand(2,1)}; % случайный вектор

Y=net(cell(1,50), {}, a); %модел. при случ. нач. условиях

% Y - массив ячеек, соответствующих каждому шагу моделирования

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

start=cell2mat(a);

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

end

grid on

title('Поведение сети при случайных начальных условиях');

Веса, вычисленные с помощью псевдоинверсии, несколько отличаются от весов модифицированной сети Хопфилда

Веса, вычисленные псевдоинверсией

WP =

1.0000 -0.0000

0 1.0000

Веса модифицированной сети Хопфилда

W =

1.1618 0

0 1.1618

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

Задания

1. Проделайте все примеры, приведенные в работе.

2. Исследуйте влияние числа временных шагов на достижение устойчивого состояния модифицированной сети Хопфилда и сети, синтезированной с использование псевдоинверсии.

Наши рекомендации