Matryoshka Representation Learning (MRL)
Matryoshka Representation Learning (MRL) がどのようにマルチ粒度の埋め込みを実現するかを学びます。Ultralytics YOLO26 の検索およびエッジデプロイメントを最適化する方法を発見してください。
Matryoshka Representation Learning (MRL) は、人工知能 (AI) および 機械学習 (ML) における学習技術であり、ニューラルネットワークに対して単一の出力ベクトル内に多粒度の 埋め込み (embeddings) を学習させます。ロシアのマトリョーシカ人形に着想を得た MRL は、重要な意味情報を先頭に配置するように埋め込みを構成します。これにより、高次元ベクトル(例:1024次元)をその基礎となる表現を損なうことなく、より小さなネストされたサブセット(512、256、64次元など)に切り詰めることが可能になります。この柔軟性により、情報検索 タスクに通常伴う計算オーバーヘッドが大幅に削減されます。
Link to this sectionMatryoshka Representation Learning の仕組み#
従来、埋め込みモデルは固定された出力サイズに対して特定の 損失関数 を最適化するように学習されていました。メモリを節約するために小さなベクトルが必要な場合、全く新しいモデルを学習させる必要がありました。MRL は学習フェーズ中にネストされた損失関数を適用することで、この問題を解決します。これは、フル表現とそのネストされたサブセットを同時に最適化します。OpenAI は最新の埋め込み API に MRL を採用しており、開発者がベクトルの末尾から次元を動的に削除しながら、正確な コサイン類似度 スコアを維持することを可能にしています。
Link to this section実社会での応用#
MRL は、精度とストレージコストおよび メモリ帯域幅 のバランスを取る際に、明確な利点を提供します。
- LLM のための適応型ベクトル検索: 検索拡張生成 (RAG) パイプラインにおいて、大規模言語モデル (LLM) は多くの場合、膨大な ベクトルデータベース に依存しています。MRL を使用することで、企業は埋め込みの最初の64次元を使用して高速かつ大まかな 意味検索 (semantic search) を実行し、その後、1024次元のフルベクトルを使用して上位結果を再ランク付けすることができます。この2段階のアプローチにより、ベクトル検索 が大幅に加速し、データベースのストレージコストが削減されます。
- Scalable Computer Vision at the Edge: When deploying computer vision systems using the Ultralytics Platform, hardware constraints can vary wildly. A model utilizing MRL can transmit full-sized visual embeddings to a powerful cloud deployment server, but gracefully fall back to transmitting truncated 128-dimensional embeddings when operating on low-power edge computing devices, optimizing latency without retraining the model.
Link to this section関連する概念との違い#
MRL を適切に活用するためには、データを圧縮するために使用される古い技術と区別することが役立ちます。
- MRL 対 次元削減: PCA(主成分分析)や t-SNE などのアルゴリズムは、学習「後」に適用されてデータを圧縮します。対照的に、MRL は学習中にニューラルネットワークアーキテクチャにネイティブに組み込まれており、より深い非線形関係を保持します。
- MRL 対 モデルプルーニング: プルーニングは、Ultralytics YOLO モデルの小さなバリエーションを作成するように、推論を高速化するために実際のニューラルネットワークから重みやレイヤーを削除します。MRL はモデルサイズを変更せず、モデルによって生成される 出力ベクトル のサイズのみを変更します。
Link to this section実践的な実装#
Truncating an MRL embedding is incredibly straightforward and requires no complex semantic indexing logic. Because the most critical features are heavily weighted in the earliest dimensions, you can simply slice the array. The following example demonstrates truncating a simulated YOLO26 multi-modal output using basic PyTorch tensor operations.
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]}")





