Занимательные лекции по нейронным сетям. лекция №8 сети кохонена и гроссберга, хопфилда

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

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

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

Может это определение не выглядит не совсем понятным, но сейчас все встанет на свои места =) Пусть мы хотим сохранить при помощи сети Хопфилда цифры от нуля до девяти (о процессе сохранения мы поговорим чуть позже, пока не будем останавливаться на этом моменте).

Рассмотрим, например, цифру 2, представленную в следующем виде:

Обратите внимание

Пусть сеть уже обучена, то есть эту цифру как и остальные мы сохранили в памяти. Тогда если мы подадим искаженный вариант сохраненной цифры на вход, сеть должна выдать нам правильное изображение сети (то которое мы сохранили при обучении, без искажений). К примеру, подаваемый на вход образец может иметь следующий вид:

Вот, собственно, в этом и состоит задача нейронной сети Хопфилда ) Давайте теперь обсудим структуру сети и непосредственно процесс обучения – запоминания образцов.

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

Здесь мы рассмотрели сеть с четырьмя нейронами.

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

Комбинированный ввод вычисляется по формуле:

Здесь– состояние нейрона с номером i. Если комбинированный ввод элемента оказывается отрицательным, то состояние элемента становится -1, напротив, когда комбинированный ввод положительный – состояние элемента +1. Если же, то нейрон не изменяет своего состояния, то есть сохраняет предыдущее.

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

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

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

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

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

Важно

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

И нам остается только ждать пока сеть перейдет в устойчивое состояние – то есть в результате последующих обновлений ни один из нейронов не будет изменять свое состояние.В результате всех этих процессов мы получим сохраненный (неискаженный) вариант подаваемого на вход образца (вектора).

Вот, собственно, и все )

Еще одним моментом, на котором нельзя не остановиться является вопрос, касающийся устойчивости сети, то есть ее способности остановиться на каком-то конечном состоянии (нейроны неустойчивой сети просто будут бесконечно менять свои состояния). Мы в этой статье ограничимся рассмотрением сетей, работающих в асинхронном режиме (это означает, что в каждый момент времени меняется состояние только одного нейрона). Введем понятие функции энергии системы:

При изменении состояния нейрона j наэнергия изменится на величину:

Под знаком суммы у нас тут комбинированный ввод элемента j. Таким образом, если комбинированный ввод положительный, то и изменение состояния нейрона j положительное (). Аналогично, если, то и. Поэтому изменение энергии всегда будет отрицательным (энергия будет уменьшаться в процессе работы сети), что и гарантирует нам то, что сеть является устойчивой.

Пожалуй, на этом закончим обсуждение теоретических аспектов и, как я и обещал, рассмотрим небольшой практический пример, который нам наглядно продемонстрирует обучение и работу нейронной сети Хопфилда =)

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

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

Определяем весовую матрицу по формуле

:

Не забываем о том, что нам надо обнулить диагональные элементы матрицы:

Весовые значения мы рассчитали, давайте подадим на вход вектори посмотрим, как поведут себя нейроны нашей сети.

Комбинированный ввод первого нейрона будет равен:

Поскольку> 0, то нейрон 1 будет находиться в состоянии +1.

Для второго нейрона:

Нейрон 2 окажется в состоянии -1.

Нейрон 3 – +1.

Нейрон 4 – +1.

Таким образом, мы получили такой вектор:, что соответствует тому образцу, который мы запоминали в первой части примера.

Совет

Как видите, наша сеть работает! =) Если теперь еще раз произвести расчет состояний нейронов в соответствии с теми состояниями, которые они приняли после прохождения векторапо взвешенным связям, то мы увидим, что состояния не изменится, то есть сеть оказалась в устойчивом положении.

На рассмотрении этого примера мы и закончим сегодняшнюю статью. Надеюсь материал окажется понятным и полезным )

Источник: https://microtechnics.ru/nejronnaya-set-xopfilda/

Сеть Хопфилда

Предположим, мы имеем определённое количество начальных образов – изображений, либо чего-нибудь ещё.

Нам предлагают видоизменённый образ, и  задача наша состоит в распознании одного из эталонных шаблонов. Как это сделает человек – вопрос довольно сложный.

А вот как с подобной задачей справится нейронная сеть – такое вполне можно представить. Особенно если это нейронная сеть Хопфилда.

Данной  статье была убрана вся математика и большая часть терминологии, это может показаться неправильным, однако, я думаю, это поможет лучше осознать основную идею. Так же будет предложен пример на  Python, чтобы визуально продемонстрировать работу системы.

Говоря своими словами,  представляет она из себя систему «нейронов», завязанных между собой аналогично сети нейронов в головном мозге.

«Нейрон» в конкретном случае является некоторым обладающим состоянием процессом, поэтому сеть работает параллельно.

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

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

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

Обратите внимание

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

Все они имеют выходы сигнала, которые связываются с выходами всех нейронов, кроме себя:

К сожалению такую сеть ничему практически обучить нельзя. Для этого нам потребуется намного больше нейронов. Сеть, в которой содержится N нейронов запоминает не более ~0.15*N различных образов.

Поэтому рабочая сеть должна использовать достаточно большое количество нейронов. Одно из самых больших недостатков подобной сети – это низкая ёмкость.

К тому же образы не должны сильно походить друг на друга, так как иногда это может вызвать цикличность при распознавании.

Как работает сеть

Образы, которые сеть распознаёт или запоминает представляется вектором который имеет размерность X и n, где n – это число нейронов задействованных в сети.

Выходной же образ будет вектором Y с идентичной размерностью. Каждый вектор будет принимать значения: -1 или +1.

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

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

Обучение сети

Как было ранее сказано, сеть будет строится на вычислении коэффициентов весов. Для этого мы создадим матрицу W с рразмером азмером n x n. При обучении сети некому образу X коэффициенты устанавливаются так:

for i in range(0,n):    for j in range(0,n):        if (i == j):            self.W[i][j] = 0        else:            self.W[i][j] += self.X[i] * self.X[j]

Если нам понадобится научить сеть другому образу, мы поменяем вектор X и снова повторим эту процедуру. Как видите, в матрице записывается сумма  всех значений для всех образов, сеть которым была обучена. Значение элемента установленное в 0 при i==j является отражением  устройства сети, при котором выход определённого нейрона не возвращается на его же вход.

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

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

В самом лучшем варианты сеть правильно распознает образ и отдаст на выход вектор основного образа, похожего на искажённый.

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

Сеть работает до той поры пока результат не будет похож на эталонный образец, либо не превысит порог циклов прохождения. Случайно выбирается определённый нейрон r для обновления. Далее рассчитывается новое состояние s, из нашей матрицы коэффициентов следующим образом:

net = 0for i in range(0, n):    net += Y[i] * W[i][r]s = signum(net)

И обновляем его состояние:

Мы не проводим определённой разницы между входными и выходными векторами и называет их одной переменной, так как выходной вектор рекурсивно возвращается на вход сети.

Пример

Попробуем распознать образы букв, при помощи нашей реализации сети. Представим их в виде «битовых полей» с размером 7х7. У нас будет три эталонных образа и один образ для проверки, после прохождения эмуляции мы получим следующий результат:

Читайте также:  Искусственный интеллект сможет предсказывать инсульты
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 Known Shapes:- @ @ @ @ @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ -@ @ @ @ @ @ @- – – @ – – — – – @ – – — – – @ – – — – – @ – – — – – @ – – — – – @ – – -@ – – – – – @@ – – – @ @ -@ – – @ – – -@ @ @ – – – -@ – – @ – – -@ – – – @ @ -@ – – – – – @Обучение…Изменённая форма:@ @ – – – – -@ – – – @ @ -@ – – @ – – — – @ – – – -@ – – @ – – -@ – – – @ @ -@ @ – – – – @Определение формы…Neuron   6 : -1  ->   1Neuron  43 :  1  ->  -1Neuron  21 : -1  ->   1Neuron  22 : -1  ->   1Neuron   1 :  1  ->  -1Отлично. Через 94 прохода, эталонная форма определена:@ – – – – – @@ – – – @ @ -@ – – @ – – -@ @ @ – – – -@ – – @ – – -@ – – – @ @ -@ – – – – – @

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

А теперь немного помучаем сеть и подадим на распознание букву похожую одновременно на  П и на Т:

123456789101112131415161718192021222324252627282930 Обучение…[ вырезано ]Изменённая форма:@ @ @ @ @ @ @- @ – @ – @ — @ – @ – @ — @ – @ – @ — @ – @ – @ — @ – @ – @ — @ – @ – @ -Определение формы…Neuron  12 :  1  ->  -1Neuron   6 :  1  ->  -1Neuron  40 :  1  ->  -1Neuron   0 :  1  ->  -1Neuron  22 :  1  ->  -1Neuron  17 :  1  ->  -1Neuron  31 :  1  ->  -1Всё плохо, за 273 итерации так и не был найден правильный результат…- @ @ @ @ @ — @ – @ – – — @ – – – @ — – – @ – @ — @ – – – @ — @ – @ – – — @ – @ – @ –

Однако если запустить программу ещё пару раз мы можем наблюдать и вариант, где сеть всё же смогла распознать П (но не Т, так как входящий всё таки больше похож на П):

1234567891011121314151617181920 Определение формы…Neuron   0 :  1  ->  -1Neuron  22 :  1  ->   0Neuron  17 :  1  ->  -1Neuron   6 :  1  ->  -1Neuron  31 :  1  ->  -1Neuron  10 :  1  ->  -1Neuron  38 :  1  ->  -1Neuron  22 :  0  ->   1Neuron  45 :  1  ->  -1Neuron  24 :  1  ->  -1Успешно. За 116 итераций мы нашли правильный результат:- @ @ @ @ @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ — @ – – – @ –

Заключение

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

Как ранее было показано, основная работа сводится к определению весовых коэффициентов сети.

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

Best free WordPress theme

Источник: https://ai-science.ru/set-xopfilda/

Лекции по теории и приложениям искусственных нейронных сетей

Лекции по теории и приложениям искусственных нейронных сетей – страница №7/11

Конфигурация и устойчивость сетей с обратными связями. Модель Хопфилда. Правило обучения Хебба. Ассоциативная память. Распознавание образов.

Модель Хопфилда (J.J.Hopfield, 1982) занимает особое место в ряду нейросетевых моделей. В ней впервые удалось установить связь между нелинейными динамическими системами и нейронными сетями. Образы памяти сети соответствуют устойчивым предельным точкам (аттракторам) динамической системы.

Особенно важной оказалась возможность переноса математического аппарата теории нелинейных динамических систем (и статистической физики вообще) на нейронные сети.

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

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

Сети с обратными связями

Рассмотренный нами ранее ПЕРСЕПТРОН относится к классу сетей с направленным потоком распространения информации и не содержит обратных связей.

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

Несколько более сложной является динамика в сети Кохонена.

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

В общем случае может быть рассмотрена нейронная сеть (см. Рис. 8.1), содержащая произвольные обратные связи, по которым переданное возбуждение возвращается к данному нейрону, и он повторно выполняет свою функцию.

Важно

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

Это свойство существенно расширяет множество типов нейросетевых архитектур, но одновременно приводит к появлению новых проблем.

Рис. 8.1. Фрагменты сетей с прямым рапространением (A) и с наличием обратных связей (B).

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

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

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

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

Нейродинамика в модели Хопфилда

Рассмотрим сеть из N формальных нейронов, в которой степень возбуждения каждого из нейронов Si, i=1..N, может принимать только два значения {-1, +1}. Любой нейрон имеет связь со всеми остальными нейронами Sj, которые в свою очередь связаны с ним. Силу связи от i-го к j-му нейрону обозначим как Wij.

В модели Хопфилда предполагается условие симметричности связей Wij=Wji, с нулевыми диагональными элементами Wii=0. К сожалению, это условие имеет весьма отдаленное отношение к известным свойствам биологических сетей, в которых, наоборот, если один нейрон передает возбуждение другому, то тот, в большинстве случаев, непосредственно не связан с первым.

Однако именно симметричность связей, как будет ясно из дальнейшего, существенно влияет на устойчивость динамики.

Изменение состояния каждого нейрона Sj в модели Хопфилда происходит по известному правилу для формальных нейронов МакКаллока и Питтса. Поступающие на его входы сигналы Si в момент t взвешиваются с весами матрицы связей Wij и суммируются, определяя полный уровень силы входного сигнала:

Далее в момент t+1 нейрон изменяет состояние своего возбуждения в зависимости от уровня сигнала h и индивидуального порога каждого нейрона T:

Совет

Изменение состояний возбуждения всех нейронов может происходить одновременно, в этом случае говорят о параллельной динамике. Рассматривается также и последовательная нейродинамика, при которой в данный момент времени происходит изменение состояния только одного нейрона.

Многочисленные исследования показали, что свойства памяти нейронной сети практически не зависят от типа динамики. При моделировании нейросети на обычном компьютере удобнее последовательная смена состояний нейронов.

В аппаратных реализациях нейросетей Хопфилда применятся параллельная динамика.

Совокупность значений возбуждения всех нейронов Si в некоторый момент времени образует вектор состояния S сети. Нейродинамика приводит к изменению вектора состояния S(t). Вектор состояния описывает траекторию в пространстве состояний нейросети.

Это пространство для сети с двумя уровнями возбуждения каждого нейрона, очевидно, представляет собой множество вершин гиперкуба размерности, равной числу нейронов N. Возможные наборы значений координат вершин гиперкуба (см. Рис.8.

2) и определяют возможные значения вектора состояния.

Рис. 8.2. Проекция 4-х мерного гиперкуба на плоскость. Указанные на рисунке три точки служат примерами возможных состояний нейронной сети из 4-х нейронов.

Рассмотрим теперь проблему устойчивости динамики изменения состояний. Поскольку на каждом временном шаге некоторый нейрон i изменяет свое состояние в соответствии со знаком величины (hi – Ti), то приведенное ниже соотношение всегда неположительно:

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

Введенная таким образом величина E является функцией состояния E=E(S) и называется энергетической функцией (энергией) нейронной сети Хопфилда. Поскольку она обладает свойством невозрастания при динамике сети, то одновременно является для нее функцией Ляпунова (А.М. Ляпунов, 1892).

Обратите внимание

Поведение такой динамической системы устойчиво при любом исходном векторе состояния S(t=0) и при любой симметричной матрице связей W с нулевыми диагональными элементами.

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

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

Эволюция к такому образу соответствует процессу извлечения из памяти. При произвольной матрице связей W образы также произвольны. Для записи в память сети какой-либо осмысленной информации требуется определенное значение весов W, которое может получаться в процессе обучения.

Правило обучения Хебба

Правило обучения для сети Хопфилда опирается на исследования Дональда Хебба (D.Hebb, 1949), который предположил, что синаптическая связь, соединяющая два нейрона будет усиливаться, если в процессе обучения оба нейрона согласованно испытывают возбуждение либо торможение.

Простой алгоритм, реализующий такой механизм обучения, получил название правила Хебба. Рассмотрим его подробно.

Пусть задана обучающая выборка образов  ,  = 1..p.

Требуется построить процесс получения матрицы связей W, такой, что соответствующая нейронная сеть будет иметь в качестве стационарных состояний образы обучающей выборки (значения порогов нейронов T обычно полагаются равными нулю).

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

Покажем, что состояние S= является стационарным для сети Хопфилда с указанной матрицей. Действительно, для любой пары нейронов i и j энергия их взаимодействия в состоянии  достигает своего минимально возможного значения Eij = -(1/2)  i  j  i  j = -1/2.

При этом Е -полная энергия равна E = -(1/2) N 2, что отвечает глобальному минимуму.

Для запоминания других образов может применяется итерационный процесс:

который приводит к полной матрице связей в форме Хебба:

Устойчивость совокупности образов не столь очевидна, как в случае одного образа. Ряд исследований показывает, что нейронная сеть, обученная по правилу Хебба, может в среднем, при больших размерах сети N, хранить не более чем p  0.14 N различных образов. Устойчивость может быть показана для совокупности ортогональных образов, когда

В этом случае для каждого состояния   произведение суммарного входа i-го нейрона hi на величину его активности Si =  i оказывается положительным, следовательно само состояние  является состоянием притяжения (устойчивым аттрактором):

Читайте также:  Samsung начинает проект по разработке беспилотников, роботов и искусственного интеллекта

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

Ассоциативность памяти и задача распознавания образов

Динамический процесс последовательной смены состояний нейронной сети Хопфилда завершается в некотором стационарном состоянии, являющемся локальным минимумом энергетической функции E(S).

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

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

Поскольку для двух двоичных векторов минимальное число изменений компонент, переводящее один вектор в другой, является расстоянием Хемминга  H(S,S), то можно заключить, что динамика сети заканчивается в ближайшем по Хеммингу локальном минимуме энергии.

Пусть состояние S соответствует некоторому идеальному образу памяти.

Тогда эволюцию от состояния S к состоянию S можно сравнить с процедурой постепенного восстановления идеального образа S по его искаженной (зашумленной или неполной) копии S.

Важно

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

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

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

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

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

В рассматриваемой модели сеть содержала 100 нейронов, упорядоченных в матрицу 10 x 10. Сеть обучалась по правилу Хебба на трех идеальных образах – шрифтовых начертаниях латинских букв M, A и G (Рис. 8.3.).

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

Рис. 8.3. Идеальные образы обучающей выборки. Темные квадратики соответствуют нейронам в состоянии +1, светлые -1.

Совет

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

Рис. 8.4. (A) – Один из идеальных образов является стационарной точкой. (Б) – Образ, заданный другим шрифтом, удачно распознается.

Рис. 8.5. (A,Б) – Образы с информационным шумом удачно распознаются.

Рис. 8.6. Образ может быть распознан по небольшому фрагменту.

Рис. 8.7. (A) – Пример релаксации к ложному образу. (Б) – Добавление информации к левой картинке (А) приводит к правильному распознаванию.

Образ на Рис. 8.4.(А) был выбран для тестирования адекватности поведения на идеальной задаче, когда предъявленное изображение точно соответствует информации в памяти.

В этом случае за один шаг было достигнуто стационарное состояние. Образ на Рис. 8.4.(Б) характерен для задач распознавания текста независимо от типа шрифта.

Начальное и конечное изображения безусловно похожи, но попробуйте это объяснить машине!

Задания на Рис. 8.5 характерны для практических приложений. Нейросетевая система способна распознавать практически полностью зашумленные образы. Задачи, соответствующие Рис. 8.6. и 8.7.(Б), демонстрируют замечательное свойство сети Хопфилда ассоциативно узнавать образ по его небольшому фрагменту.

Важнейшей особенностью работы сети является генерация ложных образов. Пример релаксации к ложному образу показан на Рис. 8.7.(А). Ложный образ является устойчивым локальным экстремумом энергии, но не соответствует никакому идеальному образу. Он является в некотором смысле собирательным образом, наследующим черты идеальных собратьев.

Ситуация с ложным образом эквивалентна нашему “Где-то я уже это видел”.

Обратите внимание

В данной простейшей задаче ложный образ является “неверным” решением, и поэтому вреден. Однако, можно надеяться, что такая склонность сети к обобщениям наверняка может быть использована. Характерно, что при увеличении объема полезной информации (сравните Рис. 8.7.(А) и (Б)), исходное состояние попадает в область притяжения требуемого стационарного состояния, и образ распознается.

Несмотря на интересные качества, нейронная сеть в классической модели Хопфилда далека от совершенства. Она обладает относительно скромным объемом памяти, пропорциональным числу нейронов сети N, в то время как системы адресной памяти могут хранить до 2N различных образов, используя N битов.

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

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

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

Источник: http://umotnas.ru/umot/lekcii-po-teorii-i-prilojeniyam-iskusstvennih-nejronnih-setej/page-7

Распознаём образы: Нейронная сеть Хопфилда

Допустим, у нас имеется некоторое количество эталонных образов – изображений, либо ещё чего-нибудь. Нам дают некий искажённый образ, и наша задача состоит в том, чтобы «распознать» в нём один из эталонных.

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

В этой статье я убрал всю математику и большую часть терминологии, что может показаться невежественным, однако, полагаю, так легче понять основную идею. Так же будет разработан пример на Python, чтобы наглядно продемонстрировать всю работу. Ссылка на архив с исходными текстами приведена в конце статьи.

Важно

Говоря неформально, искусственная нейронная сеть представляет собой систему «нейронов», взаимодействующих между собой наподобие настоящей нейронной сети мозга.

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

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

Далее мы рассмотрим программную реализацию нейронной сети Хопфилда, предназначенную для распознавания образов. Она предложена Хопфилдом в 1984 году, а на данный момент разработаны многочисленные её усовершенствования, однако мы рассмотрим именно оригинальную модель.

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

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

Каждый из них имеет выходы сигнала, который подаются на входы всех остальных нейронов, кроме себя самого:

Однако эту сеть нельзя научить практически ничему. Нам нужно намного больше нейронов. Сеть, содержащая N нейронов может запомнить не более ~0.15*N образов.

Так что реальная сеть должна содержать достаточно внушительное количество нейронов. Это одно из существенных недостатков сети Хопфилда – небольшая ёмкость.

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

Как работает сеть

Образ, который сеть запоминает или распознаёт (любой входной образ) может быть представлен в виде вектора X размерностью n, где n – число нейронов в сети. Выходной образ представляется вектором Y с такой же размерностью. Каждый элемент вектора может принимать значения: +1 либо -1 (Можно свести к 0 и 1, однако +1 и -1 удобнее для расчётов).

Конечно, в нашей программной реализации мы не будем непосредственно работать с нейронами, а всего лишь эмулировать их работу при помощи векторов и матрицы коэффициентов

Обучение сети

Как было сказано, обучение сети строится на вычислении весовых коэффициентов. Для этого мы будем поддерживать матрицу W размером n x n. При обучении сети некому образу X коэффициенты устанавливаются так:

for i in range(0,n): for j in range(0,n): if (i == j): self.W[i][j] = 0 else: self.W[i][j] += self.X[i] * self.X[j]

Если нам нужно обучить сеть следующему образу, мы просто меняем вектор X и заново повторяем эту процедуру. Вы видите, в элементах матрице сохраняется сумма значений для всех образов, которым мы обучили сеть. Установка значения элемента в 0 при i==j это отражения устройства сети, когда выход некого нейрона не попадает на его же вход.

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

После того как сеть обучена нескольким эталонным образам мы захотим подать ей на вход некоторый вектор, и попросить её распознать его. Нас могут ожидать несколько исходов.

В идеале сеть распознает образ и выдаст на выход эталонный вектор, соответствующий искажённому.

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

Сеть выполняет следующую работу пока результат не совпадёт с одним из эталонным образов, либо не привесится порог итераций. Случайным образом выбирается нейрон r для обновления. Для него рассчитывается новое состояние s, используя нашу матрицу коэффициентов следующим образом:

net = 0
for i in range(0, n): net += Y[i] * W[i][r] s = signum(net)

Совет

А затем мы обновляем его состояние:

Y[r] = s

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

Пример

Посмотрим как наша реализация сети сможет распознать образы букв. Мы будем представлять их в виде «битовых полей» размера 7х7. Так, имея три эталонных образа и один образ для распознавания, эмуляция нейронной сети даёт следующий результат:

Known Shapes:
– @ @ @ @ @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ – @ @ @ @ @ @ @
– – – @ – – –
– – – @ – – –
– – – @ – – –
– – – @ – – –
– – – @ – – –
– – – @ – – – @ – – – – – @
@ – – – @ @ –
@ – – @ – – –
@ @ @ – – – –
@ – – @ – – –
@ – – – @ @ –
@ – – – – – @ Teaching… Modified shape: @ @ – – – – –
@ – – – @ @ –
@ – – @ – – –
– – @ – – – –
@ – – @ – – –
@ – – – @ @ –
@ @ – – – – @ Shape recognizing… Neuron 6 : -1 -> 1
Neuron 43 : 1 -> -1
Neuron 21 : -1 -> 1
Neuron 22 : -1 -> 1
Neuron 1 : 1 -> -1 Success. Shape recognized in 94 iterations: @ – – – – – @
@ – – – @ @ –
@ – – @ – – –
@ @ @ – – – –
@ – – @ – – –
@ – – – @ @ –
@ – – – – – @

Читайте также:  Новый аппарат nasa подготовит площадку для заселения и развития жизни на марсе

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

А теперь посмотрим, что будем если подать на вход образ, похожий и на П и на Т:

Teaching… [ вырезано ] Modified shape:
@ @ @ @ @ @ @
– @ – @ – @ –
– @ – @ – @ –
– @ – @ – @ –
– @ – @ – @ –
– @ – @ – @ –
– @ – @ – @ – Shape recognizing…
Neuron 12 : 1 -> -1
Neuron 6 : 1 -> -1
Neuron 40 : 1 -> -1
Neuron 0 : 1 -> -1
Neuron 22 : 1 -> -1
Neuron 17 : 1 -> -1
Neuron 31 : 1 -> -1 Fail. Shape not recognized in 273 iterations…
– @ @ @ @ @ –
– @ – @ – – –
– @ – – – @ –
– – – @ – @ –
– @ – – – @ –
– @ – @ – – –
– @ – @ – @ –

Однако запустив программу несколько раз мы сможем наблюдать и такой вариант, когда сеть всё же смогла распознать образ П (а не Т, поскольку входящий образ больше похож именно на П):

Shape recognizing…
Neuron 0 : 1 -> -1
Neuron 22 : 1 -> 0
Neuron 17 : 1 -> -1
Neuron 6 : 1 -> -1
Neuron 31 : 1 -> -1
Neuron 10 : 1 -> -1
Neuron 38 : 1 -> -1
Neuron 22 : 0 -> 1
Neuron 45 : 1 -> -1
Neuron 24 : 1 -> -1 Success. Shape recognized in 116 iterations:
– @ @ @ @ @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –
– @ – – – @ –

Заключение

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

Исходные коды программы доступны здесь.
(ссылка обновлена 23.08.2018)

Источник: https://bitsofmind.wordpress.com/2008/08/05/hopfield_net/

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

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

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

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

В общем случае, любой сигнал может быть описан вектором x = {xi: i = 1, …, n}, n – число нейронов в сети и размерность входных и выходных векторов. Каждый элемент xi равен либо +1, либо -1.

Обозначим вектор, описывающий k-й образец, через xk, а его компоненты, соответственно, – xik, k = 1, …, m, где m – число образцов.

Когда сеть распознает (или “вспомнит”) какой-либо образец на основе предъявленных ей данных, ее выходы будут содержать именно его, то есть y = xk, где y – вектор выходных значений сети: y = {yi: i=1, …, n}. В противном случае, выходной вектор не совпадет ни с одним образцовым.

Рис. 2.18. Структурная схема сети Хопфилда

Если, например, сигналы представляют собой некие изображения, то, отобразив в графическом виде данные с выхода сети, можно будет увидеть картинку, полностью совпадающую с одной из образцовых (в случае успеха) или же “вольную импровизацию” сети (в случае неудачи).

Обратите внимание

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

                                                           (2.43)

Здесь i и j – индексы, соответственно, предсинаптического и постсинаптического нейронов; xik, xjki-й и j-й элементы вектора k-го образца.

Алгоритм функционирования сети следующий (t – номер итерации):

1) На входы сети подается неизвестный сигнал.

Фактически его ввод осуществляется непосредственной установкой значений аксонов:

yi(0) = xi , i = 1, …,n,                                      (2.44)

поэтому обозначение на схеме сети входных синапсов в явном виде носит чисто условный характер. Ноль в скобке справа от yi означает нулевую итерацию в цикле работы сети.

2) Рассчитывается новое состояние нейронов

, j=1, , n                              (2.45)

и новые значения аксонов

,                                            (2.46)

где f – активационная функция в виде скачка, приведенная на рис. 2.19, а.

3) Проводится проверка, изменились ли выходные значения аксонов за последнюю итерацию. Если да – переход к пункту 2, иначе (если выходы застабилизирова-лись) – конец. При этом выходной вектор представляет собой образец, наилучшим образом сочетающийся с входными данными.

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

Для сети Хопфилда число запоминаемых образов m не должно превышать величины, примерно равной 0,15n.

Важно

Кроме того, если два образа A и B сильно похожи, они, возможно, будут вызывать у сети перекрестные ассоциации, то есть предъявление на входы сети вектора A приведет к появлению на ее выходах вектора B и наоборот.

Источник: http://libraryno.ru/neyronnaya-set-hopfilda-iis/

Лекция 6 (4 часа). Основы теории нейронных сетей

Подобный материал:

  • Ю. Н. Шунин Лекции по теории и приложениям искусственных нейронных сетей,Рига,2007, 190.96kb.
  • Нейронные сети: основные положения, 111.38kb.
  • Курсовая работа по дисциплине ” Основы систем искусственного интеллекта” Тема: Опыт, 903.59kb.

  • Нейрокомпьютерная техника: Теория и практика, 2147.23kb.
  • Я. А. Трофимов международный университет природы, общества и человека «Дубна», Дубна, 71.95kb.
  • Ю. Н. Шунин Лекции по теории и приложениям искусственных нейронных сетей, Рига,2007, 444.93kb.

  • Методы обучения систем поддержки принятия решений, 64.31kb.
  • Заочный Государственный Университет Внастоящее время все большее применение в разработке, 64.47kb.
  • Особенности применения нейронных сетей в курсе «Интеллектуальные информационные системы», 82.99kb.

  • Применение аппарата нейронных сетей системы matlab для аппроксимации степенных математических, 50.69kb.
В этом разделе будут рассмотрены различные компоненты однородных (состоящих из нейронов одного типа) и неоднородных нейронных сетей.

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

Звезды Гроссберга

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

Нейрон в форме входной звезды имеет N входов X1…XN, которым соответствуют веса W1…WN, и один выход Y, являющийся взвешенной суммой входов. Входная звезда обучается выдавать сигнал на выходе всякий раз, когда на входы поступает определенный вектор. Таким образом, входная звезда является детектором совокупного состояния своих входов.

Процесс обучения представляется в следующей итерационной форме:

Темп обучения  имеет начальное значение масштаба 0.1 и постепенно уменьшается в процессе обучения. В процессе настройки нейрон учится усредненным обучающим векторам.

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

Нейрон этого типа имеет один вход и M выходов с весами W1…WM, которые обучаются по формуле:

Рекомендуется начать c  порядка единицы и постепенно уменьшать до нуля в процессе обучения. Итерационный процесс будет сходиться к собирательному образу, полученному из совокупности обучающих векторов. Особенностью нейронов в форме звезд Гроссберга является локальность памяти.

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

Образ памяти связывается с определенным нейроном, а не возникает вследствие взаимодействия множества нейронов в сети.

Принцип WTA (Winner Take All) – Победитель Забирает Все – в модели Липпмана-Хемминга

Рассмотрим задачу о принадлежности образа  некоторому классу Xk, определяемому заданными библиотечными образами xk. Каждый из заданных образов обучающей выборки непосредственно определяет свой собственный класс, и таким образом, задача сводится к поиску “ближайшего” образа.

В случае двух двоичных (0-1) образов расстояние между ними может быть определено по Хеммингу, как число несовпадающих компонент. Теперь после вычисления всех попарных расстоянийискомый класс определяется по наименьшему из них. Нейросетевое решение этой задачи может быть получено на основе архитектуры Липпмана-Хемминга.

Сеть имеет один слой одинаковых нейронов, число которых равно количеству классов. Таким образом, каждый нейрон “отвечает” за свой класс. Каждый нейрон связан с каждым из входов, число которых равно размерности рассматриваемых библиотечных образов. Веса связей полагаются равными нормированным библиотечным образам:

Здесь- значение веса связи от n-го входа к m-му нейрону (см.

рис.6.8). Процесс поступления информации о векторе  в нейронную сеть является безитерационным. При этом входной вектор сначала нормируется:

и нейроны принимают начальные уровни активности:

Здесь f(x) – переходная функция (функция активации) нейрона, которая выбирается равной нулю при x

Источник: http://geum.ru/next/art-15520.leaf-5.php

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