Domanda

Esiste una regola empirica (o una serie di esempi) per determinare quando utilizzare algoritmi genetici rispetto alle reti neurali (e viceversa) per risolvere un problema?

So che ci sono casi in cui è possibile combinare entrambi i metodi, ma sto cercando un confronto di alto livello tra i due metodi.

È stato utile?

Soluzione

Da wikipedia:

  

Un algoritmo genetico (GA) è una tecnica di ricerca utilizzata nell'informatica per trovare soluzioni esatte o approssimative a problemi di ottimizzazione e ricerca.

e

  

Reti neurali sono strumenti di modellazione di dati statistici non lineari. Possono essere utilizzati per modellare relazioni complesse tra input e output o per trovare schemi nei dati.

Se hai un problema in cui è possibile quantificare il valore di una soluzione, un algoritmo genetico può eseguire una ricerca diretta dello spazio della soluzione. (Ad esempio, trova il percorso più breve tra due punti)

Quando hai un numero di elementi in classi diverse, una rete neurale può " imparare " per classificare elementi che non ha " visto " prima. (Es. Riconoscimento facciale, riconoscimento vocale)

Anche i tempi di esecuzione devono essere considerati. Un algoritmo genetico richiede molto tempo per trovare una soluzione accettabile. Una rete neurale impiega molto tempo per "imparare", ma poi può quasi immediatamente classificare nuovi input.

Altri suggerimenti

Un algoritmo genetico (nonostante il suo nome sexy) è, per molti scopi, una tecnica di ottimizzazione . Si riduce principalmente a te che hai un numero di variabili e che vuoi trovare la migliore combinazione di valori per queste variabili. Prende in prestito solo tecniche dall'evoluzione naturale per arrivarci.

Le reti neurali sono utili per riconoscere schemi . Seguono un modello semplicistico del cervello e, modificando un numero di pesi tra di loro, tentano di prevedere gli output in base agli input.

Sono due entità fondamentalmente diverse, ma a volte i problemi che sono in grado di risolvere si sovrappongono.

I GA generano nuovi modelli in una struttura che definisci.

Le NN classificano (o riconoscono) i modelli esistenti in base ai dati di addestramento forniti.

I GA si comportano bene nella ricerca efficiente di un ampio spazio di soluzioni e convergendo su una o più soluzioni valide, ma non necessariamente la soluzione "migliore".

Le NN possono imparare a riconoscere i modelli (attraverso l'addestramento), ma è notoriamente difficile capire cosa hanno imparato, cioè estrarre la conoscenza da loro una volta addestrata e riutilizzare la conoscenza in qualche altro (non-NN).

Qui stai confrontando due cose totalmente diverse.

Le reti neurali sono utilizzate per la regressione / classificazione - dato un insieme di esempi (x, y), si desidera regredire l'ignoto y per un dato x.

Gli algoritmi genetici sono una tecnica di ottimizzazione. Data una funzione f (x), si desidera determinare la x che minimizza / massimizza f (x).

Esistono molte somiglianze tra loro, quindi cercherò solo di delineare le differenze .

Reti neurali

Sono in grado di analizzare modelli online (quelli che cambiano nel tempo). In generale, questo è un campione variabile nel tempo che deve essere abbinato e previsto.

Esempi :

  • Estrapolazione del grafico
  • Riconoscimento facciale

Algoritmi genetici

Utilizzato quando puoi codificare gli attributi che ritieni possano contribuire a un problema specifico e non mutevole. L'enfasi è sulla capacità di codificare questi attributi (a volte sai cosa sono) e che il problema è in larga misura invariato (altrimenti le evoluzioni non convergono).

Esempi :

  • Pianificazione di velivoli / spedizioni
  • Gli orari.
  • Trovare le migliori caratteristiche per un agente semplice in un ambiente artificiale
  • Rendering di un'approssimazione di un'immagine con poligoni casuali

È possibile utilizzare algoritmi genetici in alternativa all'algoritmo backpropagation per aggiornare i pesi nelle reti neurali. Per un esempio di ciò, consultare: http://www.ai-junkie.com/ann/evolved/nnt1. html .

Gli algoritmi genetici (di solito) funzionano su dati discreti (enumerazioni, intervalli di interi, ecc.). Un'applicazione tipica per GA è la ricerca in uno spazio discreto di un "abbastanza buono" soluzione quando l'unica alternativa disponibile è una ricerca di forza bruta (che valuta tutte le combinazioni).

Le reti neurali, d'altra parte, (di solito) lavorano su dati continui (float, ecc.). Un'applicazione tipica per NN è l'approssimazione di funzioni, in cui hai un set X di input e un set Y di output correlati, ma la funzione analitica f: X ? Y.

Naturalmente, ci sono migliaia di varianti di entrambi, quindi la linea tra loro è piuttosto sfocata.

Non esiste una regola empirica. In molti casi è possibile formulare il problema per farne uso. L'apprendimento automatico è ancora un'area attiva di ricerca e quale modello di apprendimento da utilizzare può essere discutibile.

I GA prendono linguaggi sexy dall'evoluzione ma stai aspettando che il tuo computer si imbatta in una soluzione attraverso un processo casuale. Studia i tuoi dati, fai buone assunzioni, prova a sapere cosa vuoi e scegli un approccio che possa farne buon uso. Se la tua prima scelta dà scarsi risultati, sappi perché è stato così e migliora l'algoritmo stesso o scegline uno migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top