Memory Bank
Узнай, что такое банк памяти в глубоком обучении. Изучи, как банки памяти хранят эмбеддинги для контрастивного обучения, отслеживания объектов и понимания видео.
Банк памяти — это структура данных, используемая в алгоритмах машинного обучения для хранения информации из предыдущих итераций или обработанных образцов и обращения к ней, что фактически отделяет ёмкость памяти модели от её непосредственных вычислительных ограничений. В контексте глубокого обучения (DL) банк памяти обычно служит хранилищем для эмбеддингов или векторов признаков. Это позволяет модели сравнивать текущий входной сигнал с обширной историей предыдущих входных данных без необходимости повторно обрабатывать все эти данные или одновременно хранить их целиком в активной оперативной памяти (RAM). Поддерживая буфер представлений, модели могут обучаться на более широком контексте, повышая эффективность в задачах, требующих долгосрочной согласованности или сравнения с большими наборами данных.
Принцип работы банка памяти#
Основная функция банка памяти — расширить объём доступной информации за пределы текущего размера пакета. Во время обучения, когда данные проходят через нейронную сеть, полученные представления признаков добавляются в банк. Если банк достигает максимальной ёмкости, самые старые признаки обычно удаляются, чтобы освободить место для новых; этот процесс известен как очередь «первым поступил — первым вышел» (FIFO).
Этот механизм особенно важен, поскольку память GPU ограничена. Без банка памяти сравнение одного изображения с миллионом других изображений потребовало бы размера пакета, который невозможно разместить на стандартном оборудовании. С банком памяти модель может хранить облегчённые векторы этих миллиона изображений и эффективно обращаться к ним с помощью методов поиска сходства, например скалярного произведения или косинусного сходства.
Практические применения#
Банки памяти стали основой нескольких передовых рабочих процессов в области компьютерного зрения (CV) и обработки естественного языка:
- Контрастивное обучение (самостоятельное обучение): одно из самых известных применений — контрастивное обучение, в частности в таких алгоритмах, как Momentum Contrast (MoCo). Здесь цель состоит в том, чтобы научить модель отличать конкретное изображение от множества «негативных» образцов (других изображений). Банк памяти хранит представления тысяч негативных образцов, позволяя модели изучать устойчивые признаки без необходимости в размеченных данных для обучения. Для получения подробной технической информации исследователи часто обращаются к статье о MoCo, популяризировавшей этот подход.
- Долговременное отслеживание объектов: при анализе видео объект (например, автомобиль или человек) может временно скрыться за препятствием. Стандартные трекеры могут потерять идентичность объекта (ID) во время такого перекрытия. Передовые трекеры используют банк памяти для хранения визуальных признаков объектов, обнаруженных ранее. Когда объект появляется снова, система обращается к банку, чтобы восстановить правильный ID. Пользователи, применяющие Ultralytics YOLO26 для отслеживания объектов, получают преимущества аналогичной внутренней логики, которая сохраняет согласованность идентичности между кадрами.
- Понимание видео: чтобы распознавать действия, продолжающиеся несколько секунд или минут, моделям нужен временной контекст. Банк памяти действует как буфер для предыдущих кадров или фрагментов видео, позволяя сети «помнить», что произошло в начале видео, во время обработки его конца. Это крайне важно для точного распознавания действий.
Различие между связанными понятиями#
Полезно отличать банк памяти от других концепций хранения и обработки, представленных в глоссарии:
- Банк памяти и векторная база данных: оба компонента хранят эмбеддинги для последующего извлечения. Однако банк памяти обычно представляет собой временную структуру в памяти, которая динамически используется во время обучения или активного вывода одной сессии модели. Векторная база данных (например, используемая в системах RAG) — это постоянное масштабируемое хранилище, рассчитанное на бессрочное использование и обслуживание нескольких приложений.
- Банк памяти и контекстное окно: контекстное окно (распространённое в моделях Transformer) определяет максимальную длину входной последовательности, которую модель обрабатывает за один раз (например, 32k токенов). Банк памяти — это внешний буфер, хранящий сжатые представления за пределами активного окна обработки и теоретически позволяющий иметь бесконечную глубину памяти, как в архитектурах типа Transformer-XL.
- Банк памяти и размер пакета: размер пакета определяет, сколько образцов обрабатывается параллельно для обновления градиентов. Банк памяти увеличивает эффективное количество образцов, которые модель может «видеть» для сравнения, не повышая вычислительную стоимость прямого и обратного проходов.
Пример кода: моделирование банка признаков#
Следующий фрагмент на Python демонстрирует концепцию банка памяти «первым поступил — первым вышел» (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])Проблемы и важные аспекты#
Несмотря на высокую эффективность, банки памяти создают проблему «дрейфа представлений». Поскольку сеть-энкодер немного изменяется на каждом шаге обучения, признаки, сохранённые в банке 100 шагов назад, могут быть «устаревшими» или несогласованными с текущим состоянием модели. Такие методы, как использование энкодера с инерцией (медленно обновляемого усреднённого варианта модели), помогают смягчить эту проблему.
Командам, которым необходимо управлять версиями наборов данных и артефактами моделей, использующих эти передовые методы, платформа Ultralytics предоставляет централизованный хаб для организации данных, отслеживания экспериментов и эффективного развёртывания моделей. Управление сложностью хранения и извлечения признаков необходимо для перехода от экспериментального искусственного интеллекта (AI) к надёжным промышленным системам.









