Matryoshka Representation Learning (MRL)
Saiba como o aprendizado de representação Matryoshka (MRL) permite embeddings com múltiplos níveis de granularidade. Descubra como otimizar a busca e a implantação em dispositivos de borda com o Ultralytics YOLO26.
A Aprendizagem de Representações Matriosca (MRL) é uma técnica de treino em inteligência artificial (IA) e aprendizagem automática (ML) que obriga uma rede neuronal a aprender embeddings com vários níveis de granularidade num único vetor de saída. Inspirada nas bonecas russas, a MRL estrutura o embedding de modo a colocar a informação semântica mais importante no início. Isto significa que um vetor de alta dimensionalidade (por exemplo, com 1024 dimensões) pode ser truncado em subconjuntos aninhados mais pequenos (como 512, 256 ou 64 dimensões) sem perder a representação subjacente. Esta flexibilidade reduz drasticamente a sobrecarga computacional normalmente associada às tarefas de recuperação de informação.
Como funciona a Aprendizagem de Representações Matriosca#
Tradicionalmente, um modelo de embedding é treinado para otimizar uma função de perda específica para um tamanho de saída fixo. Se um sistema precisar de um vetor mais pequeno para poupar memória, é necessário treinar um modelo completamente novo. A MRL resolve este problema ao aplicar uma função de perda aninhada durante o treino, otimizando simultaneamente a representação completa e os respetivos subconjuntos aninhados. Organizações como a OpenAI adotaram a MRL nas suas modernas APIs de embeddings, permitindo aos programadores remover dinamicamente dimensões do final de um vetor e, ao mesmo tempo, manter pontuações precisas de similaridade do cosseno.
Aplicações no mundo real#
A MRL oferece vantagens específicas para equilibrar a precisão com os custos de armazenamento e a largura de banda da memória.
- Pesquisa vetorial adaptativa para LLMs: Nos pipelines de geração aumentada por recuperação (RAG), os grandes modelos de linguagem (LLMs) dependem frequentemente de vastas bases de dados vetoriais. Com a MRL, uma empresa pode realizar uma pesquisa semântica rápida e preliminar com as primeiras 64 dimensões dos embeddings e, em seguida, voltar a ordenar os melhores resultados utilizando os vetores completos de 1024 dimensões. Esta abordagem em duas passagens acelera consideravelmente a pesquisa vetorial e reduz os custos de armazenamento da base de dados.
- Visão computacional escalável na periferia: Ao implementar sistemas de visão computacional através da Ultralytics Platform, as limitações do hardware podem variar bastante. Um modelo que utiliza MRL pode enviar embeddings visuais de tamanho completo para um servidor potente de implementação na nuvem, mas também pode passar facilmente a transmitir embeddings truncados de 128 dimensões quando funciona em dispositivos de baixa potência de computação de periferia, otimizando a latência sem voltar a treinar o modelo.
Distinção entre conceitos relacionados#
Para utilizar corretamente a MRL, é útil distingui-la das técnicas mais antigas de compressão de dados.
- MRL vs. Redução de dimensionalidade: Algoritmos como PCA (Análise de Componentes Principais) ou t-SNE são aplicados após o treino para comprimir dados. Em contrapartida, a MRL é incorporada nativamente na arquitetura da rede neuronal durante o treino, preservando relações não lineares mais profundas.
- MRL vs. Poda de modelos: A poda remove pesos e camadas da própria rede neuronal para acelerar a inferência, por exemplo, criando uma variante mais pequena de um modelo Ultralytics YOLO. A MRL não altera o tamanho do modelo; altera apenas o tamanho do vetor de saída produzido pelo modelo.
Implementação prática#
Truncar um embedding MRL é muito simples e não requer uma lógica complexa de indexação semântica. Como as características mais importantes têm maior peso nas primeiras dimensões, basta dividir o array. O exemplo seguinte demonstra como truncar uma saída multimodal simulada do YOLO26 utilizando operações básicas com tensores do PyTorch.
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]}")








