89 lines
5.1 KiB
Markdown
89 lines
5.1 KiB
Markdown
---
|
|
status: seed
|
|
type: concept
|
|
tags:
|
|
- machine-learning
|
|
- neural-networks
|
|
- associative-memory
|
|
created: 2025-12-17
|
|
updated: 2026-05-14
|
|
title: Сеть Хопфилда
|
|
---
|
|
|
|
# Сеть Хопфилда
|
|
|
|
**Сеть Хопфилда** - однослойная рекуррентная [[Нейронные сети|нейронная сеть]], используемая как ассоциативная память. Она получает входной, возможно искажённый, образ и постепенно приводит состояние сети к одному из сохранённых эталонов.
|
|
|
|
В отличие от [[Сеть Хэмминга|сети Хэмминга]], сеть Хопфилда выдаёт не номер ближайшего образа, а сам восстановленный образ.
|
|
|
|
## Идея
|
|
|
|
Сеть хранит набор эталонных образов как устойчивые состояния. При подаче входного сигнала значения выходов нейронов инициализируются этим сигналом, после чего сеть итеративно пересчитывает состояния. Если вход близок к одному из эталонов, динамика сети должна сойтись к нему.
|
|
|
|
По смыслу входной образ работает как ключ: сеть "вспоминает" наиболее близкий сохранённый образ.
|
|
|
|
## Архитектура
|
|
|
|
Основные свойства сети Хопфилда:
|
|
|
|
- каждый нейрон связан с другими нейронами;
|
|
- выходы нейронов возвращаются на входы сети;
|
|
- связь нейрона с самим собой обычно исключается;
|
|
- веса задаются заранее по эталонным образам;
|
|
- состояние сети изменяется до стабилизации.
|
|
|
|
Инициализация сети задаёт начальные выходы нейронов. При функционировании сеть изменяет состояние до тех пор, пока не придёт к устойчивому образу. Если входной сигнал близок к одному из сохранённых эталонов, сеть восстанавливает этот эталон.
|
|
|
|
Для сети Хопфилда часто используется бинарная функция активации, описанная в [[Нейронные сети]].
|
|
|
|
## Алгоритм функционирования
|
|
|
|
1. На вход подаётся неизвестный сигнал. Фактически ввод выполняется установкой начальных значений аксонов:
|
|
|
|
$$
|
|
y_i(0)=x_i,\quad i=0,\dots,n-1
|
|
$$
|
|
|
|
Ноль в скобках обозначает нулевую итерацию работы сети.
|
|
|
|
2. Рассчитывается новое состояние нейронов:
|
|
|
|
$$
|
|
s_j(p+1)=\sum\limits_{i=1}^{n-1}w_{ij}y_i(p),\quad j=0,\dots,n-1
|
|
$$
|
|
|
|
После этого вычисляются новые значения аксонов:
|
|
|
|
$$
|
|
y_j(p+1)=f[s_j(p+1)]
|
|
$$
|
|
|
|
где $f$ - функция активации в виде скачка.
|
|
|
|
![[Pasted image 20260514115340.png|300]]
|
|
|
|
3. Проверяется, изменились ли выходные значения за последнюю итерацию. Если изменились, сеть возвращается к пересчёту состояний. Если выходы стабилизировались, работа завершается.
|
|
|
|
Итоговый выходной вектор считается образом, который лучше всего соответствует входным данным.
|
|
|
|
## Ограничения
|
|
|
|
Сеть Хопфилда может не распознать образ корректно и выдать несуществующий эталон. Это связано с ограниченной ёмкостью ассоциативной памяти.
|
|
|
|
Для сети Хопфилда число запоминаемых образов обычно не должно превышать:
|
|
|
|
$$
|
|
m \approx 0.15n
|
|
$$
|
|
|
|
где $n$ - число нейронов.
|
|
|
|
Если два эталона слишком похожи, возможны перекрёстные ассоциации: предъявление первого образа может привести к восстановлению второго, и наоборот.
|
|
|
|
Сеть Хопфилда хорошо подходит для восстановления или завершения образа, но не предназначена для явного сопоставления образа с номером класса. Для такой задачи удобнее [[Сеть Хэмминга]].
|
|
|
|
## Связанные заметки
|
|
|
|
- [[Сеть Хэмминга]]
|
|
- [[Нейронные сети]]
|