Hola usuario de nuestro sitio web, hallamos la solución a tu pregunta, desplázate y la encontrarás más abajo.
Solución:
La pregunta ya ha sido respondida para Lisp, así que solo comentaré sobre Prolog.
Prolog fue diseñado para dos cosas: procesamiento de lenguaje natural y razonamiento lógico. En el paradigma GOFAI de principios de la década de 1970, cuando se inventó Prolog, esto significaba:
- construir gramáticas simbólicas para el lenguaje natural que se utilizarían para construir representaciones lógicas de oraciones/enunciados;
- usar estas representaciones y axiomas lógicos (no necesariamente los de la lógica clásica) para inferir nuevos hechos;
- utilizando gramáticas similares para traducir la representación lógica de nuevo al lenguaje.
Prolog es muy bueno en esto y se usa en la ISS exactamente para esa tarea. Sin embargo, el enfoque quedó desacreditado, porque
- “todas las gramáticas se filtran”: ninguna gramática puede captar todas las reglas y excepciones en un idioma;
- cuanto más detallada sea la gramática, mayor será la complejidad (tanto O grande como práctica) del análisis;
- el razonamiento lógico es inadecuado e innecesario para muchas tareas prácticas;
- Los enfoques estadísticos de la PNL, es decir, el “conteo de palabras”, han demostrado ser mucho más sólidos. Con el auge de Internet, se dispone de conjuntos de datos adecuados para obtener las estadísticas que necesitan los desarrolladores de PNL. Al mismo tiempo, los costos de memoria y disco han disminuido, mientras que la potencia de procesamiento sigue siendo relativamente costosa.
Recientemente, los investigadores de PNL han desarrollado enfoques simbólicos y estadísticos combinados algo prácticos, a veces utilizando Prolog. El resto del mundo usa Java, C++ o Python, para los cuales puede encontrar más fácilmente bibliotecas, herramientas y programadores sin doctorado. El hecho de que la E/S y la aritmética sean difíciles de manejar en Prolog no ayuda a su aceptación.
Prolog ahora se limita principalmente a aplicaciones específicas de dominio que involucran PNL y razonamiento de restricciones, donde parece funcionar bastante bien. Aún así, pocas compañías de software se anunciarán con “tecnología Prolog integrada”, ya que el lenguaje tiene mala reputación por no cumplir con la promesa de “hacer que la IA sea fácil”.
(Me gustaría agregar que soy un gran admirador de Prolog, pero incluso yo solo lo uso para crear prototipos).
Realmente no puedo hablar con Prolog, pero he aquí por qué Lisp:
-
Lisp es un lenguaje homoicónico, lo que significa que el código se expresa de la misma forma (expresiones s) que las estructuras de datos del lenguaje. es decir, “el código son datos”. Esto tiene grandes ventajas si está escribiendo código que modifica/manipula otro código, por ejemplo, algoritmos genéticos o manipulación simbólica.
-
ceceo macro El sistema lo hace muy adecuado para definir DSL de problemas específicos. La mayoría de los desarrolladores de Lisp efectivamente “extienden el lenguaje” para hacer lo que necesitan. Una vez más, el hecho de que Lisp sea homoicónico ayuda enormemente aquí.
-
Existe cierta conexión histórica, ya que Lisp se hizo popular casi al mismo tiempo que muchas de las primeras investigaciones sobre IA. Algunos datos interesantes en este hilo.
-
Lisp funciona bastante bien como lenguaje de programación funcional. Este es un dominio bastante bueno para la IA (donde a menudo solo intenta que la máquina aprenda cómo producir la salida correcta para una entrada determinada).
-
Vista subjetiva: Lisp parece atraer a las personas con una mentalidad matemática, lo que resulta ser exactamente lo que necesita para una gran cantidad de IA moderna… esto es posible debido al hecho de que Lisp está bastante relacionado con la lambda sin tipo. cálculo
Estoy haciendo un trabajo de inteligencia artificial/aprendizaje automático en este momento, y elegí Clojure (un Lisp moderno en JVM) más o menos por las razones anteriores.
Lisp tenía una ventaja cuando creíamos que la IA era manipulación de símbolos y cosas como Ontologías. Prolog tenía una ventaja cuando creíamos que la IA era lógica, y Unification era la operación complicada. Pero ninguno de estos proporciona ninguna ventaja para ninguno de los contendientes actuales de “IA”: la IA estadística se trata de matrices dispersas. Las redes neuronales de todo tipo, incluido el aprendizaje profundo, se trata de océanos de nodos conectados con enlaces. Los métodos libres de modelos (muchos tipos de aprendizaje automático, métodos evolutivos, etc.) también son muy simples. La complejidad es emergente, por lo que no tiene que preocuparse por ella. Escriba una base simple que pueda aprender lo que necesita aprender. En cualquiera de estos casos, cualquier lenguaje de propósito general servirá. Incluso se pueden argumentar que la mayoría de los enfoques de redes neuronales son tan simples que C++ sería excesivo.
Utilice el lenguaje que le permita contratar más fácilmente a los mejores programadores para la tarea.
valoraciones y comentarios
Finalizando este artículo puedes encontrar las explicaciones de otros desarrolladores, tú además eres capaz mostrar el tuyo si dominas el tema.