Metodi di apprendimento Ensemble per reti neurali di apprendimento profondo

Tweet Share Share

Ultimo aggiornamento del 6 agosto 2019

Come migliorare le prestazioni combinando le previsioni di più modelli.

Le reti neurali di apprendimento profondo sono metodi non lineari. Uno svantaggio di questa flessibilità è che imparano attraverso un algoritmo di formazione stocastica, il che significa che sono sensibili alle specificità dei dati di formazione e possono trovare un diverso set di pesi ogni volta che vengono addestrati, che a sua volta produce previsioni diverse.

Generalmente, questo si riferisce alle reti neurali che hanno un’alta varianza e può essere frustrante quando si cerca di sviluppare un modello finale da usare per fare previsioni.

Un approccio di successo per ridurre la varianza dei modelli di rete neurale è quello di addestrare più modelli invece di un singolo modello e di combinare le previsioni di questi modelli. Questo è chiamato ensemble learning e non solo riduce la varianza delle previsioni, ma può anche risultare in previsioni che sono migliori di qualsiasi modello singolo.

In questo post, scoprirete i metodi per le reti neurali di deep learning per ridurre la varianza e migliorare le prestazioni di previsione.

Dopo aver letto questo post, saprai:

  • I modelli di rete neurale sono non lineari e hanno un’alta varianza, che può essere frustrante quando si prepara un modello finale per fare previsioni.
  • L’apprendimento ensemble combina le previsioni di più modelli di rete neurale per ridurre la varianza delle previsioni e ridurre l’errore di generalizzazione.
  • Le tecniche per l’ensemble learning possono essere raggruppate in base all’elemento che viene variato, come i dati di allenamento, il modello e il modo in cui le previsioni vengono combinate.

Avvia il tuo progetto con il mio nuovo libro Better Deep Learning, che include tutorial passo dopo passo e i file del codice sorgente Python per tutti gli esempi.

Iniziamo.

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks
Photo by University of San Francisco’s Performing Arts, some rights reserved.

Overview

This tutorial is divided into four parts; they are:

  1. High Variance of Neural Network Models
  2. Reduce Variance Using an Ensemble of Models
  3. How to Ensemble Neural Network Models
  4. Summary of Ensemble Techniques

High Variance of Neural Network Models

Training deep neural networks can be very computationally expensive.

Very deep networks trained on millions of examples may take days, weeks, and sometimes months to train.

Il modello di base di Google era una rete neurale convoluzionale profonda che era stata addestrata per circa sei mesi utilizzando la discesa del gradiente stocastico asincrono su un gran numero di core.

– Distilling the Knowledge in a Neural Network, 2015.

Dopo l’investimento di così tanto tempo e risorse, non c’è garanzia che il modello finale avrà un basso errore di generalizzazione, eseguendo bene su esempi non visti durante l’addestramento.

… addestrare molte diverse reti candidate e poi selezionare la migliore, e scartare il resto. Ci sono due svantaggi con un tale approccio. In primo luogo, tutto lo sforzo necessario per addestrare le reti rimanenti viene sprecato. In secondo luogo, la rete che ha avuto le migliori prestazioni sul set di validazione potrebbe non essere quella con le migliori prestazioni sui nuovi dati di test.

– Pagine 364-365, Neural Networks for Pattern Recognition, 1995.

I modelli di rete neurale sono un metodo non lineare. Questo significa che possono imparare complesse relazioni non lineari nei dati. Uno svantaggio di questa flessibilità è che sono sensibili alle condizioni iniziali, sia in termini di pesi casuali iniziali che in termini di rumore statistico nel dataset di allenamento.

Questa natura stocastica dell’algoritmo di apprendimento significa che ogni volta che un modello di rete neurale viene addestrato, può imparare una versione leggermente (o drammaticamente) diversa della funzione di mappatura dagli input agli output, che a sua volta avrà prestazioni diverse sui set di dati di allenamento e di holdout.

Come tale, possiamo pensare a una rete neurale come a un metodo che ha un basso bias e un’alta varianza. Anche se addestrato su grandi set di dati per soddisfare l’alta varianza, avere qualsiasi varianza in un modello finale che è destinato ad essere utilizzato per fare previsioni può essere frustrante.

Vuoi risultati migliori con il Deep Learning?

Prendi subito il mio corso crash gratuito di 7 giorni via email (con codice di esempio).

Clicca per iscriverti e ottenere anche una versione gratuita del corso in PDF Ebook.

Scarica il tuo mini-corso gratuito

Riduci la varianza utilizzando un insieme di modelli

Una soluzione all’alta varianza delle reti neurali è quella di addestrare più modelli e combinare le loro previsioni.

L’idea è quella di combinare le previsioni di più modelli buoni ma diversi.

Un buon modello ha abilità, cioè le sue previsioni sono migliori del caso casuale. È importante che i modelli siano buoni in modi diversi; devono commettere diversi errori di previsione.

La ragione per cui la media dei modelli funziona è che modelli diversi di solito non commettono tutti gli stessi errori sul set di test.

– Pagina 256, Deep Learning, 2016.

Combinando le previsioni di più reti neurali si aggiunge un bias che a sua volta contrasta la varianza di un singolo modello di rete neurale addestrato. I risultati sono previsioni che sono meno sensibili alle specificità dei dati di formazione, alla scelta dello schema di formazione e alla serendipità di una singola sessione di formazione.

Oltre a ridurre la varianza nella previsione, l’ensemble può anche portare a previsioni migliori di qualsiasi singolo modello migliore.

… le prestazioni di un comitato possono essere migliori delle prestazioni della migliore rete singola utilizzata in isolamento.

– Page 365, Neural Networks for Pattern Recognition, 1995.

Questo approccio appartiene ad una classe generale di metodi chiamati “ensemble learning” che descrive i metodi che tentano di fare il miglior uso delle previsioni di più modelli preparati per lo stesso problema.

Generalmente, l’ensemble learning implica l’addestramento di più di una rete sullo stesso set di dati, quindi l’utilizzo di ciascuno dei modelli addestrati per fare una previsione prima di combinare le previsioni in qualche modo per fare un risultato finale o una previsione.

In effetti, l’ensemble di modelli è un approccio standard nell’apprendimento automatico applicato per garantire che venga fatta la previsione più stabile e migliore possibile.

Per esempio, Alex Krizhevsky, et al. nel loro famoso articolo del 2012 intitolato “Imagenet classification with deep convolutional neural networks” che ha introdotto reti neurali convoluzionali molto profonde per la classificazione delle foto (cioè AlexNet) hanno usato la media dei modelli tra più modelli CNN ben performanti per ottenere risultati allo stato dell’arte all’epoca. Le prestazioni di un modello sono state confrontate con le previsioni dell’ensemble mediate su due, cinque e sette modelli diversi.

La media delle previsioni di cinque CNN simili dà un tasso di errore del 16,4%. Facendo la media delle previsioni di due CNN che sono state pre-addestrate con le cinque CNN di cui sopra si ottiene un tasso di errore del 15,3%.

L’ensembling è anche l’approccio utilizzato dai vincitori nelle competizioni di apprendimento automatico.

Un’altra tecnica potente per ottenere i migliori risultati possibili su un compito è l’ensembling dei modelli. Se guardate le competizioni di machine learning, in particolare su Kaggle, vedrete che i vincitori usano insiemi molto grandi di modelli che inevitabilmente battono qualsiasi modello singolo, non importa quanto buono.

– Pagina 264, Deep Learning With Python, 2017.

Come assemblare i modelli di reti neurali

Forse il più antico e ancora più comunemente usato approccio di ensembling per le reti neurali è chiamato “comitato di reti”

Un insieme di reti con la stessa configurazione e diversi pesi casuali iniziali viene addestrato sullo stesso set di dati. Ogni modello viene poi usato per fare una predizione e la predizione effettiva viene calcolata come media delle predizioni.

Il numero di modelli nell’ensemble è spesso mantenuto piccolo sia a causa del costo computazionale nell’addestramento dei modelli sia a causa dei rendimenti decrescenti nelle prestazioni dall’aggiunta di più membri dell’ensemble. Gli ensemble possono essere piccoli come tre, cinque o 10 modelli addestrati.

Il campo dell’apprendimento di ensemble è ben studiato e ci sono molte variazioni su questo semplice tema.

Può essere utile pensare di variare ognuno dei tre elementi principali del metodo dell’ensemble; per esempio:

  • Dati di formazione: Variare la scelta dei dati usati per addestrare ogni modello nell’ensemble.
  • Modelli Ensemble: Variare la scelta dei modelli usati nell’insieme.
  • Combinazioni: Variare la scelta del modo in cui i risultati dei membri dell’ensemble sono combinati.

Guardiamo più da vicino ogni elemento a turno.

Variare i dati di addestramento

I dati usati per addestrare ogni membro dell’ensemble possono essere variati.

L’approccio più semplice sarebbe quello di usare k-fold cross-validation per stimare l’errore di generalizzazione della configurazione del modello scelto. In questa procedura, k diversi modelli sono addestrati su k diversi sottoinsiemi di dati di formazione. Questi k modelli possono poi essere salvati e utilizzati come membri di un ensemble.

Un altro approccio popolare coinvolge il ricampionamento del dataset di allenamento con sostituzione, quindi l’allenamento di una rete utilizzando il dataset ricampionato. La procedura di ricampionamento significa che la composizione di ogni set di dati di addestramento è diversa, con la possibilità di esempi duplicati che permettono al modello addestrato sul set di dati di avere un’aspettativa leggermente diversa della densità dei campioni, e a sua volta un diverso errore di generalizzazione.

Questo approccio è chiamato aggregazione bootstrap, o bagging in breve, ed è stato progettato per l’uso con alberi decisionali non potati che hanno un’alta varianza e un basso bias. Tipicamente si usa un gran numero di alberi decisionali, come centinaia o migliaia, dato che sono veloci da preparare.

… un modo naturale per ridurre la varianza e quindi aumentare l’accuratezza della previsione di un metodo di apprendimento statistico è quello di prendere molti set di allenamento dalla popolazione, costruire un modello di previsione separato usando ogni set di allenamento, e fare la media delle previsioni risultanti. Naturalmente, questo non è pratico perché generalmente non abbiamo accesso a più serie di allenamento. Invece, possiamo fare il bootstrap, prendendo campioni ripetuti dal (singolo) set di dati di allenamento.

– Pagine 216-317, An Introduction to Statistical Learning with Applications in R, 2013.

Un approccio equivalente potrebbe essere quello di utilizzare un sottoinsieme più piccolo del dataset di allenamento senza regolarizzazione per consentire un allenamento più veloce e un po’ di overfitting.

Il desiderio di modelli leggermente sotto-ottimizzati si applica alla selezione dei membri dell’ensemble più in generale.

… i membri del comitato non dovrebbero essere scelti individualmente per avere un trade-off ottimale tra bias e varianza, ma dovrebbero avere bias relativamente minori, poiché la varianza extra può essere rimossa facendo la media.

– Pagina 366, Neural Networks for Pattern Recognition, 1995.

Altri approcci possono comportare la selezione di un sottospazio casuale dello spazio di input da assegnare ad ogni modello, come un sottoinsieme dell’iper-volume nello spazio di input o un sottoinsieme di caratteristiche di input.

Ensemble Tutorial

Per esempi di ensemble di deep learning che variano i dati di allenamento vedi:

  • Come sviluppare un ensemble di suddivisione casuale, cross-validazione e bagging per l’apprendimento profondo

Modelli variabili

L’allenamento dello stesso modello sotto vincolo sugli stessi dati con condizioni iniziali diverse darà come risultato modelli diversi, data la difficoltà del problema e la natura stocastica dell’algoritmo di apprendimento.

Questo perché il problema di ottimizzazione che la rete sta cercando di risolvere è così impegnativo che ci sono molte soluzioni “buone” e “diverse” per mappare gli input agli output.

La maggior parte degli algoritmi di rete neurale raggiunge prestazioni sub-ottimali proprio a causa dell’esistenza di un numero eccessivo di minimi locali sub-ottimali. Se prendiamo un insieme di reti neurali che sono convergenti ai minimi locali e applichiamo la media, possiamo costruire una stima migliore. Un modo per capire questo fatto è quello di considerare che, in generale, le reti che sono cadute in diversi minimi locali si comportano male in diverse regioni dello spazio delle caratteristiche e quindi i loro termini di errore non saranno fortemente correlati.

– Quando le reti non sono d’accordo: Ensemble methods for hybrid neural networks, 1995.

Questo può risultare in una varianza ridotta, ma può non migliorare drasticamente l’errore di generalizzazione. Gli errori commessi dai modelli potrebbero essere ancora troppo correlati perché tutti i modelli hanno appreso funzioni di mappatura simili.

Un approccio alternativo potrebbe essere quello di variare la configurazione di ogni modello di ensemble, ad esempio utilizzando reti con capacità diverse (ad esempio il numero di strati o nodi) o modelli addestrati in condizioni diverse (ad esempio il tasso di apprendimento o la regolarizzazione).

Il risultato potrebbe essere un ensemble di modelli che hanno appreso una collezione più eterogenea di funzioni di mappatura e a sua volta hanno una correlazione inferiore nelle loro previsioni ed errori di previsione.

Differenze nell’inizializzazione casuale, selezione casuale dei minibatch, differenze negli iperparametri, o diversi risultati di implementazioni non deterministiche delle reti neurali sono spesso sufficienti a far sì che diversi membri dell’ensemble commettano errori parzialmente indipendenti.

– Pagine 257-258, Deep Learning, 2016.

Un tale ensemble di modelli diversamente configurati può essere ottenuto attraverso il normale processo di sviluppo della rete e la messa a punto dei suoi iperparametri. Ogni modello potrebbe essere salvato durante questo processo e un sottoinsieme di modelli migliori scelti per comprendere l’ensemble.

Reti leggermente addestrate in modo inferiore sono un sottoprodotto gratuito della maggior parte degli algoritmi di tuning; è auspicabile utilizzare tali copie extra anche quando le loro prestazioni sono significativamente peggiori delle migliori prestazioni trovate. Prestazioni ancora migliori possono essere ottenute attraverso un’attenta pianificazione della classificazione di un ensemble utilizzando i migliori parametri disponibili e addestrando diverse copie su diversi sottoinsiemi del database disponibile.

– Neural Network Ensembles, 1990.

Nei casi in cui un singolo modello può richiedere settimane o mesi per addestrarsi, un’altra alternativa può essere quella di salvare periodicamente il modello migliore durante il processo di addestramento, chiamato snapshot o checkpoint models, quindi selezionare i membri dell’ensemble tra i modelli salvati. Questo fornisce i vantaggi di avere più modelli addestrati sugli stessi dati, anche se raccolti durante una singola sessione di addestramento.

Snapshot Ensembling produce un ensemble di modelli accurati e diversi da un singolo processo di addestramento. Il cuore di Snapshot Ensembling è un processo di ottimizzazione che visita diversi minimi locali prima di convergere verso una soluzione finale. Prendiamo le istantanee del modello in questi vari minimi, e facciamo la media delle loro previsioni al momento del test.

– Snapshot Ensembles: Train 1, get M for free, 2017.

Una variante dell’ensemble Snapshot è quella di salvare i modelli da una serie di epoche, magari identificate rivedendo le curve di apprendimento delle prestazioni dei modelli sui dataset di addestramento e validazione durante l’addestramento. Gli ensemble provenienti da tali sequenze contigue di modelli sono definiti ensemble orizzontali.

In primo luogo, vengono selezionate le reti addestrate per un intervallo di epoche relativamente stabile. Le previsioni della probabilità di ogni etichetta sono prodotte da classificatori standard l’epoca selezionata, e poi mediate.

– Ensemble orizzontale e verticale con rappresentazione profonda per la classificazione, 2013.

Un ulteriore miglioramento dell’ensemble istantaneo è quello di variare sistematicamente la procedura di ottimizzazione durante la formazione per forzare diverse soluzioni (cioè set di pesi), la migliore delle quali può essere salvata nei checkpoint. Questo potrebbe comportare l’iniezione di una quantità oscillante di rumore durante le epoche di allenamento o l’oscillazione del tasso di apprendimento durante le epoche di allenamento. Una variante di questo approccio chiamata Stochastic Gradient Descent with Warm Restarts (SGDR) ha dimostrato un apprendimento più veloce e risultati allo stato dell’arte per compiti standard di classificazione delle foto.

Il nostro SGDR simula le ripartenze a caldo programmando il tasso di apprendimento per ottenere risultati competitivi circa due o quattro volte più velocemente. Abbiamo anche raggiunto nuovi risultati allo stato dell’arte con SGDR, principalmente utilizzando ancora più ampi e insiemi di istantanee dalla traiettoria di SGDR.

– SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.

Un vantaggio delle reti neurali molto profonde è che gli strati nascosti intermedi forniscono una rappresentazione appresa dei dati di input a bassa risoluzione. Gli strati nascosti possono emettere direttamente le loro rappresentazioni interne, e l’output di uno o più strati nascosti di una rete molto profonda può essere utilizzato come input per un nuovo modello di classificazione. Questo è forse più efficace quando il modello profondo è addestrato usando un modello autoencoder. Questo tipo di ensemble viene definito un ensemble verticale.

Questo metodo mette insieme una serie di classificatori i cui input sono la rappresentazione degli strati intermedi. Ci si aspetta un tasso di errore più basso perché queste caratteristiche sembrano diverse.

– Ensemble orizzontale e verticale con rappresentazione profonda per la classificazione, 2013.

Tutorial sugli ensemble

Per esempi di ensemble di deep learning che variano i modelli vedere:

  • Come sviluppare un ensemble istantaneo per l’apprendimento profondo
  • Come sviluppare un ensemble di voto orizzontale per l’apprendimento profondo

Combinazioni variabili

Il modo più semplice per combinare le previsioni è calcolare la media delle previsioni dei membri dell’ensemble.

Questo può essere leggermente migliorato ponderando le previsioni di ogni modello, dove i pesi sono ottimizzati utilizzando un set di dati di convalida hold-out. Questo fornisce una media ponderata dell’ensemble che a volte è chiamata fusione di modelli.

… potremmo aspettarci che alcuni membri del comitato facciano tipicamente previsioni migliori di altri membri. Ci aspetteremmo quindi di poter ridurre ulteriormente l’errore se diamo un peso maggiore ad alcuni membri del comitato rispetto ad altri. Così, consideriamo una previsione generalizzata del comitato data da una combinazione ponderata delle previsioni dei membri …

– Page 367, Neural Networks for Pattern Recognition, 1995.

Un ulteriore passo nella complessità comporta l’uso di un nuovo modello per imparare come combinare al meglio le previsioni di ogni membro dell’ensemble.

Il modello potrebbe essere un semplice modello lineare (per esempio molto simile alla media ponderata), ma potrebbe essere un sofisticato metodo non lineare che considera anche lo specifico campione di input oltre alle previsioni fornite da ogni membro. Questo approccio generale di apprendimento di un nuovo modello è chiamato model stacking, o stacked generalization.

Stacked generalization funziona deducendo i bias del/i generalizzatore/i rispetto a un set di apprendimento fornito. Questa deduzione procede generalizzando in un secondo spazio i cui input sono (per esempio) le ipotesi dei generalizzatori originali quando vengono istruiti con una parte dell’insieme di apprendimento e cercano di indovinare il resto di esso, e il cui output è (per esempio) l’ipotesi corretta. Quando viene usata con un singolo generalizzatore, la generalizzazione impilata è uno schema per stimare (e poi correggere) l’errore di un generalizzatore che è stato addestrato su un particolare set di apprendimento e poi ha posto una particolare domanda.

– Generalizzazione impilata, 1992.

Ci sono metodi più sofisticati per impilare i modelli, come il boosting dove i membri dell’ensemble vengono aggiunti uno alla volta per correggere gli errori dei modelli precedenti. La complessità aggiunta fa sì che questo approccio sia usato meno spesso con grandi modelli di reti neurali.

Un’altra combinazione un po’ diversa è quella di combinare i pesi di più reti neurali con la stessa struttura. I pesi di più reti possono essere mediati, per sperare di ottenere un nuovo modello singolo che abbia prestazioni complessive migliori di qualsiasi modello originale. Questo approccio è chiamato media dei pesi del modello.

… suggerisce che è promettente fare la media di questi punti nello spazio dei pesi, e usare una rete con questi pesi mediati, invece di formare un ensemble facendo la media degli output delle reti nello spazio del modello

– Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

Ensemble Tutorial

Per esempi di ensemble di deep learning che variano le combinazioni vedere:

  • Come sviluppare un Model Averaging Ensemble per il Deep Learning
  • Come sviluppare un Weighted Average Ensemble per il Deep Learning
  • Come sviluppare uno Stacking Ensemble per il Deep Learning
  • Come creare un Polyak-Ruppert Ensemble per il Deep Learning

Sommario delle tecniche Ensemble

In sintesi, we can list some of the more common and interesting ensemble methods for neural networks organized by each element of the method that can be varied, as follows:

  • Varying Training Data
    • k-fold Cross-Validation Ensemble
    • Bootstrap Aggregation (bagging) Ensemble
    • Random Training Subset Ensemble
  • Varying Models
    • Multiple Training Run Ensemble
    • Hyperparameter Tuning Ensemble
    • Snapshot Ensemble
    • Horizontal Epochs Ensemble
    • Vertical Representational Ensemble
  • Varying Combinations
    • Model Averaging Ensemble
    • Weighted Average Ensemble
    • Stacked Generalization (stacking) Ensemble
    • Boosting Ensemble
    • Model Weight Averaging Ensemble

There is no single best ensemble method; perhaps experiment with a few approaches or let the constraints of your project guide you.

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Books

  • Section 9.6 Committees of networks, Neural Networks for Pattern Recognition, 1995.
  • Section 7.11 Bagging and Other Ensemble Methods, Deep Learning, 2016.
  • Section 7.3.3 Model ensembling, Deep Learning With Python, 2017.
  • Section 8.2 Bagging, Random Forests, Boosting, An Introduction to Statistical Learning with Applications in R, 2013.

Papers

  • Neural Network Ensembles, 1990.
  • Neural Network Ensembles, Cross Validation, and Active Learning, 1994.
  • When networks disagree: Ensemble methods for hybrid neural networks, 1995.
  • Snapshot Ensembles: Train 1, get M for free, 2017.
  • SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
  • Horizontal and vertical ensemble with deep representation for classification, 2013.
  • Stacked generalization, 1992.
  • Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

Articles

  • Ensemble learning, Wikipedia.
  • Bootstrap aggregating, Wikipedia.
  • Boosting (machine learning), Wikipedia.

Summary

In this post, you discovered ensemble methods for deep learning neural networks to reduce variance and improve prediction performance.

Specifically, you learned:

  • Neural network models are nonlinear and have a high variance, which can be frustrating when preparing a final model for making predictions.
  • L’apprendimento ensemble combina le previsioni di più modelli di rete neurale per ridurre la varianza delle previsioni e ridurre l’errore di generalizzazione.
  • Le tecniche per l’apprendimento ensemble possono essere raggruppate in base all’elemento che viene variato, come i dati di allenamento, il modello e il modo in cui le previsioni vengono combinate.

Hai qualche domanda?
Poni le tue domande nei commenti qui sotto e io farò del mio meglio per rispondere.

Sviluppa modelli di Deep Learning migliori oggi!

Meglio il Deep Learning

Allena più velocemente, riduci l’overftting e gli ensemble

…con poche righe di codice python

Scopri come nel mio nuovo Ebook:
Meglio Deep Learning

Fornisce tutorial autodidattici su argomenti come:
decadimento del peso, normalizzazione del batch, dropout, model stacking e molto altro…

Porta un migliore deep learning nei tuoi progetti!

Skip the Academics. Just Results.

See What’s Inside

Tweet Share Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *