Опубликован: 27.07.2006 | Доступ: свободный | Студентов: 6114 / 1483 | Оценка: 4.37 / 4.06 | Длительность: 13:49:00
ISBN: 978-5-9556-0049-9
Специальности: Программист
Лекция 8:

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

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

Бинарные системы

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

\begin{gathered}
NET_j=\sum_{i\ne j}w_{ij} OUT_i+IN_j,\\
OUT_j=\left\{\begin{aligned}
1, \quad & \text{если } NET_j>T_j,\\
0, \quad & \text{если } NET_j<T_j,\\
\text{не меняется}, \quad & \text{если } NET_j=T_j.
\end{aligned}\right.
\end{gathered}

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

Задачи, решаемые данной сетью, как правило, формулируются следующим образом. Известен некоторый набор двоичных сигналов (изображений, оцифровок звука, прочих данных, описывающих некие объекты или характеристики процессов), которые считаются образцовыми. Сеть должна уметь из произвольного неидеального сигнала, поданного на ее вход, выделить ("вспомнить" по частичной информации) соответствующий образец (если такой есть) или "дать заключение" о том, что входные данные не соответствуют ни одному из образцов. В общем случае, любой сигнал может быть описан вектором X=\{x_i\colon i=0\ldots
n-1\}, n — число нейронов в сети и размерность входных и выходных векторов. Каждый элемент x_i равен либо 1, либо 0. Обозначим вектор, описывающий k-й образец, через X^k, а его компоненты, соответственно, — x_i^k, k=0,\ldots,m-1, m — число компонентов. Когда сеть распознaет (или "вспомнит") какой-либо образец на основе предъявленных ей данных, ее выходы будут содержать именно его, то есть Y = X^k, где Y --вектор выходных значений сети: Y = \{ y_i\colon
i=0,\ldots,n-1\}. В противном случае, выходной вектор не совпадет ни с одним образцовым.

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

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

w_{ij}=\left\{
\begin{aligned}
\sum_{k=0}^{m-1}x_i^k x_j^k,\quad & \text{если } i\ne j,\\
0,& \text{если } i=j.
\end{aligned}
\right.

Здесь i и j — индексы, соответственно, предсинаптического и постсинаптического нейронов; x_i^k, x_j^ki -й и j -й элементы вектора k -го образца.

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

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

    y_i(0)=x_i,\quad i=0,\ldots,n-1,

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

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

    s_j(p+1)=\sum_{i=0}^{n-1}w_{ij} y_i(p),\quad j=0,\ldots, n-1

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

    y_j(p+1)=f\lfloor s_j(p+1)\rfloor.

    где fактивационная функция в виде скачка.

  3. Проверка, изменились ли выходные значения аксонов за последнюю итерацию. Если да — переход к пункту 2, иначе (если выходы стабилизировались) — конец процедуры. При этом выходной вектор представляет собой образец, наилучшим образом сочетающийся с входными данными.
< Лекция 7 || Лекция 8: 12345 || Лекция 9 >