Model Ensemble
Um ensemble de modelos combina previsões de vários modelos em uma única saída mais precisa e robusta. Abrange votação, cálculo de médias, fusão de caixas e compensações.
Um conjunto de modelos combina as previsões de vários modelos treinados numa única saída, por votação, média ou combinação aprendida, para que os erros dos modelos individuais se anulem. Quando os modelos cometem erros diferentes, o conjunto é mais preciso e robusto do que o seu melhor elemento, razão pela qual os conjuntos dominam as competições de aprendizagem automática: o Netflix Prize foi ganho em 2009 por uma equipa que combinou as previsões de muitos modelos, e a solução de aprendizagem profunda que venceu o desafio ImageNet de 2012 calculou a média das previsões de sete redes convolucionais, alcançando um erro top-5 de 15,3%. O custo é computacional: cada elemento é executado para cada entrada, pelo que o uso de memória e a latência de inferência aumentam com a dimensão do conjunto.
Como funcionam os conjuntos de modelos#
Um conjunto só é útil quando os seus elementos cometem erros diferentes. A média das saídas de modelos cujos erros são independentes reduz a variância da previsão combinada, enquanto os modelos que falham nas mesmas entradas pouco beneficiam da combinação. O bagging cria esta diversidade ao treinar cada elemento numa reamostragem aleatória dos dados de treino, como numa floresta aleatória de árvores de decisão; o boosting treina cada novo elemento para corrigir os erros dos anteriores, como no XGBoost e no LightGBM. Os conjuntos profundos treinam cópias de uma rede neuronal com diferentes sementes aleatórias, e a dispersão das previsões também mede a incerteza do modelo. Combinar arquiteturas diferentes, como uma rede neuronal convolucional e um transformador de visão, proporciona elementos com diferentes enviesamentos indutivos e erros menos correlacionados.
A regra de combinação depende das saídas dos elementos:
Os modelos de elevada variância, como as árvores de decisão sem poda, são os que mais beneficiam. Este exemplo do scikit-learn treina cinco árvores que diferem apenas na semente aleatória e calcula a média das probabilidades previstas:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
# Five decision trees that differ only in their random seed, which changes the features each split considers
trees = [DecisionTreeClassifier(max_features="sqrt", random_state=seed) for seed in range(5)]
for tree in trees:
tree.fit(X_train, y_train)
print("Single trees:", ", ".join(f"{tree.score(X_test, y_test):.3f}" for tree in trees))
# Ensemble: average the predicted class probabilities and pick the most likely class
probabilities = np.mean([tree.predict_proba(X_test) for tree in trees], axis=0)
accuracy = (probabilities.argmax(axis=1) == y_test).mean()
print(f"Ensemble of 5: {accuracy:.3f}")Nas 899 imagens de dígitos reservadas para teste, as árvores individuais obtêm pontuações entre 0.736 e 0.805, e o conjunto das cinco alcança 0.901, acima de qualquer elemento individual, porque cada árvore erra em imagens diferentes.
Combinação de detetores de objetos#
Os conjuntos de deteção de objetos também têm de combinar caixas: vários modelos costumam detetar o mesmo objeto em posições ligeiramente diferentes. O método mais simples reúne as caixas de todos os modelos e aplica a supressão não máxima (NMS), que mantém a caixa com maior confiança em cada grupo de sobreposição. A fusão ponderada de caixas calcula, em alternativa, a média das coordenadas das caixas sobrepostas, ponderada pela confiança, para que cada modelo contribua para a posição final. O Ultralytics YOLO26 integra uma abordagem semelhante na previsão: com augment=True, o detetor é executado na imagem à escala original, a 83% e a 67%, com a cópia a 83% invertida da esquerda para a direita, e combina os três conjuntos de caixas com NMS. Este exemplo combina dois modelos YOLO26 de tamanhos diferentes da mesma forma:
import torch
from torchvision.ops import batched_nms
from ultralytics import YOLO
# Two YOLO26 models of different sizes make different mistakes
models = [YOLO("yolo26n.pt"), YOLO("yolo26s.pt")]
results = [model("https://ultralytics.com/images/bus.jpg")[0] for model in models]
# Pool the boxes from both models
boxes = torch.cat([result.boxes.xyxy for result in results])
scores = torch.cat([result.boxes.conf for result in results])
classes = torch.cat([result.boxes.cls for result in results])
# Keep the highest-scoring box in each overlapping group of the same class
keep = batched_nms(boxes, scores, classes, iou_threshold=0.5)
print(f"{len(boxes)} boxes from both models, {len(keep)} after fusion")As caixas detetadas por ambos os modelos fundem-se numa só, e os objetos detetados por apenas um modelo mantêm-se após a fusão, o que permite aumentar a revocação com um conjunto de deteção.
Aplicações#
- Análise de imagens médicas: Os modelos de diagnóstico combinam várias redes para aumentar a sensibilidade, e a discordância entre os elementos assinala casos para análise por um radiologista.
- Competições e benchmarks: As soluções vencedoras no Kaggle e em tabelas de classificação semelhantes calculam regularmente a média de modelos treinados com arquiteturas, sementes e partições de dados diferentes, pois o ganho de precisão compensa o custo computacional adicional.
- Veículos autónomos: Os sistemas de perceção combinam modelos com diferentes pontos fortes, como um detetor baseado em câmara e outro baseado em lidar, para que um objeto não detetado por um possa ser detetado pelo outro.
Conjuntos de modelos vs. termos relacionados#
- Aprendizagem por conjuntos: Sinónimo da técnica em geral. «Conjunto de modelos» costuma designar o grupo combinado de modelos resultante.
- Fusão de modelos: Calcula a média dos pesos de modelos compatíveis para formar uma única rede, que é executada com o custo de um único modelo.
- Mistura de especialistas (MoE): Um encaminhador aprendido envia cada entrada apenas para algumas sub-redes especializadas, o que aumenta a capacidade sem executar todos os especialistas para cada entrada.
- Destilação de conhecimento: Treina um único modelo aluno para imitar um professor, que pode ser um conjunto completo de modelos. O artigo de 2015 sobre destilação de Geoffrey Hinton, Oriol Vinyals e Jeff Dean comprimiu um conjunto de modelos de reconhecimento de voz num único modelo que manteve a maior parte da melhoria do conjunto.










