Backpropagation vs Algoritmo genetico per la formazione della rete neurale


34

Ho letto alcuni articoli che parlano dei pro e dei contro di ciascun metodo, alcuni sostengono che GA non dia alcun miglioramento nel trovare la soluzione ottimale, mentre altri dimostrano che è più efficace. Sembra che GA sia generalmente preferito in letteratura (anche se la maggior parte delle persone lo modifica in qualche modo per ottenere i risultati di cui ha bisogno), allora perché la maggior parte delle soluzioni software sembra usare solo la backpropagation?

C'è qualche regola generale quando usare l'uno o l'altro? Forse dipende dal tipo di NN o esiste una soluzione all'avanguardia che generalmente supera le prestazioni di altri?

Se possibile, cerco risposte generali: vale a dire "se l'NN è enorme, GA è migliore" o "GA è sempre migliore ma ha problemi di prestazioni computazionali" ecc ...

Risposte:


23

Se osservi attentamente la letteratura scientifica troverai risultati contrastanti. Ovviamente, in alcuni casi GA (e più in generale, algoritmi evolutivi) può aiutarti a trovare un design NN ottimale ma normalmente hanno così tanti inconvenienti (ottimizzazione dei parametri dell'algoritmo, complessità computazionale ecc.) E il loro uso non è fattibile per- applicazioni mondiali. Ovviamente puoi trovare una serie di problemi in cui GA / EA è sempremeglio della backpropagation. Dato che trovare un progetto NN ottimale è un problema di ottimizzazione multimodale complesso, GA / EA possono aiutare (come metaeuristica) a migliorare i risultati ottenuti con algoritmi "tradizionali", ad esempio usare GA / EA per trovare solo la configurazione iniziale dei pesi o aiutare gli algoritmi tradizionali a scappare dai minimi locali (se sei interessato ho scritto un articolo su questo argomento).

Ho lavorato molto in questo campo e posso dirti che ci sono molti lavori scientifici su GA / EA applicati a NN perché sono (o meglio, erano) un campo di ricerca emergente.


2
Questo è qualcosa che mi è venuto in mente anche di recente: prima trova la soluzione "buona" e poi migliora ulteriormente con GA. Non solo applicabile alle NN, ma ottimizzazione in generale ...
sashkello,

1
Sono confuso perché si escludono a vicenda. Pensavo che GA avrebbe dovuto imparare la struttura; La backpropagation può solo imparare i pesi
pete

8

Uno dei problemi chiave con le reti neurali è il sovradimensionamento, il che significa che gli algoritmi che si impegnano molto per trovare una rete che minimizzi alcuni criteri basati su un campione finito di dati finiranno con una rete che funziona molto bene per quel particolare campione di dati, ma che avrà una scarsa generalizzazione. Sono piuttosto diffidente nell'utilizzare GA per progettare reti neurali per questo motivo, specialmente se fanno l'ottimizzazione dell'architettura contemporaneamente all'ottimizzazione dei pesi. Ho generalmente scoperto che le reti di allenamento (con regolarizzazione) da un numero (diciamo 20) di vettori casuali di peso iniziale e quindi la formazione di un insieme di tutte le reti risultanti è generalmente un approccio valido come un altro.

Essenzialmente l'ottimizzazione è la radice di tutto il male nell'apprendimento automatico, più ne fai, più è probabile che finirai per sovra-adattarsi ai dati.


Dikran, sebbene GA faccia una selezione naturale ma non ignora le informazioni come hai menzionato, garantisce solo se la soluzione selezionata risolve il suo problema in caso contrario, scopre perché e aggiorna l'agoritmo che costituisce la base del suo dinamismo fino alla rete convergere in una o due migliori soluzioni. spero che tu ottenga quel rignt?

convergere alla migliore soluzione valutata su un campione finito di dati è esattamente ciò che provoca un eccesso di adattamento. Per evitare un eccessivo adattamento, si desidera convergere su una soluzione che non è la migliore (ad es. Interruzione anticipata dell'addestramento delle reti neurali). Le GA non sono migliori di qualsiasi altra forma di ottimizzazione nel montaggio delle reti neurali, è necessario evitare l'ottimizzazione eccessiva del criterio di addestramento.
Dikran Marsupial,

5

Ogni volta che hai a che fare con enormi quantità di dati e vuoi risolvere un'attività di apprendimento supervisionato con una rete neurale feed-forward, le soluzioni basate sulla backpropagation sono molto più fattibili. La ragione di ciò è che, per una complessa rete neurale, il numero di parametri liberi è molto elevato. Un progetto industriale a cui sto attualmente lavorando riguarda una rete neurale feed-forward con circa 1000 input, due layer nascosti a 384 neuroni ciascuno e 60 output. Ciò porta a parametri di peso 1000 * 384 + 384 * 384 + 384 * 60 = 554496 che devono essere ottimizzati. L'uso di un approccio GA qui sarebbe terribilmente lento.


La mia comprensione è che GA è progettata per affrontare i problemi che sono più difficili da risolvere con approcci standard. Non dovrebbe funzionare meglio esattamente in una situazione che hai descritto?
sashkello,

2
Ho pensato che GA avrebbe dovuto essere usato per capire quale struttura fosse, ad esempio, quanti strati nascosti e come sono collegati. La backpropagation può solo capire i pesi
pete

2

La seconda risposta è sbagliata. Il sovradimensionamento non è causato dall'ottimizzazione. Il sovra-adattamento si verifica quando il modello è troppo complicato e può adattarsi a tutti i punti dati senza apprendere la regola effettiva che li ha creati (vale a dire solo memorizzarli, in casi estremi). Esistono molti modi per prevenire l'eccessivo adattamento come la scelta di modelli più semplici, dropout, dropconnect, riduzione del peso e solo usando più dati. L'obiettivo dovrebbe essere quello di ottimizzare la tua rete e renderla il più accurata possibile, tenendo conto di tali vincoli.

Per rispondere alla domanda, il backprop è presumibilmente molto più veloce dell'ottimizzazione stocastica (algoritmi genetici e simili.) La mia ipotesi è che questo perché sfrutta ciò che si supponeva fosse l'output effettivo , regola i pesi nella giusta direzione in base a quello , in cui l'ottimizzazione stocastica tenta modifiche completamente casuali e ignora tali informazioni.

Tuttavia, esplorando un'area più ampia, i GA probabilmente faranno meglio a lungo termine evitando le ottimas locali, ci vorrà solo più tempo per allenarsi.

Sono curioso di sapere quanto GA siano più lenti del backprop e se qualcuno conosce algoritmi ibridi (la ricerca a dispersione sembra che sarebbe l'ideale per questo.)


1
Non sono d'accordo con il tuo primo paragrafo. Il sovrautilizzo è impedito principalmente attraverso approcci di regolarizzazione nel problema della formazione . Se inizi a fare la meta-ottimizzazione --- che sta risolvendo molti problemi di addestramento (ad esempio ottimizzazione dei parametri del kernel, architetture di rete, ...) - prendersi cura del sovradimensionamento diventa molto più difficile e certamente non è più implicitamente garantito.
Marc Claesen,

Se l'ottimizzazione non fosse causata dall'ottimizzazione, l'arresto anticipato non sarebbe un rimedio efficace per l'eccessivo adattamento.
Dikran Marsupial,

1

Imho la differenza tra GA e backpropagation è che GA si basa su numeri casuali e che la backpropagation si basa su un algoritmo statico come la discesa gradiente stocastica. La GA basata su numeri casuali e aggiunta a quella mutazione significa che probabilmente eviterebbe di essere catturato in un minimo locale. Ma poi GA basato su numeri casuali significa che è abbastanza probabile per 2 diverse volte che si esegue l'apprendimento sulla stessa rete, potrebbe giungere a una conclusione diversa, cioè a una diversa serie di pesi


Solo commentando, usiamo anche init casuale. per i pesi in back-prop. Se utilizziamo lo stesso seme durante l'inizializzazione, si otterrà la stessa soluzione, ma in caso contrario, probabilmente non lo farà. Quindi anche il back-prop dipende da un input casuale. Quando aggiusti il ​​seme, otterrai anche lo stesso risultato nell'algoritmo genetico poiché utilizzerà lo stesso seq. di nuovo numeri.
gunes
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.