Ensemble
L'apprendimento ensemble combina le previsioni di diversi modelli tramite bagging, boosting o stacking, ottenendo un errore inferiore a quello di ciascun modello preso singolarmente.
L'ensemble learning addestra diversi modelli per lo stesso compito e combina le loro previsioni, tramite voto, media o un combinatore appreso, in un unico output che in genere è più accurato e stabile di quello di ogni singolo modello. Funziona perché i diversi modelli commettono errori diversi e la loro combinazione annulla parte dell'errore di ciascuno. Nel 1995, Anders Krogh e Jesper Vedelsby hanno dimostrato questo principio per i modelli di regressione con output mediati: l'errore quadratico dell'ensemble equivale all'errore medio dei suoi componenti meno il loro disaccordo medio rispetto all'ensemble, quindi un ensemble mediato non è mai peggiore del suo componente medio; a renderlo migliore è la diversità tra i componenti.
Bagging, boosting e stacking#
Tre famiglie coprono la maggior parte degli ensemble nel machine learning e agiscono su aspetti diversi del compromesso bias-varianza.
Il bagging, abbreviazione di bootstrap aggregating, è stato introdotto da Leo Breiman nel 1996. Addestra ogni componente in modo indipendente su un campione bootstrap estratto con reinserimento dal set di training, quindi calcola la media o il voto dei risultati, riducendo soprattutto la varianza. È adatto ad algoritmi instabili come gli alberi decisionali profondi; la foresta casuale di Breiman del 2001 aggiunge un sottoinsieme casuale di caratteristiche a ogni split, rendendo gli alberi ancora più diversi tra loro.
Il boosting addestra i componenti in sequenza, concentrando ciascuno sugli errori commessi dall'ensemble fino a quel momento e riducendo soprattutto il bias. AdaBoost, ideato da Yoav Freund e Robert Schapire, aumenta il peso degli esempi classificati in modo errato prima di addestrare il successivo learner debole. Il gradient boosting di Jerome Friedman addestra ogni nuovo albero sul gradiente della funzione di perdita: è l'approccio alla base di XGBoost, LightGBM e CatBoost, che restano tra i modelli più efficaci su molti dataset tabulari.
Lo stacking, o generalizzazione a stack, è stato proposto da David Wolpert nel 1992. Un meta-modello, spesso una regressione logistica, apprende a combinare modelli di base eterogenei dalle loro previsioni sui fold lasciati fuori, dando più peso ai modelli le cui previsioni sui fold esclusi sono più affidabili.
Questo esempio di scikit-learn confronta un singolo albero con un ensemble di ciascuna famiglia su un dataset di diagnosi del cancro al seno, usando la convalida incrociata a 5 fold:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
X, y = load_breast_cancer(return_X_y=True) # 569 tumors, 30 measurements each
forest = RandomForestClassifier(n_estimators=200, random_state=0)
boosting = GradientBoostingClassifier(random_state=0)
models = {
"Single decision tree": DecisionTreeClassifier(random_state=0),
"Bagging (random forest)": forest,
"Boosting (gradient boosting)": boosting,
# Stacking: a logistic regression learns how to combine the forest and the boosted trees
"Stacking": StackingClassifier([("forest", forest), ("boosting", boosting)], LogisticRegression()),
}
for name, model in models.items():
print(f"{name}: {cross_val_score(model, X, y, cv=5).mean():.3f}")Il singolo albero ottiene 0.917, la foresta casuale 0.960, il gradient boosting 0.963 e il modello con stacking 0.963. Ogni ensemble riduce approssimativamente della metà gli errori dell'albero. Lo stacking eguaglia il componente migliore perché 16 dei 23 tumori classificati in modo errato dalla foresta vengono classificati in modo errato anche dagli alberi con boosting, lasciando al meta-modello poche divergenze da sfruttare.
Ensemble nel deep learning e nella vision#
Gli ensemble profondi addestrano diverse reti neurali con inizializzazioni casuali diverse e ne calcolano la media degli output. Nel 2017, Balaji Lakshminarayanan e i suoi colleghi di DeepMind hanno dimostrato che questo migliora sia l'accuratezza sia la quantificazione dell'incertezza, perché i componenti sono più in disaccordo sugli input diversi dai dati di training. Nel rilevamento di oggetti, le bounding box prodotte da diversi detector vengono aggregate e unite con la soppressione dei non massimi (NMS) o la fusione ponderata delle bounding box, che calcola la media delle box sovrapposte anziché tenere solo quella con la confidenza più alta. Gli ensemble di architetture diverse sono comuni nell'analisi di immagini mediche e nelle soluzioni presentate ai concorsi, dove l'accuratezza conta più del costo di inferenza.
Il costo aumenta con ogni componente, limitando l'uso degli ensemble sui dispositivi di edge AI. La distillazione della conoscenza è stata introdotta anche per risolvere questo problema: Geoffrey Hinton, Oriol Vinyals e Jeff Dean hanno addestrato un singolo modello a riprodurre gli output mediati di un ensemble. Il dropout è un'alternativa meno costosa, perché il suo uso in fase di training approssima la media di un numero esponenziale di sottoreti ridotte.
Ensemble, model soup e mixture of experts#
Per ensemble di modelli si intende di solito la combinazione, in fase di inferenza, di reti addestrate separatamente: è la forma più comune di ensemble learning nel deep learning. Le model soup e altri metodi di fusione dei modelli calcolano la media dei pesi invece che delle previsioni, mantenendo il costo di un singolo modello, ma funzionano solo con modelli sottoposti a fine-tuning a partire dagli stessi pesi preaddestrati. Una mixture of experts (MoE) addestra congiuntamente i propri esperti con un router che invia ogni input solo ad alcuni di loro, così gli esperti si specializzano invece di risolvere ciascuno l'intero compito.
Calcolare la media dei pesi lungo una singola esecuzione di training approssima un ensemble dei checkpoint di quell'esecuzione al costo di un solo modello, come hanno dimostrato Pavel Izmailov e i suoi colleghi nel 2018 con la media stocastica dei pesi. L'addestramento Ultralytics YOLO applica questo metodo a ogni esecuzione di YOLO26: mantiene una media mobile esponenziale dei pesi, aggiornata dopo ogni passaggio dell'ottimizzatore con un decadimento che aumenta gradualmente fino a 0.9999, e convalida e salva questa media in best.pt e last.pt invece dei pesi grezzi.










