Ассоциативная память на основе нейронной сети хопфилда

Нейронные сети ассоциативной памяти

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

Рассматриваются нейронные сети ассоциативной памяти, восстанавливающие по искаженному и/или зашумленному образу ближайший к нему эталонный.

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

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

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

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

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

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

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

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

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

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

Важно

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

Одновременно рассмотренные примеры позволяют сформулировать решаемые ассоциативной памятью задачи:

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

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

Пусть задан набор изэталонов –мерных векторов. Требуется построить сеть, которая при предъявлении на вход произвольного образа – вектора x – давала бы на выходе “наиболее похожий” эталон.

Всюду далее образы и, в том числе, эталоны –мерные векторы с координатами. Эталон, “наиболее похожий” на x – ближайший к x вектор. Легко заметить, что это требование эквивалентно требованию максимальности скалярного произведения векторови:

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

Источник: http://www.intuit.ru/studies/courses/2257/141/lecture/20595

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

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

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

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

Совет

Данной  статье была убрана вся математика и большая часть терминологии, это может показаться неправильным, однако, я думаю, это поможет лучше осознать основную идею. Так же будет предложен пример на  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/

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

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

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

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

Рассмотрим, например, цифру 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/

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

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

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

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

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

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

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

Сеть должна уметь из произвольного неидеального сигнала, поданного на ее вход, выделить (“вспомнить” по частичной информации) соответствующий образец (если такой есть) или “дать заключение” о том, что входные данные не соответствуют ни одному из образцов. В общем случае, любой сигнал может быть описан вектором X = { xi: i=0…

n-1}, n – число нейронов в сети и размерность входных и выходных векторов. Каждый элемент xi равен либо +1, либо -1. Обозначим вектор, описывающий k-ый образец, через Xk, а его компоненты, соответственно, – xik, k=0…m-1, m – число образцов.

Важно

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

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

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

(1)

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

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

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

yi(0) = xi , i = 0…n-1, (2)

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

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

, j=0…n-1 (3)

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

(4)

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

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

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

Совет

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

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

Рис. 3. Структурная схема сети Хэмминга.

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

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

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

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

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

, i=0…n-1, k=0…m-1 (5)Tk = n / 2, k = 0…m-1 (6)

Здесь xik – i-ый элемент k-ого образца.

Весовые коэффициенты тормозящих синапсов во втором слое берут равными некоторой величине 0 < < 1/m. Синапс нейрона, связанный с его же аксоном имеет вес +1.

Алгоритм функционирования сети Хэмминга следующий:

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

1. На входы сети подается неизвестный вектор X = {xi:i=0…n-1}, исходя из которого рассчитываются состояния нейронов первого слоя (верхний индекс в скобках указывает номер слоя):

, j=0…m-1 (7)

После этого полученными значениями инициализируются значения аксонов второго слоя:

yj(2) = yj(1), j = 0…m-1 (8)

2. Вычислить новые состояния нейронов второго слоя:

(9)

и значения их аксонов:

(10)

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

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

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

Источник: http://www.codenet.ru/progr/alg/ai/htm/gl3_5.php

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

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

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

В этой статье я убрал всю математику и большую часть терминологии, что может показаться невежественным, однако, полагаю, так легче понять основную идею. Так же будет разработан пример на 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: @ – – – – – @
@ – – – @ @ –
@ – – @ – – –
@ @ @ – – – –
@ – – @ – – –
@ – – – @ @ –
@ – – – – – @

Видно, модифицированный образ буквы 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/

Ассоциативная память. Адаптивная резонансная теория. Оптические нейронные сети

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

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

Хопфилд разработал ассоциативную память с непрерывными выходами, изменяющимися в пределах от +1 до –1, соответствующих двоичным значениям 0 и 1, Запоминаемая информация кодируется двоичными векторами и хранится в весах согласно следующей формуле:

(6.4)

Совет

где т – число запоминаемых выходных векторов; d – номер запоминаемого выходного вектора; OUTi,j – i-компонента запоминаемого выходного вектора.

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

, (6.5)

где Di – i-й запоминаемый вектор-строка.

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

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

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

Адаптивная резонансная теория включает две парадигмы, каждая из которых определяется формой входных данных и способом их обработки.

АРТ-1 разработана для обработки двоичных входных векторов, в то время как АРТ-2, более позднее обобщение АРТ-1, может классифицировать как двоичные, так и непрерывные векторы. В данной работе рассматривается только АРТ-1.

Читателя, интересующегося АРТ-2, можно отослать к работе [3] для полного изучения этого важного направления. Для краткости АРТ-1 в дальнейшем будем обозначать как APT.

Описание APT

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

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

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

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

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

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

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

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

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

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

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

Важно

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

Источник: https://cyberpedia.su/15xc9d4.html

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

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

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

В конце статьи есть ссылка на исходный код проекта.

Теоретическое описание

Введение

Для начала, необходимо определить, что такое нейрон. В биологии нейрон — специализированная клетка, из которой состоит нервная система. Биологический нейрон имеет строение, показанное на рис.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).

Листинг 1. Определение новых типовstruct simple_neuron { enum state {LOWER_STATE=-1, UPPER_STATE=1}; typedef float coeff_t;

Источник: https://www.pvsm.ru/c-3/123717

Ассоциативная память нейронных сетей



Ассоциативная память нейронных сетей

Искусственные нейронные сети (ИНС) строятся по принципам организации и функционирования их биологических аналогов.

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

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

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

Термин «нейронные сети» сформировался к середине 50-х годов ХХ века. Основные результаты в этой области связаны с именами У. Маккалоха, Д. Хебба, Ф. Розенблатта, М. Минского, Дж. Хопфилда.

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

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

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

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

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

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

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

Важно

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

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

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

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

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

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

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

Одновременно рассмотренные примеры позволяют сформулировать решаемые ассоциативной памятью задачи:

Совет

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

2.      Отфильтровать из входной информации недостоверную, а на основании оставшейся решить первую задачу.

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

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

Ассоциативный способ доступа к информации обеспечивает:

• практически одновременный доступ ко всей хранящейся в памяти информации;

• относительную независимость времени поиска информации от емкости памяти;

• внесение элементов обработки информации непосредственно в процесс самого доступа;

• обработку информации непосредственно в среде ее хранения.

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

2.1.1. Ассоциации

Существуют различные концепции ассоциативной памяти. Однако все они предполагают наличие следующих элементов:

• логико-запоминающей среды, являющейся носителем информации;

• множества записанных в памяти информационных объектов;

• структуры взаимосвязей между информационными объектами;

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

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

Эти отношения содержат компоненты двух типов, первые из которых задают сами информационные объекты, а вторые  вид отношений.

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

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

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

2.1.2. Модели ассоциативной памяти

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

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

• соотнесение поисковой информации с хранимой и дополнение ее (инициализация) до точного описания объекта, т.е. всей информации, которая доступна ассоциативной памяти;

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

Одна из простейших моделей ассоциативной памяти для отображения таких отношений показана на рис. 2.1.

Модель состоит из ассоциативной логико-запоминающей среды (нейронной сети), связанной с двумя каналами ввода и одним каналом вывода информации.

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

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

Рис. 2.1. Модель ассоциативной памяти

Важно

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

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

Рис. 2.2. Модель ассоциативной памяти

с образной связью

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

  Процесс работы памяти будем рассматривать в предположении, что тройка [(), (), (-)] представляет собой единый статический образ, заданный в момент времени , причем возможна его одновременная запись в память за одну операцию. Допустим также, что на этапе записи () и () одинаковы.

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

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

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

Таким образом, выбирается вся записанная последовательность образов вместе с контекстной информацией.

Совет

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

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

3.      Архитектура, алгоритм Функционирования и режимы работы сети Хопфилда

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

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

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

Рис. 1. – Схема сети Хопфилда

Сеть Хопфилда состоит из N искусственных нейронов. Граница ёмкости памяти для сети (то есть количество образов, которое она может запомнить) составляет приблизительно 15% от числа нейронов в слое Хопфилда (N*0,15).  При этом запоминаемые образы не должны быть сильно коррелированны.

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

Каждый нейрон системы может принимать одно из двух состояний (что аналогично выходу нейрона с пороговой функцией активации):

Благодаря своей биполярной природе нейроны сети Хопфилда иногда называют спинами.

Взаимодействие спинов сети описывается выражением («энергетической» функцией, которая уменьшается в процессе функционирования сети):

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

где wij элемент матрицы взаимодействий W, которая состоит из весовых коэффициентов связей между нейронами. В эту матрицу в процессе обучения записывается М «образов» — N-мерных бинарных векторов: Sm = (sm1,sm2,…,smN).

В сети Хопфилда матрица связей является симметричной (wij = wji), а диагональные элементы матрицы полагаются равными нулю (wii = 0), что исключает эффект воздействия нейрона на самого себя и является необходимым для сети Хопфилда.

Источник: http://student.zoomru.ru/informat/associativnaya-pamyat-nejronnyh-setej/127826.1003871.s1.html

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