vault backup: 2026-05-14 12:24:36
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
---
|
||||
status: seed
|
||||
type: concept
|
||||
tags:
|
||||
- machine-learning
|
||||
- neural-networks
|
||||
- associative-memory
|
||||
created: 2025-12-17
|
||||
updated: 2026-05-14
|
||||
title: Сеть Хэмминга
|
||||
---
|
||||
|
||||
# Сеть Хэмминга
|
||||
|
||||
**Сеть Хэмминга** - нейронная сеть ассоциативной памяти, которая выбирает ближайший эталонный образ по входному сигналу. Она удобна, когда не нужно восстанавливать образ явно, а достаточно получить номер или класс ближайшего эталона.
|
||||
|
||||
По сравнению с [[Сеть Хопфилда|сетью Хопфилда]], сеть Хэмминга обычно требует меньше памяти и вычислений.
|
||||
|
||||
## Идея
|
||||
|
||||
Сеть сравнивает неизвестный входной образ со всеми сохранёнными эталонами. Для бинарных векторов близость связана с расстоянием Хэмминга: числом отличающихся битов в двух бинарных векторах.
|
||||
|
||||
Сеть должна выбрать эталон с минимальным расстоянием до входного сигнала. В результате активным остаётся один выходной нейрон, соответствующий выбранному образу.
|
||||
|
||||
![[Pasted image 20260514120654.png]]
|
||||
|
||||
## Архитектура
|
||||
|
||||
Сеть состоит из двух слоёв:
|
||||
|
||||
- первый слой вычисляет близость входного вектора к каждому эталону;
|
||||
- второй слой реализует конкуренцию между эталонами.
|
||||
|
||||
Количество нейронов во втором слое равно количеству эталонных образов. Победить должен один нейрон - тот, который соответствует ближайшему эталону.
|
||||
|
||||
Первый и второй слои имеют по $m$ нейронов, где $m$ - число эталонных образов. Нейроны первого слоя имеют по $n$ синапсов, соединённых со входами сети. Эти входы можно рассматривать как фиксированный нулевой слой.
|
||||
|
||||
Нейроны второго слоя связаны между собой ингибиторными обратными связями:
|
||||
|
||||
- связь нейрона с самим собой имеет вес $+1$;
|
||||
- связи с другими нейронами имеют отрицательный вес $-\varepsilon$.
|
||||
|
||||
Параметр $\varepsilon$ выбирают так, чтобы:
|
||||
|
||||
$$
|
||||
0 < \varepsilon < \frac{1}{m}
|
||||
$$
|
||||
|
||||
Ингибиторные связи постепенно подавляют менее подходящие эталоны, пока активным не останется один победивший нейрон.
|
||||
|
||||
## Алгоритм функционирования
|
||||
|
||||
На стадии инициализации весовым коэффициентам первого слоя и порогам функции активации присваиваются значения:
|
||||
|
||||
$$
|
||||
w_{ik}=\frac{x_i^k}{2},\quad i=0,\dots,n-1,\quad k=0,\dots,m-1
|
||||
$$
|
||||
|
||||
$$
|
||||
T_k=\frac{n}{2},\quad k=0,\dots,m-1
|
||||
$$
|
||||
|
||||
где $x_i^k$ - $i$-й элемент $k$-го эталонного образа.
|
||||
|
||||
Весовые коэффициенты тормозящих синапсов второго слоя берут равными небольшой величине $\varepsilon$. Синапс нейрона, связанный с его же аксоном, имеет вес $+1$.
|
||||
|
||||
1. На входы сети подаётся неизвестный вектор:
|
||||
|
||||
$$
|
||||
X=\{x_i:i=0,\dots,n-1\}
|
||||
$$
|
||||
|
||||
После этого рассчитываются состояния нейронов первого слоя:
|
||||
|
||||
$$
|
||||
y_j^{(1)}=s_j^{(1)}=\sum\limits_{i=1}^{n-1}w_{ij}x_i+T_j
|
||||
$$
|
||||
|
||||
Полученными значениями инициализируются значения аксонов второго слоя:
|
||||
|
||||
$$
|
||||
y_j^{(2)}=y_j^{(1)},\quad j=0,\dots,m-1
|
||||
$$
|
||||
|
||||
2. Вычисляются новые состояния нейронов второго слоя:
|
||||
|
||||
$$
|
||||
s_j^{(2)}(p+1)=y_j^{(2)}(p)-\varepsilon\sum\limits_{\substack{k=0\\k\neq j}}^{m-1}y_k^{(2)}(p),\quad j=0,\dots,m-1
|
||||
$$
|
||||
|
||||
Затем вычисляются значения их аксонов:
|
||||
|
||||
$$
|
||||
y_j^{(2)}(p+1)=f[s_j^{(2)}(p+1)]
|
||||
$$
|
||||
|
||||
3. Проверяется, изменились ли выходы нейронов второго слоя за последнюю итерацию. Если изменились, сеть возвращается к шагу 2. Если нет, работа завершается.
|
||||
|
||||
Функция активации $f$ используется как пороговая функция. Порог должен быть выбран так, чтобы возможные значения аргумента не приводили к нежелательному насыщению.
|
||||
|
||||
## Замечание о первом слое
|
||||
|
||||
Роль первого слоя условна: после вычисления начальных значений сеть больше к нему не обращается. Поэтому первый слой можно заменить матрицей весовых коэффициентов.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[Сеть Хопфилда]]
|
||||
- [[Расстояние между объектами]]
|
||||
- [[Нейронные сети]]
|
||||
Reference in New Issue
Block a user