Files
SecondBrain/90 Library/11 Machine Learning/Сеть Хопфилда.md
T
2026-05-14 12:24:36 +03:00

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$ - число нейронов.
Если два эталона слишком похожи, возможны перекрёстные ассоциации: предъявление первого образа может привести к восстановлению второго, и наоборот.
Сеть Хопфилда хорошо подходит для восстановления или завершения образа, но не предназначена для явного сопоставления образа с номером класса. Для такой задачи удобнее [[Сеть Хэмминга]].
## Связанные заметки
- [[Сеть Хэмминга]]
- [[Нейронные сети]]