¿Por qué es Lisp el idioma preferido para la programación de AI / Neural Net?

Fue en el pasado pero ya no lo es. Como otros han señalado correctamente, hoy en día es principalmente Java y Python con algunos lenguajes C ++ u otros lenguajes ocasionalmente.

Lisp tiene dos propiedades principales que lo hacen particularmente adecuado para la investigación de IA:

  1. Un tipo de datos de símbolo. Los símbolos son tipos de datos sorprendentemente complejos, tal como los definen los hiperespecies Common Lisp. Sin embargo, están integrados desde el principio. Esto facilitó su uso para la computación simbólica en comparación con los idiomas en los que primero tendrían que ser definidos por el usuario.
  2. Código automodificante. También se llama macros. No debe confundirse con las macros C Para comprender las macros de Lisp, uno debe considerar cómo se analiza el código en otros idiomas y cómo se analiza en Lisp: en la mayoría de los idiomas, el código se traduce primero en una representación lógica que la computadora puede ejecutar, llamada árbol de sintaxis abstracta – Wikipedia No es así en Lisp. Lisp es homoiconic Homoiconicity – Wikipedia En pocas palabras: el código que escribe en el intérprete de Lisp ya es el árbol de sintaxis abstracta. Con las macros es posible manipular ese árbol mediante programación. Esto significa que el código puede escribir código y el código puede cambiar el código. Tampoco hay límite, puede escribir macros que escriben macros … que escriben código.

Esto se combinó con algunas otras percularidades de la época, como máquinas Lisp dedicadas donde la CPU se optimizó para ejecutar el código Lisp en lugar del código C como hoy y, por supuesto, la relativa falta de alternativas en términos de lenguajes de programación y bibliotecas con características comparativas realizadas Lisp el idioma de elección en IA durante mucho tiempo.

No es.

Ha sido popular durante mucho tiempo con la comunidad de la Costa Este / MIT AI (hasta al menos principios de los años 90) porque es particularmente fácil modificar el código como datos, y su enfoque fue tratar de crear inteligencia usando más y más código, muy escrito por humanos.

Sin embargo, ese enfoque ha demostrado ser un callejón sin salida.

Estaba usando C para construir y manipular redes neuronales en la universidad a fines de los años 80. Estoy seguro de que hay una manera de hacerlo usando Lisp, pero el código de la red neuronal fue escrito en C para mayor velocidad.

Hoy, Python y Java son más populares cuando se habla de programación de redes neuronales u otros enfoques de análisis matemático para el aprendizaje automático.

Y a pesar del fuerte apoyo de algunas personas muy inteligentes y famosas, los lenguajes similares a Lisp nunca han alcanzado una popularidad seria fuera del MIT AI tradicional.

En parte son razones históricas: las personas que comenzaron la disciplina de IA donde los usuarios de Lisp.

En parte es porque Lisp impone muy poco al programador. Al igual que con los lenguajes de secuencias de comandos, la relación entre escritura y codificación es muy baja. Lisp originalmente ofrecía estructuras de datos muy potentes y flexibles en forma de listas (hoy en día Lisp tiene muchas más estructuras disponibles). El código de Lisp también es una lista de Lisp, por lo que los programas se pueden escribir para modificarse fácilmente y crear macros muy potentes. Puede parchear un programa Lisp y examinar y guardar sus datos si falla. Estas características fueron muy útiles para los programadores que inventaban un nuevo tipo de software a medida que avanzaban.

Hay cosas que puede hacer en un idioma como Lisp, OPS, Prolog o Premise que no se pueden hacer fácilmente en otros idiomas. Específicamente, esos lenguajes permiten la programación simbólica, la ejecución no lineal de programas, la demostración de teoremas lógicos y la representación de conocimiento literal y la inferencia basada en lógica y similitud que no es nativa de los lenguajes algorítmicos tradicionales.

Historia. Lisp ha sido parte del desarrollo de IA prácticamente desde el principio. Cualesquiera que sean sus virtudes técnicas, esa es una gran parte de la razón.

John McCarthy fue uno de los fundadores de no uno sino dos laboratorios de IA muy influyentes. Creó Lisp durante su primer año en el proyecto MIT. Entonces lo usaron.

En cuanto a razones técnicas, no hace daño que los programas Lisp puedan modificarse dinámicamente en tiempo de ejecución.

More Interesting

¿Qué tan débil puede ser la IA antes de que no sea IA?

¿No es demasiado pronto para dar el ranking de Go 'divino' AlphaGo de Google?

¿Llegará un momento en que los humanos informarán a los robots inteligentes?

¿Cómo presentarme al aprendizaje automático? ¿Cuáles son los requisitos previos que necesito antes de saltar al aprendizaje automático?

¿Cómo se deben seleccionar los parámetros al ajustar las redes neuronales?

¿La IA realmente refleja las capacidades cognitivas del cerebro humano?

¿Pueden los algoritmos "20 preguntas" ayudar a la inteligencia artificial con la comprensión semántica?

Reconocimiento de voz: ¿algunos idiomas hablados son más fáciles de reconocer por una máquina?

¿Cómo se enseña la Inteligencia Artificial (IA) y el Aprendizaje automático (ML) en las universidades de 2/3 niveles en la India?

En los chatbots, ¿cuándo es bueno el aprendizaje automático y cuándo es malo?

¿Hay algún otro procedimiento estándar de resolución de problemas en IA además de algoritmos?

¿Qué tipos de técnicas de aprendizaje automático pueden ser útiles para los datos financieros?

¿Hay alguna manera de probar si es posible un modelo algorítmico de la mente humana sin implementarlo?

Como aspirante a robotista, ¿qué trabajos académicos o libros debo leer para ponerme al día con los últimos avances tecnológicos en robótica?

¿Cuál es el mejor lenguaje para usar mientras aprende el aprendizaje automático por primera vez? Voy a tomar un curso sobre aprendizaje automático este trimestre y tengo la opción de elegir entre usar C, C ++, Java, Haskell, Lisp, Python o Matlab / Octave.