Come funziona esattamente DropOut con i livelli convoluzionali?


10

Il dropout ( carta , spiegazione ) imposta l'output di alcuni neuroni su zero. Quindi, per un MLP, potresti avere la seguente architettura per il set di dati di fiori di Iris :

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

Funzionerebbe così:

softmax(W3tanh(W2mask(D,tanh(W1input_vector)))

con , , , , (ignorando i pregiudizi per motivi di semplicità).input_vectorR4×1W1R50×4D{0,1}50×1W2R20×50W3R20×3

Con eD=(d)ij

dijB(1,p=0.5)

dove l'operazione moltiplica puntuale con (vedi prodotto Hadamard ).mask(D,M)DM

Quindi campioniamo solo la matrice ogni volta e quindi il dropout diventa una moltiplicazione di un nodo con 0.D

Ma per le CNN, non mi è chiaro cosa venga abbandonato esattamente. Vedo tre possibilità:

  1. Eliminazione di mappe di funzionalità complete (da cui un kernel)
  2. Eliminazione di un elemento di un kernel (sostituzione di un elemento di un kernel con 0)
  3. Eliminazione di un elemento di una mappa delle caratteristiche

Aggiungi un riferimento / preventivo alla tua risposta.

I miei pensieri

Penso che Lasagne lo faccia (3) (vedi codice ). Questo potrebbe essere il più semplice da implementare. Tuttavia, più vicino all'idea originale potrebbe essere (1).

Sembra essere simile per Caffe (vedi codice ). Per tensorflow, l'utente deve decidere ( codice - non sono sicuro di cosa accada quando noise_shape=Noneviene passato).

Come dovrebbe essere

(2) e (3) non hanno molto senso in quanto indurrebbe la rete ad aggiungere invarianza alle posizioni spaziali, il che probabilmente non è desiderato. Quindi (1) è l'unica variante che ha senso. Ma non sono sicuro di cosa succede se si utilizza l'implementazione predefinita.


Ho posto la domanda anche nel gruppo utenti Lasagne .
Martin Thoma,

Un amico ha notato che (2) e (3) potrebbero non essere una buona idea perché potrebbero costringere la rete a diffondere informazioni nello spazio.
Martin Thoma

Risposte:


1

Come accennato, la matrice di maschere viene campionata e moltiplicata con le attivazioni nella mappa delle caratteristiche al livello per produrre attivazioni modificate abbandonate che vengono quindi convolte con il filtro al livello successivo . (3)lW(l+1)

Per maggiori dettagli, penso che la sezione 3 di questo documento potrebbe aiutarti: Max pooling e dropout convoluzionale . In particolare 3.2.

Quando si esegue il test, si utilizzano tutti i nodi della rete ma con i pesi del filtro ridimensionati in base alla probabilità di mantenimento, come spiegato nel documento.

Sentiti libero di affinare o correggere la mia risposta.

Spero che questo aiuti almeno un po '.

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.