Lisp et Prolog pour L'Intelligence Artificielle? [fermé]

maintenant depuis que j'ai pris un cours il y a 3 ans à A. I. je suis clairement assez compétent pour poser cette question......je plaisante je plaisante ;)

mais sérieusement, qu'est-ce qui fait que ces langues sont si populaires pour les recherches de L'A. I. Même si A. I. research est "vieux"...il est venu probablement le plus long chemin au cours des 5-10 dernières années, il semble comme.... Est-ce parce que les langues étaient un peu "conçues" autour du concept D'A. I. , ou simplement parce que nous n'avons rien de vraiment mieux utiliser?

je pose cette question parce que je l'ai toujours trouvé assez intéressant, et je suis un peu curieux. Si je suis entièrement tort, et ils utilisent des langues différentes, j'aimerais savoir ce qu'ils utilisent. Je veux dire que je peux comprendre prolog, en particulier avec la logique Sentiente/propositionnelle et la logique floue. mais je ne comprends pas "pourquoi" nous utiliserions Lisp...et même ce que les chercheurs de L'A. I. utiliseraient d'autre pour faire l'apprentissage automatique, etc.

tous les articles / livres sur le sujet est utile aussi :)

31
demandé sur Community 2011-03-07 22:53:14

6 réponses

ne peut pas vraiment parler à Prolog, Mais voici pourquoi Lisp:

  • Lisp est un homoiconic de la langue, ce qui signifie que le code est exprimé dans la même forme ( s-expressions ) que les structures de données dans la langue. c'est à dire "code de données". Ceci a de grands avantages si vous écrivez du code qui modifie / manipule d'autres codes, par exemple des algorithmes génétiques ou des manipulations symboliques.

  • le système macro de Lisp convient bien à la définition des niveaux de référence numériques spécifiques à un problème. La plupart des développeurs de Lisp "étendent effectivement le langage" pour faire ce dont ils ont besoin. Encore une fois, le fait que le Lisp soit homoiconique aide énormément ici.

  • il y a un certain lien historique, en ce que le Lisp est devenu populaire à peu près en même temps que beaucoup de la recherche AI tôt. Quelques faits intéressants dans ce fil .

  • Lisp fonctionne plutôt bien comme un langage de programmation fonctionnel. Il s'agit d'un très bon domaine adapté à AI (où vous êtes souvent simplement en train d'essayer de faire en sorte que la machine apprenne à produire la bonne sortie pour une entrée donnée).

  • point de vue Subjectif: Lisp semble faire appel à des gens avec un état d'esprit mathématique, qui se trouve être exactement aiguiser vous avez besoin pour beaucoup de modernes de l'IA..... ceci est possible en raison du fait que Lisp est assez étroitement liée au calcul lambda non typé

je fais actuellement un travail D'apprentissage AI / machine, et j'ai choisi Clojure (un Lisp moderne sur le JVM) à peu près pour les raisons ci-dessus.

28
répondu mikera 2017-05-23 12:32:15

la question a déjà été répondue pour Lisp, donc je vais juste commenter sur Prolog.

Prolog a été conçu pour deux choses: le traitement du langage naturel et le raisonnement logique. Dans le GOFAI paradigme du début des années 1970, quand Prolog a été inventé, cela signifiait:

  1. construire des grammaires symboliques pour le langage naturel qui seraient utilisées pour construire des représentations logiques de phrases / énoncés;
  2. à l'aide de ces représentations et de la logique des axiomes (pas nécessairement celles de la logique classique) pour déduire de nouveaux faits;
  3. à l'aide de grammaires similaires à traduire représentation logique de retour dans le langage.

Prolog est très bon à cela et est utilisé dans le ISS pour exactement une telle tâche. L'approche a été discréditée cependant, parce que

  1. "tous les grammars leak " : aucune grammaire ne peut saisir toutes les règles et exceptions dans une langue;
  2. plus la grammaire est détaillée, plus grande est la complexité (à la fois énorme et pratique) de l'analyse;
  3. le raisonnement logique est à la fois inadéquat et inutile pour de nombreuses tâches pratiques;
  4. les approches statistiques de la PNL, c'est à dire "de comptage de mots", se sont révélées beaucoup plus robuste. Avec la montée de L'Internet, des ensembles de données adéquats sont disponibles pour obtenir les statistiques dont les développeurs de NLP ont besoin. Dans le même temps, les coûts de mémoire et de disque ont diminué tandis que la puissance de traitement est encore relativement chère.

ce n'est que récemment que les chercheurs du PNL ont développé des approches symboliques et statistiques combinées assez pratiques, utilisant parfois Prolog . Le reste du monde utilise Java, C++ ou Python, pour lequel vous pouvez trouver plus facilement des bibliothèques, des outils et des programmeurs non-doctoraux. Le fait que L'E/S et l'arithmétique sont la lourdeur de Prolog n'aide pas à l'accepter.

Prolog est maintenant principalement limité aux applications spécifiques à un domaine impliquant la NLP et le raisonnement par contrainte, où il semble bien se passer. Pourtant, peu de sociétés de logiciels vont faire de la publicité avec "construit sur la technologie Prolog" depuis que le langage a obtenu une mauvaise réputation pour ne pas être à la hauteur de la promesse de "rendre AI facile."

(je voudrais ajouter que je suis un grand fan de Prolog, mais même Je ne l'utilise que pour prototypage.)

28
répondu Fred Foo 2011-03-08 14:38:40

le Lisp avait un avantage quand nous pensions que L'IA était une manipulation de symboles et des choses comme des Ontologies. Prolog a eu un avantage quand nous avons cru AI comme logique, et L'Unification a été l'opération délicate. Mais aucun de ces fournissent un avantage pour tout prétendants "AI": L'IA statistique est sur des tableaux épars. Les réseaux neuronaux de toutes sortes, y compris l'apprentissage en profondeur, concernent des océans de nœuds reliés à des liens. Modèle des méthodes libres (de nombreux types de machines d'apprentissage, évolutif méthodes, etc.) sont également très simples. La complexité est émergente, donc vous n'avez pas à vous en inquiéter. Écrire une base simple qui peut apprendre ce qu'il doit apprendre. Dans l'un ou l'autre de ces cas, n'importe quel langage général fera l'affaire. On peut même avancer que la plupart des réseaux neuronaux sont si simples que C++ serait exagéré.

utilisez le langage qui vous permet le plus facilement d'embaucher les meilleurs programmeurs pour la tâche.

15
répondu Monica Anderson 2014-09-04 21:43:19

il y a eu des réponses positives et informatives ici, mais le point du Lisp et du Prolog a été négligé, marginalisé, ou pas assez souligné.

Lisp puis plus tard Prolog ont émergé dans une ère où la recherche principale AI a tourné autour du traitement symbolique. Un exemple simple de traitement symbolique est la façon dont nous les humains font l'algèbre, le calcul, ou les intégrales à la main. Nous manipulons symboliquement les variables et les constantes pour obtenir des relations équivalentes. Le Lisp et le Prolog ont été conçus à cette fin.

la manipulation symbolique n'est pas trivialement implémentée en C++ ou Java car ils n'ont pas été conçus dans ce but. Cependant, C++, Java ou des langages similaires peuvent être des mots à la mode dans L'AI de nos jours parce qu'il existe maintenant plusieurs variantes de la recherche sur L'AI qui ne traitent pas du traitement symbolique.

L'une des formes d'intelligence artificielle consiste à utiliser des méthodes statistiques comme base de connaissance et cette nécessite l'utilisation de langues beaucoup plus maigres pour réduire le temps de calcul. En outre, de nombreux systèmes dits D'intelligence artificielle ne sont rien de plus que des systèmes spécialisés pour servir un créneau particulier. Bien entendu, il est préférable de programmer ces systèmes dans un langage non Lisp/Prolog et de s'en remettre moins au "raisonnement" ou à l'acquisition de connaissances fondées sur le bon sens et davantage au traitement de données à partir d'entrées.

même Watson (qui est programmé en Java, C++, et un peu Prolog) est sans doute très spécialisé système. Il semble que Watson a été conçu pour acquérir une grande quantité de faits par lequel il trie ensuite à travers ces faits en utilisant des algorithmes de recherche sophistiqués (pas sûr bien et IBM serait probablement m'en vouloir de dire cela). Les futures mises en œuvre de L'IA combineront probablement les paradigmes de L'IA et mettront en œuvre divers langages pour chaque partie spécialisée. Même Lisp et Prolog peuvent Un jour faire un retour.

11
répondu ziggystar 2012-01-19 10:03:09

c'est peut-être un.bonnes idées pour rappeler les motivations de Prolog: logique pour résoudre les problèmes et pour comprendre le raisonnement, humain ou machine comme. Il s'agit d'un projet en cours et même si Prolog est l'un de ses meilleurs résultats, il n'est pas définitif. Nous cherchons toujours de meilleures langues pour représenter la connaissance. Consultez le dernier livre de Bob Kowalski: comment être intelligent artificiellement.

6
répondu Jacinto Davila 2013-09-07 13:39:10

mais je ne comprends pas" pourquoi " nous utiliserions Lisp...et quoi d'autre encore A. I. chercheurs utiliseraient pour faire l'apprentissage à la machine, etc.

Yann LeCun a développé Lush alias LISP Universal Shell. Il est également devenu récemment directeur de la recherche sur L'IA dans un réseau de médias sociaux.

des articles/livres sur le sujet est utile aussi :)

je suppose vous connaissez déjà L'Intelligence Artificielle: une approche moderne C'est le livre d'introduction Le plus lu pour L'IA dans les universités.

1
répondu 2014-05-13 15:14:30