Описание
В этой статье подробно рассматривается работа "Hopfield Networks is All You Need" и сопутствующий слой Hopfield для PyTorch. Начинается с прослеживания эволюции от классических сетей Хопфилда, которые хранят и извлекают бинарные паттерны с использованием функции энергии и синхронных или асинхронных обновлений, до современных сетей Хопфилда. Эти современные версии, также известные как плотные ассоциативные памяти (Dense Associative Memories), вводят обобщенную функцию энергии, которая допускает паттерны и состояния с непрерывными значениями, значительно увеличивая емкость хранения.
Основная инновация заключается в новой функции энергии и соответствующем ей правиле обновления. Доказано, что это новое правило математически сходится к локальному минимуму функции энергии. Важно отметить, что показано, что это правило обновления эквивалентно механизму самовнимания, используемому в сетях-трансформерах. Эта связь позволяет беспрепятственно интегрировать слои Хопфилда в архитектуры глубокого обучения, наделяя их возможностями ассоциативной памяти.
В статье представлены три типа слоев Хопфилда: Hopfield, HopfieldPooling и HopfieldLayer. Слои Hopfield предназначены для ассоциации и обработки двух наборов данных, аналогично механизму внимания в трансформерах. HopfieldPooling действует как слой пулинга при использовании одного статического паттерна состояния, обучаясь прототипу паттерна. HopfieldLayer подходит для хранения фиксированных паттернов или обучения внутренних прототипов, где хранимые паттерны являются статическими и могут быть обучены.
Дифференцируемость этих непрерывных слоев Хопфилда делает их идеальными для глубокого обучения. Они могут использоваться как заменяемые компоненты для существующих слоев или для специализированных приложений, таких как обучение с множеством экземпляров (multiple instance learning), обучение на основе наборов (set-based learning) и ассоциативное обучение. В статье также освещается передовое применение в классификации иммунного репертуара (DeepRC), где высокая емкость хранения современных сетей Хопфилда используется для решения сложной задачи обучения с множеством экземпляров в области вычислительной биологии.
Ключевые свойства новой функции энергии включают глобальную сходимость к локальному минимуму, экспоненциальную емкость хранения и сходимость после одного шага обновления. В статье приведены практические примеры и фрагменты кода для иллюстрации использования этих новых слоев Хопфилда в различных контекстах глубокого обучения, подчеркивая их гибкость и мощь.
Главное о Hopfield Layers
Обобщает классические сети Хопфилда на непрерывные состояния и паттерны.
Представляет новую функцию энергии, гарантированно сходящуюся к локальному минимуму.
Правило обновления эквивалентно механизму самовнимания в трансформерах.
Предлагает экспоненциальную емкость хранения.
Обеспечивает быструю сходимость, часто после одного шага обновления.
Дифференцируемый, что позволяет интегрировать его в архитектуры глубокого обучения.
Предоставляет три типа слоев Хопфилда: Hopfield, HopfieldPooling и HopfieldLayer.
Поддерживает ассоциацию двух наборов данных.
Обеспечивает поиск фиксированных паттернов и операции пулинга.
Способствует обучению внутренних прототипов или хранению фиксированных паттернов.
Применим к обучению с множеством экземпляров и обучению на основе наборов.
Используется в передовых приложениях, таких как классификация иммунного репертуара (DeepRC).
Начало работы с Hopfield Layers
Доступ к модели: Используйте реализацию слоя Hopfield для PyTorch.
Интеграция через API: Включите слои Hopfield в архитектуры глубокого обучения.
Настройка параметров: Отрегулируйте такие параметры, как beta (обратная температура), для динамики обучения.
Определение паттернов: Введите хранимые паттерны (Y) и паттерны состояний (R).
Обучение сети: Интегрируйте слои Hopfield в более крупную нейронную сеть для обучения.
Оптимизация: Тонко настройте конфигурации слоев для конкретных задач и наборов данных.
Варианты использования Hopfield Layers
- Извлечение паттернов
- Интеграция в глубокое обучение
- Ассоциативная память
- Внимание к последовательностям
- Обучение с множеством экземпляров
- Обучение на основе наборов
- Классификация иммунного репертуара
- Операции пулинга
- Поиск фиксированных паттернов
- Ассоциативное обучение







