Matryoshka Representation Learning (MRL)
Tìm hiểu cách Matryoshka Representation Learning (MRL) cho phép các nhúng đa hạt (multi-granular embeddings). Khám phá cách tối ưu hóa việc tìm kiếm và triển khai trên edge của Ultralytics YOLO26.
Matryoshka Representation Learning (MRL) là một kỹ thuật huấn luyện trong trí tuệ nhân tạo (AI) và học máy (ML) buộc mạng thần kinh phải học các embeddings đa mức độ trong một vector đầu ra duy nhất. Lấy cảm hứng từ những con búp bê Nga lồng vào nhau, MRL cấu trúc embedding sao cho các thông tin ngữ nghĩa quan trọng được ưu tiên ở phần đầu. Điều này có nghĩa là một vector có số chiều cao (ví dụ: 1024 chiều) có thể được cắt ngắn thành các tập hợp con nhỏ hơn, lồng vào nhau (như 64, 256 hoặc 512 chiều) mà không làm mất đi biểu diễn cơ bản của nó. Sự linh hoạt này giúp giảm đáng kể chi phí tính toán thường thấy trong các tác vụ truy xuất thông tin.
Link to this sectionCách thức hoạt động của Matryoshka Representation Learning#
Theo truyền thống, một embedding model được huấn luyện để tối ưu hóa một hàm mất mát (loss function) cụ thể cho kích thước đầu ra cố định. Nếu một hệ thống yêu cầu vector nhỏ hơn để tiết kiệm bộ nhớ, một model hoàn toàn mới phải được huấn luyện lại. MRL giải quyết vấn đề này bằng cách áp dụng hàm mất mát lồng nhau trong giai đoạn huấn luyện. Nó tối ưu hóa đồng thời toàn bộ biểu diễn và các tập hợp con lồng nhau của nó. Các tổ chức như OpenAI đã áp dụng MRL cho các API embedding hiện đại của họ, cho phép các lập trình viên cắt giảm linh hoạt các chiều ở cuối vector trong khi vẫn giữ được điểm số cosine similarity chính xác.
Link to this sectionCác ứng dụng trong thực tế#
MRL mang lại những lợi thế khác biệt khi cân bằng giữa độ chính xác với chi phí lưu trữ và băng thông bộ nhớ.
- Tìm kiếm vector thích ứng cho LLM: Trong các quy trình truy xuất tăng cường thế hệ (RAG), các mô hình ngôn ngữ lớn (LLM) thường dựa vào các cơ sở dữ liệu vector khổng lồ. Sử dụng MRL, doanh nghiệp có thể thực hiện tìm kiếm ngữ nghĩa thô, tốc độ cao bằng cách sử dụng 64 chiều đầu tiên của các embeddings, sau đó xếp hạng lại các kết quả hàng đầu bằng cách sử dụng các vector 1024 chiều đầy đủ. Cách tiếp cận hai bước này giúp tăng tốc đáng kể tìm kiếm vector và giảm chi phí lưu trữ cơ sở dữ liệu.
- Thị giác máy tính có thể mở rộng tại biên: Khi triển khai các hệ thống thị giác máy tính sử dụng Ultralytics Platform, các hạn chế về phần cứng có thể thay đổi rất lớn. Một model sử dụng MRL có thể truyền các visual embedding kích thước đầy đủ đến máy chủ triển khai đám mây mạnh mẽ, nhưng vẫn có thể linh hoạt chuyển sang truyền các embedding 128 chiều đã bị cắt ngắn khi hoạt động trên các thiết bị điện toán biên công suất thấp, giúp tối ưu hóa độ trễ mà không cần huấn luyện lại model.
Link to this sectionPhân biệt các khái niệm liên quan#
Để sử dụng MRL hiệu quả, việc phân biệt nó với các kỹ thuật cũ được sử dụng để nén dữ liệu là rất hữu ích.
- MRL so với Giảm số chiều: Các thuật toán như PCA (Phân tích thành phần chính) hoặc t-SNE được áp dụng sau khi huấn luyện để nén dữ liệu. Ngược lại, MRL được tích hợp sẵn vào kiến trúc mạng thần kinh trong quá trình huấn luyện, giúp bảo tồn các mối quan hệ phi tuyến tính sâu hơn.
- MRL so với Cắt tỉa mô hình (Model Pruning): Cắt tỉa loại bỏ các trọng số và lớp khỏi mạng thần kinh thực tế để làm cho quá trình suy luận nhanh hơn, chẳng hạn như tạo ra một biến thể nhỏ hơn của model Ultralytics YOLO. MRL không làm thay đổi kích thước model; nó chỉ thay đổi kích thước của vector đầu ra do model tạo ra.
Link to this sectionTriển khai thực tế#
Việc cắt ngắn một MRL embedding cực kỳ đơn giản và không đòi hỏi logic lập chỉ mục ngữ nghĩa phức tạp. Vì các đặc trưng quan trọng nhất được ưu tiên trọng số cao ở các chiều sớm nhất, bạn có thể chỉ cần cắt mảng. Ví dụ sau đây minh họa việc cắt ngắn một đầu ra đa phương thức YOLO26 mô phỏng bằng cách sử dụng các thao tác tensor PyTorch cơ bản.
import torch
# Simulate a full 1024-dimensional MRL embedding returned by a model
full_embedding = torch.rand(1, 1024)
# To deploy on memory-constrained hardware, simply slice the first 256 dimensions
# Because the model was trained with MRL, this subset remains highly accurate
truncated_embedding = full_embedding[:, :256]
print(f"Original size: {full_embedding.shape[1]}, Compressed size: {truncated_embedding.shape[1]}")





