Е.С.Борисов
Ассоциативная память - это память с адресацией по содержанию, т.е. выборка и запись в ячейки такой памяти выполняется в зависимости от их содержимого.
Ассоциативную память можно успешно реализовать как нейронную сеть [1,2], которая должна восстанавливать предъявленный слегка измененный образ, например, с наложенным шумом или содержащий лишь важную часть исходного образа. На основе таких систем можно создавать базы знаний, эффективный поиск в которых осуществляется не по ключу, а на основе предъявленного фрагмента требуемого образа.
Ассоциативную память будем строить на основе сети Хопфилда [3], которая представляет собой однослойную нейронную сеть с обратными связями (рис.1) и принадлежит классу т.н. релаксационных нейронных сетей.
Рисунок 1: сеть Хопфилда
В основе функционирования таких сетей лежит итеративный принцип работы. На каждой итерации происходит обработка результата, полученного на предыдущем шаге. Циркуляция информации в нейронной сети происходит до тех пор, пока не установится состояние равновесия, т.е. значения её выходов перестанут изменяться.
Матрица весовых коэффициентов для сети Хопфилда - симметрична wij=wji и имеет нулевую главную диагональ wii=0, т.е. отсутствует обратная связь нейрона на себя.
Хопфилд ввел понятие энергии сети. Главное свойство функции энергии (1) состоит в том, что в процессе эволюции состояний сети она уменьшается и достигает локального минимума - аттрактора, в котором сохраняет постоянное значение.
Все возможные состояния сети можно представить как некое подобие холмистой поверхности. Каждая точка такой поверхности соответствует определенному сочетанию активностей нейронов данной сети, а высота подъема поверхности в данной точке характеризует значение энергии для такого сочетания активностей нейронов. Поведение сети аналогично поведению тяжелого шарика, который скатывается по склону в ближайшую ложбину.
(1)
здесь: E - энергия сети; wij - весовой коэффициент; xi - вход i-го нейрона; yi, yj - выходы нейронов i, j.
Сеть Хопфилда можно использовать как ассоциативную память. В этом случае хранимые в сети образцы являются аттракторами. Ассоциативная память на основе сети Хопфилда работает в двух режимах:
Экспериментально показано, что максимальное число образцов, которые может хранить сеть Хопфилда, 0.15 * n (где n - число нейронов сети). Когда число сохраняемых образцов p < 0.15 * n, данные успешно извлекаются из памяти. Число ложных аттракторов возрастает, когда p достигает емкости сети.
Состояние нейрона номер i определим следующим образом:
(2)
Будем использовать пороговою функцию с порогом T=0 :
(3)
В качестве способа обучения используется метод Хебба [4]:
wij(t+1)=wij(t)+yi(t) * yj(t) (для i = j : wii=0 ) (4)
где
В этом разделе представлены две реализации, описанной выше модели ассоциативной памяти, которые отличаются размерностью сети. Первый вариант - простой, работает с фиксированным набором входных паттернов, представленных в текстовом виде. Второй вариант - работает с картинками в формате BMP.
В начале в память ''записываются'' несколько разных картинок. Далее - памяти предъявляются другие, похожие картинки, по которым восстанавливаются оригиналы.
Данная реализация ассоциативной памяти хранит картинки 10 x 10 символов, используется дискретная сеть Хопфилда из 100нейронов.
Рисунок 2: Результат работы первой программы
На вход ассоциативной памяти подаются картинки в формате BMP, размером 17 x 31 точек, представляющие собой матрицы 51 x 31 байт, таким образом размерность сети 51 x 31 = 1581 нейронов. В программе используется библиотека для работы с картинками GdkPixbuf v.2.
Рисунок 3: Результат работы второй программы