Memory Bank
Узнай, что такое банк памяти в глубоком обучении. Изучи, как банки памяти хранят эмбеддинги для контрастивного обучения, отслеживания объектов и понимания видео.
Memory bank — это структура данных, используемая в алгоритмах машинного обучения для сохранения информации из прошлых итераций или обработанных примеров и обращения к ней, что позволяет эффективно отделить емкость памяти модели от ее текущих вычислительных ограничений. В контексте deep learning (DL) memory bank обычно служит хранилищем для embeddings или векторов признаков. Это позволяет модели сравнивать текущий вход с обширной историей предыдущих входов без необходимости заново обрабатывать все эти данные или удерживать их все в активной оперативной памяти (RAM) одновременно. Сохраняя буфер представлений, модели могут учиться на более широком контексте, повышая производительность в задачах, требующих долгосрочной согласованности или сравнения с большими наборами данных.
Механика Memory Bank#
Основная функция memory bank заключается в том, чтобы расширить доступный объем информации за пределы текущего batch size. Во время обучения по мере прохождения данных через нейронную сеть получаемые представления признаков помещаются в банк. Если банк достигает максимальной емкости, самые старые признаки обычно удаляются, чтобы освободить место для новых — этот процесс известен как очередь First-In, First-Out (FIFO).
Этот механизм особенно важен, поскольку память GPU ограничена. Без memory bank сравнение одного изображения с миллионом других потребовало бы такого размера батча, который невозможно разместить на стандартном оборудовании. С помощью memory bank модель может хранить легкие векторы этих миллиона изображений и эффективно обращаться к ним, используя методы similarity search, такие как скалярное произведение или косинусное сходство.
Реальные приложения#
Memory banks стали краеугольным камнем в нескольких продвинутых рабочих процессах computer vision (CV) и естественного языка:
- Контрастное обучение (самообучение): Одно из самых известных применений связано с contrastive learning, в частности с такими алгоритмами, как Momentum Contrast (MoCo). Здесь цель состоит в том, чтобы научить модель отличать конкретное изображение от множества «негативных» примеров (других изображений). Memory bank хранит тысячи представлений негативных примеров, позволяя модели изучать устойчивые признаки без необходимости использования размеченных training data. Для получения детальных технических сведений исследователи часто ссылаются на MoCo paper, которая популяризировала этот подход.
- Долгосрочное трекинга объектов: В видеоанализе объект (например, автомобиль или человек) может быть временно скрыт препятствием. Стандартные трекеры могут потерять идентификатор (ID) объекта во время такого перекрытия. Продвинутые трекеры используют memory bank для хранения визуальных признаков объектов, обнаруженных в прошлом. Когда объект появляется снова, система запрашивает банк для восстановления правильного ID. Пользователи, применяющие Ultralytics YOLO26 для object tracking, используют схожую внутреннюю логику, которая поддерживает постоянство идентификаторов между кадрами.
- Понимание видео: Чтобы распознавать действия, охватывающие несколько секунд или минут, моделям необходим временной контекст. Memory bank действует как буфер для прошлых кадров или клипов, позволяя сети «помнить» то, что происходило в начале видео, при обработке его конца. Это крайне важно для точного action recognition.
Разграничение похожих концепций#
Полезно различать memory bank и другие концепции хранения и обработки, встречающиеся в глоссарии:
- Memory Bank против Vector Database: И то, и другое хранит эмбеддинги для извлечения. Однако memory bank обычно представляет собой временную структуру в памяти, используемую динамически во время обучения или активного вывода одной сессии модели. Векторная база данных (например, используемая в RAG) — это постоянное, масштабируемое решение для хранения, рассчитанное на бессрочное использование и обслуживание нескольких приложений.
- Memory Bank против Context Window: Контекстное окно (распространенное в Transformer) определяет максимальную длину входной последовательности, которую модель обрабатывает за раз (например, 32 тыс. токенов). Memory bank — это внешний буфер, хранящий сжатые представления вне активного окна обработки, что теоретически позволяет обеспечить бесконечную глубину памяти, как видно в таких архитектурах, как Transformer-XL.
- Memory Bank против Batch Size: Размер батча определяет, сколько примеров обрабатывается параллельно для обновления градиентов. Memory bank увеличивает эффективное количество примеров, которые модель может «видеть» в целях сравнения, не увеличивая вычислительную стоимость прямых и обратных проходов.
Пример кода: симуляция банка признаков#
Следующий фрагмент кода Python демонстрирует концепцию memory bank по принципу «первым пришел — первым ушел» (FIFO) с использованием torch. Эта структура часто применяется для поддержания скользящей истории векторов признаков во время пользовательских циклов обучения или сложных задач вывода.
import torch
# Initialize a memory bank (Capacity: 100 features, Vector Dim: 128)
# In a real scenario, these would be embeddings from a model like YOLO26
memory_bank = torch.randn(100, 128)
# Simulate receiving a new batch of features (e.g., from the current image batch)
new_features = torch.randn(10, 128)
# Update the bank: Enqueue new features, Dequeue the oldest ones
# This maintains a fixed size while keeping the memory 'fresh'
memory_bank = torch.cat([memory_bank[10:], new_features], dim=0)
print(f"Updated Memory Bank Shape: {memory_bank.shape}")
# Output: Updated Memory Bank Shape: torch.Size([100, 128])Проблемы и соображения#
Несмотря на свою мощность, memory banks привносят проблему «дрейфа представлений». Поскольку сеть энкодера немного меняется на каждом шаге обучения, признаки, сохраненные в банке 100 шагов назад, могут оказаться «устаревшими» или несогласованными с текущим состоянием модели. Техники, такие как использование энкодера с моментом (медленно обновляемое среднее модели), помогают смягчить эту проблему.
Для команд, желающих управлять версиями наборов данных и артефактами моделей, использующими эти передовые методы, Ultralytics Platform предоставляет централизованный хаб для организации данных, отслеживания экспериментов и эффективного развертывания моделей. Управление сложностью хранения и извлечения признаков имеет решающее значение для перехода от экспериментального artificial intelligence (AI) к надежным производственным системам.






