Hopfield Networks
Сети Хопфилда — это рекуррентные ассоциативные системы памяти, которые восстанавливают сохранённые шаблоны по зашумлённым подсказкам, связывая поиск на основе энергии с современным механизмом внимания.
Сети Хопфилда — это рекуррентные нейронные сети, которые хранят шаблоны и восстанавливают их по неполным или искажённым входным данным. Они работают как ассоциативная память: часть шаблона служит подсказкой для восстановления целого. Сохранённое воспоминание ведёт себя как долина в энергетическом ландшафте, а изменяющееся состояние сети стремится к ближайшей долине.
Джон Дж. Хопфилд представил эту модель в 1982 году в своей работе о коллективных вычислениях в нейронных сетях. «Сеть Хопфилда», «сеть Хопфилда» и «модель Хопфилда» — распространённые синонимы. Эта архитектура относится к семейству рекуррентных нейронных сетей, поскольку обратные связи многократно обновляют её внутреннее состояние.
Как сети Хопфилда хранят и восстанавливают шаблоны#
Классическая сеть Хопфилда состоит из взаимосвязанных нейронов, состояния которых обычно представлены значениями −1 или +1. Её веса модели симметричны: сила связи от нейрона A к нейрону B равна силе связи от B к A. В стандартных конфигурациях собственные связи нейронов равны нулю. Обучение по правилу Хебба сохраняет шаблоны, усиливая связи между нейронами, состояния которых совпадают в сохранённых примерах. С вычислительной точки зрения для этого внешнее произведение каждого шаблона — матрицу попарных произведений — прибавляют к матрице весов.
При восстановлении каждый нейрон суммирует взвешенные входные сигналы и применяет пороговую функцию активации. При асинхронном обновлении за раз изменяется состояние одного нейрона. При симметричных весах, нулевых собственных связях и неизменных состояниях в случае точного совпадения с порогом каждое изменение состояния уменьшает значение энергетической функции, пока сеть не достигнет устойчивой конфигурации. Такая конфигурация называется аттрактором; начальные состояния, которые сходятся к нему, образуют его бассейн притяжения. Одновременное обновление всех нейронов может привести к колебаниям между конфигурациями.
Сохранение и восстановление — это отдельные операции. При сохранении изменяются связи, а при восстановлении — состояния нейронов, тогда как связи остаются неизменными. Поэтому восстановление представляет собой форму оптимизации состояния, а не новый этап обратного распространения ошибки.
Восстановление шаблона на Python#
В следующем примере на PyTorch по правилу Хебба сохраняется один бинарный шаблон, инвертируются два его элемента, а затем память восстанавливается с помощью асинхронных обновлений.
import torch
memory = torch.tensor([1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0])
weights = torch.outer(memory, memory) / memory.numel()
weights.fill_diagonal_(0)
state = memory.clone()
state[[1, 6]] *= -1
initial_errors = int((state != memory).sum())
while True:
previous = state.clone()
for i in range(state.numel()):
field = weights[i] @ state
# Preserve the current state when the weighted input is zero.
if field != 0:
state[i] = field.sign()
if torch.equal(state, previous):
break
print(f"Bit errors: {initial_errors} -> {int((state != memory).sum())}")Результат — Bit errors: 2 -> 0: рекуррентные обновления восстанавливают сохранённый шаблон по искажённой подсказке, используя стандартную динамику ассоциативной памяти.
Непрерывные сети, внимание и приложения#
В непрерывных сетях Хопфилда используются градуированные выходные значения нейронов, например сигмоида, а сама сеть стремится к равновесию. Хопфилд представил эту формулировку в 1984 году. Современные сети Хопфилда расширяют ассоциативную память за счёт других энергетических функций и большей ёмкости хранения; их варианты с непрерывными состояниями работают с векторами вещественных чисел.
В 2020 году Юбер Рамзауэр и его коллеги связали современное восстановление данных сетью Хопфилда с механизмами внимания. Запрос сравнивается с сохранёнными векторами, softmax преобразует оценки сходства в веса, а взвешенная комбинация восстанавливает связанную информацию. Это позволяет интерпретировать операцию внимания в трансформере как работу ассоциативной памяти.
Для представления изображений Ultralytics YOLO26 предоставляет извлечение признаков через model.embed(), возвращая эмбеддинги изображений. Эти векторы представляют значения вещественных чисел, используемые современными слоями ассоциативной памяти.
К проверенным приложениям относятся восстановление сохранённых визуальных шаблонов, агрегирование больших наборов признаков и оптимизация с ограничениями. В 1985 году Хопфилд и Дэвид Танк применили аналоговую сеть к задаче коммивояжёра, закодировав качество маршрута и ограничения в энергетическом ландшафте. Пулинг в современных сетях Хопфилда также используется для классификации иммунного репертуара: информация объединяется по сотням тысяч биологических последовательностей с помощью обучения на множестве экземпляров.
Связанные понятия и ограничения объёма памяти#
Автокодировщик обучается отображению «кодировщик — декодировщик», которое восстанавливает входные данные; классическая сеть Хопфилда восстанавливает шаблоны, приходя к аттракторам. Банк памяти хранит представления для последующего доступа, а динамика Хопфилда определяет, как подсказка восстанавливает связанное с ней состояние.
В классических сетях ошибки восстановления возникают из-за взаимных помех между воспоминаниями. Коррелированные шаблоны создают перекрёстные помехи, а ложные аттракторы могут возвращать смеси сохранённых воспоминаний. Для крупных классических сетей Хебба, в которых хранятся случайные, приблизительно некоррелированные бинарные шаблоны, широко известная оценка ёмкости составляет около 0,14 от числа нейронов, если допускается небольшая доля ошибок восстановления, — примерно 140 шаблонов для 1 000 нейронов.










