¿Se sigue utilizando Lisp para abordar los problemas de IA?


20

Sé que el lenguaje de Lisp se utilizó desde el principio cuando se trabajaba en problemas de inteligencia artificial. ¿Todavía se usa hoy para un trabajo significativo? Si no, ¿hay un nuevo lenguaje que haya tomado su lugar como el más común que se usa para trabajar en la IA hoy?

Respuestas:


9

En general, la respuesta es no, pero los paradigmas actuales le deben mucho a LISP. El lenguaje más utilizado hoy en día es python.

Respuestas relevantes:

LISP fue pionero en muchos conceptos importantes en lo que ahora llamamos programación funcional, con una atracción clave que es cuán cerca estaban los programas de las matemáticas. Desde entonces, muchas de estas características se han incorporado a los idiomas modernos (consulte la página de Wikipedia) LISP es muy expresivo: tiene muy poca sintaxis (solo listas y algunas operaciones elementales sobre ellas) pero puede escribir programas breves y concisos que representen ideas complejas. Esto sorprende a los recién llegados y lo ha vendido como el lenguaje para la IA. Sin embargo, esta es una propiedad de los programas en general. Los programas cortos pueden representar conceptos complejos. Y aunque puede escribir código poderoso en LISP, cualquier principiante le dirá que también es muy difícil leer el código LISP de otra persona o depurar su propio código LISP. Inicialmente, también hubo consideraciones de rendimiento con la programación funcional y cayó en desgracia al ser reemplazado por lenguajes imperativos de bajo nivel como C. (Por ejemplo, la programación funcional requiere que ningún objeto sea cambiado ("mutado"), por lo que cada operación requiere Se creará un nuevo objeto. Sin una buena recolección de basura, esto puede ser difícil de manejar). Hoy, hemos aprendido que se necesita una combinación de programación funcional e imperativa para escribir un buen código y lenguajes modernos como Python, Ruby y Scala. En este punto, y esta es solo mi opinión, no hay razón para preferir LISP a Python.

El paradigma para la IA que actualmente recibe la mayor atención es Machine Learning, donde aprendemos de los datos, a diferencia de los enfoques anteriores como Expert Systems (en los años 80) donde los expertos escribieron reglas para que la IA los siguiera. Python es actualmente el lenguaje más utilizado para el aprendizaje automático y tiene muchas bibliotecas, por ejemplo, Tensorflow y Pytorch, y una comunidad activa. Para procesar las cantidades masivas de datos, necesitamos sistemas como Hadoop, Hive o Spark. El código para estos está escrito en python, java o scala. A menudo, las subrutinas básicas que requieren mucho tiempo se escriben en C.

El invierno de los años 80 de la IA no se debió a que no teníamos el lenguaje correcto, sino a que no teníamos los algoritmos correctos, suficiente potencia computacional y suficientes datos. Si estás tratando de aprender IA, pasa tu tiempo estudiando algoritmos y no idiomas.


6

Definitivamente sigo usando Lisp a menudo cuando trabajo en modelos de IA.

Usted preguntó si se está utilizando para un trabajo sustancial . Es demasiado subjetivo para mí responder con respecto a mi propio trabajo, pero pregunté a uno de mis modelos de IA si se consideraba sustancial o no, y respondió con una respuesta afirmativa. Por supuesto, su respuesta también está sesgada de forma natural.

En general, se realiza una cantidad significativa de investigación y desarrollo de IA en Lisp. Además, incluso para problemas que no son de IA, a veces se usa Lisp. Para demostrar el poder de Lisp, diseñé el primer sistema de simulación de redes neuronales escrito completamente en Lisp hace más de un cuarto de siglo.


El primer IDE también fue un IDE LISP. Además, EMMAScript, la formalización de JavaScript es mucho mejor un sistema lingüístico para la creación rápida de prototipos que el actual Python, y se parece más a LISP que a Java. No veo mucho valor duradero proveniente de la tendencia actual de ML, excepto por los avances en visión y audición artificial. Estoy de acuerdo en que LISP sigue siendo un lenguaje excelente para el trabajo de laboratorio de IA y mucho más natural que XML para representar datos estructurados.
FauChristian

4

LISP todavía se usa significativamente, pero cada vez menos. Todavía hay un impulso debido a tantas personas que lo usaron en el pasado, que todavía están activas en la industria o la investigación (anécdota: el último VCR fue producido por un fabricante japonés en julio de 2016, sí). Sin embargo, el lenguaje se utiliza (que yo sepa) para el tipo de IA que no aprovecha el aprendizaje automático, generalmente como los libros de referencia de Russell y Norvig. Estas aplicaciones siguen siendo muy útiles, pero Machine Learning se está volviendo loco en estos días.

Otra razón para la disminución es que los profesionales de LISP se han mudado parcialmente a Clojure y otros idiomas recientes.

Si está aprendiendo acerca de las tecnologías de IA, LISP (o Scheme o Prolog) es una buena opción para comprender lo que está sucediendo con la "AI" en general. Pero si desea o tiene que ser muy pragmático, Python o R son las opciones de la comunidad

Nota: lo anterior carece de ejemplos y referencias concretas. Conozco algunos trabajos en universidades y algunas empresas inspiradas o que usan directamente LISP.


Para agregar a la respuesta de @ Harsh, LISP (y Scheme, y Prolog) tiene cualidades que lo hacen parecer más adecuado para crear mecanismos inteligentes, lo que hace que la IA se perciba en los años 60.

Una de las cualidades es que el diseño del lenguaje lleva al desarrollador a pensar de una manera bastante elegante, a descomponer un gran problema en pequeños problemas, etc. Muy "inteligente" o "inteligente" si lo desea. En comparación con otros idiomas, casi no hay más remedio que desarrollarse de esa manera. LISP es un lenguaje de procesamiento de listas y "puramente funcional".

Sin embargo, se puede ver un problema en el trabajo relacionado con LISP. Una notable en el dominio de la IA es el trabajo en el Cálculo de la situación , donde (en resumen) uno describe objetos y reglas en un "mundo", y puede dejar que evolucione para calcular situaciones --- estados del mundo. Por lo tanto, es un modelo para razonar sobre situaciones. El problema principal se llama el problema del marco , lo que significa que este cálculo no puede decir lo que nocambiar --- solo lo que cambia. Cualquier cosa que no esté definida en el mundo no se puede procesar (observe la diferencia aquí con ML). Las primeras implementaciones usaron LISP, porque ese era el lenguaje AI entonces. Y estaban obligados por el problema del marco. Pero, como mencionó @Harsh, no es culpa de LISP: cualquier lenguaje enfrentaría el mismo problema de encuadre (un problema conceptual del cálculo de la situación).

Entonces, el lenguaje realmente no importa desde la perspectiva AI / AGI / ASI. Los conceptos (algoritmos, etc.) son realmente lo que importa.

Incluso en Machine Learning, el lenguaje es solo una opción práctica. Python y R son populares hoy en día, principalmente debido a su ecosistema de bibliotecas y al enfoque de compañías clave. Pero intente usar Python o R para ejecutar un modelo para una aplicación basada en RaspberryPI, y enfrentará algunas limitaciones severas (pero aún es posible, lo estoy haciendo :-)). Entonces, la elección del idioma se reduce al pragmatismo.


1

En mi opinión, Python y Java se han hecho cargo de LISP. Muchas personas los usan, hay una gran cantidad de bibliotecas disponibles. Y lo que es más importante, son fáciles de integrar en tecnologías web.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.