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 machine learning để 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 đã xử lý, giúp tách biệt hiệu quả dung lượng bộ nhớ của model khỏi các ràng buộc tính toán tức thời. Trong ngữ cảnh của deep learning (DL), memory bank thường đóng vai trò là kho lưu trữ cho các embeddings hoặc feature vector. Điều này cho phép model so sánh input hiện tại với một lịch sử dữ liệu input khổng lồ trước đó mà không cần phải xử lý lại hoặc lưu giữ tất cả dữ liệu đó trong bộ nhớ truy cập ngẫu nhiên (RAM) cùng một lúc. Bằng cách duy trì một buffer chứa các biểu diễn (representation), các model có thể học 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 sự nhất quán lâu dài hoặc cần so sánh với các tập dữ liệu lớn.
Link to this sectionCơ chế của Memory Bank#
Chức năng chính của memory bank là mở rộng thông tin sẵn có vượt ra ngoài batch size hiện tại. Trong quá trình huấn luyện, khi dữ liệu đi qua neural network, các biểu diễn đặc trưng (feature representations) 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ị loại bỏ để nhường chỗ cho các đặc trưng mới, một quy trình được gọi là hàng đợi First-In, First-Out (FIFO).
Cơ chế này đặc biệt quan trọng vì bộ nhớ GPU là hữu hạn. Nếu không có memory bank, việc so sánh một ảnh đơn lẻ với hàng triệu ảnh khác sẽ yêu cầu một batch size không thể đáp ứng trên phần cứng tiêu chuẩn. Với memory bank, model có thể lưu trữ các vector nhẹ của hàng triệu ảnh đó và tham chiếu chúng một cách hiệu quả bằng các kỹ thuật similarity search, chẳng hạn như dot product hoặc cosine similarity.
Link to this sectionCác ứng dụng trong thực tế#
Memory bank đã trở thành nền tảng trong một số quy trình làm việc nâng cao về computer vision (CV) và 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). Tại đây, mục tiêu là dạy model cách phân biệt một ảnh cụ thể với nhiều mẫu "tiêu cực" (các ảnh khác). Một memory bank lưu trữ hàng nghìn biểu diễn mẫu tiêu cực, cho phép model học được các đặc trưng mạnh mẽ mà không cần training data có nhãn. Để biết chi tiết kỹ thuật chuyên sâu, các nhà nghiên cứu thường tham khảo bài báo về MoCo, tài liệu đã phổ biến cách tiếp cận này.
- Long-Term Object Tracking: Trong phân tích video, một đối tượng (như xe hơi hoặc người) có thể bị che khuất tạm thời bởi một vật cản. Các bộ tracker tiêu chuẩn có thể mất ID của đối tượng trong quá trình bị che khuất này. Các tracker nâng cao sử dụng memory bank để lưu trữ các đặc trưng hình ảnh của các đối tượng đã được phát hiện trước đó. Khi đối tượng xuất hiện trở lại, hệ thống 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 object tracking sẽ được hưởng lợi từ logic nội bộ tương tự giúp duy trì sự nhất quán về nhận dạng trên các khung hình.
- 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 ngữ cảnh về thời gian. Memory bank đóng vai trò như một buffer cho các khung hình hoặc clip quá khứ, cho phép network "ghi nhớ" những gì đã xảy ra ở đầu video trong khi đang xử lý phần cuối. Điều này rất quan trọng để action recognition chính xác.
Link to this sectionPhâ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ữ 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ớ, được sử dụng linh hoạt trong quá trình huấn luyện hoặc active inference của một phiên model đơn lẻ. Vector database (như loại đượ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 vô thời hạn và phục vụ nhiều ứng dụng.
- Memory Bank so với Context Window: Context window (phổ biến trong Transformers) xác định độ dài chuỗi input tối đa mà model xử lý cùng một lúc (ví dụ: 32k tokens). Memory bank là một buffer bên ngoài lưu trữ các biểu diễn nén bên ngoài context window xử lý đang hoạt động, về mặt lý thuyết cho phép độ sâu bộ nhớ vô hạn, như đã thấy trong các kiến trúc như Transformer-XL.
- Memory Bank so với Batch Size: Batch size quyết định số lượng 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 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 forward và backward.
Link to this sectionVí dụ mã: Mô phỏng Feature Bank#
Đoạn mã Python sau đây minh họa khái niệm memory bank theo 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 feature vector trong các vòng lặp huấn luyện 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])Link to this sectionThá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 đội ngũ đang tìm cách quản lý các phiên bản tập dữ liệu và các model artifact sử dụng những kỹ thuật nâng cao này, Ultralytics Platform cung cấp một hub tập trung để tổ chức dữ liệu, theo dõi các thử nghiệm và triển khai model hiệu quả. Việc quản lý sự phức tạp của lưu trữ và truy xuất đặc trưng là điều cần thiết để chuyển đổi từ artificial intelligence (AI) thực nghiệm sang các hệ thống sản xuất mạnh mẽ.






