Использование псевдоинверсии для синтеза сети Хопфилда
Для синтеза сети Хопфилда можно использовать псевдоинверсию [4]. Такой подход называют еще обучением сети Хопфилда методом проекций. Подход основан на предположении, что при правильно подобранных весах каждая поданная на вход выборка генерирует на выходе самоё себя. Применительно к известным целевым векторам в матричной форме можно записать , где — неизвестная матрица весов размерностью (в сети Хопфилда число нейронов равно числу входов), — известная матрица , составленная из целевых векторов. Необходимо найти матрицу . Так как — прямоугольная матрица, то для нахождения можно использовать псевдообратную матрицу [13] , где — псевдообратная матрица (матрица Мура‑Пенроуза) для . В MATLAB псевдообратную матрицу вычисляет функция pinv, основанная на сингулярном разложении (SVD) матрицы [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. Исследуйте влияние числа временных шагов на достижение устойчивого состояния модифицированной сети Хопфилда и сети, синтезированной с использование псевдоинверсии.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (805)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |