Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Lorsque les ordinateurs numériques ont été développés pour la première fois dans
les années 1940 et 1950, les chercheurs ont écrit un certain nombre de programmes, ces
programmes pouvaient jouer aux échecs, aux dames et prouver des théorèmes. Dans les
années 1960 et 1970, l'IA a exploré diverses manières de représenter les problèmes en
développant différentes techniques de recherche et heuristiques générales, celles-ci ont
permis le développement de programmes utilisés pour résoudre des problèmes de mots
algébriques et l'intégration symbolique. Dans les années 1970 et 1980, grâce à des
systèmes plus puissants, des programmes d'IA ont été utilisés pour créer des systèmes
experts et en 1997, un programme IBM nommé DEEP BLUE a vaincu le champion du
monde d'échecs, Garry Kasparov.
L'intérêt pour l'IA s'est effondré à la fin des années 1950, il a cependant repris avec
vigueur dans les années 1980. Les réseaux d'éléments non linéaires avec des
interconnexions à force réglable sont maintenant reconnus comme une classe
importante d'outils de modélisation non linéaire. Il existe maintenant plusieurs
applications importantes de l'IA.
Les langages de programmation d'IA sont des langages capables de mettre en
œuvre une logique, très utiles pour créer des systèmes experts et dotés de
fonctionnalités pour gérer les bases de données relationnelles et le traitement du langage
naturel. Il existe de nombreux langages de programmation utilisés en IA parmi lesquels
on citera : List Processing (LISP), le langage français pour la programmation en logique
(PROLOG), Clips, Python et JAVA.
Evolution of artificial intelligence languages – a systematic literature review Emmanuel Adetiba1,2,
Temitope M. John1 , Adekunle A. Akinrinmade1 , Funmilayo S. Moninuola 1 , Oladipupo O. Akintade1
, Joke A. Badejo1 1Department of Electrical and Information Engineering, College of Engineering,
Covenant University, Ota, Nigeria. 2HRA, Institute for Systems Science, Durban University of
Technology, P.O. Box 1334, Durban, South Africa.
Après avoir acquis les bases de la compréhension des deux types de langages, résumons
maintenant les principales différences entre ces deux types de programmation.
Programmation Impérative Programmation Déclarative
En cela, les programmes spécifient En cela, les programmes spécifient ce qui
comment les choses doivent être faites. doit être fait.
décrit le flux de contrôle du calcul. exprime la logique du calcul.
Son objectif principal est de décrire Son objectif principal est de décrire le
comment obtenir le résultat ou l'accomplir. résultat souhaité sans dicter directement
comment l'obtenir.
Ses avantages incluent la facilité Ses avantages incluent un code efficace,
d'apprentissage et de lecture, le modèle qui peut être appliqué en utilisant des
notionnel est simple à comprendre, etc. méthodes, une extension facile, un niveau
d'abstraction élevé, etc.
Son type comprend la programmation Son type comprend la programmation
procédurale, la programmation orientée procédurale, la programmation orientée
objet, l'approche de traitement parallèle. objet, l'approche de traitement parallèle .
En cela, l'utilisateur est autorisé à prendre En cela, un compilateur est autorisé à
des décisions et donner des commandes au prendre des décisions.
compilateur.
Il donne un contrôle total aux Il peut automatiser les flux répétitifs tout
développeurs qui sont très importants en simplifiant la structure du code.
dans la programmation de bas niveau.
Voici un exemple d'informations que l'on pourrait vouloir fournir à Prolog (ce n'est pas du
vrai code prolog, juste une description en français) :
Citation
Une personne X (les majuscules désignent des variables) est frère ou sœur de Y si
X est différent de Y, et s'il existe une personne Z qui est parent à la fois de X et de
Y.
Citation
Quels sont les frères et sœurs de Sophie ?
Et prolog fournira le bon résultat, à savoir tout ce qu'il peut déduire des informations
qu'on lui a données :
Citation
Émilie et Camille.
Et pour interroger Prolog (la première ligne est la question, avec la réponse ensuite) :
Suivant ce principe, on peut en fait écrire des programmes relativement élaborés.
Historiquement, la programmation logique est appréciée dans tous les domaines où il
faut "faire des déductions" : certaines bases de données, de systèmes d'intelligence
artificielle (systèmes à base de connaissances, la simulation, le traitement du langage
naturel, l’écriture de compilateurs …), etc.
SWI-Prolog
Cela peut se lire comme suit : Pour produire une liste constituée des éléments de y
ajoutés aux éléments de x, le calcul est conditionnel (cond). Si la liste x est vide (nulle),
alors le résultat est égal à y. Sinon, construisez (contre) une nouvelle liste en plaçant le
premier élément (voiture) de x avant le résultat de l'ajout de y au reste des éléments
(cdr) de la liste x.
Cela illustre plusieurs points du « bon » style Lisp. Les procédures sont généralement
petites et spécialisées, effectuant une seule tâche conceptuelle ; un programme Lisp
complet peut comprendre des centaines de petites procédures, chacune ne dépassant
pas trente à soixante lignes de code. La récursivité (une procédure qui s'appelle elle-
même) est souvent utilisée pour traverser des structures de données complexes. Alors
que les parenthèses indiquent la priorité et la structure du programme, le code est
généralement indenté dans un style conventionnel pour aider l'œil.
A Brief Introduction to Lisp (vt.edu)
Il existe plusieurs IDEs pour lisp, les deux plus utilisées sont le SLIME (Superior Lisp
Interaction Mode for Emacs) qui est un mode pour l’éditeur de text Emacs, et
LISPWORKS IDE qui fournit un flux de travail fluide et confortable, vous permettant
d'écrire, de tester et d'étendre progressivement votre logiciel pendant son exécution.
CLIPS
CLIPS (C Language Integrated Production System) est un environnement et un
langage de programmation créés en 1985, faisant partie du paradigme des langages
déclaratifs et logiques.
C’est un système général permettant la réalisation de systèmes experts
• Objectifs :
Etant donné que beaucoup de systèmes experts développés en LISP souffrent de
mauvaise portabilité, coût élevé, faible intégration avec d'autres environnements, ...etc. Il
était donc nécessaire de développer un moteur d'inférence en langage C : CLIPS.
CLIPS compte plus de 4000 utilisateurs dans le monde
• domaine concernés : • ingénierie : aéronautique, nucléaire, chimique ...
• éducation
• médical
• financier
• ...
• tâches : • diagnostic
• analyse
• planification
• optimisation
• aide à la conception
• ...
Quelques aspects techniques
CLIPS est en open source et intégré à de nombreuses distributions LINUX.
La syntaxe de CLIPS est proche de LISP (beaucoup de parenthèses!)
Interface avec interpréteur de commandes Possibilité d'intégrer des procédures écrites
en C.
Interfaçage Java Native Interface (il existe aussi un clône de CLIPS écrit en Java, Jess)
CLIPS permet le chainage avant (mais on peut simuler le chainage arrière en utilisant des
méta-règles)
Introduction à CLIPS : 1- Faits et règles (C Language Integrated Production System)
Bernard ESPINASSE Professeur à l'Université d'Aix-Marseille.
Un programme CLIPS se compose des faits et des règles :
Exemple d’un fait :
Exemple d’une règle :
Grosso-Modo
Beaucoup d'hypothèses de sortie + beaucoup de données à l'avance => Utiliser le chaînage direct
Moins d'hypothèses de sortie + doit interroger les données => Utiliser le chaînage arrière
PYTHON
Python est un langage de programmation interprété, multi-paradigmes, de haut niveau
avec une sémantique dynamique. Ses structures de données intégrées de haut niveau, combinées
à un typage dynamique et à une liaison dynamique, le rendent très attrayant pour le
développement rapide d'applications, ainsi que pour une utilisation comme langage de script ou
de collage pour connecter des composants existants entre eux.
Python est préféré pour l'apprentissage automatique et l'IA car il accompagne les
développeurs tout au long du cycle de vie du développement du logiciel afin d'être productif et
confiant quant au produit qu'ils construisent. Python offre de nombreux avantages pour la
création de projets d'IA et de Machine Learning. Voici quelques exemples d'avantages :
Bibliothèque intégré
Facile à intégrer
Gratuit et open source
Paradigme orienté objet
Paradigme fonctionnel
Paradigme procédurale
…
2. KERAS
3. THEANO
Ces bibliothèques sont extrêmement précieuses lorsque vous travaillez sur des projets
d'apprentissage automatique, car elles permettent de gagner du temps et fournissent en outre
des fonctions explicites sur lesquelles on peut s'appuyer.
JAVA
Java pour la programmation en intelligence artificielle est principalement utilisé
pour créer des solutions d'apprentissage automatique, de la programmation génétique,
des algorithmes de recherche, des réseaux de neurones et des systèmes multi-robots. Les
fonctionnalités indispensables de Java pour les projets d'IA sont son orientation objet et
son évolutivité.
Le développement de solutions d'intelligence artificielle en Java présente de
nombreux avantages. Les principaux avantages sont discutés ci-dessous.
CONCLUSION
Il existe plus de langages informatiques que vous ne pourrez imaginer, et encore
plus continuent d'être créés chaque année.
La première raison pour laquelle il y a beaucoup de langages est que les gens continuent
de les créer, même lorsqu'ils n'en ont pas forcément besoin, juste parce qu’ils le peuvent
et de temps en temps, quelqu'un développe un langage suffisamment bon pour que
beaucoup de gens commencent à l'utiliser.
Une autre raison est que certains langages sont bien mieux adaptés à certaines tâches
que d'autres.
La nécessité de simplicité, il y a des langages beaucoup plus faciles à apprendre que
d'autres.
Avec autant de langages, les apprendre tous serait impossible. Et faire un choix est
vraiment difficile, étant donné qu’il n’y a pas de « meilleur » langage, cela dépendra avant
tout :
Des préférences personnelles
Le genre de choses que vous voulez développer
À quel point le langage est-il limité, à quel point est-il facile ou difficile à apprendre
Perspectives de carrière potentielles
Si le langage est en hausse ou en baisse de popularité…etc