Neuroevolución en Javascript

Source: Deep Learning on Medium


Hola usuarios de Médium y la web.
Hoy quiero darles una pequeña demostración sobre la Neuroevolución en Javascript.

Que es la neuroevolución?

Primero que nada la Neuroevolución es una de las tantos algoritmos de inteligencia artificial que existen, este usa algoritmos evolucionarios para generar automáticamente una red de neuronas y reglas. Estas reglas (o resultados) son usadas para responder a la información enviada. Muy similar como la evolución biológica funciona, por ello este nombre.

Es muy usada en ejemplos de vida artificial, juegos y en la robótica. Al contrario de otros algoritmos, la neuroevolución identifica cuál de sus respuestas es mejor que otra (como un sistema de puntos, por ejemplo) y se adapta para que la nueva generación tenga mas respuestas como estas.

Un ejemplo en la biología sería una manada de animales que son de clima frío, y con diferentes generaciones logran adaptarse al clima caliente. Ya sea porque cambia su pelaje, o tal vez la forma en la que come, o miles de factores que ayudan a su supervivencia en este nuevo ambiente.

Qué es Javascript y porque en este lenguaje?

Javascript es un lenguaje de programación que apareció por primera vez en 1995. En sus principios Javascript era muy poco usado y hasta era burla por grandes programadores. Desde hace algunos años Javascript tomó poder y a sido uno de los lenguajes que más a avanzado. Antes solo sirve para la web. Ahora puedes crear Aplicaciones web, aplicaciones móvil y hasta aplicaciones de escritorio (las que se instalan en la PC) con solo Javascript y sus compañeros HTML/CSS.

Los que saben de programación y de la programación de neuronas, saben que normalmente este trabajo es más hecho en Python (otro lenguaje de programación), el cual tiene muchísimos recursos ya disponibles (algunos creados por grandes empresas como Google, y son gratis) para este tipo de trabajo. Pero quise hacerlo con Javascript para demostrar y ayudar a comprender cómo se puede usar para el trabajo de Neuronas. Existen algunos recursos como BrainJS o Neaptactic que son sistemas muy completos para trabajar con diferentes proyectos en redes de neuronas o inteligencia artificial en Javascript. En este proyecto no uso ninguno de ellos, pero les recomiendo que le echen un vistazo.

Y tambien, Javascript es mi lenguaje de programación favorito, soy considerado muy bueno en ello y trabajo 24/7 con este lenguaje (sobretodo en NodeJS, Javascript para servidores).

Al grano!

Bueno pues vamos directo a la demostración. Ve un poco de que hay en la página y luego regresa para leer la explicación de que es y que está pasando.

En esta demostración, estoy usando varios autos (los negros) que son los que toman uso de la neuroevolución. La unica informacion que sabe la red de neuronas es que tan alto de la calle esta el auto enemigo (los de colores) más cercano.

Y con tan solo esta información el auto aprende por sí solo (sin interacción humana) cuál es la función que debe hacer para sobrevivir (ya que el auto sabe que existe ir arriba, abajo o derecho, pero no tiene idea que es).

Su único motivo de vida, es avanzar y llegar lo más lejos posible. Es decir, que tantos puntos puede ganar.

En la primera generación, podemos notar que los autos se mueven un poco a todos lados, no saben qué deben hacer y es normal. Chocan facilmente y pues mueren. Pero algunos sobreviven más tiempo que otros. La nueva generación aprenderá de esos errores (para poder llegar más lejos sin chocar) y la próxima aún más. Hasta que en un momento el auto no choque más (ni una sola vez!). Al auto no le importa nada más que ganar la mayor cantidad de puntos (sobrevivir).

Es sorprendente ver como pasa tan rápido hasta una generación que nunca choca. Este es un pequeño ejemplo de algo muy grande. La neuroevolución ayuda a estudiar desde muy cerca la evolución en la inteligencia artificial. Este auto solo tiene dos respuestas, debo ir arriba o abajo, basado en dónde está el auto “enemigo” más cercano, pero podría ser usado para cosas mucho más complejas.

Gracias por leer mi artículo (el primero), si les gusto no olviden compartirlo y darle un aplauso. Me ayudará a saber qué quieren mas articulos como este y con gusto seguire creando ejemplo, ya sea de inteligencia artificial como de programación en general.