Come decidere l'architettura della rete neurale?


19

Mi chiedevo come dobbiamo decidere quanti nodi nei layer nascosti e quanti layer nascosti mettere quando costruiamo un'architettura di rete neurale.

Comprendo che il livello di input e output dipende dal set di formazione che abbiamo ma come possiamo decidere il livello nascosto e l'architettura generale in generale?


Tipicamente sperimentiamo, usando la nostra intenzione; consideralo un iperparametro . Esistono modi per apprendere l'architettura ma non so quanto siano pratici: blog.acolyer.org/2017/05/10/…
Emre,

2
Ho cercato un duplicato di questo, perché sono sicuro che sia già spuntato molte volte in questo sito. Tuttavia, non è stato possibile trovare una versione pura non allegata a un set di dati o a un problema. Forse questa potrebbe essere la domanda generica che segnaliamo agli altri? Purtroppo non c'è una grande risposta "come" da avere in generale, ma è una domanda comune di fronte a tanta scelta.
Neil Slater,


Questa è una domanda molto interessante a cui rispondere (il ricercatore ha iniziato a lavorare sulla tua domanda). Quale sarebbe l'architettura ottimale per il set di dati A e il set di dati B. Leggere di seguito il documento che ha cercato di rispondere alla domanda. Benvenuto nel mondo di Neural Architecture Search (NAS). arxiv.org/abs/1611.01578
iDeepVision

Risposte:


17

Purtroppo non esiste un modo generico per determinare a priori il miglior numero di neuroni e il numero di strati per una rete neurale, data solo una descrizione del problema. Non c'è nemmeno molta guida da avere per determinare buoni valori da provare come punto di partenza.

L'approccio più comune sembra essere quello di partire da un'ipotesi approssimativa basata su precedenti esperienze di reti utilizzate su problemi simili. Questa potrebbe essere la tua esperienza o l'esperienza di seconda / terza mano che hai raccolto da un corso di formazione, blog o documento di ricerca. Quindi provare alcune varianti e controllare attentamente le prestazioni prima di sceglierne una migliore.

Le dimensioni e la profondità delle reti neurali interagiscono anche con altri iperparametrici , in modo che cambiare qualcosa altrove possa influire su dove si trovano i valori migliori. Quindi non è possibile isolare una dimensione e una profondità "migliori" per una rete, quindi continuare a mettere a punto altri parametri in modo isolato. Ad esempio, se disponi di una rete molto profonda, potrebbe funzionare in modo efficiente con la funzione di attivazione ReLU, ma non così bene con sigmoid: se hai trovato la dimensione / forma della rete migliore e hai provato un esperimento con diverse funzioni di attivazione, potresti venire alla conclusione sbagliata su ciò che funziona meglio.

A volte potresti leggere delle "regole empiriche" che i ricercatori usano quando iniziano una progettazione di una rete neurale da zero. Queste cose potrebbero funzionare per i tuoi problemi o meno, ma almeno hanno il vantaggio di iniziare il problema. Le variazioni che ho visto sono:

  • Crea una rete con livelli nascosti di dimensioni simili a quelle dell'input e tutte uguali, in base al fatto che non vi è alcun motivo particolare per variare le dimensioni (a meno che tu non stia creando un codificatore automatico forse).

  • Inizia semplice e crea complessità per vedere cosa migliora una rete semplice.

  • Prova a variare la profondità della rete se prevedi che l'output sia spiegato bene dai dati di input, ma con una relazione complessa (piuttosto che intrinsecamente rumorosa).

  • Prova ad aggiungere un po 'di abbandono, è la cosa più vicina alle reti neurali rispetto alla polvere di fata magica che rende tutto migliore (avvertimento: l'aggiunta di un abbandono può migliorare la generalizzazione, ma può anche aumentare le dimensioni degli strati e i tempi di allenamento richiesti).

Se leggi questi o qualcosa del genere in qualsiasi testo, prendili con un pizzico di sale. Tuttavia, nel peggiore dei casi ti aiutano a superare l'effetto della pagina vuota, a scrivere un qualche tipo di rete e a iniziare il processo di test e perfezionamento.


A parte questo, cerca di non perderti troppo nell'ottimizzare una rete neurale quando qualche altro approccio potrebbe essere migliore e farti risparmiare un sacco di tempo. Prendi in considerazione e usa altri approcci di machine learning e data science. Esplora i dati, magari crea delle trame. Prova prima alcuni semplici approcci lineari per ottenere benchmark da battere, regressione lineare, regressione logistica o regressione softmax a seconda del problema. Prendi in considerazione l'utilizzo di un diverso algoritmo ML rispetto alle NN: gli approcci basati sull'albero decisionale come XGBoost possono essere più veloci ed efficaci dell'apprendimento approfondito su molti problemi.


È un'ottima spiegazione. Grazie. Mi chiedo anche se esiste un buon modo per decidere quale approccio ML usare? Hai detto che potrebbe esserci un modo migliore di una rete neurale, ma come possiamo determinarlo facilmente?
user7677413

@utente7677413: vale la stessa cosa. Devi provare a vedere, anche se l'esperienza può darti una guida su problemi familiari.
Neil Slater

1
quando è necessaria la rete neurale?
user7677413

1
Le reti neurali sono raramente necessarie . Tuttavia, sono migliori in alcuni problemi. Si distinguono per le attività di elaborazione del segnale come il riconoscimento audio e delle immagini e hanno anche la capacità di apprendere sottili differenze da grandi quantità di dati in cui algoritmi più semplici possono raggiungere un limite. Tuttavia, se un NN è lo strumento giusto per te e qualsiasi problema tu debba affrontare in un determinato giorno, nessuno può prevederlo.
Neil Slater

1
@ user7677413 Penso che tu stia supponendo che non ci siano 40 anni di ricerche approfondite e approfondite sull'apprendimento automatico. Sembra che stai solo grattando la superficie. Raccomando di trovare un libro di testo e di vedere come tutto si lega insieme, che contribuirebbe a costruire il tuo intuito per i numerosi algoritmi di apprendimento automatico.
Alex L
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.