Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Банк памяти

Банк памяти — это структура данных, используемая в алгоритмах машинного обучения для хранения и ссылки на информацию из прошлых итераций или обработанных выборок, что позволяет эффективно отделить объем памяти модели от ее непосредственных вычислительных ограничений. В контексте глубокого обучения (DL) банк памяти обычно служит хранилищем для встраиваний или векторов признаков. Это позволяет модели сравнивать текущий входной сигнал с обширной историей предыдущих входных сигналов без необходимости повторной обработки или одновременного хранения всех этих данных в активной оперативной памяти (RAM). Благодаря поддержанию буфера представлений модели могут обучаться в более широком контексте, улучшая производительность в задачах, требующих долгосрочной согласованности или сравнения с большими наборами данных.

Механика банка памяти

Основная функция банка памяти заключается в расширении доступной информации за пределы текущего размера партии. Во время обучения, по мере прохождения данных через нейронную сеть, полученные представления характеристик заносятся в банк. Если банк достигает своей максимальной емкости, самые старые характеристики обычно удаляются, чтобы освободить место для новых, — этот процесс известен как очередь «первым пришел, первым ушел» (FIFO).

Этот механизм особенно важен, поскольку GPU память GPU ограничена. Без банка памяти для сравнения одного изображения с миллионом других потребовался бы пакет данных, который невозможно поместить на стандартном оборудовании. С банком памяти модель может хранить легкие векторы этих миллионов изображений и эффективно обращаться к ним с помощью методов поиска по схожести, таких как скалярное произведение или косинусная схожесть

Применение в реальном мире

Банки памяти стали краеугольным камнем в нескольких передовых рабочих процессах компьютерного зрения (CV) и естественного языка :

  • Контрастивное обучение (самоконтролируемое обучение): одно из самых известных применений — в контрастивном обучении, в частности в таких алгоритмах, как Momentum Contrast (MoCo). Здесь цель состоит в том, чтобы научить модель отличать конкретное изображение от множества «отрицательных» образцов (различных изображений). Банк памяти хранит тысячи отрицательных образцов представлений, что позволяет модели обучаться надежным функциям без необходимости использования помеченных учебных данных. Для получения подробной технической информации исследователи часто ссылаются на статью MoCo, которая популяризировала этот подход.
  • Долгосрочное отслеживание объектов: при анализе видео объект (например, автомобиль или человек) может быть временно закрыт препятствием. Стандартные трекеры могут потерять идентификатор объекта (ID) во время такого закрытия. Усовершенствованные трекеры используют банк памяти для хранения визуальных характеристик объектов, обнаруженных в прошлом. Когда объект появляется снова, система запрашивает банк, чтобы восстановить правильный ID. Пользователи, использующие Ultralytics для отслеживания объектов, получают преимущества от аналогичной внутренней логики, которая поддерживает согласованность идентичности между кадрами.
  • Понимание видео: чтобы распознавать действия, длящихся несколько секунд или минут, модели нуждаются в временном контексте. Банк памяти действует как буфер для прошлых кадров или клипов, позволяя сети «запоминать» то, что происходило в начале видео, во время обработки его конца. Это крайне важно для точного распознавания действий.

Различение смежных понятий

Полезно отличать банк памяти от других концепций хранения и обработки данных, представленных в глоссарии:

  • Банк памяти против векторной базы данных: Оба хранят вложения для извлечения. Однако банк памяти, как правило, представляет собой временную структуру в памяти, которая используется динамически во время обучения или активного вывода одной сессии модели. Векторная база данных (такая, как используется в RAG) — это постоянное, масштабируемое хранилище, предназначенное для бессрочного использования и обслуживания нескольких приложений.
  • Банк памяти против контекстного окна: Контекстное окно (обычно используемое в трансформерах) определяет максимальную длину входной последовательности, которую модель обрабатывает за один раз (например, 32 тыс. токенов). Банк памяти — это внешний буфер, который хранит сжатые представления за пределами активного окна обработки, теоретически обеспечивая бесконечную глубину памяти, как это видно в таких архитектурах, как 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 шагов назад, могут быть «устаревшими» или несовместимыми с текущим состоянием модели. Такие методы, как использование кодировщика с импульсом (медленно обновляемое среднее значение модели), помогают смягчить эту проблему.

track команд, которые хотят управлять версиями наборов данных и артефактами моделей, использующими эти передовые технологии, Ultralytics предоставляет централизованный хаб для организации данных, отслеживания экспериментов и эффективного развертывания моделей. Управление сложностью хранения и извлечения функций имеет важное значение для перехода от экспериментального искусственного интеллекта (ИИ) к надежным производственным системам.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас