Meta Learning
O meta-aprendizado treina um modelo em muitas tarefas para que ele se adapte a uma nova tarefa com poucos exemplos. Saiba como funcionam os episódios, o MAML e as redes prototípicas.
A meta-aprendizagem, muitas vezes chamada de "aprender a aprender", é uma abordagem de aprendizagem automática (ML) que treina um modelo em muitas tarefas relacionadas para que ele possa adaptar-se rapidamente a uma nova tarefa, geralmente com apenas alguns exemplos rotulados. Enquanto a aprendizagem supervisionada ajusta um modelo a um conjunto de dados, a meta-aprendizagem otimiza o próprio processo de aprendizagem: os pesos iniciais, o espaço de embeddings usado para comparar exemplos ou uma rede que aprende com exemplos numa única passagem direta. A principal aplicação é a aprendizagem com poucos exemplos, que reconhece novas classes a partir de um a poucos exemplos de cada uma, além de robôs e outros agentes que precisam de se adaptar a novas condições em tempo real.
Como funciona a meta-aprendizagem#
A meta-aprendizagem treina em episódios que imitam a situação que o modelo encontrará no momento do teste. Cada episódio amostra uma tarefa, por exemplo, um problema de classificação 5-way 1-shot, formado por cinco classes com uma imagem rotulada cada. Os exemplos rotulados formam o conjunto de suporte, e os exemplos reservados das mesmas classes formam o conjunto de consulta. Num ciclo interno, o modelo adapta-se ao conjunto de suporte; num ciclo externo, os metaparâmetros são atualizados de acordo com o desempenho do modelo adaptado no conjunto de consulta, recompensando o modelo por se adaptar bem em vez de memorizar uma única tarefa. As classes usadas para a meta-avaliação nunca aparecem durante o meta-treinamento.
Principais abordagens#
- Baseados em otimização: O Model-Agnostic Meta-Learning (MAML) aprende uma inicialização a partir da qual um ou alguns passos de descida do gradiente no conjunto de suporte de uma nova tarefa permitem obter um bom desempenho. O ciclo externo calcula o gradiente através da atualização interna, o que exige gradientes de segunda ordem; variantes de primeira ordem, como o Reptile da OpenAI, evitam esse custo ao mover a inicialização em direção aos pesos adaptados a cada tarefa.
- Baseados em métricas: Estes métodos aprendem um espaço de embeddings em que os exemplos podem ser classificados pela distância. As Redes Prototípicas calculam a média dos embeddings de suporte de cada classe para formar um protótipo e atribuem cada consulta ao protótipo mais próximo; assim, adicionar uma classe no momento do teste não exige nenhum treinamento.
- Baseados em modelos: Uma rede, como uma rede neural recorrente (RNN) com memória externa, lê o conjunto de suporte e prevê diretamente os rótulos das consultas, aprendendo o procedimento de adaptação nas suas ativações. O artigo do GPT-3 descreveu a aprendizagem em contexto nos grandes modelos de linguagem (LLMs), que resolvem uma tarefa a partir dos exemplos no prompt, como o ciclo interno deste tipo de meta-aprendizagem, com o pré-treinamento a funcionar como ciclo externo.
O próprio benchmark de regressão do MAML pede a uma rede pequena que ajuste ondas senoidais com amplitude e fase aleatórias usando 10 pontos de cada uma. O exemplo seguinte em PyTorch treina a inicialização com ambos os ciclos e, em seguida, testa um passo de adaptação em novas ondas senoidais:
import torch
import torch.nn.functional as F
from torch import nn
from torch.func import functional_call
torch.manual_seed(0)
net = nn.Sequential(nn.Linear(1, 40), nn.ReLU(), nn.Linear(40, 40), nn.ReLU(), nn.Linear(40, 1))
meta_optimizer = torch.optim.Adam(net.parameters(), lr=0.001)
def sine_task_losses():
"""Sample a sine-wave task, adapt on 10 points with one gradient step, and return query losses before and after."""
amplitude, phase = torch.empty(1).uniform_(0.1, 5), torch.empty(1).uniform_(0, 3.14)
x = torch.empty(20, 1).uniform_(-5, 5)
y = amplitude * torch.sin(x + phase)
params = dict(net.named_parameters())
support_loss = F.mse_loss(functional_call(net, params, x[:10]), y[:10])
grads = torch.autograd.grad(support_loss, list(params.values()), create_graph=True) # inner loop
adapted = {name: p - 0.01 * g for (name, p), g in zip(params.items(), grads)}
before = F.mse_loss(functional_call(net, params, x[10:]), y[10:])
after = F.mse_loss(functional_call(net, adapted, x[10:]), y[10:])
return before, after
# Outer loop: update the shared initialization so that one inner step fits each new task
for step in range(10000):
meta_loss = sum(sine_task_losses()[1] for _ in range(4))
meta_optimizer.zero_grad()
meta_loss.backward()
meta_optimizer.step()
# On 500 unseen sine waves, compare query error before and after the one-step adaptation
losses = torch.tensor([[loss.item() for loss in sine_task_losses()] for _ in range(500)])
print(f"query MSE before adaptation: {losses[:, 0].mean():.2f}, after one step: {losses[:, 1].mean():.2f}")O resultado impresso é query MSE before adaptation: 3.10, after one step: 0.70. A inicialização aprendida por meta-aprendizagem não ajusta nenhuma onda senoidal específica; ainda assim, um único passo de gradiente com 10 pontos reduz em mais de quatro vezes o erro em novos pontos de uma onda não vista.
Meta-aprendizagem e termos relacionados#
- Aprendizagem por transferência: reutiliza pesos treinados numa tarefa de grande dimensão como ponto de partida para outra, sem os otimizar para a capacidade de adaptação. O ajuste fino de um detetor Ultralytics YOLO26 pré-treinado no COCO com um conjunto de dados personalizado é aprendizagem por transferência: os pesos iniciais vêm de treinamento convencional no COCO, e a adaptação usa um conjunto de dados rotulado e muitas épocas de treinamento, em vez de alguns exemplos e alguns passos de gradiente.
- Aprendizagem com poucos exemplos: o problema de aprender com muito poucos exemplos. A meta-aprendizagem é uma família de soluções; embeddings pré-treinados com um classificador simples são outra.
- Aprendizagem automática automatizada (AutoML): procura arquiteturas e hiperparâmetros, geralmente para um conjunto de dados de cada vez. Alguns estudos consideram a aprendizagem de hiperparâmetros em várias tarefas como meta-aprendizagem.
- Aprendizagem contínua: aprende uma sequência de tarefas sem esquecer as anteriores, enquanto a meta-aprendizagem prepara um modelo para aprender rapidamente novas tarefas.
Benchmarks e resultados#
Os benchmarks de imagens few-shot impulsionaram a maior parte da pesquisa em meta-aprendizado: o Omniglot contém 1.623 caracteres manuscritos de 50 alfabetos, e o miniImageNet usa 100 classes do ImageNet, com 600 imagens cada, divididas em classes separadas para meta-treinamento, validação e teste. Dois estudos posteriores questionaram o quanto o próprio meta-aprendizado contribui. "Aprendizado rápido ou reutilização de características?" mostrou que o sucesso do MAML vem principalmente da reutilização de características aprendidas no loop externo, e sua variante simplificada ANIL, que adapta apenas a camada final no loop interno, igualou o MAML. Em seguida, "Repensando a classificação de imagens few-shot" concluiu que um classificador linear sobre uma boa incorporação, aprendido com treinamento supervisionado comum ou autossupervisionado nas classes de meta-treinamento, superou os principais métodos de meta-aprendizado few-shot da época.










