Decidí ir con una red neuronal para crear comportamientos para un motor de animación que tengo. La red neuronal tiene 3 vectores3 y 1 ángulo de Euler para cada parte del cuerpo que tengo. El primer vector3 es la posición, el segundo es su velocidad, y el tercero es su velocidad angular. El ángulo de Euler es en qué rotación está la parte del cuerpo. y tengo 7 partes del cuerpo Cada uno de esos tipos de datos tiene 3 flotantes. 7 * 4 * 3 = 84, entonces tengo 84 entradas para mi red neuronal. Las salidas están mapeadas a los músculos del personaje. Proporcionan la cantidad de fuerza para aplicar a cada músculo, y hay 15 de ellos.Tamaño de red neuronal para el sistema de animación
Estoy ejecutando 15 redes simultáneamente durante 10 segundos, calificando su estado físico calculando el menor consumo de energía, teniendo la menor cantidad de movimientos zyx, y si las partes del cuerpo están en la posición y correcta en comparación con el resto (hips.y> upperleg.y, upperleg.y> lowerleg.y etc.), y luego ejecutarlos a través de un algoritmo genético. Estaba ejecutando una red neuronal de 168 neuronas por capa oculta, con 8 capas ocultas. Intento que el personaje se ponga de pie y no se mueva demasiado. Ejecuté esto por 3000 generaciones y ni siquiera me acerqué.
La red neuronal y el algoritmo genético son versiones C# de this tutorial. Cambié el método de cruce de un punto a fusión.
Tengo 84 entradas y 15 salidas. ¿Qué tan grande debe ser mi red neuronal?
No me gusta su respuesta, pero parece ser cierto. Gracias por los avisos. Tengo curiosidad después de mirar a través de la literatura. La diferencia entre NEAT e HyperNEAT es la CPPN, ¿correcto? ¿El CPPN puede crear redes neuronales, pero no es una red neuronal? ¿O es una red neuronal que evoluciona y luego crea otras redes neuronales? Muy útil, gracias. – DrSammyD
NEAT utiliza una codificación directa, lo que significa que para cada neurona y conexión en el genoma tendrá lo mismo en la red final. HyperNEAT usa codificación indirecta. El genoma es una red (la CPPN evolucionó con NEAT) que, cuando se aplica en pares de neuronas del sustrato (~ neuronas de la segunda red + algo más de información, generalmente sus coordenadas en un sistema de coordenadas 2D/3D), producirá los pesos de conexión Creo que técnicamente el CPPN también es un NN, pero puede usar funciones de activación sofisticadas, en lugar del sigmoid/tanh habitual. Sin embargo, podría haber algunas otras pequeñas diferencias. –