13

Ho una buona base sugli algoritmi evolutivi, così ora ho iniziato a leggere su reti neurali artificiali. Mi imbatto in questo tutorial su http://www.ai-junkie.com/ann/evolved/nnt2.html, che mostra come utilizzare un ANN per far evolvere i carri armati che raccolgono le mine. Usa un GA per far evolvere i pesi in ingresso su ogni Neurone.Differenza tra rete neurale e algoritmo evolutivo

So che potrei usare GA (senza l'ANN) per risolvere lo stesso problema. Ho già creato un Bot Tetris usando solo GA per ottimizzare i pesi nella funzione di valutazione della griglia (controlla il mio blog http://www.bitsrandomicos.blogspot.com.br/).

La mia domanda è: qual è il concettuale/pratico differenza tra l'utilizzo di un ANN + GA in una situazione in cui è possibile utilizzare GA da solo? Voglio dire, il mio Tetris Bot è un ANN? (Non credo).

Ci sono diverse domande relative a questo, ma non riuscivo a trovare una risposta:

Are evolutionary algorithms and neural networks used in the same domains?

When to use Genetic Algorithms vs. when to use Neural Networks?

Grazie!

risposta

18

Un algoritmo genetico è un algoritmo di ottimizzazione .

Una rete neurale artificiale è un approssimatore di funzione. Per approssimare una funzione è necessario un algoritmo di ottimizzazione per regolare i pesi. Una ANN può essere utilizzata per l'apprendimento supervisionato (classificazione, regressione) o l'apprendimento di rinforzo e alcuni possono essere utilizzati anche per l'apprendimento senza supervisione.

Nell'apprendimento supervisionato, un algoritmo di ottimizzazione privo di derivati ​​come un algoritmo genetico è più lento della maggior parte degli algoritmi di ottimizzazione che utilizzano le informazioni sul gradiente. Quindi, ha senso solo evolvere le reti neurali con algoritmi genetici nell'apprendimento rinforzato. Questo è noto come "neuroevoluzione". Il vantaggio delle reti neurali come i percettori multistrato in questa configurazione è che possono approssimare qualsiasi funzione con precisione arbitraria quando hanno un numero sufficiente di nodi nascosti.

Quando si crea un bot tetris non è necessario utilizzare necessariamente un ANN come un approssimatore di funzione. Ma hai bisogno di un qualche tipo di approssimatore di funzioni per rappresentare la politica del tuo bot. Immagino sia stato più semplice di una ANN. Ma quando vuoi creare una politica non lineare complessa, puoi farlo e. g. con una ANN.

+1

Quindi, nel mio Tetris Bot ho un'euristica in cui un GA regola il peso di ciascun parametro della scheda (come altezza della griglia, numero di fori, ecc.). Nell'esempio Tanks-Mines, posso considerare ogni Neuron come un "parametro anonimo" (cioè, qualche caratteristica che influenzerà il comportamento del Tank ma non è stato nominato?) - Solo un'analogia, grazie! – Fernando

+1

Sì, puoi farlo. Le reti neurali sono considerate come approssimatori di funzioni blackbox. Ciò significa che di solito non riesci a capire cosa fa l'ANN dal guardare i suoi valori di peso. È difficile estrarre qualsiasi semplice 'regola'. :) – alfa

0

io non sono un esperto, ma sulla base di quello che so dal campo ..

una rete neurale artificiale ha una base sulle neuroscienze in ultima analisi. Cerca di simulare/modellare il suo comportamento attraverso la costruzione di strutture simili a neuroni nell'algoritmo. C'è una forte enfasi sulla natura accademica del problema rispetto al risultato. Da quello che ho capito, è per questo motivo che le RNA non sono molto popolari da un punto di vista ingegneristico. Le basi statistiche dell'apprendimento automatico (reti HMM e bayesiane) producono risultati migliori.

In breve, fintanto che ha un cenno verso un soggetto di neuroscienza sottostante, può essere un ANN, anche se utilizza una qualche forma di GA.

Se si utilizza un GA, non è necessariamente un ANN.

+1

Ci sono alcuni paralleli tra reti neurali e neuroscienze, ma le reti neurali non cercano di modellare i neuroni naturali, in generale. –

6

la risposta di alfa è perfetta. Qui è solo un'immagine per illustrare quello che ha detto:

enter image description here Meta-Optimizer = Nessuno (ma potrebbe essere)
Optimizer = Genetic Algorithm
Problema = Tetris Bot (ad esempio ANN)

2

si utilizza evolutiva Algoritmo se ancora non si conosce la risposta ma si è in grado di valutare in qualche modo i candidati e fornire mutazioni significative.

La rete neurale è ottima se hai già risposte (e input) e vuoi "addestrare il computer" in modo che possa "indovinare" le risposte per input sconosciuti. Inoltre, non devi pensare molto al problema, la rete lo capirà da solo.

controllare questo esempio "gioco AI": https://synaptic.juancazala.com/#/
(nota come sia semplice, tutto quello che dovete fare è quello di dare loro una formazione adeguata, non c'è bisogno di sapere nulla di gioco AI - e una volta che è abbastanza buono tutto quello che dovete fare è "scaricare" memoria ed eseguirlo quando necessario)