Files
SecondBrain/99 System/Archive/КР - Хопфилд.md
2026-05-31 10:18:48 +03:00

150 lines
5.6 KiB
Markdown

---
status: seed
type: concept
tags: []
created: 2026-05-14
updated: 2026-05-15
aliases:
- КР - Хопфилд
---
# КР - Хопфилд
## Что могут спросить
1. Что такое сеть Хопфилда и для чего она нужна?
2. Почему сеть Хопфилда относится к ассоциативной памяти?
3. Какая у неё архитектура?
4. Как кодируются входные и эталонные образы?
5. Как рассчитываются веса?
6. Как сеть восстанавливает искажённый образ?
7. Какие есть ограничения?
8. Чем сеть Хопфилда отличается от сети Хэмминга?
## Краткий ответ
**Сеть Хопфилда** - однослойная рекуррентная нейронная сеть ассоциативной памяти. Она хранит набор эталонных образов и по искажённому или неполному входу пытается восстановить ближайший эталон.
Если вход похож на один из запомненных образов, сеть в процессе итераций приходит к устойчивому состоянию, соответствующему этому образу.
## Архитектура
- один слой нейронов;
- каждый нейрон связан с другими нейронами;
- выходы нейронов возвращаются на входы;
- связей нейрона с самим собой обычно нет;
- веса задаются один раз по эталонным образам;
- состояние сети пересчитывается до стабилизации.
![[Pasted image 20260515090322.png|400]]
Входной и выходной векторы имеют одинаковую размерность:
$$
X=(x_1,\dots,x_n),\quad x_i \in \{-1,1\}
$$
Эталонный образ:
$$
X^k=(x_1^k,\dots,x_n^k),\quad k=1,\dots,m
$$
где:
- $n$ - число нейронов и размерность образа;
- $m$ - число запоминаемых эталонов;
- $k$ - номер эталонного образа.
## Инициализация весов
Веса рассчитываются по эталонным образам:
$$
w_{ij}=\sum\limits_{k=1}^{m}x_i^kx_j^k,\quad i\neq j
$$
Связь нейрона с самим собой исключается:
$$
w_{ii}=0
$$
Смысл: если два признака часто имеют одинаковый знак в эталонах, связь между ними усиливается; если разные знаки - связь становится отрицательной.
## Алгоритм функционирования
1. На вход подаётся неизвестный или искажённый образ.
Начальное состояние сети:
$$
y_i(0)=x_i,\quad i=0,\dots,n-1
$$
2. Для каждого нейрона считается новое состояние:
$$
s_j(p+1)=\sum\limits_{i=0}^{n-1}w_{ij}y_i(p)
$$
3. Значение нейрона обновляется через пороговую функцию:
$$
y_j(p+1)=f(s_j(p+1))
$$
где обычно:
$$
f(s)=
\begin{cases}
1, & s \ge 0 \\
-1, & s < 0
\end{cases}
$$
4. Шаги повторяются, пока выходы не перестанут изменяться.
Если распознавание успешно:
$$
Y=X^k
$$
То есть сеть восстановила один из эталонных образов.
## Ограничения
Сеть Хопфилда может ошибиться, если:
- запомнено слишком много образов;
- эталоны слишком похожи друг на друга;
- вход слишком сильно искажён;
- сеть пришла к ложному устойчивому состоянию.
Оценка ёмкости:
$$
m \approx 0.15n
$$
где $m$ - число запоминаемых образов, $n$ - число нейронов.
## Отличие от сети Хэмминга
| Сеть | Что выдаёт | Когда нужна |
|---|---|---|
| Хопфилда | восстановленный образ | нужно восстановить полный эталон |
| Хэмминга | номер ближайшего образа | нужно выбрать класс/эталон |
Главная фраза для ответа: **сеть Хопфилда восстанавливает образ, а сеть Хэмминга выбирает ближайший образец по расстоянию Хэмминга**.
## Мини-ответ на контрольной
Сеть Хопфилда - рекуррентная сеть ассоциативной памяти для восстановления эталонного бинарного образа по искажённому входу. Веса рассчитываются один раз по эталонам:
$$
w_{ij}=\sum\limits_{k=1}^{m}x_i^kx_j^k,\quad w_{ii}=0
$$
После подачи входа сеть итеративно пересчитывает состояния нейронов через пороговую функцию, пока выходной вектор не стабилизируется. Если всё прошло успешно, устойчивое состояние совпадает с одним из эталонов.