Polytech-soft.com

ПК журнал
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Нейронная сеть хопфилда

Нейронные сети Хопфилда и Хэмминга

Сети, рассмотренные на предыдущих лекциях, не имели обратных связей , т. е. связей, идущих от выходов сетей к их входам. Отсутствие обратной связи гарантирует безусловную устойчивость сетей. (Они не могут войти в режим, когда выход беспрерывно блуждает от состояния к состоянию и не пригоден для использования.) Но это весьма желательное качество достигается не бесплатно: сети без обратных связей обладают более ограниченными возможностями по сравнению с сетями с обратными связями . Так как сети с обратными связями имеют пути, передающие сигналы от выходов к входам, то отклик таких сетей является динамическим, т. е. после приложения нового входа вычисляется выход и, передаваясь по сети обратной связи , модифицирует вход. Затем выход повторно вычисляется, и процесс повторяется снова и снова. Для устойчивой сети последовательные итерации приводят к все меньшим изменениям выхода, пока в конце концов выход не становится постоянным. Для многих сетей процесс никогда не заканчивается, такие сети называют неустойчивыми. Неустойчивые сети обладают интересными свойствами и изучались в качестве примера хаотических систем. Однако такой большой предмет, как хаос, находится за пределами этого курса. Вместо этого мы сконцентрируем свое внимание на устойчивых сетях, т. е. на тех, которые в завершении процесса дают постоянный выход . Проблема устойчивости ставила в тупик первых исследователей. Никто не мог предсказать, какие из сетей будут устойчивыми, а какие будут находиться в постоянном изменении. Более того, проблема представлялась столь трудной, что многие исследователи были настроены пессимистически относительно возможности ее решения. К счастью, была получена теорема, описавшая подмножество сетей с обратными связями , выходы которых в конце концов достигают устойчивого состояния. Это замечательное достижение открыло дорогу дальнейшим исследованиям, и сегодня многие ученые занимаются исследованием сложного поведения и возможностей этих систем. Дж. Хопфилд сделал важный вклад как в теорию, так и в применение систем с обратными связями . Поэтому некоторые из конфигураций известны как сети Хопфилда .

Конфигурации сетей с обратными связями

Рассмотренный нами ранее персептрон относится к классу сетей с направленным потоком распространения информации и не содержит обратных связей . На этапе функционирования каждый нейрон выполняет свою функцию — передачу возбуждения другим нейронам — ровно один раз. Динамика состояний нейронов является неитерационной.

Несколько более сложной является динамика в сети Кохонена. Конкурентное соревнование нейронов достигается путем итераций, в процессе которых информация многократно передается между нейронами.

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

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

Остановимся на важном частном случае нейросетевой архитектуры, для которой свойства устойчивости подробно исследованы. На рис. 8.1 показана сеть с обратными связями , состоящая из двух слоев. Способ представления несколько отличается от использованного в работе Хопфилда и других сходных, но эквивалентен им с функциональной точки зрения, а также хорошо связан с сетями, рассмотренными на предыдущих лекциях. Нулевой слой, как и на предыдущих рисунках, не выполняет вычислительной функции, а лишь распределяет выходы сети обратно на входы. Каждый нейрон первого слоя вычисляет взвешенную сумму своих входов, давая сигнал NET , который затем с помощью нелинейной функции F преобразуется в сигнал OUT. Эти операции сходны с нейронами других сетей.

Нейронная сеть Хопфилда на пальцах

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

Читать еще:  Как подключить принтер через сеть

Введение

Для начала, необходимо определить, что такое нейрон. В биологии нейрон — специализированная клетка, из которой состоит нервная система. Биологический нейрон имеет строение, показанное на рис.1.

Рис.1 Схема нейрона

Нейронную сеть можно ввести как совокупность нейронов и их взаимосвязей. Следовательно, для того, чтобы определить искусственную (не биологическую) нейронную сеть необходимо:

  1. Задать архитектуру сети;
  2. Определить динамику отдельных элементов сети — нейронов;
  3. Определить правила, по которым нейроны будут взаимодействовать между собой;
  4. Описать алгоритм обучения, т.е. формирования связей для решения поставленной задачи.

В качестве архитектуры нейронной сети будет использоваться сеть Хопфилда. Данная модель, видимо, является наиболее распространенной математической моделью в нейронауке. Это обусловлено ее простотой и наглядность. Сеть Хопфилда показывает, каким образом может быть организована память в сети из элементов, которые не являются очень надежными. Экспериментальные данные показывают, что при увеличении количества вышедших из строя нейронов до 50%, вероятность правильного ответа крайне близка к 100%. Даже поверхностное сопоставление нейронной сети (например, мозга) и Фон-Неймановской ЭВМ показывает, насколько сильно различаются эти объекты: к примеру, частота изменения состояний нейронов («тактовая частота») не превышает 200Гц, тогда как частота изменения состояния элементов современного процессора может достигать нескольких ГГц (Гц).
Формальное описание сети Хопфилда

Сеть состоит из N искусственных нейронов, аксон каждого нейрона связан с дендритами остальных нейронов, образуя обратную связь. Архитектура сети изображена на рис. 2.

Рис.2 Архитектура нейронной сети Хопфилда

Каждый нейрон может находиться в одном из 2-х состояний:

где — состояние нейрона в момент . «Возбуждению» нейрона соответствует , а «торможению» . Дискретность состояний нейрона отражает нелинейный, пороговый характер его функционирования и известный в нейрофизиологи как принцип «все или ничего».

Динамика состояния во времени -ого нейрона в сети из нейронов описывается дискретной динамической системой:

где — матрица весовых коэффициентов, описывающих взаимодействие дендритов -ого нейрона с аксонами -ого нейрона.

Стоит отметить, что и случай не рассматриваются.

Обучение и устойчивость к шуму

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

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

Вычисление квадратной матрицы размера для ключевых образов производится по правилу Хебба:

где означает -ый элемент образа .

Стоит отметить, что в силу коммутативности операции умножения, соблюдается равенство

Входной образ, который предъявляется для распознавания соответствует начальным данным для системы, служащий начальным условием для динамической системы (2):

Уравнений (1), (2), (3), (4) достаточно для определения искусственной нейронной сети Хопфилда и можно перейти к ее реализации.

Реализация нейронной сети Хопфилда

Реализация нейронной сети Хопфилда, определенной выше будет производиться на языке C++. Для упрощения экспериментов, добавим основные определения типов, напрямую связанных с видом нейрона и его передаточной функции в класс simple_neuron, а производные определим далее.

Самыми основными типами, напрямую связанными с нейроном являются:

  1. тип весовых коэффициентов (выбран float);
  2. тип, описывающий состояния нейрона (введен перечислимый тип с 2 допустимыми значениями).

На основе этих типов можно ввести остальные базовые типы:

  1. тип, описывающий состояние сети в момент (выбран стандартный контейнер vector);
  2. тип, описывающий матрицу весовых коэффициентов связей нейронов (выбран контейнер vector контейнеров vector).

Обучение сети, или, вычисление элементов матрицы в соответствии с (3) производится функцией learn_neuro_net, принимающей на вход список обучающих образов и возвращающей объект типа link_coeffs_t. Значения вычисляются только для нижнетреугольных элементов. Значения верхнетреугольных элементов вычисляются в соответствии с (4). Общий вид метода learn_neuro_net показан в листинге 2.

Обновление состояний нейронов реализовано с помощью функтора neuro_net_system. Аргументом метода _do функтора является начальное состояние , являющееся распознаваемых образом (в соответствии с (5)) — ссылка на объект типа neurons_line.

Метод функтора модифицирует передаваемый объект типа neurons_line до состояния нейронной сети в момент времени . Значение жестко не фиксировано и определяется выражением:

т.е., когда состояние каждого нейрона не изменилось за 1 «такт».

Читать еще:  Как настроить локальную сеть для игр

Для вычисления (2) применены 2 алгоритма STL:

  1. std::inner_product для вычисления суммы произведений весовых коэффициентов и состояний нейронов (т.е. вычисление (2) для определенного );
  2. std::transform для вычисления новых значений для каждого нейрона (т.е. вычисление пункта выше для каждого возможного )

Исходный код функтора neurons_net_system и метода calculate класса simple_neuron показан в листинге 3.

Для вывода в консоль входных и выходных образов создан тип neurons_line_print_descriptor, который хранит ссылку на образ и формат форматирования (ширину и высоту прямоугольника, в который будет вписан образ). Для этого типа переопределен оператор Листинг 4. Вывод в поток состояния нейронной сети

Пример работы нейронной сети

Для проверки работоспособности реализации, нейронная сеть была обучена 2 ключевым образам:


Рис.3 Ключевые образы

На вход подавались искаженные образы. Нейронная сеть корректно распознала исходные образы. Искаженные образы и распознанные образы показаны на рис.4, 5


Рис.4 Распознавание образа 1


Рис.5 Распознавание образа 2

Запуск программы производится из командной строки строчкой вида: AppName WIDTH HEIGHT SOURCE_FILE [LEARNE_FILE_N], где:

В репозитории проект CMake, из которого можно сгенерировать проект Visual Studio (VS2015 компилирует проект успешно) или обычные Unix Makefile’ы.

  1. Г.Г. Малинецкий. Математические основы синергетики. Москва, URSS, 2009.
  2. Статья «Нейронная_сеть_Хопфилда» на Википедии.

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

Золотин Игорь Андреевич
Национальный исследовательский
университет «МИЭТ», г. Москва
E-mail: goldin7777@gmail.com

Аннотация. Данная статья посвящена вопросу распознавания образов при помощи нейросетевых технологий. В частности, анализ применения нейронной сети Хопфилда для формирования ассоциативной памяти.

Ключевые слова: нейронная сеть, ассоциативная память.

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

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

Рис. 1.1 Пример сети Хопфилда.

Каждый нейрон может находиться в одном их двух состояний: , где +1 соответствует «возбуждению» нейрона, а -1 «торможению».

Нелинейный, пороговый характер функционирования нейрона отражает дискретность его состояний. В нейрофизиологии такой принцип известен, как «Все или ничего». Динамика состояния во времени i-го нейрона в сети из N нейронов описывается дискретной динамической системой:

где Hi,j – матрица весовых коэффициентов, описывающих взаимодействие дендритов i-го нейрона с аксонами j-го нейрона.

Алгоритм обучения сети Хопфилда существенно отличается от алгоритма обратного распространения ошибки. Вместо последовательного приближения к нужному состоянию с промежуточной коррекцией весов, все коэффициенты рассчитываются по одной формуле и за один шаг, после этого сеть будет готова к работе. Вычисление коэффициентов подчиняется правилу: для всех запомненных образов xi матрица весов Hi,j должна удовлетворять уравнению: xi = Hi,jxi.

Обучение сети Хопфилда выходным образам ς in μ сводится к вычислению значений элементов матрицы Hi,j. Формально можно описать процесс обучения следующим образом: пусть необходимо обучить нейронную сеть распознавать M образов, обозначенных in μ,μ = 1. M> Входной образ представляет собой: где ς’ шум, наложенный на исходный образ ς in μ Фактически обучение нейронной сети – определение нормы в пространстве образов . Тогда очистку входного образа от шума можно описать как минимизацию этого выражения.

Важной характеристикой нейронной сети является отношение числа ключевых образов M, которые могут быть запомнены к числу нейронов сети N:α = M/N. Для сети Хопфилда значение α не больше 0.15.

Вычисление квадратной матрицы размера для ключевых образов производится по правилу Хебба:

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

Для сетей Хопфилда характерны ограничения:

Относительно небольшое число запоминаемых образов (порядка 0.15n где n – число входов).

Достижение устойчивого состояния не гарантирует правильный отклик сети из-за того, что сеть может сойтись к ложным аттракторам.

Результаты и комментарии к ним.

Пример реализации нейронной сети Хопфилда, формирующей ассоциативную память представлен ниже.

Распознаем образы букв: «К», «П», «Т». Представим их в виде «битовых полей» размером 7х7. Имеем три эталонных образа:

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

На вход подается измененная форма:

Спустя 94 итерации эталонная форма определена:

Очевидно, что измененный образ буквы «К» был с успехом распознан. Если повторить распознавание несколько раз, то можно заметить, что каждый раз количество итераций для определения образа разное. Это связано с тем, что нейрон для обновления при каждом цикле выбирается случайным образом.

Теперь на вход приходит образ, похожий одновременно на буквы «П» и «Т».

Однако запустив ее заново, можно увидеть, что за 116 итераций в новом опыте буква все-таки распозналась. Это оказалась «П», так как исходный образ был похож на нее больше, чем на «Т»:

На основании проведенных исследований необходимо отметить, с одной стороны отсутствие проблем с обучением сети Хопфилда при наличии априорной информации о классах объектов, а с другой – достижение устойчивого состояния не гарантирует правильный отклик сети из-за того, что сеть может сойтись к ложным аттракторам (состояние нейронной сети Хопфилда в таком случае является устойчивым, но не дает правильного восстановления образа, при этом сеть может выдать ложный образ, который обычно представляет собой комбинацию фрагментов нескольких образов).

Тархов Д.А. Нейронные сети. Модели и алгоритмы/ Д.А. Тархов – М.: Радиотехника, 2005. – 256 стр.

Richard M.D., Lippman R.P., Neural network classifiers estimate Bayesian discriminant function, Neural Computation Concepts and Theory, 1991, vol 3, pp 461-482.

Хайкин С. Нейронные сети: полный курс, 2-е изд., испр.: Пер. с англ./ Саймон Хайкин. – М.: ООО «И.Д. Вильямс», 2006. – 1104 стр.

Specht, D. The General Regression Neural Network — Rediscovered. Neural Networks, 1993, V.6, pp.1033-1034.

Комарцова Л.Г., Максимов А.В., Нейрокомпьютеры/ Л.Г. Комарцова — М.: Изд-во МГТУ им. Баумана, 2004. – 400 стр.

Нейронная сеть хопфилда

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

В отличии от классических нейронных сетей обучение сети Хопфилда осуществляется достаточно просто. При этом процедура воспоминания образов представляет собой итеративную процедуру.

Посмотрим, как выглядят сети Хопфилда на нашей видео-лекции:

Опишем алгоритм работы сети Хопфилда. На первом этапе нужно обучить сеть, предъявляя ей различные эталонные образы. Пусть каждый образ представляет собой N-мерный вектор
x=[x1,x2. xN],
где xi равняется -1 или 1.

Результатом обучения сети Хопфилда будет матрица, которая отражает веса взаимодействия нейронов. В сети Хопфилда все нейроны взаимодействуют со всеми. В начале обучения все веса принимают нулевые значения. Далее для всех i и j, которые меняются от 1 до N, мы осуществляем следующую процедуру:

Для всех образов выполняем корректировку весов:
wij=wij + xixj,
далее положим
wii=0
и нормируем
wij:=wij/N.
Все, наша сеть обучена!

Процедура распознавания образов осуществляется следующим алгоритмом. Пусть мы ищем образ
Y=[y1,y2. yN],

  1. Цикл по j от 1 до N:
  2. Положим d = 0
  3. Вложенный цикл по i от 1 до N:
  4. d = d + wijyi
  5. Конец вложенного цикла
  6. Если d > 0, то положить zj = 1, иначе zj = -1.
  7. Конец внешнего цикла
  8. Мы получили вектор:
    Z=[z1,z2. zN],
    Если вектор Z содержится во множестве исходных образов, то считаем, что алгоритм нашел образ Z, который соответствует исходному образу Y.
  9. Положим Y = Z
  10. Переход к шагу 1.

Если наш алгоритм не может найти образ, то значит, что сеть Хопфилда не смогла «вспомнить» такой образ.

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

Исходный текст этой программы доступен по адресу AI-HopfieldNET.

Программа написана на C#, поскольку для нее существенную роль играет графика. Приведем код, который собственно реализует работу сети Хопфилда.

Copy Source | Copy HTML

  1. // Обучение сети Хопфилда
  2. void Learning()
  3. <
  4. for ( int i = 0 ; i for ( int j = 0 ; j if (i == j)
  5. <
  6. continue ;
  7. >
  8. for ( int m = 0 ; m // корректировка весов
  9. w[i, j] += Boxes[m][i] * Boxes[m][j];
  10. >
  11. w[i, j] /= N;
  12. >
  13. >
  14. >
  15. // восстановление образа
  16. public TBox Find( TBox BS, int T = 1000 )
  17. <
  18. TBox B = new TBox (BS);
  19. TBox B2 = new TBox (B);
  20. for ( int t = 0 ; t for ( int j = 0 ; j double d = 0 ;
  21. for ( int i = 0 ; i if (d > 0 )
  22. <
  23. B2[j] = 1 ;
  24. >
  25. else
  26. <
  27. B2[j] = — 1 ;
  28. >
  29. >
  30. B = new TBox (B2);
  31. if (Boxes.Find(B))
  32. <
  33. return B;
  34. >
  35. >
  36. return null ;
  37. >

Видим, что собственно работа с сетью Хопфилда довольно проста.

Ссылка на основную публикацию
Adblock
detector