A la découverte de l'intelligence artificielle
Perfilado de sección
-
Option «À la découverte de l’Intelligence Artificielle»
Description
Cette option propose une initiation ludique et visuelle à l’intelligence artificielle – plus précisément à l’apprentissage statistique – via le pilotage de robots. L’optique, sur la base de travaux pratiques, est de développer une intuition sur les algorithmes d’apprentissage (supervisés, non supervisés, par renforcement), pour parvenir progressivement aux formulations mathématiques. La mise en œuvre sera l’occasion de manipuler réseaux de neurones, vision artificielle et traitement du langage. Les rudiments de programmation Python nécessaires seront introduits au fil de l’eau.
Cette option ne nécessite pas de prérequis particulier hors mathématiques de terminale, et s’adresse tout particulièrement aux étudiants n’ayant pas de bagage informatique (spécialité NSI, programmation Python, …) ou qui ne suivront pas une formation informatique ultérieurement. Il n’est pas requis non plus d’avoir suivi la spécialité mathématiques en Terminale.
Responsable d’UE
Thomas Deneux thomas.deneux@cnrs.fr
Coresponsable : Nicolas M. Thiéry Nicolas.Thiery@universite-paris-saclay.fr
Organisation pratique
12 séances de 2 heures en salle de travaux pratiques (sur 12 semaines consécutives), créneau usuel des options les jeudi 13h30-15h30
MCC Modalités de contrôle des Connaissances
- CCTP: Deux TPs notés (mi-parcours et fin de session): 65%
- EEF Examen Écrit Final: 35%
-
Au cours de ce premier cours nous prendrons en main la ressource "AlphAI, robot apprenant pour découvrire l'Intelligence Artificiel" au travers de l'entraînement de robots pour une course de robots autonomes.
Instructions
1. Connexion au robot par Bluetooth
- Mémorisez le numéro de votre robot et le PC que vous utilisez : si possible à la prochaine séance il faudra utiliser le même robot avec le même PC
- Allumez votre robot (au bout d'une minute, il va vibrer et clignoter en blanc pour dire qu'il est prêt)
- Ouvrez la pochette du dongle proprement (vous le rendrez en fin de séance à l'intérieur de sa pochette)
- Insérez le dongle Bluetooth dans le port USB2 (c'est celui qui a du BLEU à l'intérieur)
- Allez dans le Centre de contrôle > Bluetooth, cherchez le nom de votre robot dans la liste des périphériques disponibles et cliquez dessus pour le connecte
2. Lancement du logiciel
- Ouvrez un terminal
Tapez la commande pour lancer le logiciel AlphAI
~tdeneux/alphai
- Dans le menu Connexions > Bluetooth, choisissez le numéro de votre robot
- Cliquez le bouton "Connexion" (en bas à gauch) : votre robot fait une petite vibration pour dire qu'il est bien connecté
3. Configuration pour la course de robots- Dans l'onglet capteur, cliquez l'icône caméra, choisissez le mode 16x12
- Sélectionnez aussi le mode "pré-calcul image caméra" > "Luminance/Jaune-Bleu/Vert-Rouge"
- Dans l'onglet caption, sélectionnez seulement les actions "tout droit" et "léger virage sur place"
- Dans l'onglet Visualisation, désactivez "animation", "connexions" et "activité synaptique"
- Dans l'onglet IA > couches de neurones intermédiaires, effacez la valeur "5"
Si le programme se bloque et que vous n'arrivez pas à l'arrêter, ouvrez un autre terminal et tapez :pkill python
Vous êtes prêt pour démarrer l'activité Course de Robots !! Les instructions vous seront données à l'oral.Actividades: 0 - Mémorisez le numéro de votre robot et le PC que vous utilisez : si possible à la prochaine séance il faudra utiliser le même robot avec le même PC
-
Aujourd'hui nous allons prendre le contrôle du robot virtuel en le programmant avec Python ! Objectif : lui faire faire un petit numéro à l'intérieur de son arène rectangulaire !
Au passage nous découvrirons également quelques commandes linux.
1. Testez quelques commandes linux
- Ouvrir un terminal
- Voir le contenu de votre dossier :
ls
- Voir tous les détails de ce contenu :
ls -l
, (-l pour "list") - Voir également les fichiers cachés :
ls -a
, (-a pour "all"), ouls -al
- Voir où se trouve votre dossier dans l'arborescence des fichiers :
pwd
- Voir le contenu d'autres dossiers :
ls Bureau
,ls -al Documents
, etc. - Remarquez que vous n'êtes pas obligé de retaper tout à chaque fois : 1) vous pouvez taper sur la flèche du haut du clavier pour afficher (puis modifier) vos précédentes commandes ; 2) quand vous tapez une commande, vous pouvez à tout moment taper sur la touche tabulation qui essaiera de faire une "complétion automatique", c'est à dire deviner la suite de ce que vous voulez taper
- Utiliser
..
pour faire référence au dossier parent :ls ..
est équivalent àls /home/tp-home007
- Voir les dossiers de la racine :
ls /
- Changer de dossier, par exemple :
cd Documents
- Vérifiez que vous avez effectivement changé de dossier :
pwd
- Voir où se trouve le programme "python" :
which python
- Voir tous les fichiers qui se trouvent dans le même dossier :
ls /usr/bin
- Voir la version de python :
python --version
, ou bienpython -V
- En fait nous n'allons pas utiliser ce python version 2, mais un python version 3 :
python3 -V
- Voir où se trouve ce fichier "python3" :
which python3
2. Démarrer Python
python3
, l'invite de commande python >>> apparaît, désormais vous pouvez taper des commandes Python.
- Essayez la même commande que tout à l'heure
ls
: un message d'erreur apparaît !ls
est une commande linux, mais pas une commande Python ! - Affichez votre premier message dans Python :
print("Hello World!")
- Vous pouvez utiliser Python comme une calculatrice, par exemple :
1+1
- Maintenant nous allons utiliser Python pour commander le robot AlphAI ! (ou plutôt, aujourd'hui, son avatar simulé). Ouvrez un autre terminal et lancez le logiciel AlphAI :
~tdeneux/alphai
, le logiciel se lance, le petit robot simulé apparaît en bas à droite. - Retourner dans le terminal Python, il vous faut d'abord importer la librairies des fonctions permettant de commander le robot :
import alphai
- Si la commande
import alphai
ne fonctionne pas, quitter python avec la commandeexit()
puis entrer dans le terminal la commandepip3 install alphai-api
, puis relancer python. - Faire tourner le robot sur lui-même pendant 5 secondes :
alphai.motor(-20,20,5)
- Devinez par vous même comment il faut utiliser la fonction
alphai.motor
pour diriger le robot - Remarquez que le troisième argument est facultatif : que se passe-t-il lorsqu'on ne le met pas ? (on peut aussi mettre la valeur
None
, ce qui a le même effet) - Bravo ! Mais pour aller plus loins avec le robot, il va falloir apprendre un peu plus Python maintenant :)
3. Apprendre à apprendre
- Cherchez la documentation officielle de Python sur Google
- Choisissez la langue française si vous le voulez et sélectionnez "Tutoriel"
- Il y a beaucoup de texte pour commencer, il peut être utile de tout lire, mais aujourd'hui nous n'allons "ne lire que ce qui est vraiment important" -> ne passez que 5 minutes à lire en diagonale les parties 1 (Mise en bouche) et 2 (Mode d'emploi de l'interpréteur)
- Lisez dans le détail la partie 3 (Introduction formelle à Python), et à chaque fois qu'il y a des exemples, testez-les vous-mêmes dans le terminal Python !
- Vous n'avez pas besoin de tout taper, notez bien que dans chaque fenêtre jaune vous pouvez cliquer les chevrons >>> en haut à droite pour n'afficher que la partie que vous voudrez copier-coller
- Vous n'êtes pas forcément obligés de tester TOUS les exemples, mais l'important est que vous compreniez tout. Faites appel à l'enseignant si vous avez un problème de compréhension.
- les nombres
- les chaînes de caractères
- les listes
- tout à la fin, la boucle infinie "while"
4. Tourner en rond
Pour tester ces nouvelles connaissances, écrivez un code basé sur la boucle while pour faire faire au robot simulé des cercles de plus en plus rapidement.5. Autres instructions de contrôle de flux
- Poursuivez la lecture de la documentation Python et apprenez les instructions : if, for, range, break, continue, else, pass (arrêtez-vous après la section 4.5)
- Nous allons utiliser maintenant les capteurs du robot pour prendre des décisions en fonction de ce qu'il perçoit. Commençons par la commande
alphai.get_blockade()
qui indique si le robot est bloqué à cause d'un mur : vérifiez qu'elle renvoieFalse
lorsque le robot n'est pas bloqué, etTrue
lorsqu'il est bloqué par un mur. - En utilisant les instructions while, if, else, alphai.get_blockade et alphai.motor, écrivez un code Python pour que le robot aille tout droit lorsqu'il n'est pas bloqué, et se retourne lorsqu'il est bloqué par un mur.
6. Les scripts
Les codes Python que nous écrivons sont de plus en plus longs, et les écrire dans la console Python devient de moins en moins pratique. Nous allons donc utiliser plutôt des scripts dorénavant.- Quittez la console Python avec
exit
()
, vous retournez dans terminal linux, ne le fermez pas - Ouvrez votre éditeur de texte préféré et créez un nouveau fichier Python (il doit se terminer par l'extension .py, par exemple
tp2.py
) - Ecrivez dans le fichier la ligne
print("Hello World!")
- Dans le terminal allez dans le dossier où vous avez créé ce fichier en utilisant la commande
cd
, et exécutez le ainsi :python3 tp2.py
, et: vérifiez que Hello World! s'affiche - Ecrivez maintenant puis exécutez le code suivant :
import alphai
alphai.motor(-20,20,2)
alphai.motor(30,30,2)
- Comme vous pouvez le constater les 3 commandes ont été exécutées à la suite l'une de l'autre
7. Les fonctions
- Lisez la suite du tutoriel sur les fonctions
- Créez des fonctions pour faire avancer et tourner le robot qui soient plus simple d'usage que alphai.motor
- Inventez une nouvelle chorégraphie pour le petit robot simulé ! Vous pourrez également utiliser
alphai.set_distance(True)
pour activer le capteur ultrason puisalphai.get_distance()
pour mesurer la distance entre le robot et le premier mur.
8. Utiliser l'éditeur geany
Vous avez vu qu'on peut utiliser Python en entrant des commandes dans la console, ou en exécutant un script. Nous allons désormais utiliser un éditeur léger, geany, pour écrire et exécuter les scripts. Il demande quelques étapes de configuration la première fois :- Créer le dossier de configuration :
mkdir -p ~/.config/geany/filedefs/
- Y copier une configuration standard :
cp /public/kn/filetypes.python ~/.config/geany/filedefs/
- Lancez geany (vous pouvez le faire depuis le menu Démarrer) et ouvrez le fichier Python que vous aviez créé précédemment
- Vous pouvez vérifier qu'il n'a pas d'erreur de syntaxe avec F8 (ou menu Construire > Compile)
- Vous pouvez l'exécuter dans un terminal avec F5 (ou Construire > Execute) (n'oubliez pas d'avoir lancé ~tdeneux/alphai au préalable)
9. Contrôler le vrai robot
A présent, vous avez tous les éléments en main pour prendre le contrôle du vrai robot avec Python ! Connectez vous avez le robot en Bluetooth dans l'interface graphique AlphAI comme vu au premier cours, puis lancez votre script : désormais il contrôle le vrai robot !10. Suivre la piste
Ecrivez votre code Python pour que le robot suive la piste à l'intérieur de l'arène. Vous aurez besoin de nouvelles fonctions de la librairie alphai, notamment pour utiliser les 5 capteurs infra-rouges qui regardent le sol. Vous trouverez la documentation de cette librairie dans le document joint. Notez différentes manières d'importer la librairie ; vous pouvez écrire :import alphai
alphai.motor(-20,20,2)
ouimport alphai as ai
ai.motor(-20,20,2)
ou encore
from alphai import motor
motor(-20,20,2)
ou encore
from alphai import *motor(-20,20,2)
Une fois que le robot sait suivre la piste, ajoutez les fonctionnalités suivante :- Il s'arrête et attend s'il y a quelqu'un devant lui sur la piste
- Si on le déplace en-dehors de la piste, il sait la chercher et se remettre dessus !
Conseils (au cours de la séance nous allons en ajouter, revener voir régulièrement si vous voulez) :- Utilisez les fonctions pour écrire tout d'abord des comportements simples, par exemple une fonction pour avancer d'une certaine distance, pour tourner d'un certain angle, etc.
Actividades: 1 -
Retrouvez le sujet du TP au lien https://drive.google.com/file/d/1-OX3f98hZkN8hBjW7VcwG7t_GZJR-E6q
Pour reprendre le TP en cours de route, lancez ~tdeneux/alphai, chargez la configuration prédéfinie KNN, changez l'algorithme (dans l'onglet IA) en choisissant "code élève", choisissez "Ouvrir existant" pour réouvrir le fichier Python que vous aviez commencé à éditer précédemment.
Si vous terminez le TP avant la fin des 2 heures, nous allons essayer de faire fonctionner votre code avec les vrais robots ! Etant donné les problèmes rencontrés les semaines précédentes, nous allons essayer sous Windows. J'ajouterai les instructions ci-dessous dans un moment.
Concernant l'usage des robots, vous veillerez bien en fin de séance :
- à rapporter le matériel (robots, clés Bluetooth, arènes démontées)
- à remplacer les batteries de votre robot par des batteries chargées
Actividades: 0 -
Installer le logiciel AlphAI sous Windows
Formez 6 à 8 groupes en prenant un robot par groupe.Téléchargez et installez le logiciel au lien https://learningrobots.ai/software/AlphAI-1.7.1-beta2%20setup.exe.Répondez oui pour le téléchargement de la mise à jour.Utilisez la clé d'activation de licence qui vous a été fournie et sélectionner validité 1 an !Réseaux de neurones, Apprentissage par renforcement
Une grande partie de ce TP ressemblera plus à un cours, mais vous serez invités à refaire sur votre ordinateur, et avec votre robot, les manipulations présentées au tableau.Vous pourrez récupérer la présentation à l'adresse https://docs.google.com/presentation/d/118t9rkxD8wdwgGmL6Z_pz8MXZ3Qo3xlM.Nous allons voir :- Manipulations dans l'interface (capteurs, actions, paramètres de l'IA, visualisation)
- Configurations "sans IA"
- Configuration similaire à celle de KNN mais avec réseau de neurones, étude de ce réseau de neurones (comparer sans ou avec couches de neurones intermédiaires, etc.)
- Exemple simple d'apprentissage par renforcement et explications
- Exemple plus complexe (avec caméra) d'apprentissage par renforcement
Passer de l'apprentissage supervisé à l'apprentissage par renforcement !
Faire apprendre au robot simulé à faire des tours de circuit en apprentissage supervisé, puis poursuivre l'apprentissage en apprentissage par renforcement.C'est une expérimentation, nous allons voir si cela marchera !!Actividades: 0 -
Possibilité de passer l'Evaluation en distanciel
Étant donné la grève des transports ceux qui auront vraiment des difficultés pour venir pourront faire l'évaluation en distanciel.Pour cela il vous faut avant 13h30 :
- Installer le logiciel AlphAI sur votre ordinateur :
* Windows : learningrobots.ai/software/AlphAI-1.7.2%20setup.exe
* Mac : AlphAI-1.7.1-beta18_install.sh ci-joint
* linux (plus difficile) : il faut récupérer learningrobots.ai/software/AlphAI-1.7.3.zip, installer un Python 3.9 et récupérer les dépendances avec pip install -r requirements.txt comme expliqué en page 4 ici).
- Vous assurer que le logiciel fonctionne ; vous aurez besoin
d'entrer le numéro de license suivant : 158-530-401 ou 532-223-272
- Vous assurer que vous avez un éditeur pour éditer des fichiers Python (le bloc-note Windows par exemple suffit, mais un vrai éditeur permettra d'avoir la coloration syntaxique)
- M'envoyer un e-mail (thomas.deneux@cnrs.fr) pour que je vous envoie le sujet demain à 13h30 ; vous déposerez le résultat de votre travail sur un lien drive à 15h30, comme expliqué dans le sujet
Je vous encourage tout de même à faire le maximum pour venir sur place, ne serait-ce si je donne quelques compléments d'information sur le sujet.
Consignes évaluation
L'évaluation porte sur de la manipulation dans le logiciel AlphAI avec le robot simulé, et de la programmation Python. A part la dernière question qui va plus loin, elle ne se veut pas difficile.
Vous devrez créer un dossier dans lequel vous créerez un sous-dossier par question, et sauverez dans ces sous-dossiers un certain nombre de fichiers.
A la fin de la séance, compressez le dossier global et téléversez-le ici dans la section "Rendu Evaluation" ci-dessous.
Actividades: 5 - Installer le logiciel AlphAI sur votre ordinateur :
-
Merci de démarrer vos ordinateurs sous Linux !
Pour lancer AlphAI, exécuter la commande suivante dans une console : ~tdeneux/alphai
Malheureusement, le bluetooth des robots ne fonctionne pas, nous allons donc utiliser les robots simulés aujourd'hui. Il faudra adapter les instructions du TP en conséquence : prévoir des actions avancer et reculer afin de contrôler la position du robot simulé. Cela va ajouter dans le réseau des connexions qu'il faudra ignorer.
Lien vers le sujet : https://learningrobots.ai/activities/fr/S5_detection_intrus/detection_intrus.html
Actividades: 0 -
Ce TP est à la fois un cours et une expérimentation pratique : je vais faire la programmation devant vous en l'expliquant, et vous la répéterez sur votre propre ordinateur en même temps !Nous travaillerons sur linux. Vous pouvez lancer le programme comme habituellement (~tdeneux/alphai). REPONDRE NON A LA DEMANDE DE MISE A JOURActividades: 1
-
Merci de démarrer les ordinateurs sous Linux.
Le TP d'aujourd'hui peut être réalisé avec un vrai robot ou un robot simulé.
Le sujet du TP se trouve à l'adresse : https://learningrobots.ai/activities/fr/R2_apprentissage_renforcement/apprentissage_renforcement.html
Le corrigé du TP est disponible en cliquant ici.
Actividades: 0 -
Diapositives présentées lors de la première séance (introduction) et de l'avant-dernière séance (résumé des points à retenir).
Actividades: 1 -
Veuillez trouver le sujet ci-joint. Vous m'enverrez vos rendus par e-mail.
Au cours de cette évaluation vous programmerez l'algorithme du Q-learning que nous avons étudié lors de la séance précédente dans l'interface graphique du logiciel AlphAI.
Actividades: 1