Perché l'aggiunta di un livello di dropout migliora le prestazioni di deep / machine learning, dato che il dropout elimina alcuni neuroni dal modello?


13

Se la rimozione di alcuni neuroni si traduce in un modello con prestazioni migliori, perché non utilizzare in primo luogo una rete neurale più semplice con meno strati e meno neuroni? Perché costruire un modello più grande e complicato all'inizio e sopprimerne parti in seguito?

Risposte:


30

La funzione del dropout è quella di aumentare la robustezza del modello e anche di rimuovere qualsiasi semplice dipendenza tra i neuroni.

I neuroni vengono rimossi solo per un singolo passaggio avanti e indietro attraverso la rete - il che significa che i loro pesi sono sinteticamente impostati su zero per quel passaggio, e quindi anche i loro errori, il che significa che i pesi non vengono aggiornati. Il dropout funziona anche come una forma di regolarizzazione , in quanto sta penalizzando il modello per la sua complessità, in qualche modo.

Consiglierei di leggere la sezione Dropout nel libro Deep Learning di Michael Nielsen (gratuito e online), che offre una buona intuizione e ha anche diagrammi / spiegazioni molto utili. Spiega che:

Il dropout è una tecnica radicalmente diversa per la regolarizzazione. A differenza della regolarizzazione L1 e L2, il dropout non si basa sulla modifica della funzione di costo. Invece, nel dropout modifichiamo la rete stessa.

Ecco un bell'articolo di sintesi . Da quell'articolo:

Alcune osservazioni:

  • Il dropout obbliga una rete neurale ad apprendere caratteristiche più robuste che sono utili in combinazione con molti diversi sottogruppi casuali degli altri neuroni.
  • Il dropout raddoppia approssimativamente il numero di iterazioni richieste per convergere. Tuttavia, il tempo di allenamento per ogni epoca è inferiore.
  • Con le unità nascoste H, ognuna delle quali può essere lasciata cadere, abbiamo 2 ^ H possibili modelli. In fase di test, viene considerata l'intera rete e ogni attivazione viene ridotta di un fattore p.

Esempio

Immagina di chiederti di farmi una tazza di tè: potresti sempre usare la mano destra per versare l'acqua, l'occhio sinistro per misurare il livello dell'acqua e poi di nuovo la mano destra per mescolare il tè con un cucchiaio. Ciò significherebbe che la mano sinistra e l'occhio destro servono a poco. L'uso del dropout ad esempio legherebbe la mano destra dietro la schiena, costringendoti a usare la mano sinistra. Ora, dopo avermi preparato 20 tazze di tè, con un occhio o una mano fuori uso, sei più allenato ad usare tutto ciò che è disponibile. Forse in seguito sarai costretto a preparare il tè in una minuscola cucina, dove è possibile utilizzare il bollitore solo con il braccio sinistro ... e dopo aver usato il forcellino, hai esperienza nel farlo! Sei diventato più robusto per i dati invisibili.


come determinare il miglior valore di abbandono per la classificazione multi classe? e come determinare il miglior numero di livelli di abbandono?
N.IT

2
@N.IT - per quanto ne so, non esiste un metodo ben definito che troverà il miglior livello di abbandono o quanti strati - a parte jsut che prova molte combinazioni. Come con altri metodi di regolarizzazione ed esplorazione dell'architettura, probabilmente otterrai i migliori risultati allenando un modello e confrontando le curve di perdita di addestramento / validazione. Dai un'occhiata a questa spiegazione sull'argomento .
n1k31t4,

Bella risposta. Per essere più concreti per quanto riguarda l'analogia della tua cucina, Dropout viene utilizzato solo durante l'allenamento, non durante l'inferenza. Pertanto, il modello complesso non è parzialmente utilizzato.
Vaibhav Garg,

stavo scrivendo questa risposta con gli occhi chiusi. più bisogno di allenamento. nwws moew seopour.
Vandato il

3

Il dropout in realtà non rimuove i neuroni, è solo che quei neuroni particolari non svolgono alcun ruolo (non vengono attivati) per il dato lotto di dati.

Esempio - Supponiamo che ci sia una strada di 8 corsie - Quando arrivano i camion, passano attraverso le corsie 1,2,4,6,7, quando arrivano le macchine, passano attraverso le corsie 2,3,4,7,8 e quando arrivano le biciclette , passano attraverso le corsie 1,2,5,8. Quindi, indipendentemente da qualsiasi veicolo, ci sono tutte le corsie, ma ne vengono utilizzate solo alcune.

Allo stesso modo, tutti i neuroni vengono utilizzati nell'intero modello, ma solo un sottoinsieme di neuroni viene attivato per un determinato gruppo di dati. E il modello non viene ridotto in seguito, la complessità del modello rimane così com'è.

Perché usare il dropout?

Come indicato nel libro di Deep learning di Ian Goodfellow,

il dropout è più efficace rispetto ad altri regolarizzatori standard computazionalmente economici, come la riduzione del peso, i vincoli delle norme di filtro e la regolarizzazione delle attività sparse.

Dice anche-

Un vantaggio del dropout è che è molto economico dal punto di vista computazionale.

Un altro vantaggio significativo del dropout è che non limita in modo significativo il tipo di modello o procedura di allenamento che è possibile utilizzare. Funziona bene con quasi tutti i modelli che utilizzano una rappresentazione distribuita e possono essere addestrati con la discesa gradiente stocastica. Ciò include reti neurali feedforward, modelli probabilistici come macchine Boltzmann riservate (Srivastava et al., 2014) e reti neurali ricorrenti (Bayer e Osendorfer, 2014; Pascanu et al., 2014a).

Questo libro dice-

L'idea di base è che l'introduzione del rumore nei valori di output di un livello può interrompere modelli di accadimento non significativi, che la rete inizierà a memorizzare se non è presente alcun rumore.


Ho modificato la domanda per usare la parola sopprimere e non rimuovere. La domanda rimane. Perché costruire così tante corsie quando alla fine ne vengono utilizzate solo alcune?
user781486

@ user781486 Per alcuni di essi, significa che alcuni di essi per ogni batch di dati, ma verranno utilizzati tutti se si considerano dati interi. Come nel mio esempio, tutte le corsie 1-8 vengono utilizzate se si prende un insieme combinato di numeri di corsia per ciascun veicolo.
Ankit Seth,

3

Un altro modo di vedere ciò che fa il dropout è che è come una lastra e un picco prima del coefficiente di una covariata (che è un termine complesso di interazione delle covariate originali con alcune complicate trasformazioni funzionali) in un modello bayesiano. Questa è l'interpretazione proposta da Yarin Gal nella sua tesi (vedi il suo elenco di pubblicazioni ).

Ecco un breve argomento agitando la mano sul perché sia ​​così:

  • In quei lotti, in cui un neurone viene eliminato, il coefficiente per caratteristica / covariata (costruito dalla connessione nella rete neurale che va nel neurone) è zero (picco a zero).
  • In quei lotti, in cui è presente il neurone, il coefficiente è illimitato (precedente piatto improprio = lastra).
  • Con una media di tutti i lotti, si ottiene prima un picco.

Perché dovremmo desiderare una lastra e un picco prima? Induce un modello bayesiano in media tra una rete neutrale senza quel neurone e uno con esso dentro. In altre parole, ci permette di esprimere incertezza sul fatto che la rete neutra abbia davvero bisogno della sua piena complessità possibile e tiene adeguatamente conto di questa incertezza nel predizioni. Questo affronta il problema principale del fatto che le reti neutrali sono in grado di adattarsi eccessivamente ai dati (anche se ovviamente non è l'unico modo possibile per raggiungere questo obiettivo).


Buon punto. Aggiornerà la risposta.
Björn,

2

Lo strato di abbandono elimina indiscriminatamente una determinata porzione di neuroni, diminuendo la capacità rappresentativa del modello in questione. Ciò impedisce alla rete di adattarsi a complessi limiti di decisione non lineari (ovvero il "rumore" nel set di dati), evitando così (o migliorando) un eccesso di adattamento.

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.