2. Intelligence Artificielle traditionnelle

L'IA traditionnelle se fonde sur tout ce qui tourne autour de la logique, des systèmes de règles, de la linguistique, et du concept de rationalité. Ses racines sont les langages de programmation comme Lisp et Prolog. Les systèmes experts sont les plus grands exemples de réussite de ce paradigme. Un système expert consiste en une base de connaissances détaillée et un système complexe de règles pour l'utiliser. De tels systèmes ont été utilisés comme support de diagnostiques médicaux et systèmes de vérification de solvabilité.

2.1. Bibliothèques de classes/code d'IA

Ce sont des bibliothèques de classes ou code à utiliser lorsque vous programmez dans le domaine de l'intelligence artificielle. Elles ne sont pas destinées à devenir des applications à part entière, mais plutôt comme des outils afin de créer vos propres applications.

ACL2

ACL2 (A Computational Logic for Applicative Common Lisp) permet de démonter les théorèmes pour des applications industrielles. C'est à la fois de la logique mathématique et un système d'outils pour construire des preuves dans la logique. ACL2 marche avec GCL (GNU Common Lisp).

AI Kernel

AI Kernel (noyau d'IA) est un moteur d'intelligence artificielle réutilisable qui utilise le traitement du langage naturel et un modèle Activateur/Contexte afin de permettre le multi-tâche entre les cellules installées.

AI Search II

En gros, cette bibliothèque offre au programmeur une série d'algorithmes de recherche qui peuvent être utilisés pour résoudre toutes sortes de problèmes différents. L'idée est que lorsqu'il développe un logiciel de résolution de problème, le programmeur devrait pouvoir se concentrer sur la représentation du problème à résoudre, sans avoir à se soucier de l'implémentation du moteur de recherche qui serait précisément utilisé pour mener la recherche. Cette idée a été appliquée grâce à l'implémentation d'une série de classes de recherche qui peuvent être incorporées dans d'autres logiciels à travers des spécifications de dérivation ou d'héritage du C++. Les algorithmes de recherche suivants ont été mis en œuvre :

  • Recherche en profondeur (deep-first) dans un arbre ou un graphe.

  • Recherche horizontale (breadth-first) dans un arbre ou un graphe.

  • Recherche par coûts uniformes dans un arbre ou un graphe.

  • Recherche du meilleur en priorité (best-first).

  • Recherche bidirectionnelle en profondeur (bidirectional depth-first) dans un arbre ou un graphe.

  • Recherche bidirectionnelle horizontale (bidirectional breadth-first) dans un arbre ou un graphe.

  • Recherche ET/OU en profondeur dans un arbre.

  • Recherche ET/OU horizontale dans un arbre.

Il existe un livre qui correspond à cette bibliothèque, "Object-Oriented Artificial Instelligence, Using C++".

Aleph

Ce document fournit des informations de référence sur "A Learning Engine for Proposing Hypotheses" (Aleph : un moteur d'apprentissage pour proposer des hypothèses). Aleph est système de programmation par logique inductive (Inductive Logic Programming, ILP). La fonction d'Aleph est celle de prototype pour explorer des idées. Aleph est un algorithme ILP mis en œuvre en Prolog par le Dr Ashwin Srinivasav au laboratoire informatique de l'université d'Oxford, et a été écrit spécifiquement pour la compilation avec le compilateur Prolog YAP.

Chess In Lisp (CIL : les échecs en Lisp)

La fondation CIL (les échecs en Lisp) est une implémentation "Common Lisp" de toutes les fonctions principales nécessaires au développement d'applications sur les jeux d'échecs. Le but principal du projet CIL est d'amener les chercheurs en IA intéressés par l'emploi de Lisp à travailler sur le domaine des échecs.

DAI

C'est une bibliothèque pour le langage de programmation Python qui fournit une interface orientée objet à l'outil système expert CLIPS. Il inclut une interface pour COOL (CLIPS Object Oriented Langage : Langage orienté objet CLIPS) qui permet de  :

  • Examiner, étudier les classes COOL

  • Créer et manipuler des instances COOL

  • Manipuler les gestionnaires de messages COOL

  • Manipuler les modules

FFLL

La bibliothèque gratuite de logique floue (FFLL : Free Fuzzy Logic Library) est une bibliothèque de classe et une API libres de logique floue qui est optimisée pour des applications dont la rapidité est importante, comme les jeux vidéos. FFLL est capable de charger des fichiers conformes au standard IEC 61131-7.

Fuzzy sets for Ada

Les ensembles flous pour Ada (Fuzzy sets for Ada) est une librairie fournissant des implémentations de facteurs de confiance pour les opérateurs NOT, AND, OR, XOR, + et *, les ensembles flous classiques avec les opérations sur la théorie des ensembles, les opérations sur la théorie des possibles, les opérations sur les ensembles intuitifs, la logique floue basée sur la théorie des possibles et les ensembles flous intuitifs ; les nombres flous, à la fois entier et à virgule flottante avec leurs opérations arithmétiques classiques, les variables linguistiques et les ensembles de variables linguistiques avec les opérations les concernant. Les entrées/sorties à base de chaînes de caractères sont supportées.

HTK

La boîte à outils du modèle de Markov masqué (HTK : Hidden Markov Model ToolKit) est une boîte à outils portable pour créer et manipuler des modèles de Markov masqué. HTK consiste en une série de modules de bibliothèques et d'outils disponibles sous la forme de sources en C. Ces outils founissent des solutions sophistiquées pour l'analyse vocale, la formation HMM, les tests et l'analyse de résultats. L'application supporte les HMM en utilisant à la fois les fonctions gaussiennes sur les mélanges à densité constante et les distributions discrètes et peut être utilisée pour créer des systèmes HMM complexes. Le logiciel HTK contient une grande quantité d'informations et d'exemples.

JCK

JCK est une nouvelle bibliothèque pour la programmation et la recherche par contraintes pour Java.

  • JCK est constitué de trois composants :

  • - JCHR : Java Constraint Handling Rules (règles de manipulation de contraintes Java). Langage de haut niveau pour écrire des résolveurs de contraintes.

  • - JASE : Java Abstract Search Engine (moteur de recherche abstrait Java). Moteur de recherche générique pour JCHR afin de résoudre les problèmes de contraintes.

  • - VisualCHR : outil interactif pour visualiser les calculs JCHR.

Les sources et la documentation sont disponibles à partir du lien ci-dessus.

KANREN

KANREN est un système de programmation par logique déclarative avec des relations de premier ordre, inclus dans un sous-ensemble fonctionnel pur de Scheme. Le système est constitué de sémantiques de la théorie des ensembles, de relations vraies, de relations de premier ordre, de variables logiques à portée lexicale, de stratégies en profondeur (deep-first) et itératif en profondeur (iterative deepening). Le système atteint de hautes expressivités et performances sans élimination.

LK

LK est une implémentation de l'heuristique de Lin-Kernighan pour le problème du commercial démarcheur et pour le problème de la correspondance parfaite de pondération minimum. Il est spécialement adapté aux figures géométriques en 2D, et a été appliqué dans certains exemples jusqu'à un million de villes. Il comprend aussi des générateurs d'exemples et des scripts Perl pour manipuler les exemples TSPLIB.

Cette implémentation introduit la "compensation groupée efficace", une technique algorithmique expérimentale dont le but est de rendre l'heuristique de Lin-Kernighan plus robuste dans le cas de données groupées.

maxent

La boîte à outils entropie maximum fournit un ensemble d'outils et une librairie pour construire des modèles d'entropie maximum (maxent) en Python ou C++. Il contient des modèles d'entropie maximum conditionnels, une estimation des paramètres GIS et L-BFGS, un lissage Gaussien, une API C++, un module d'extension Python, un utilitaire en ligne de commande et une bonne documentation. Une version Java est également disponible.

Nyquist

Le projet de musique informatisée (Computer Music Project) au CMU développe la technologie de la musique informatisée, et de la performance interactive pour améliorer l'expérience et la créativité musicale de l'homme. Cet effort interdisciplinaire puise dans la théorie de la musique, dans les sciences cognitives, l'intelligence artificielle, l'apprentissage des machines, l'interaction homme-machine, les systèmes temps réelles, les graphismes et animations informatiques, le multimédia, les langages de programmation, le traitement du signal. Un exemple paradigmatique de ces efforts interdisciplinaires est la création de la performance interactive qui lie l'improvisation musicale de l'homme aux agents informatiques intelligents en temps réel.

OpenCyc

OpenCyc est la version libre de Cyc, la plus grande et la plus complète des bases de connaissance générale ainsi que le plus grand moteur de raisonnement de sens communs. Une ontologie basée sur 6000 concepts en relation avec 60000 affirmations.

Module de logique floue Python

C'est un simple module python pour la logique floue. Le fichier est 'fuz.tar.gz' dans ce répertoire. L'auteur ambitionne également d'écrire un algorithme de génétique simple de même qu'une bibliothèque sur les réseaux neuronaux. Regarder le fichier '00_index' dans ce répertoire pour obtenir des informations sur la version.

Screamer

Screamer est une extension de Common Lisp qui ajoute un support pour la programmation non déterministe. Screamer comprend deux niveaux. Le niveau non déterministe basique ajoute un support pour la journalisation et les effets de coté irréalisables. En plus de cet aspect non deterministe, Screamer fournit un langage complet de programmation sous contraintes dans lequel on peut formuler et résoudre un mélange de systèmes sous contraintes numériques ou symboliques. Ensembles, ces deux niveaux étendent Common Lisp avec pratiquement toutes les fonctionnalités de Prolog et des languages de programmation logiques sous contraintes comme CHiP ou CLP(R). En outre, Screamer est complètement compatible avec Common Lisp. Les programmes de Screamer peuvent coexister et interopérer avec d'autres extensions de Common Lisp comme CLOS, CLIM et Iterate.

SPASS

SPASS : Démontreur de théorèmes automatisé pour des logiques de premier ordre avec égalité.

Si vous êtes intéressés par les démonstrations de théorèmes de logique du premier ordre, l'analyse formelle de programmes, systèmes, protocoles, les approches formelles de projets sur l'IA, les procédures de décisions, la démonstration de théorèmes à logique modale, SPASS peut vous offrir les bonnes fonctionnalités.

ThoughtTreasure

ThoughtTreasure est un projet pour créer une base de données de règles de sens communs à utiliser dans n'importe quelle application. Il consiste en une base de donnnées d'un peu plus de 100 000 règles et d'une API C pour l'intégrer dans vos applications. Les emballeurs Python, Perl, Java et TCL sont déjà disponibles.

Torch

Torch est une bibliothèque d'apprentissage écrit en C++. Son but est de fournir l'état de l'art des meilleurs algorithmes. Il est, et sera toujours en développement.

  • Plusieurs méthodes basées sur les gradients, y compris des perceptions de niveau multiple, fonctions sur des bases radiales et un mélange de compétences. Plusieurs petits modules (modules linéaires, modules Tanh, modules SoftMax, ...) peuvent être reliés ensembles.

  • Machine de vecteur de support, pour la classification et la regression.

  • Distributions logicielles, comprenant Kmeans, des modèles de mélanges Gaussiens, des modèles de Markov Masqués, des classificateurs de Baye, et des classes pour la reconnaissance vocale avec entrainement incorporé.

  • Modèles ensemblistes tels que Bagging et Adaboost.

  • Modèles non paramétriques comme les k plus proches voisins, la regression de Parzen et l'estimateur de densité de Parzen.

Torch est une bibliothèque libre dont les auteurs encouragent tout le monde à développer de nouveaux logiciels qui seront inclus dans les versions futures sur le site officiel.

2.2. Kits logiciels d'IA, applications, etc.

Voici plusieurs applications, kits logiciels, etc. ayant pour but la recherche dans le domaine de l'intelligence artificielle. Leur facilité d'utilisation peut varier, dans la mesure où ils ont été conçus pour satisfaire des intérêts de recherche particuliers, plus que comme un logiciel commercial sorti de l'étagère.

ASA — Adaptive Simulated Annealing

ASA (Adaptive Simulated Annealing : Recuit simulé adaptatif) est un puissant algorithme en code C d'optimisation globale particulièrement pratique pour les systèmes non linéaires et/ou stochastiques.

ASA est développé pour trouver statistiquement le meilleur ajustement global d'une fonction coût non linéaire et non convexe sur un espace de dimension D. Cet algorithme permet un schéma de refroidissement du recuit pour une température T exponentiellement décroissante dans le temps recuit k, T=T_0 exp(-c k^1/D). L'introduction du renouvellement de recuit permet également une adaptation aux changements de sensibilités dans un espace paramétrique multi-dimensionnel. Cet schéma de refroidissement de recuit est plus rapide que le recuit de Cauchy rapide, où T = T_0/k, et encore plus rapide que le recuit de Boltzmann, où T = T_0/ln k.

Babylon

BABYLON est un environnement modulaire, configurable et hybride pour le développement de systèmes experts. Ses caractéristiques comprennent les objets, les règles avec chaînage avant et arrière, la logique (Prolog) et les contraintes. BABYLON est codé et incorporé en Common Lisp.

cfengine

Cfengine, ou "moteur de configuration" est un langage de très haut niveau pour la construction de systèmes experts qui administrent et configurent de grands réseaux informatiques. Cfengine utilise l'idée de classes et une forme primitive d'intelligence pour définir et automatiser la configuration de grands systèmes de façon la plus économique possible. Cfengine est conçu pour être une part des systèmes immunisés informatiques.

CLEARS

  • Site web : ????? (Quelqu'un sait-il encore où trouver le site ?)

Le système CLEARS est un environnement graphique interactif pour les sémantiques de calcul. L'outil permet l'exploration et la comparaison de différents formalismes sémantiques ainsi que de leur interaction avec la syntaxe. Cela permet à l'utilisateur d'obtenir une idée de l'étendue des possibilités en matière de construction sémantique, ainsi qu'où se trouve la convergence réelle entre les théories.

CLIPS

CLIPS est un outil productif de système expert de développement et de livraison qui fournit un environnement complet pour la construction de systèmes experts basés sur des règles ou des objets.

CLIPS fournit un outil cohésif pour la gestion d'une grande variété de connaissances compatible avec trois différents paradigmes de programmation : basé règles, orienté objet et procédural. La programmation basée sur les règles permet de représenter les connaissances comme des heuristiques, ou règles empiriques, qui spécifient une série d'actions à entreprendre pour une situation donnée. La programmation orientée objet permet à des sytèmes complexes d'être modelés comme composants modulaires (qui peuvent être facilement réutilisés pour modeler d'autres systèmes ou pour créer de nouveaux composants). Les capacités de programmation procédurale fournies par CLIPS sont similaires à celles trouvées dans les langages comme le C, le Pascal, l'Ada et le Lisp.

Eprover

:TODO:

FOOL et FOX

FOOL signifie organisateur flou Oldenburg [Fuzzy Organizer OLdenburg]. C'est le résultat d'un projet de l'Université d'Oldenburg. FOOL est une interface utilisateur graphique pour développer les règles de base floues. FOOL va vous aider à inventer et maintenir une base de données qui spécifie le comportement d'un contrôleur flou ou quelque chose de similaire.

FOX est un petit mais puissant moteur flou qui lit la base de données, lit des valeurs d'entrée et calcule la nouvelle valeur de contrôle.

FUF et SURGE

FUF est une implémentation étendue du formalisme des grammaires d'unification fonctionnelles (FUGs : functional unification grammars) introduit par Martin Kay, spécialisé dans la tâche de génération de langage naturel. Il ajoute les fonctionnalités suivantes au formalisme de base :

  • Types et héritage.

  • Installation de contrôle étendu (maintient de l'objectif, recherche inverse intelligente).

  • Syntaxe modulaire.

Ces extensions permettent le développement de grandes grammaires qui peuvent être traitées efficacement et peuvent être maintenues à jour et comprises plus facilement. SURGE est une grande grammaire syntaxique de réalisations de l'anglais, écrite en FUF. SURGE est développée pour servir de composant de génération syntaxique de boîte noire dans un système de génération plus grand qui encapsule une connaissance riche de la syntaxe anglaise. SURGE peut aussi être utilisé comme plate-forme pour l'exploration de l'écriture de la grammaire dans une perspective de génération.

The Grammar Workbench

Semble être obsolète ??? N'est plus sur le site, bien que le projet parent se poursuive toujours.

The Grammar Workbench (L'atelier de grammaire), ou GWB en abrégé, est un environnement pour le développement aisé de grammaires Affix dans le formalisme AGFL. Ses buts sont :

  • de permettre à l'utilisateur d'introduire, inspecter et modifier une grammaire ;

  • d'effectuer des vérifications de cohérence sur la grammaire ;

  • de calculer des propriétés de la grammaire ;

  • de générer des phrases d'exemple ;

  • d'aider à effectuer des transformations sur la grammaire.

GSM Suite

The GSM Suite (la suite GSM) est une série de programmes pour l'utilisation des machines à état fini en mode graphique. Cette suite consiste en des programmes qui éditent, compilent, et impriment des machines d'état. La suite comprend un programme d'édition, gsmedit, un compilateur, gsm2cc, qui produit une implémentation C++ d'une machine d'état, un générateur PostScript, gsm2ps, et deux autres programmes mineurs. GSM est sous licence publique GNU et est donc libre d'utilisation selon les termes de cette licence.

Isabelle

Isabelle est un démontreur de théorème générique populaire développé à l'Université de Cambridge et au TU Munich. Les logiques existantes comme Isabelle/HOL fournissent un environnement de démontreur de théorème prêt à être utilisé pour d'assez grandes applications. Isabelle peut également servir comme châssis pour un prototypage rapide de systèmes déductifs. Il est présenté avec une grande bibliothèque comprenant Isabelle/HOL (logique classique d'ordre supérieur), Isabelle/HOLCF (Logique de Scott pour des fonctions calculatoire avec HOL), Isabelle/FOL (logique du premier ordre classique et intuitive), et Isabelle/ZF (ensemble de théories de Zermelo-Fraenkel au dessus de FOL).

Jess, the Java Expert System Shell

Jess (le shell système expert Java) est un clone du populaire shell de système expert CLIPS, entièrement écrit en Java. Avec Jess, vous pouvez à votre convenance donner à vos applets l'habilité à raisonner. Jess est compatible avec toutes les versions de Java, à partir de la version 1.0.2. Jess implémente les constructeurs suivants de CLIPS : defrules, deffunctions, defglobals, deffacts, et deftemplates.

learn

Learn (apprendre) est programme d'apprentissage vocal avec un modèle de mémoire.

LISA

LISA (Lisp-based Intelligent Software Agents : agents logiciels intelligents basés sur Lisp) est un système de règles de production lourdement influencé par JESS (Java Expert System Shell). Il a en son squelette un moteur de raisonnement basé sur l'algorithme de filtrage de Rete. LISA fournit également l'habilité à raisonner sur d'ordinaires objets CLOS.

NICOLE

NICOLE (Nearly Intelligent Computer Operated Language Examiner) est une théorie ou une expérimentation qui, si on donne à un ordinateur suffisamment de combinaisons sur la manière dont les mots, groupes de mots ou phrases sont liés les uns aux autres, peut vous répondre. C'est un essai pour simuler une conversation en apprenant comment les mots se rapportent à d'autres mots. Un humain communique avec NICOLE via le clavier et NICOLE répond avec ses propres phrases qui sont automatiquement générées, basées sur ce que NICOLE a stocké dans sa base de données. Chaque nouvelle phrase qui a été écrite et que NICOLE ne connaît pas est ajoutée à la base de donnée de NICOLE, ce qui étend la base de connaissances de NICOLE.

NLTK

NLTK, la boîte à outils de langage naturel (the Natural Language Toolkit), est une suite de librairies et de programmes en Python pour le traitement statistique et symbolique du langage naturel. NLTK contient des démonstrations graphiques et des échantillons de données. Il est accompagné d'une documentation fournie, y compris des tutoriels explicant les concepts sous-jacents des tâches de traitement du langage réalisées par l'outil.

NLTK convient parfaitement aux étudiants qui apprennent le traitement du langage naturel, ou qui réalisent une recherche dans le TLN ou un domaine approchant, tels que la linguistique, les sciences cognitives, l'intelligence artificielle, l'extraction de données, et l'apprentissage par machines. NLTK a été utilisé avec succès comme outil d'apprentissage, outil d'étude individuel, et comme une plateforme de prototypage et de construction de systèmes de recherche.

Otter : Système de déduction automatisé (An Automated Deduction System)

Notre système de déduction automatisé actuel Otter est conçu pour démontrer les théorèmes de logique du premier ordre avec une égalité. Les règles d'inférence d'Otter sont basées sur la résolution et la paramodulation, et il comprend des procédures pour la réécriture de termes, l'ordonnancement de termes, la complétion Knut-Bendix, le pesage, et les stratégies pour diriger et restreindre les recherches de preuves. Otter peut aussi être utilisé comme un calculateur symbolique et a un système de programmation équationnelle incorporé.

PVS

PVS est un système de vérification : c'est à dire un langage de spécification intégré à des outils de support et à un démontreur de théorème. Il est prévu pour capturer la plus sophistiquée des méthodes formelles mécanisées et pour être suffisamment robuste pour pouvoir être utilisé pour des applications significatives. PVS est un prototype de recherche : il évolue et s'améliore au fur et à mesure que nous développons ou appliquons de nouvelles capacités, et lorsque la charge en utilisation réelle expose de nouveaux besoins.

SNePS

Le but à long terme du groupe de recherche SNePS est la conception et la construction d'un langage naturel utilisant un agent cognitif informatisé, et d'effectuer la recherche dans l'intelligence artificielle, les linguistiques calculatoires, et la science cognitive nécessaire pour cette entreprise. Les trois parties sur lesquelles le groupe met l'accent sont la représentation du savoir, le raisonnement, et la compréhension et la génération du langage naturel. Le groupe est largement connu pour son développement du système de représentation/raisonnement du savoir SNePS, et pour Cassie, son agent cognitif informatisé.

Soar

Soar a été développé pour être une architecture cognitive générale. Nous avons l'ultime intention de permettre à l'architecture Soar de :

  • travailler sur l'ensemble des taches attendues d'un agent intelligent, des routines jusqu'aux problèmes extrêmement difficiles avec réponse ouverte ;

  • représenter et utiliser les formes appropriées du savoir, comme les formes procédurales, déclaratives, épisodiques et possiblement iconiques ;

  • se servir de tout l'éventail des méthodes de résolution de problèmes ;

  • interagir avec le monde extérieur et

  • apprendre tous les aspects des tâches et leurs performances sur celles-ci.

En d'autres termes, notre intention est de donner à Soar toutes les compétences requises d'un agent globalement intelligent.

TCM

TCM (Toolkit for Conceptual Modeling : boîte à outil pour la modélisation conceptuelle) est notre suite d'éditeurs graphiques. TCM contient des éditeurs graphiques pour des diagrammes entité-relation, des diagrammes classe-relation, des diagrammes de flux de données et d'évènements, des diagrammes de transition d'état, des diagrammes de structure de procédé de Jackson et des diagrammes de réseau systèmes, d'arbres de décomposition de fonction et d'éditeurs de tables variés, tels qu'un éditeur de table fonction-entité ou un éditeur de table de décomposition de fonction. TCM est facile d'accès et procède à de nombreuses vérifications de consistance, dont certaines sont effectuées immédiatement, d'autre pendant la requête.

Yale

Yale (Yet Another Learning Environment : Encore un autre environnement d'apprentissage) est un environnement pour les expériences d'apprentissage des machines. Les expériences peuvent être faites d'un grand nombre d'opérateurs emboîtés les uns dans les autres de manière arbitraire et leur installation est décrite par des fichiers XML qui peuvent être aisément créés à l'aide de l'interface graphique. Les applications de YALE couvrent à la fois les tâches d'apprentissage de recherche et du monde réel.

WEKA

WEKA (Waikato Environnement for Knowledge Analysis : Environnement Waikato pour l'analyse de connaissance) est la pointe de la technologie de l'application des techniques d'apprentissage de machines à des problèmes pratiques. C'est un banc d'essai logiciel complet qui permet d'analyser les données du monde réel. Il intègre différents outils d'apprentissage machine avec un squelette identique et une interface utilisateur uniforme. Il a été conçu selon la méthode de "plus c'est simple, mieux c'est" qui permet à l'utilisateur d'expérimenter de façon interactive avec un outil d'apprentissage machine simple avant de se tourner vers des solutions plus complexes.