Model Ensemble
Un ensemble di modelli combina le previsioni di diversi modelli in un unico risultato più accurato e robusto. Panoramica di voto, media, fusione di box e compromessi.
Un ensemble di modelli combina in un unico output le previsioni di diversi modelli addestrati, tramite votazione, media o una combinazione appresa, in modo che gli errori dei singoli modelli si compensino. Quando i modelli commettono errori diversi, l’ensemble è più preciso e robusto del suo componente migliore; per questo gli ensemble dominano le competizioni di machine learning: nel 2009 il Netflix Prize è stato vinto da un team che combinava le previsioni di molti modelli, mentre la soluzione di deep learning vincitrice della sfida ImageNet del 2012 ha mediato le previsioni di sette reti convoluzionali, raggiungendo un errore top-5 del 15.3%. Il costo è computazionale: ogni componente viene eseguito su ogni input, quindi l’uso di memoria e la latenza di inferenza crescono con le dimensioni dell’ensemble.
Come funzionano gli ensemble di modelli#
Un ensemble è utile solo quando i suoi componenti commettono errori diversi. Calcolare la media degli output di modelli con errori indipendenti riduce la varianza della previsione combinata, mentre combinare modelli che falliscono sugli stessi input offre pochi vantaggi. Il bagging crea questa diversità addestrando ogni componente su un ricampionamento casuale dei dati di addestramento, come nel random forest di alberi decisionali; il boosting addestra ogni nuovo componente a correggere gli errori dei precedenti, come in XGBoost e LightGBM. Gli ensemble profondi addestrano copie di una rete neurale usando semi casuali diversi, e la dispersione delle loro previsioni misura anche l’incertezza del modello. Combinare architetture diverse, come una rete neurale convoluzionale e un vision transformer, produce componenti con bias induttivi differenti ed errori meno correlati.
La regola di combinazione dipende dagli output dei componenti:
I modelli ad alta varianza, come gli alberi decisionali non potati, ne traggono il massimo vantaggio. Questo esempio di scikit-learn addestra cinque alberi che differiscono solo per il seme casuale e calcola la media delle probabilità previste:
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}")Su 899 immagini di cifre tenute da parte, i singoli alberi ottengono punteggi compresi tra 0.736 e 0.805, mentre l’ensemble dei cinque raggiunge 0.901, superando ogni singolo componente perché gli errori di ciascun albero riguardano immagini diverse.
Combinare rilevatori di oggetti#
Gli ensemble per il rilevamento degli oggetti devono anche unire i riquadri: di solito, diversi modelli individuano lo stesso oggetto in posizioni leggermente diverse. Il metodo più semplice raccoglie i riquadri di tutti i modelli e applica la soppressione non massima (NMS), che mantiene il riquadro con la confidenza più alta in ogni gruppo di riquadri sovrapposti. La fusione ponderata dei riquadri calcola invece la media delle coordinate dei riquadri sovrapposti, ponderandola per la confidenza, così ogni modello contribuisce alla posizione finale. Ultralytics YOLO26 integra un ensemble correlato nella predizione: con augment=True, il rilevatore elabora l’immagine a scala intera, all’83% e al 67%, capovolgendo orizzontalmente la copia all’83%, e unisce i tre insiemi di riquadri con NMS. Questo esempio combina allo stesso modo due modelli YOLO26 di dimensioni diverse:
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")I riquadri individuati da entrambi i modelli vengono accorpati in uno solo, mentre gli oggetti individuati da un solo modello restano dopo l’unione; è così che un ensemble di rilevamento aumenta il recall.
Applicazioni#
- Analisi di immagini mediche: I modelli diagnostici combinano diverse reti per aumentare la sensibilità, e le divergenze tra i componenti segnalano i casi che un radiologo deve esaminare.
- Competizioni e benchmark: Le soluzioni vincitrici su Kaggle e classifiche analoghe calcolano regolarmente la media di modelli addestrati con architetture, semi e partizioni dei dati diversi, perché il guadagno in precisione compensa il calcolo aggiuntivo.
- Veicoli autonomi: I sistemi di percezione combinano modelli con punti di forza diversi, come un rilevatore basato su telecamera e uno basato su lidar, così un oggetto ignorato da uno può comunque essere rilevato dall’altro.
Ensemble di modelli e termini correlati#
- Apprendimento ensemble: Sinonimo della tecnica generale. «Ensemble di modelli» indica di solito l’insieme combinato di modelli che ne risulta.
- Fusione di modelli: Calcola la media dei pesi di modelli compatibili in un’unica rete, che viene quindi eseguita con il costo di un solo modello.
- Miscela di esperti (MoE): Un instradatore appreso invia ogni input solo ad alcuni sottoreti esperte, aumentando la capacità senza eseguire ogni esperto su ogni input.
- Distillazione della conoscenza: Addestra un singolo modello studente a imitare un modello insegnante, che può essere un intero ensemble. Nell’articolo sulla distillazione del 2015, Geoffrey Hinton, Oriol Vinyals e Jeff Dean compressero un ensemble di modelli di riconoscimento vocale in un unico modello, che conservava gran parte dei miglioramenti dell’ensemble.










