Memory Bank
Tìm hiểu memory bank là gì trong deep learning. Khám phá cách các memory bank lưu trữ các nhúng cho học tương phản, theo dõi đối tượng và hiểu video.
Memory bank là một cấu trúc dữ liệu được sử dụng trong các thuật toán học máy để lưu trữ và tham chiếu thông tin từ các vòng lặp trước đó hoặc các mẫu đã được xử lý, qua đó tách rời năng lực bộ nhớ của model khỏi các giới hạn tính toán tức thời. Trong bối cảnh của deep learning (DL), memory bank thường đóng vai trò là nơi lưu trữ các embeddings hoặc vector đặc trưng (feature vectors). Điều này cho phép một model so sánh đầu vào hiện tại với một lịch sử lớn các đầu vào trước đó mà không cần phải xử lý lại hoặc giữ toàn bộ dữ liệu đó trong RAM (random-access memory) hoạt động cùng một lúc. Bằng cách duy trì một bộ đệm (buffer) chứa các biểu diễn (representations), các model có thể học hỏi từ một ngữ cảnh rộng hơn, cải thiện hiệu suất trong các tác vụ đòi hỏi tính nhất quán dài hạn hoặc so sánh với các tập dữ liệu lớn.
Cơ chế của Memory Bank#
Chức năng chính của memory bank là mở rộng thông tin khả dụng vượt ra ngoài batch size hiện tại. Trong quá trình training, khi dữ liệu chạy qua mạng neural network, các biểu diễn đặc trưng thu được sẽ được đẩy vào bank. Nếu bank đạt đến dung lượng tối đa, các đặc trưng cũ nhất thường sẽ bị xóa để nhường chỗ cho các đặc trưng mới, một quá trình được gọi là hàng đợi First-In, First-Out (FIFO).
Cơ chế này đặc biệt quan trọng bởi vì bộ nhớ GPU là có hạn. Nếu không có memory bank, việc so sánh một hình ảnh đơn lẻ với hàng triệu hình ảnh khác sẽ đòi hỏi một batch size không thể đáp ứng được trên phần cứng tiêu chuẩn. Với memory bank, model có thể lưu trữ các vector dung lượng nhẹ của hàng triệu hình ảnh đó và tham chiếu chúng một cách hiệu quả bằng các kỹ thuật similarity search như tích vô hướng (dot product) hoặc độ đo tương đồng cô-sin (cosine similarity).
Các ứng dụng trong thực tế#
Memory bank đã trở thành một nền tảng cốt lõi trong một số computer vision (CV) nâng cao và các luồng công việc ngôn ngữ tự nhiên:
- Contrastive Learning (Self-Supervised Learning): Một trong những ứng dụng nổi tiếng nhất là trong contrastive learning, cụ thể là trong các thuật toán như Momentum Contrast (MoCo). Ở đây, mục tiêu là dạy cho model cách phân biệt một hình ảnh cụ thể với nhiều mẫu "âm tính" (negative) (các hình ảnh khác nhau). Memory bank lưu trữ hàng nghìn biểu diễn mẫu âm tính, cho phép model học các đặc trưng mạnh mẽ mà không cần training data được gán nhãn. Để biết các chi tiết kỹ thuật sâu hơn, các nhà nghiên cứu thường tham khảo MoCo paper – tài liệu đã phổ biến hóa phương pháp này.
- Long-Term Object Tracking: Trong phân tích video, một đối tượng (như ô tô hoặc con người) có thể tạm thời bị che khuất bởi vật cản. Các bộ tracker tiêu chuẩn có thể làm mất nhận dạng (ID) của đối tượng trong thời gian bị che khuất này. Các bộ tracker nâng cao sử dụng memory bank để lưu trữ các đặc trưng trực quan của các đối tượng được phát hiện trong quá khứ. Khi đối tượng xuất hiện trở lại, hệ thống sẽ truy vấn bank để thiết lập lại đúng ID. Những người dùng tận dụng Ultralytics YOLO26 cho tác vụ object tracking sẽ được hưởng lợi từ logic nội bộ tương tự giúp duy trì tính nhất quán về danh tính qua các khung hình (frames).
- Video Understanding: Để nhận diện các hành động kéo dài trong vài giây hoặc vài phút, các model cần có ngữ cảnh theo thời gian (temporal context). Memory bank đóng vai trò là một bộ đệm cho các khung hình hoặc đoạn clip trước đó, cho phép mạng neural "ghi nhớ" những gì đã xảy ra ở đầu video trong khi đang xử lý phần cuối. Điều này là tối quan trọng đối với tác vụ action recognition chính xác.
Phân biệt các khái niệm liên quan#
Sẽ rất hữu ích nếu phân biệt memory bank với các khái niệm lưu trữ và xử lý khác được tìm thấy trong bảng thuật ngữ:
- Memory Bank so với Vector Database: Cả hai đều lưu trữ các embeddings để truy xuất. Tuy nhiên, memory bank thường là một cấu trúc tạm thời nằm trong bộ nhớ (in-memory), được sử dụng linh hoạt trong quá trình training hoặc active inference của một phiên làm việc model đơn lẻ. Một cơ sở dữ liệu vector (như các hệ thống được sử dụng trong RAG) là giải pháp lưu trữ bền vững, có khả năng mở rộng, được thiết kế để tồn tại lâu dài và phục vụ nhiều ứng dụng.
- Memory Bank so với Context Window: Một context window (phổ biến trong các Transformer) xác định độ dài chuỗi đầu vào tối đa mà model xử lý cùng một lúc (ví dụ: 32k tokens). Memory bank là một bộ đệm bên ngoài lưu trữ các biểu diễn đã nén bên ngoài cửa sổ xử lý hoạt động, về mặt lý thuyết cho phép độ sâu bộ nhớ vô hạn, như đã thấy ở các kiến trúc như Transformer-XL.
- Memory Bank so với Batch Size: Batch size quyết định có bao nhiêu mẫu được xử lý song song để cập nhật gradient. Memory bank làm tăng số lượng mẫu hiệu quả mà model có thể "nhìn thấy" cho các mục đích so sánh mà không làm tăng chi phí tính toán của các lượt lan truyền tiến (forward pass) và lan truyền ngược (backward pass).
Ví dụ mã: Mô phỏng Feature Bank#
Đoạn mã Python sau đây minh họa khái niệm về memory bank kiểu First-In, First-Out (FIFO) sử dụng torch. Cấu trúc này thường được sử dụng để duy trì lịch sử luân phiên của các vector đặc trưng trong các vòng lặp training tùy chỉnh hoặc các tác vụ inference phức tạp.
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])Thách thức và Cân nhắc#
Mặc dù mạnh mẽ, các memory bank mang đến thách thức về "representation drift" (trôi dạt biểu diễn). Vì encoder network thay đổi nhẹ sau mỗi bước huấn luyện, các đặc trưng được lưu trong bank từ 100 bước trước đó có thể bị "cũ" hoặc không nhất quán với trạng thái hiện tại của model. Các kỹ thuật như sử dụng momentum encoder (một giá trị trung bình cập nhật chậm của model) sẽ giúp giảm thiểu vấn đề này.
Đối với các nhóm muốn quản lý các phiên bản dataset và model artifacts tận dụng các kỹ thuật tiên tiến này, Ultralytics Platform cung cấp một trung tâm tập trung để tổ chức dữ liệu, theo dõi các thí nghiệm và triển khai model một cách hiệu quả. Việc quản lý độ phức tạp của việc lưu trữ và truy xuất đặc trưng là điều cần thiết để chuyển từ artificial intelligence (AI) thử nghiệm sang các hệ thống production mạnh mẽ.






