Ho deciso di utilizzare una rete neurale per creare comportamenti per un motore di animazione che possiedo. La rete neurale contiene 3 vector3s e 1 angolo di Eulero per ogni parte del corpo che ho. Il primo vettore3 è la posizione, il secondo è la sua velocità e il terzo è la sua velocità angolare. L'angolo di Eulero è la rotazione della parte del corpo. e ho 7 parti del corpo. Ognuno di questi tipi di dati ha 3 float. 7 * 4 * 3 = 84, quindi ho 84 ingressi per la mia rete neurale. Le uscite sono mappate ai muscoli del personaggio. Forniscono la quantità di forza da applicare a ciascun muscolo e ce ne sono 15.Dimensioni della rete neurale per il sistema di animazione
Sono in esecuzione 15 reti contemporaneamente per 10 secondi, valutazione della loro idoneità calcolando il consumo energetico più basso, con la minima quantità di movimento z e x e se le parti del corpo sono nella posizione y corretta rispetto al resto (hips.y> upperleg.y, upperleg.y> lowerleg.y ecc.), quindi eseguendoli attraverso un algoritmo genetico. Gestivo una rete neurale di 168 neuroni per strato nascosto, con 8 livelli nascosti. Sto cercando di convincere il personaggio a stare dritto e non muoversi troppo. Ho gestito questo per 3000 generazioni e non mi sono nemmeno avvicinato.
La rete neurale e l'algoritmo genetico sono versioni C# this tutorial. Ho modificato il metodo crossover da un punto a quello di fusione.
Ho 84 ingressi e 15 uscite. Quanto dovrebbe essere grande la mia rete neurale?
Non mi piace la tua risposta, ma sembra essere vero. Grazie per l'heads up però. Sono curioso dopo aver guardato attraverso la letteratura. La differenza tra NEAT e HyperNEAT è la CPPN, corretta? Il CPPN è in grado di creare reti neurali, ma non è esso stesso una rete neurale? O è una rete neurale che si evolve e quindi crea altre reti neurali? Molto utile, grazie. – DrSammyD
NEAT utilizza una codifica diretta, nel senso che per ogni neurone e connessione nel genoma si avrà lo stesso nella rete finale. HyperNEAT utilizza la codifica indiretta. Il genoma è una rete (il CPPN si è evoluto con NEAT), che - quando applicate su coppie di neuroni del substrato (~ neuroni della seconda rete + qualche altra informazione, tipicamente le sue coordinate in un sistema di coordinate 2D/3D) - produrrà i pesi di connessione. Penso che tecnicamente il CPPN sia anche un NN, ma può usare funzioni di attivazione di fantasia, invece del solito sigmoid/tanh. Tuttavia, potrebbero esserci altre piccole differenze. –