Historia de Lisp y su uso en redes neuronales - Parte II

Monday, July 23, 2018

Historia de Lisp y su uso en redes neuronales - Parte II

Escrito por Sergio Sancho Azcoitia, Security Researcher en ElevenPaths

Hace un mes dimos comienzo a una serie de dos artículos en la que se hablaría de Lisp. En la primera parte hablamos de su historia, sus comienzos y utilidades a la hora de crear redes neuronales. En esta segunda parte de la serie os mostraremos como funciona Lisp y a elaborar una sencilla red neuronal.

Antes de comenzar, recordaremos brevemente cómo funcionan las redes neuronales. Las redes neuronales se basan en una serie de nodos o “neuronas” que se encuentran conectados entre sí conformando una serie de capas, su funcionamiento pretende simular el comportamiento de un cerebro humano a la hora de resolver un problema, a medida que la señal avanza ésta irá tomando un camino u otro en función de una serie de parámetros preestablecidos.

capas de concreto
Figura 1. Las capas son una de las características importantes de una red neuronal


Nuestra red neuronal en cuestión será bastante sencilla y constará de tres capas, su función será averiguar en qué compañero de nuestro equipo de trabajo estamos pensando, si nos fijamos en la imagen de abajo, los nodos o neuronas corresponderían al nombre de nuestros compañeros y las capas corresponderían a las condiciones que nos llevan hacia una respuesta u otra.


redes neuronales
Figura 2. Aunque esta red neuronal consiste en 3 capas, puedes incrementar la complejidad de una red neuronal agregando capas y subcapas (Fuente: Gengiskanhg, Wikipedia España)

Para crear las distintas capas de la red utilizaremos preguntas a las que solo se pueda  responder con sí o no. Las preguntas serán escogidas cuidadosamente para que al responderlas se pueda ofrecer una respuesta o de lo contrario se pase a la siguiente capa. Este proceso se repetirá tantas veces como sea necesario hasta obtener una respuesta. A medida que el usuario vaya contestando preguntas, menor será el número de posibles candidatos para una respuesta final. En este breve ejemplo en cada pregunta contestada se puede obtener la respuesta o de no ser así se descarta un posible candidato.

ejemplo de red neuronal
Figura 3. Nuestro ejemplo de la red neuronal nos dice en quien estamos pensando

Como ya os hemos dicho, esto se trata de un ejemplo bastante sencillo, pero partiendo de esta base se pueden crear redes neuronales mucho más complejas a medida que se van añadiendo capas y subcapas. Un claro ejemplo de ello es el sistema experto Akinator, del cual ya os hemos hablado anteriormente en el blog. En el caso de Akinator la red neuronal que lo compone es inmensa y ésta aumenta a medida que se añaden nuevos personajes (nodos) al “juego”.

El lenguaje LISP es uno de los mejores ejemplos para entender algunos de los conceptos de la Inteligencia Artificial y la programación funcional (como la recursividad), es por eso que se convirtió en el favorito de muchos investigadores del MIT para desarrollar sus proyectos durante los años posteriores a su aparición.

No comments:

Post a Comment