Travaux pratiques en Intelligence Artificielle
Des débuts de programmes en Python et Delphi simulant des joueurs (Reversi ou Othello, Puissance 4), programmes à compléter par les étudiants, ainsi que les exécutables de joueurs achevés. Des logiciels d'apprentissage automatique à tester : réseaux de neurones, C5.0.
Résolution de problèmes en Intelligence Artificielle
Feuilles d'exercices
- TD sur la formalisation de problèmes et les opérateurs de changement d'état.
- TD sur les méthodes de recherche dans les graphes d'états.
Codage des problèmes en Python
- Coder un état et un opérateur de manière générique.
- Instancier avec les problèmes vus en TD (flèches, cruches, taquin, etc.) : liste des opérateurs disponibles, état initial, caractérisation des états finaux, etc.
Codage de la recherche en profondeur d'abord
- Programmer, de manière générique, l'algorithme de recherche en profondeur d'abord.
- Programmer une variante avec la mémorisation des états visités.
- Programmer une variante qui limite la profondeur de recherche (attention alors à la mémorisation des états déjà vus).
- Tester sur les problèmes définis en TD et précédemment codés en Python.
Codage de la recherche en largeur
- Programmer, de manière générique, l'algorithme de recherche en largeur.
- Tester sur les problèmes définis en TD et précédemment codés en Python. Faire varier le choix du nœud à sortir des Ouverts.
Comparaisons des méthodes de recherche
- Mesurer, pour chaque méthode et pour chaque problème, le nombre d'états visités et le temps d'exécution.
- Comparer les méthodes sur les nouveaux problèmes suivants :
- les flèches : passer de l'état initial ↓↑↑↑↑↓ à l'état final ↑↑↑↑↑↑,
- les cruches : obtenir 6 litres à partir de la configuration initiale (0,0),
- le taquin : partir de l'état de jeu
5 7 6 2 8 3 4 1
Algorithmes de jeux : Min-Max et Alpha-Beta
Feuille d'exercices
Codage de la méthode Min-Max
- Programmer, de manière générique et en Python, l'algorithme qui développe complètement un arbre de jeu à partir d'une situation donnée et qui fait remonter les évaluations selon la méthode Min-Max.
- Coder le jeu de Nim et le jeu du morpion en instanciant les méthodes génériques vues en cours.
- Ajouter le code Python pour mener des parties de Nim et de Morpion entre un joueur humain et Min-Max.
Min-Max avec profondeur limitée, heuristiques et coupes Alpha-Bêta
Application à des jeux comme Puissance 4, Othello, awalé, dames, échecs, go, breakthrough, Havannah, Hex, etc.
Apprentissage automatique
arbres de décision avec C5.0
- installation de la version de démonstration ;
- parcours du tutoriel ;
- premières expérimentations avec le problème golf : fichiers de description et de données ;
- expérimentations sur les problèmes breast cancer et housing (fichiers fournis avec C5.0) ;
- test du problème cardio (fichiers de description et de données), puis enrichissement par la valeur de l'index pondéral de chaque patient (Poids / Taille2) ;
- réflexion sur le problème mystere : fichiers de description, d'apprentissage et de test.
Techniques de Boosting
- An applet demonstrating adaboost par Yoav Freund.
Algorithmes de type EM
- EM algorithm for Mixture models par Shotaro Akaho.
Réseaux de neurones
- démonstration de Perceptron ;
- reconnaissance de chiffres ;
- page de SNNS.