train neural networks network algorithms machine-learning neural-network artificial-intelligence genetic-algorithm

machine-learning - networks - genetic algorithm train neural network



AclaraciĆ³n sobre una Red Neural que juega a Serpiente (2)

Soy nuevo en redes neuronales / aprendizaje automático / algoritmos genéticos, y para mi primera implementación estoy escribiendo una red que aprende a jugar serpiente ( Un ejemplo en caso de que no lo haya jugado antes ) Tengo algunas preguntas que hago entiendo completamente:

Antes de mis preguntas solo quiero asegurarme de entender la idea general correctamente. Hay una población de serpientes, cada una con ADN generado aleatoriamente. El ADN es el peso utilizado en la red neuronal. Cada vez que la serpiente se mueve, usa la red neuronal para decidir a dónde ir (usando un sesgo). Cuando la población muere, selecciona algunos padres (tal vez la mejor forma física) y cruza su ADN con una leve posibilidad de mutación.

1) Si se le hubiera dado a toda la pizarra como entrada (alrededor de 400 puntos) suficientes capas ocultas (¿no sabe cuántas, tal vez 256-64-32-2?), Y tiempo suficiente, ¿aprendería a no encasillarse?

2) ¿Cuáles serían las buenas entradas? Estas son algunas de mis ideas:

  • 400 entradas, una para cada espacio en el tablero. Positivo si la serpiente debe ir allí (la manzana) y negativa si es una pared / su cuerpo. Cuanto más cerca de -1/1 está más cerca está.
  • 6 entradas: ancho del juego, altura del juego, serpiente x, serpiente y, manzana xy manzana (puede aprender a jugar en tableros de diferentes tamaños si está entrenado de esa manera, pero no está seguro de cómo ingresar su cuerpo, ya que cambia de tamaño)
  • Dale un campo de visión (tal vez 3x3 cuadrado en frente de la cabeza) que pueda alertar a la serpiente de una pared, manzana o su cuerpo. (La serpiente solo podría ver lo que está justo enfrente, lo que podría obstaculizar su capacidad de aprendizaje)

3) Dado el método de entrada, ¿cuál sería un buen punto de partida para los tamaños de capa ocultos (por supuesto, planifique ajustar esto, simplemente no sé qué buen lugar para comenzar)

4) Finalmente, la aptitud de la serpiente. Además del tiempo para obtener la manzana, su longitud y su vida útil, ¿se debe tener en cuenta todo lo demás? Para que la serpiente aprenda a no bloquearse, ¿hay algo más que pueda agregar a la aptitud para ayudarlo?

¡Gracias!


Vi una aplicación similar. Las entradas generalmente eran coordenadas de serpiente, coordenadas de manzana y algunos datos sensoriales (es la pared al lado de la cabeza de serpiente o no en su caso).

Usar algoritmo genético es una buena idea en este caso. Estás haciendo solo aprendizaje paramétrico (encontrando un conjunto de pesos), pero la estructura se basará en tu estimación. GA también se puede usar para el aprendizaje de estructuras (encontrar topología de ANN). Pero usar GA para ambos será muy difícil de computar.

El profesor Floreano hizo algo similar. Él usa GA para encontrar pesos para el controlador de red neuronal del robot. Robot estaba en laberinto y realizar alguna tarea. La capa oculta de la red neuronal era una neurona con uniones recurrentes en las entradas y una conexión lateral en sí mismo. Hubo dos salidas. Las salidas se conectaron en la capa de entrada y la capa oculta (se mencionó una neurona).

Pero Floreano hizo algo más interesante. Dijo: "No nacemos con sinapsis determinadas, nuestras sinapsis cambian en nuestra vida". Entonces usa GA para encontrar reglas para el cambio de sinapsis. Estas reglas se basaban en el aprendizaje de Hebbian. Él realiza la codificación del nodo (para todos los pesos conectados a la neurona se aplicará la misma regla). Al comienzo, inicializó los pesos en pequeños valores aleatorios. Encontrar reglas en lugar de valor numérico de sinapsis conduce a mejores resultados. Uno de los artículos de Floreno .

Y en mi propia experiencia. En el último semestre, mi compañero de clase y yo conseguimos una tarea para encontrar las reglas para la sinapsis con GA pero para la red neuronal Spiking. Nuestro SNN fue controlador para el modelo cinemático de robot móvil y la tarea fue llevar el robot al punto elegido. Obtuvimos algunos resultados pero no esperados. Puedes ver los resultados aquí . Así que te recomiendo que utilices ANN "ordinario" en vez de SNN porque SNN trae nuevos fenómenos.


En esta publicación, te aconsejaré sobre:

  • Cómo mapear instrucciones de navegación para secuencias de acción con una red neuronal LSTM
  • Recursos que lo ayudarán a aprender a usar redes neuronales para realizar su tarea
  • Cómo instalar y configurar bibliotecas de redes neuronales según lo que necesitaba aprender de la manera más difícil

Opinión general de tu idea:

Puedo ver lo que estás tratando de hacer, y creo que tu idea de juego (de usar identidades generadas aleatoriamente de adversarios que controlan su comportamiento de una manera que altera aleatoriamente la forma en que usan la inteligencia artificial para comportarse inteligentemente) tiene un mucho potencial

Asignación de instrucciones de navegación a secuencias de acción con una red neuronal

Para procesar su tablero de juego, ya que involucra datos densos (en lugar de dispersos ), podría encontrar una Red Neural Convolucional (CNN) para ser útil. Sin embargo, debido a que necesita traducir el mapa a una secuencia de acción, las redes neuronales optimizadas para la secuencia (como Redes neuronales recurrentes) probablemente sean las más útiles para usted. Encontré algunos estudios que usan redes neuronales para mapear instrucciones de navegación a secuencias de acción, construir el mapa del juego y mover un personaje a través de un juego con muchos tipos de entradas:

Opinión general de lo que te ayudará

Parece que te falta una comprensión básica de cómo funcionan las redes neuronales, por lo que mi recomendación principal para ti es estudiar más sobre la mecánica subyacente detrás de las redes neuronales en general. Es importante tener en cuenta que una red neuronal es un tipo de modelo de aprendizaje automático . Entonces, realmente no tiene sentido construir una red neuronal con parámetros aleatorios. Una red neuronal es un modelo de aprendizaje automático que se entrena a partir de datos de muestra, y una vez que se capacita, se puede evaluar en datos de prueba (por ejemplo, para realizar predicciones).

La raíz del aprendizaje automático está muy influenciada por las estadísticas bayesianas, por lo que puede obtener un libro de texto sobre estadísticas bayesianas para obtener una comprensión más profunda de cómo funciona la clasificación basada en máquinas en general.

También será valioso para usted aprender las diferencias entre los diferentes tipos de redes neuronales, como Long Long Term Memory (LSTM) y Convolutional Neural Networks (CNN).

Si quieres saber cómo se pueden usar las redes neuronales para las tareas de clasificación, prueba esto:

Para aprender las matemáticas: Mi opinión profesional es que aprender las matemáticas subyacentes de las redes neuronales es muy importante. Si es intimidante, le doy mi testimonio de que pude aprender todo por mi cuenta. Pero si prefiere aprender en el aula, entonces le recomiendo que lo intente. Un gran recurso y libro de texto para aprender la mecánica y las matemáticas de las redes neuronales es:

Tutoriales para bibliotecas de redes neuronales

Recomiendo que intente trabajar a través de los tutoriales para una biblioteca de red neuronal, como: