Insaccamento vs abbandono in reti neurali profonde


17

Il bagging è la generazione di più predittori che funziona come un singolo predittore. Il dropout è una tecnica che insegna a una rete neurale come media di tutte le sottoreti possibili. Osservando le più importanti competizioni di Kaggle sembra che queste due tecniche vengano usate insieme molto spesso. Non vedo alcuna differenza teorica oltre all'implementazione effettiva. Chi può spiegarmi perché dovremmo usarli entrambi in qualsiasi vera applicazione? e perché le prestazioni migliorano quando le usiamo entrambe?

Risposte:


21

Insaccamento e abbandono non ottengono la stessa cosa, sebbene entrambi siano tipi di media del modello.

Il bagging è un'operazione sull'intero set di dati che forma i modelli su un sottoinsieme dei dati di training. Pertanto alcuni esempi di addestramento non sono mostrati a un determinato modello.

Il dropout , al contrario, viene applicato alle funzionalità di ciascun esempio di allenamento. È vero che il risultato è funzionalmente equivalente all'allenamento esponenziale di molte reti (con pesi condivisi!) E quindi alla ponderazione equa dei risultati. Ma il dropout funziona nello spazio delle funzionalità, rendendo alcune funzionalità non disponibili per la rete, non esempi completi. Poiché ogni neurone non può fare completamente affidamento su un input, le rappresentazioni in queste reti tendono ad essere più distribuite e la rete ha meno probabilità di sovralimentarsi.


+1 per una bella spiegazione. Conosci qualche link in cui viene eseguita un'implementazione di Python? Qualche blog o forse Github?
Dawny33

Ce n'è uno decente qui: deeplearning.net/tutorial/lenet.html , anche se preferisco lo stile di questo: neuralnetworksanddeeplearning.com/chap6.html . Per l'implementazione e grandi dimostrazioni, mi piacciono le keras (abbastanza facili da installare) keras.io
jamesmf

2

Ho trovato un confronto tra i due tipi di reti in Max Out Networks che dice:

L'addestramento a dropout è simile al bagging (Breiman, 1994), in cui molti modelli diversi vengono formati su diversi sottogruppi di dati. L'allenamento di dropout differisce dal bagging in quanto ogni modello è addestrato per un solo passaggio e tutti i modelli condividono i parametri. Affinché questa procedura di allenamento (dropout) si comporti come se si stesse formando un ensemble piuttosto che un singolo modello, ogni aggiornamento deve avere un grande effetto, in modo che il sottomodello indotto da quel µ si adatti bene all'input corrente.

Spero che sia utile.


0

Il dropout è una tecnica di regolarizzazione utilizzata per evitare un eccesso di adattamento in grandi reti neurali, in particolare lasciando fuori alcuni dei neuroni in strati nascosti (da cui il nome dropout per i neuroni esclusi) dopo l'allenamento. Fondamentalmente se la rete ha davvero imparato qualcosa durante l'allenamento, l'abbandono di alcuni neuroni non dovrebbe influire negativamente sulla precisione delle previsioni.

Il bagging è anche un'efficace tecnica di regolarizzazione, utilizzata per ridurre la varianza dai dati di training e migliorare l'accuratezza del modello utilizzando più copie di esso addestrate su diversi sottoinsiemi di dati dal set di dati di training iniziale / più ampio.

vedi questa domanda

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.