Come combattere il sottofondo in una profonda rete neurale


50

Quando ho iniziato con le reti neurali artificiali (NN), ho pensato che avrei dovuto combattere il sovraprezzo come problema principale. Ma in pratica non riesco nemmeno a far superare la barriera del tasso di errore del mio NN al 20%. Non riesco nemmeno a battere il mio punteggio sulla foresta casuale!

Sto cercando un consiglio molto generale o non così generale su cosa si dovrebbe fare per far iniziare una NN a catturare le tendenze nei dati.

Per implementare NN uso Theano Stacked Auto Encoder con il codice del tutorial che funziona benissimo (tasso di errore inferiore al 5%) per classificare il set di dati MNIST. È un perceptron multistrato, con uno strato di softmax in cima e ciascuno nascosto successivamente viene pre-addestrato come autoencoder (descritto in dettaglio nel tutorial , capitolo 8). Ci sono ~ 50 funzioni di input e ~ 10 classi di output. L'NN ha neuroni sigmoidi e tutti i dati sono normalizzati a [0,1]. Ho provato molte configurazioni diverse: numero di strati e neuroni nascosti (100-> 100-> 100, 60-> 60-> 60, 60-> 30-> 15, ecc.), Apprendimento diverso e pre-training tariffe, ecc.

E la cosa migliore che posso ottenere è un tasso di errore del 20% sul set di convalida e un tasso di errore del 40% sul set di test.

D'altra parte, quando provo ad usare Random Forest (da scikit-learn) ottengo facilmente un tasso di errore del 12% sul set di validazione e del 25% (!) Sul set di test.

Come può essere che la mia NN profonda con pre-allenamento si comporti così male? Cosa dovrei provare?

Risposte:


34

Il problema con le reti profonde è che hanno molti iperparametri da ottimizzare e uno spazio di soluzione molto ridotto. Quindi, trovare quelli buoni è più un compito artistico che ingegneristico. Vorrei iniziare con l'esempio di lavoro del tutorial e giocare con i suoi parametri per vedere come cambiano i risultati - questo dà una buona intuizione (anche se non una spiegazione formale) sulle dipendenze tra parametri e risultati (sia - finale che intermedio).

Inoltre ho trovato molto utili i seguenti documenti:

Entrambi descrivono gli RBM, ma contengono alcuni approfondimenti sulle reti profonde in generale. Ad esempio, uno dei punti chiave è che le reti devono essere sottoposte a debug a livello di layer: se il layer precedente non fornisce una buona rappresentazione delle funzionalità, ulteriori layer non hanno quasi alcuna possibilità di risolverlo.


14

Mentre la risposta di ffriend fornisce alcuni spunti eccellenti per imparare di più su come le reti neurali possono essere (estremamente) difficili da sintonizzare correttamente, ho pensato che potesse essere utile elencare un paio di tecniche specifiche che sono attualmente utilizzate nelle architetture di classificazione più performanti nella rete neurale letteratura.

Attivazioni lineari rettificate

La prima cosa che potrebbe essere d'aiuto nel tuo caso è di cambiare la funzione di attivazione del tuo modello dal sigmoid logistico - - a un rettificato lineare (aka relu) - .f(z)=(1+ez)1f(z)=max(0,z)

L'attivazione relu ha due grandi vantaggi:

  • il suo output è un vero zero (non solo un piccolo valore vicino a zero) per ez0
  • la sua derivata è costante, 0 per o 1 per .z0z>0

Una rete di unità relu agisce sostanzialmente come un insieme di reti lineari in modo esponenziale, poiché le unità che ricevono input sono essenzialmente "off" (il loro output è 0), mentre le unità che ricevono input collassano in un singolo lineare modello per quell'input. Anche i derivati ​​costanti sono importanti perché una rete profonda con attivazioni relu tende a evitare il problema del gradiente evanescente e può essere addestrata senza pre-stratificazione a strati.z0z>0

Vedere "Reti neurali raddrizzatori profondi" di Glorot, Bordes e Bengio ( http://jmlr.csail.mit.edu/proceedings/papers/v15/glorot11a/glorot11a.pdf ) per un buon documento su questi argomenti.

Buttare fuori

Molti gruppi di ricerca negli ultimi anni hanno sostenuto l'uso del "dropout" nelle reti di classificazione per evitare il sovrallenamento. (Vedi ad esempio "Dropout: un modo semplice per impedire il sovra-adattamento delle reti neurali" di Srivastava, Hinton, Krizhevsky, Sutskever e Salakhutdinov http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf ) In dropout, durante l'allenamento, una parte costante delle unità in un dato livello viene impostata casualmente su 0 per ciascun input elaborato dalla rete. Questo costringe le unità che non sono impostate su 0 a "recuperare" per le unità "mancanti". Il dropout sembra essere un regolarizzatore estremamente efficace per i modelli di reti neurali nelle attività di classificazione. Vedi un articolo di blog su questo a http: // fastml.


7
Ma la domanda riguarda il underfitting, non il overfitting.
Valentas,

8

Potresti essere interessato a leggere il seguente documento dai ricercatori di Microsoft Research:

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun: Deep Residual Learning for Image Recognition on arxiv, 2015.

Hanno avuto problemi simili ai tuoi:

Quando le reti più profonde sono in grado di iniziare a convergere, è stato riscontrato un problema di degrado: con l'aumentare della profondità della rete, l'accuratezza si satura (che potrebbe non sorprendere) e quindi degrada rapidamente. Inaspettatamente, tale degrado non è causato da un eccesso di adattamento e l'aggiunta di più strati a un modello adeguatamente profondo porta a un errore di addestramento superiore , come riportato in [11, 42] e verificato accuratamente dai nostri esperimenti.

Per risolvere il problema, hanno fatto uso di un'architettura skip. Con ciò, hanno formato reti molto profonde (1202 livelli) e hanno ottenuto il miglior risultato nella sfida ILSVRC 2015.


Grazie per il tuo ans, stai prendendo in considerazione il problema del gradiente evanescente, se nel caso in cui la convalida acc sia superiore all'allenamento acc, cosa dovresti fare ?? Può succedere per un piccolo numero di dati nel set di val. Ma a volte non dipende dal set di val. Sto chiedendo che c'è qualche altro motivo per cui la val acc è superiore all'allenamento secondo ??
Sudip Das
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.