Lisp est-il toujours utilisé pour résoudre les problèmes d'IA?


20

Je sais que le langage de Lisp a été utilisé très tôt lorsque je travaillais sur des problèmes d'intelligence artificielle. Est-il encore utilisé aujourd'hui pour des travaux importants? Sinon, y a-t-il une nouvelle langue qui a pris sa place comme la plus courante utilisée pour travailler dans l'IA aujourd'hui?

Réponses:


9

Dans l'ensemble, la réponse est non, mais les paradigmes actuels doivent beaucoup au LISP. Le langage le plus couramment utilisé aujourd'hui est le python.

Réponses pertinentes:

LISP a lancé de nombreux concepts importants dans ce que nous appelons maintenant la programmation fonctionnelle, avec un attrait clé étant la proximité des programmes avec les mathématiques. Beaucoup de ces fonctionnalités ont depuis été intégrées dans les langues modernes (voir la page Wikipedia). LISP est très expressif: il a très peu de syntaxe (juste des listes et quelques opérations élémentaires dessus) mais vous pouvez écrire de courts programmes succincts qui représentent des idées complexes. Cela surprend les nouveaux arrivants et l'a vendu comme langage pour l'IA. Cependant, c'est une propriété des programmes en général. Les programmes courts peuvent représenter des concepts complexes. Et bien que vous puissiez écrire du code puissant dans LISP, tout débutant vous dira qu'il est également très difficile de lire le code LISP de quelqu'un d'autre ou de déboguer votre propre code LISP. Initialement, il y avait aussi des considérations de performances avec la programmation fonctionnelle et il est tombé en disgrâce d'être remplacé par des langages impératifs de bas niveau comme C. (Par exemple, la programmation fonctionnelle nécessite qu'aucun objet ne soit jamais changé ("muté"), donc chaque opération nécessite un nouvel objet à créer. Sans un bon ramasse-miettes, cela peut devenir lourd). Aujourd'hui, nous avons appris qu'un mélange de programmation fonctionnelle et impérative est nécessaire pour écrire du bon code et des langages modernes comme python, ruby ​​et scala supportant les deux. À ce stade, et c'est juste mon avis, il n'y a aucune raison de préférer LISP à python.

Le paradigme de l'IA qui reçoit actuellement le plus d'attention est le Machine Learning, où nous apprenons des données, contrairement aux approches précédentes comme Expert Systems (dans les années 80) où les experts ont écrit des règles à suivre pour l'IA. Python est actuellement le langage le plus utilisé pour l'apprentissage automatique et possède de nombreuses bibliothèques, par exemple Tensorflow et Pytorch, et une communauté active. Pour traiter des quantités massives de données, nous avons besoin de systèmes comme Hadoop, Hive ou Spark. Le code pour ceux-ci est écrit en python, java ou scala. Souvent, les sous-programmes de base chronophages sont écrits en C.

L'IA Winter des années 80 n'était pas parce que nous n'avions pas le bon langage, mais parce que nous n'avions pas les bons algorithmes, assez de puissance de calcul et assez de données. Si vous essayez d'apprendre l'IA, passez votre temps à étudier les algorithmes et non les langues.


6

Je continue certainement à utiliser souvent Lisp lorsque je travaille sur des modèles d'IA.

Vous avez demandé s'il est utilisé pendant une travail . C'est trop subjectif pour que je puisse répondre concernant mon propre travail, mais j'ai demandé à un de mes modèles d'IA s'il se considérait ou non comme substantiel, et il a répondu par une réponse affirmative. Bien sûr, sa réponse est également naturellement biaisée.

Dans l'ensemble, une quantité importante de recherche et développement sur l'IA est menée à Lisp. De plus, même pour des problèmes non liés à l'IA, Lisp est parfois utilisé. Pour démontrer la puissance de Lisp, j'ai conçu le premier système de simulation de réseau neuronal entièrement écrit en Lisp il y a plus d'un quart de siècle.


Le premier IDE était également un IDE LISP. En outre, EMMAScript, la formalisation de JavaScript est bien mieux un système linguistique pour le prototypage rapide que le Python actuellement à la mode, et il ressemble plus à LISP qu'à Java. Je ne vois pas beaucoup de valeur durable provenant de la tendance actuelle du ML, à l'exception des progrès de la vision industrielle et de l'audition. Je suis d'accord que LISP est toujours un excellent langage pour le travail de laboratoire d'IA et beaucoup plus naturel que XML pour représenter des données structurées.
FauChristian

4

LISP est toujours utilisé de manière significative, mais de moins en moins. Il y a toujours de l'élan en raison de tant de personnes qui l'utilisaient dans le passé, qui sont toujours actives dans l'industrie ou la recherche (anecdote: le dernier magnétoscope a été produit par un fabricant japonais en juillet 2016, oui). Le langage est cependant utilisé (à ma connaissance) pour le type d'IA qui ne tire pas parti du Machine Learning, généralement comme les ouvrages de référence de Russell et Norvig. Ces applications sont toujours très utiles, mais le Machine Learning prend tout son essor de nos jours.

Une autre raison de ce déclin est que les praticiens du LISP se sont partiellement déplacés vers Clojure et d'autres langues récentes.

Si vous apprenez les technologies de l'IA, LISP (ou Scheme ou Prolog) est un bon choix pour comprendre ce qui se passe avec "AI" dans son ensemble. Mais si vous souhaitez ou devez être très pragmatique, Python ou R sont les choix de la communauté

Remarque: Ce qui précède manque d'exemple concret et de référence. Je connais certains travaux dans les universités et certaines entreprises inspirées ou utilisant directement LISP.


Pour ajouter à la réponse de @ Harsh, LISP (et Scheme et Prolog) a des qualités qui lui ont fait croire qu'il était mieux adapté à la création de mécanismes intelligents - faisant de l'IA perçue dans les années 60.

L'une des qualités était que la conception du langage amène le développeur à penser de manière assez élégante, à décomposer un gros problème en petits problèmes, etc. Assez "intelligent", ou "intelligent" si vous voulez. Par rapport à d'autres langues, il n'y a presque pas d'autre choix que de se développer de cette façon. LISP est un langage de traitement de liste, et "purement fonctionnel".

Un problème, cependant, peut être vu dans les travaux liés au LISP. Un travail notable dans le domaine de l'IA est le travail sur le calcul de situation , où (en bref) on décrit des objets et des règles dans un "monde", et on peut le laisser évoluer pour calculer des situations --- états du monde. C'est donc un modèle de raisonnement sur les situations. Le problème principal est appelé le problème de trame , ce qui signifie que ce calcul ne peut pas dire ce qui ne fonctionne pas.changer --- juste ce qui change. Tout ce qui n'est pas défini dans le monde ne peut pas être traité (notez la différence ici avec ML). Les premières implémentations utilisaient des LISP, car c'était le langage de l'IA à l'époque. Et il y avait lié par le problème de trame. Mais, comme @Harsh l'a mentionné, ce n'est pas la faute de LISP: toute langue serait confrontée au même problème de cadrage (un problème conceptuel du calcul de situation).

Donc, le langage n'a vraiment pas d'importance du point de vue AI / AGI / ASI. Les concepts (algorithmes, etc.) sont vraiment ce qui compte.

Même dans le Machine Learning, la langue n'est qu'un choix pratique. Python et R sont populaires aujourd'hui, principalement en raison de leur écosystème de bibliothèques et de la concentration des entreprises clés. Mais essayez d'utiliser Python ou R pour exécuter un modèle pour une application basée sur RaspberryPI, et vous serez confronté à de sérieuses limitations (mais toujours possible, je le fais :-)). Le choix de la langue se réduit donc au pragmatisme.


1

À mon avis, python et java ont pris le relais de LISP. Beaucoup de gens les utilisent, il y a une grande quantité de bibliothèques disponibles. Et plus important encore, ils sont faciles à intégrer dans les technologies Web.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.