Vous êtes sur la page 1sur 116

Chapitre 1: Introduction à artificielle

l’intelligence

Page 1 sur 116


Intelligence artificielle

L'intelligence artificielle (IA) est un « ensemble de théories et


de techniques mises en œuvre en vue de réaliser des
machines capables de simuler l'intelligence humaine ».
Elle englobe donc un ensemble de concepts et de
technologies, plus qu'une discipline autonome constituée. Des
instances, telle la CNIL, notant le peu de précision de la
définition de l'IA, l'ont présentée comme « le grand mythe de
notre temps ».
Souvent classée dans le groupe des mathématiques et
des sciences cognitives, elle fait appel à la neurobiologie
computationnelle (particulièrement aux réseaux neuronaux)
et à la logique mathématique (partie des mathématiques et de
la philosophie). Elle utilise des méthodes de résolution de
problèmes à forte complexité logique ou algorithmique. Par
extension, elle comprend, dans le langage courant, les
dispositifs imitant ou remplaçant l'homme dans certaines
mises en œuvre de ses fonctions cognitives.
Ses finalités et enjeux ainsi que son développement suscitent,
depuis l'apparition du concept, de nombreuses
interprétations, fantasmes ou inquiétudes s'exprimant tant
dans les récits ou films de science-fiction que dans les essais
philosophiques. Si des outils relevant d'intelligences
artificielles spécialisées ont fait leurs preuves, la réalité
semble encore tenir l'intelligence artificielle généraliste loin
des performances du vivant ; ainsi, l'IA reste encore bien
inférieure au chat dans toutes ses aptitudes naturelles.

Définition
Le terme « intelligence artificielle », créé par John McCarthy,
Page 2 sur 116
est souvent abrégé par le sigle « IA » (ou « AI » en anglais,
pour Artificial Intelligence). Il est défini par l’un de ses
créateurs, Marvin Lee Minsky, comme « la construction de
programmes informatiques qui s’adonnent à des tâches qui
sont, pour l’instant, accomplies de façon plus satisfaisante
par des êtres humains car elles demandent des processus
mentaux de haut niveau tels que : l’apprentissage perceptuel,
l’organisation de la mémoire et le raisonnement critique ». On
y trouve donc le côté « artificiel » atteint par l'usage
des ordinateurs ou de processus électroniques élaborés et le
côté « intelligence » associé à son but d'imiter
le comportement. Cette imitation peut se faire dans le
raisonnement, par exemple dans les jeux ou la pratique
des mathématiques, dans la compréhension des langues
naturelles, dans la perception : visuelle (interprétation des
images et des scènes), auditive (compréhension du langage
parlé) ou par d'autres capteurs, dans la commande
d'un robot dans un milieu inconnu ou hostile.
Même si elles respectent globalement la définition de Minsky,
certaines définitions de l'IA varient sur deux points
fondamentaux :

 les définitions qui lient l'IA à un aspect humain de


l'intelligence, et celles qui la lient à un modèle idéal
d'intelligence, non forcément humaine, nommée rationalité ;
 les définitions qui insistent sur le fait que l'IA a pour but
d'avoir toutes les apparences de l'intelligence (humaine ou
rationnelle), et celles qui insistent sur le fait que
le fonctionnement interne du système d'IA doit ressembler
également à celui de l'être humain et être au moins
aussi rationnel.

L’intelligence artificielle est un processus évolutionniste qui


permet à des machines de simuler une forme d’intelligence
Page 3 sur 116
grâce à l’assemblage de théories.

L'histoire de l'intelligence artificielle

L’histoire de l’intelligence artificielle débute en 1943, avec la


publication de l’article « A Logical Calculus of Ideas Immanent
in Nervous Activity. » par Warren McCullough et Walter Pitts.
Dans ce document, les scientifiques présentent le premier
modèle mathématique pour la création d’un réseau de
neurones.

Le premier ordinateur à réseau de neurones, Snarc, sera


créé en 1950 par deux étudiants de Harvard : Marvin Minsky et
Dean Edmonds. La même année, Alan Turing publie le Turing
Test qui sert encore aujourd’hui à évaluer les IA.

En 1952, Arthur Samuel crée un logiciel capable d’apprendre à


jouer aux échecs de manière autonome. Le terme
d’intelligence artificielle, quant à lui, sera prononcé pour la
première fois durant la conférence « Dartmouth Summer
Research Project on Artificial Intelligence. » de John
McCarthy en 1956.

Lors de cet événement, les chercheurs présentent les


objectifs et la vision de l’IA. Beaucoup considèrent cette
conférence comme la véritable naissance de l’intelligence
artificielle telle qu’elle est connue aujourd’hui.

En 1959, Arthur Samuel invente le terme de Machine


Learning en travaillant chez IBM. De leur côté, John McCarthy
et Marvin Minsky fondent le MIT Artificial Intelligence Project.
En 1963, John McCarthy crée aussi le » AI Lab » de
l’université de Stanford.

Page 4 sur 116


Au cours des années suivantes, le doute jettera un froid sur
le domaine de l’IA. En 1966, le rapport américain
ALPAC souligne le manque de progrès dans la recherche en
traduction automatique visant à traduire le langage russe
instantanément dans un contexte de guerre froide. De
nombreux projets financés par le gouvernement des États-
Unis seront annulés.

De même, en 1973, le gouvernement britannique publie son


rapport » Lighthill » mettant en lumière les déceptions de la
recherche en IA. Là encore, des coupes budgétaires viennent
entailler les projets de recherche. Cette période de doute
s’étendra jusqu’en 1980, et est aujourd’hui qualifiée
de » premier hiver de l’IA «.

Cet hiver prendra fin avec la création de R1 (XCON) par Digital


Equipment Corporations. Ce système expert commercial est
conçu pour configurer des ordres pour nouveaux systèmes
informatiques, et provoque un véritable boom des
investissements qui se poursuivra pendant plus d’une
décennie.

Le Japon et les États-Unis investissent massivement dans la


recherche en IA. Les entreprises dépensent plus d’un milliard
de dollars par an dans les systèmes experts et l’industrie se
développe.

Malheureusement, le marché des machines » Lisp »


s’effondre en 1987 face à l’apparition d’alternatives moins
onéreuses. C’est le » deuxième hiver de l’IA «. Les
entreprises perdent leur intérêt pour les systèmes experts.
Les gouvernements américains et japonais abandonnent
leurs projets de recherche, et des milliards de dollars ont été
dépensés pour rien.

Page 5 sur 116


Dix ans plus tard, en 1997, l’histoire de l’IA est marquée par un
événement majeur. L’IA Deep Blue d’IBM triomphe du
champion du monde d’échecs Gary Kasparov. Pour la
première fois, l’Homme est vaincu par la machine.

Dix ans plus tard, les avancées technologiques permettent un


renouveau de l’intelligence artificielle. En 2008, Google
réalise de formidables progrès dans le domaine de la
reconnaissance de discours et lance cette fonctionnalité dans
ses applications pour smartphones.

En 2012, Andrew Ng nourrit un réseau de neurones à l’aide


de 10 millions de vidéos YouTube en guise d’ensemble de
données d’entraînement. Grâce au Deep Learning, ce réseau
de neurones apprend à reconnaître un chat sans qu’on lui ait
appris ce qu’est un chat. C’est le début d’une ère nouvelle
pour le Deep Learning.

Nouvelle victoire de l’IA sur l’Homme en 2016, avec la victoire


du système AlphaGo de Google DeepMind sur Lee Sedol, le
champion de jeu de Go. L’intelligence artificielle conquiert
aussi le domaine du jeu vidéo, avec notamment DeepMind
AlphaStar sur Starcraft ou OpenAI Five sur Dota 2.

Le Deep Learning et le Machine Learning sont désormais


utilisés par les entreprises de toutes les industries, pour une
multitude d’applications. L’IA ne cesse de progresser et
surprendre par ses performances. Le rêve d’une intelligence
artificielle générale se rapproche de plus en plus de la
réalité…

L'intelligence artificielle (IA) se réveille et frappe à votre


porte. Engourdi pendant près 60 ans plus tard dans une
période de moindres recherches et de faibles financements
alloués aux innovations, l'hiver de l'IA est enfin terminé. 83 %
Page 6 sur 116
des entreprises interrogées considèrent l'intelligence
artificielle comme une priorité stratégique et 75 % déclarent
que l'intelligence artificielle est la clé pour identifier de
nouveaux clients et de nouvelles entreprises. L'intelligence
artificielle n'est plus un produit de science-fiction. De la
détection des fraudes aux méthodes d'embauche efficaces, en
passant par la prévision de la maintenance des machines,
l'intelligence artificielle est aujourd'hui devenue un facteur
d'innovation dans le monde du travail et ses applications
quotidiennes.
Vous en voulez en savoir davantage ? Dans cet article, nous
aborderons l'évolution de l'IA, nous vous expliquerons son
fonctionnement et nous vous aiderons à plaider en sa faveur
dans votre entreprise.

Les dangers de l'intelligence artificielle

L’intelligence artificielle offre de nombreuses promesses


pour l’humanité… mais elle pourrait aussi représenter une
menace plus dangereuse que la bombe nucléaire.

De par sa capacité à apprendre et à évoluer de manière


autonome, l’IA pourrait un jour surpasser l’intelligence
humaine. Elle pourrait alors décider de se retourner contre
ses créateurs.
Ce sombre présage peut sembler tiré tout droit d’un film de
science-fiction, mais il s’agit pourtant d’une possibilité bien
réelle. D’éminents experts ont déjà tiré la sonnette
d’alarme concernant l’intelligence artificielle, à la manière de
Stephen Hawking, Elon Musk ou encore Bill Gates.

Selon eux, l’IA représente un risque imminent et inévitable


pour les années à venir. C’est la raison pour laquelle ils
Page 7 sur 116
appellent les gouvernements à règlementer ce domaine afin
qu’il se développe de façon éthique et sécurisée. Plus d’une
centaine d’experts ont aussi appelé les Nations Unies
à bannir les » robots tueurs « et autres armes militaires
autonomes.

Toutefois, d’autres spécialistes estiment que le futur de


l’intelligence artificielle dépend uniquement de la façon dont
les humains choisissent de l’utiliser. Même une IA en
apparence inoffensive pourrait être détournée et usée de
façon malveillante. On peut déjà le constater avec l’essor
des » DeepFakes « : de fausses vidéos créées grâce au Deep
Learning pour mettre en scène une personne dans une
situation compromettante.

L’intelligence artificielle va continuer à se développer à vive


allure au fil des prochaines années. Il incombe à l’humanité
de choisir quelle direction prendra ce développement…

Evolution de l’IA
L’IA ou intelligence artificielle est un secteur phare du
domaine de l’IT. Avec un taux de croissance de 15,2 % en 2021,
les solutions et plateformes d’intelligence artificielle, de deep
learning et de machine learning ont profondément modifié
l’organisation du travail et les relations hommes-machines.
Mais, l’IA impacte aussi de nombreux autres domaines :
commerciaux, marketing, scientifique, industriel, etc. Selon
Sundar Pichai, PDG de Google Inc, l’impact de l’intelligence
artificielle sera même plus grand que celui du feu et de
l’électricité sur l’humanité. Cela peut sembler un peu exagéré,
mais les technologies de l’IA bouleversent effectivement les
environnements technologiques, économiques et sociétaux.
Et avec un nouveau taux de croissance prévu de 18,8 % pour
2022, l’intelligence artificielle va continuer à évoluer et ces
changements vont se multiplier.
Page 8 sur 116
Une expansion des modèles d’IA

Les modèles de deep learning, d’intelligence artificielle et


d’apprentissage automatique s’appuient sur la collecte et
l’analyse d’un grand volume de données. En 2022, ces
modèles devraient continuer à s’étendre et reposer sur des
ensembles de données encore plus importants afin de
prendre des décisions toujours plus précises.
Cette expansion est liée en grande partie à l’évolution
continue des GPT pour Generative Pre-Trained qui sont des
modèles de langage non supervisés basés sur les modèles
de transformateurs (transformer).

Ces transformateurs étant eux même des modèles de deep


learning utilisés principalement comme technique en NLP
(Natural Language Processing), la technologie qui permet aux
machines de “comprendre” le langage humain.
Dans ce domaine, le dernier modèle, actuellement en version
bêta et qui devrait être disponible en 2022 est le GPT-3. 100
fois plus grand que son prédécesseur (GPT-2). Avec
175 milliards de paramètres, le GPT-3 atteint des scores
élevés dans différents benchmark de NLP. Il serait
notamment capable d’écrire et de rédiger des articles
considérés comme impossibles à distinguer de ceux écrits
par des humains.

Des liens renforcés entre IA et cybercriminalité

La cybercriminalité a connu une augmentation


exponentielle en 2021 avec plus de 330 000 cyberattaques
supplémentaires. Ces chiffres risquent encore de croître en
2022. L’IA joue un rôle majeur dans cette augmentation
Page 9 sur 116
puisque les objets connectés et les machines intelligentes se
multiplient dans notre quotidien, augmentant par la même
occasion les surfaces d’attaques, les failles et les
vulnérabilités potentielles. La logique est simple : plus le
nombre d’appareils ajoutés à un réseau augmente, plus le
nombre de points de défaillances que les cybers attaquants
peuvent exploiter pour accéder aux données augmente
également.

L’intelligence artificielle peut aussi être exploitée par les


cyberattaquants pour concevoir des attaques plus
sophistiquées comme :

 Le phishing automatique qui repose sur des processus


d’automatisation et de deep learning pour augmenter
l’efficacité du phishing en personnalisant les messages ;
 Le piratage d’équipements pilotés par l’IA comme les
voitures autonomes, les drones militaires, etc.
 La rédaction de faux articles et rumeurs par les
algorithmes d’IA.
 L’intelligence artificielle peut également être exploitée
pour construire de fausses preuves ;
 La corruption d’importants volumes données en
"empoisonnant “ les modèles d’IA ;
 Les cyberattaques basées sur l’apprentissage qui
consistent notamment à utiliser massivement l’IA pour
sonder les faiblesses des systèmes avant de lancer
plusieurs attaques simultanées.

Cependant, les évolutions de l’IA pour 2022 montrent qu’elle


jouera aussi un rôle important dans la prévention de
ces cybermenaces. L’IA peut notamment identifier des
modèles, analyser le trafic réseau et mettre en évidence les
activités suspectes grâce à des algorithmes intelligents. L’IA
Page 10 sur 116
va également continuer à faciliter la priorisation des alertes
et la visualisation rapide du niveau d’urgence des menaces.

Enfin, dans la sécurité, comme dans beaucoup d’autres


domaines, l’innovation technologique passe par l’intelligence
artificielle. Les mots de passe seront de plus en plus
remplacés par la biométrie et des techniques
d’authentification basées sur les données comportementales.

La machine learning deviendra une méthode proactive pour


créer des protocoles de cybersécurité toujours plus robustes.

Une transformation du marché du travail avec les évolutions


de l’IA

L’IA est souvent associée à la crainte de voir des machines ou


robots finir par remplacer la main-d’œuvre humaine.
Cependant, les chiffres de 2021 montrent que c’est plutôt
l’inverse. Les entreprises et organisations utilisent des
technologies d’IA pour analyser, interpréter les données et en
extraire des informations. L’utilisation de ces technologies
augmente considérablement leur besoin de main-d’œuvre
humaine pour les mettre en place, les maintenir et les
sécuriser.

L’IA a ainsi investi de nombreux services de l’entreprise,


aussi bien l’ingénierie, les chaînes de production, que la
sécurité ou le marketing. Mais, pour chaque secteur, elle a dû
s’intégrer à des organisations et équipes humaines pour
faciliter leur travail et augmenter leur productivité.
Selon un premier rapport The “Futur of Jobs Report” paru en
2018, l’IA devrait également créer plus de 58 millions
d’emplois d’ici 2022. Cependant, tous les métiers ne seraient
pas égaux face à cette évolution. Certains postes dont le
Page 11 sur 116
travail peut être facilement automatisé risquent de
disparaître comme certaines tâches de secrétariat, des outils
de gestion des informations, des opérateurs de saisie, etc.
Toutefois, d’autres vont connaître une demande croissante
comme les data scientists, les informaticiens spécialisés
dans l’intelligence artificielle, etc.

Pour accompagner cette transformation du marché du travail


liée aux évolutions de l’IA, la France a signé une convention
pour 2022 prévoyant la création d’un laboratoire dédié à
l’intelligence artificielle : LaborIA. Cette initiative s’inscrit
dans le cadre du second sommet du PMIA (Partenariat
Mondial pour l’IA) qui soutient la recherche de pointe et les
activités appliquées sur les priorités liées à l’intelligence
artificielle.

Les objectifs du LaborIA visent à déterminer les enjeux et


l’utilisation de l’IA par les entreprises et les administrations.
Son rôle est de déployer des expérimentations concrètes sur
les lieux de travail pour détecter les difficultés et créer des
débats sur l’usage des technologies d’IA en environnement
professionnel.

Et vous, en tant que professionnels de l’IT, avez-vous détecté


de nouvelles tendances de l’intelligence artificielle pour 2022?
Comment les évolutions de l’IA impactent-elle votre
profession ? N’hésitez pas à nous partager vos retours
d’expérience sur le forum IT !

Différents types d’intelligence artificielle

Cette science, ayant pour but de faire accomplir des tâches


de l’homme à une machine, regroupe deux catégories :

Page 12 sur 116


L’IA faible

Utilisée dans le but de réaliser des tâches simples, cette


forme d’intelligence fonctionne par le biais d’algorithmes. Ces
derniers, programmés par des humains, permettent à un
robot de simuler une intelligence tout en étant assisté.

À la différence de la nature de l’intelligence opposée, l’IA dite


« faible » définit un programme qui simule une intelligence
dans le but d’exécuter une tâche précise. Autrement dit,
l’intelligence artificielle faible accomplit une tâche prédéfinie.
Au moment de sa réception, la machine analyse la tâche dans
le but de résoudre le problème. Ce dernier sera alors
retranscrit en algorithmes.

L’IA forte

Dans l’optique de ressentir de réels sentiments, l’IA dite


« forte » consiste à faire comprendre à une machine ce qui l’a
mené à effectuer des actions. De cette manière, le système
reproduit de façon identique le fonctionnement du système
cognitif humain.

Ainsi, bien que privée de conscience, qui reste quant à elle


propre aux organismes vivants, la machine acquiert de
l’expérience lui permettant ainsi de modifier son propre
fonctionnement. Autrement dit, un apprentissage découle de
la réception issue de données de base et entraînent des
réactions initialement non-programmées.

Page 13 sur 116


Différents domaines d’application de l’intelligence
artificielle

En raison de son large champ d’affectation, l’intelligence


artificielle s’applique à de nombreux domaines d’application.

Le divertissement

Adoptés par la quasi-totalité de la population mondiale, les


smartphones (pour « téléphones intelligents ») représentent
la forme la plus courante d’IA. De plus en plus nombreux et
puissants, ces outils dotés de programmes complexes,
manifestent une certaine forme d’autonomie. L’utilisateur est
donc confronté à une IA « faible » au cours de l’utilisation de
son terminal.

Exemples : la fonctionnalité « Siri » sous IOS, la traduction


instantanée, la reconnaissance faciale, la fonction
« personnes et lieux » disponible dans l’application « Photos »
sous IOS, etc.
En perpétuelle évolution, l’IA occupe à ce jour une place
importante au sein de l’univers des jeux vidéo. Utile pour la
mise en place de l’amélioration graphique, l’IA permet aussi
le développement du pilotage de personnages factices et la
gestion de toute sorte d’interactions.

La médecine

Principalement importée de façon robotique, l’IA augmente la


croissance de nombreux domaines liés à la technologie. La
Page 14 sur 116
médecine en est un des exemples les plus concrets depuis
1980, date qui a signé l’apparition des premiers robots de
guidage dans les blocs opératoires. Ces derniers permettent
grâce à des capteurs de réaliser des mouvements
miniaturisés dotés d’une grande précision.

Le militaire

Confrontés à des missions à risques, principalement sur les


terres afghanes et irakiennes, les États-Unis se positionnent
comme précurseurs de l’IA dans le secteur militaire. Leur
production propose des robots autonomes ou
télécommandés, pourvus d’une IA, permettant ainsi de
remplacer l’Homme en position de combat.

À notre époque, l’IA fait l’objet d’un grand nombre de


développements. Ces derniers sont applicables à tous types
de domaines comme le deep learning, l’automobile,
l’aéronautique, la cuisine, etc.

Aujourd'hui, l'intelligence artificielle, ou intelligence machine,


et les machines dotées d'IA peuvent accomplir les actes
suivants :

1. Reconnaissance vocale
2. Apprentissage
3. Planification
4. Résolution de problèmes
5. Raisonnement
6. Perception
7. Possibilité de manipuler et de déplacer des objets

Les trois types d'intelligence artificielle : ANI, AGI et ASI


Page 15 sur 116
I. Il existe trois types d'IA : l'intelligence artificielle étroite
(ANI), l'intelligence artificielle générale (AGI) et la
superintelligence artificielle (ASI).
II. L'intelligence artificielle étroite : l'ANI est classée dans
la catégorie d'intelligence artificielle faible car elle n'est
spécialisée que dans une gamme étroite de paramètres
ou de situations, comme la reconnaissance vocale ou les
voitures sans conducteur, par exemple.
III. L'intelligence artificielle générale : l'AGI est considérée
comme une intelligence artificielle forte, car elle
travaille à un niveau supérieur, qui correspond à
l'intelligence humaine.
IV. La superintelligence artificielle : bien que ce type d'IA ne
soit actuellement pas développé, l'ASI signifie qu'une
machine dispose d'une superintelligence ou qu'elle est
plus intelligente qu'un humain.

L'ANI est le type d'IA le plus simple à identifier, déjà utilisé


par la plupart des individus. Voici quelques exemples d'ANI
que vous reconnaîtrez certainement :

 Les voitures sans conducteur : les voitures sans


conducteur n'ont ni volant ni pédales. Elles fonctionnent
avec des cartes en 3D et sont contrôlées par un
Chauffeur Google.

 Les appareils à commande vocale : de Siri à Alexa, la


plupart des consommateurs possèdent et utilisent
quotidiennement une interface ANI via des appareils
intelligents.

 Les filtres de messagerie : toutes les boîtes de


Page 16 sur 116
réception, sinon la plupart, offrent aux utilisateurs la
possibilité de trier des spams et de signaler des
messages spéciaux.

L'AGI va encore plus loin en matière d'intelligence artificielle,


nécessitant une machine pour effectuer des tâches
intellectuelles comparables à celles réalisées par des
humains. Cependant, pour qu'un robot puisse être classé
comme AGI, il doit passer quelques tests qui permettent de
vérifier son intelligence machine.

En particulier, le test de Turing vérifie la capacité d'une


machine à agir comme celle d'un humain. Si une machine
obtient un score de 70 % ou plus, elle est classée comme un
robot AGI. Une autre analyse de la compatibilité des AGI est le
test du café, qui demande à un robot de pénétrer dans un
environnement domestique, de trouver du café et d'apprendre
à le préparer. Un candidat AGI doit également réussir le test
du Robot College, qui implique que le robot s'inscrive à des
cours et les suive avec succès. Enfin, un robot peut passer un
entretien d'embauche, où il doit réussir des tests
professionnels, notamment des examens de conduite et
d'écriture.

Fonctionnement de l'IA

Maintenant que nous avons compris comment l'IA a évolué au


cours des 60 dernières années et que nous avons une idée de
ses principes fondamentaux, examinons de plus près le
fonctionnement de l'IA.

Deux techniques fondamentales permettent à l'IA d'être


effective efficacement : le machine learning (ML) et le deep
learning (DL). ML et DL créent l'environnement nécessaire au
Page 17 sur 116
fonctionnement de l'IA.

La machine learning est constituée d'outils et d'algorithmes


intégrés à un ordinateur qui « apprennent » ou utilisent des
données existantes pour produire des prédictions précises.
Le deep learning est une fonction automatisée de la machine
learning, qui permet à une machine de remarquer des
modèles et de classer les informations dans des catégories,
ce qui lui permet de « penser ».

Examinons de plus près certaines technologies d'IA et voyons


comment elles peuvent fonctionner pour votre entreprise.

Une plateforme de machine learning peut utiliser des


informations provenant de plusieurs sources de données
différentes, comme des outils de développement et de
formation, ainsi que d'autres algorithmes, pour prédire et
classer des informations.

Le deep learning est une technique de machine learning qui


utilise la reconnaissance et la classification de modèles pour
travailler avec de grands ensembles de données.

Les réseaux neuronaux sont une technique de machine


learning qui utilise des algorithmes statistiques s'inspirant du
comportement des neurones du cerveau humain.

L'informatique cognitive est un type d'informatique qui utilise


le raisonnement et une compréhension de haut niveau. Elle
n'est pas considérée comme de la machine learning, car elle
utilise une combinaison de plusieurs technologies d'IA pour
produire des résultats.

La vision par ordinateur permet aux ordinateurs d'agir et de


Page 18 sur 116
traiter comme l'œil humain. Elle analyse le contexte des
images et vidéos numériques afin de produire des
informations digitales ou symboliques pour la prise de
décisions.

La génération du langage naturel consiste simplement à


générer du texte à partir de données informatiques. Ce
processus est souvent utilisé pour le service client, les
rapports et les résumés en matière de veille économique.

Les unités de traitement graphique (GPU) font partie d'un


circuit électronique et accélèrent la création d'images sur un
dispositif d'affichage. Elles sont indispensables au bon
fonctionnement de l'IA.

L'IoT, ou Internet des objets, consiste en un réseau


d'appareils connectés qui génèrent et partagent des données,
comme les appareils électroménagers, les haut-parleurs
intelligents, les objets de type prêt-à-porter et les appareils
médicaux. L'IA dépend des données de ces appareils pour
générer du business intelligence.

Les algorithmes avancés sont des algorithmes complexes qui


sont constamment développés et combinés pour fournir un
traitement intelligent continu.

Les API, ou interfaces de programmation d'applications, sont


des technologies parfois utilisées pour accéder aux services
d'IA. De même, l'IA utilise des flux de données API pour aider
les entreprises à interpréter des données qui ne sont pas
toujours visibles.

Les applications d'IA dans la vie réelle


Page 19 sur 116
Il est probable qu'il y ait plus d'IA dans votre vie que vous ne
le pensez. Avez-vous déjà interagi avec un cyber-assistant
sur votre site d'achat préféré ? Demandé de l'aide à Facebook
pour créer une publicité pour votre entreprise ? Fait appel à
Alexa pour faire jouer votre playlist préférée ? Dit « bonjour
Google » pour retrouver votre chemin vers votre domicile ?
Ce ne sont là que quelques-unes des façons dont les
entreprises utilisent l'IA pour simplifier votre quotidien et
fournir toujours plus d'informations à leurs clients. En voici
quelques autres :

 Amazon propose une IA transactionnelle dont les


algorithmes ne cessent de se perfectionner.
Actuellement, elle est capable de prédire vos habitudes
d'achat et de fournir des informations sur les produits
avant même que vous soyez à la recherche d'un produit
spécifique.

 Le processus d'ADN musical de Pandora utilise plus de


400 caractéristiques musicales extraites de chansons
analysées manuellement par des musiciens
professionnels, pour recommander de nouvelles
chansons aux utilisateurs en fonction de leurs
préférences.

 N’est est un thermostat qui peut être contrôlé


vocalement par Alexa pour apprendre et activer vos
préférences de chauffage et de climatisation.

Qu'en est-il de l'IA basée dans le cloud ? Avec son évolutivité


et son accès aux ressources en temps réel, l'IA couplée à une
infrastructure cloud apparaît comme une option de premier
plan. Parmi les plateformes actuellement disponibles, citons
Microsoft Azure Machine Learning, Google Cloud Prediction
Page 20 sur 116
API, TensorFlow, Rainbird et Meya, pour n'en lister que
quelques-unes.

Les avantages de l'IA pour les entreprises

L'IA enrichit les capacités informatiques existantes en


accomplissant continuellement et de manière fiable des
tâches et des informations informatisées. L'IA peut vous aider
à améliorer vos résultats grâce à :

 Des processus et tâches automatisés


 Un nombre réduit de fautes et d'erreurs humaines
 Une augmentation de la productivité et de l'efficacité
opérationnelle
 Une amélioration des décisions commerciales grâce à
l'accès aux données en temps réel
 Une amélioration de l'apprentissage des données grâce
à un accès accru à de vastes pools de données
 Une amélioration du service grâce à une meilleure
connaissance du client
 La génération de leads de qualité

Si l'on se penche sur les spécificités de l'IA, voici cinq volets


susceptibles de profiter à votre entreprise :

La collecte et l'analyse de données : l'IA rend la collecte


de données et l'analyse abordables et intuitives, en temps
opportun, de sorte que vous puissiez automatiquement en
apprendre davantage sur vos clients, avec l'assurance de
profiter d'opportunités commerciales nouvelles ou
renouvelées.
Page 21 sur 116
Un recrutement plus intelligent : les algorithmes de
machine learning peuvent déterminer les meilleures
pratiques pour vos besoins spécifiques en recrutement et
créer une liste restreinte des meilleurs candidats potentiels.

L'efficacité du back-office : l'IA est capable de prendre en


charge des tâches telles que la comptabilité, la
programmation et d'autres fonctions liées aux données
quotidiennes en un clin d'œil et sans erreur.

Le service client : les assistants virtuels du service client


travaillent 24 h/24, 7j/7, et peuvent aider vos clients existants
et potentiels sans la supervision d'un humain.

Des actions marketing ciblées : le tri et la catégorisation


de toutes les données disponibles concernant votre produit
ou service est une spécialité de l'IA, ce qui vous permet
d'axer vos efforts sur le marketing, afin d'identifier
spécifiquement les besoins de vos clients.

Un écosystème intégré à l'IA

De plus en plus d'entreprises ont recours à l'IA pour


superviser des processus métier importants. Trouver une
solution de plateforme qui fonctionne spécifiquement pour
votre entreprise et qui connecte une gamme d'applications
tierces constitue une part importante de l'infrastructure
IT. Talend Cloud peut préparer et intégrer de manière
transparente vos applications et données on-premise et dans
le cloud, renforçant ainsi votre écosystème d'IA.

DU BIG DATA AU DATA MINING


Page 22 sur 116
Le big data est la grande rupture de notre époque, qui a
permis à l’intelligence artificielle de faire des bonds énormes.
Nous sommes dans un monde de production de données en
masse. Certaines sont publiques, d’autres sont privées. En
2017, lors d’une seule journée, on a pu observer 96 millions de
messages sur Instagram, 200 millions de nouvelles photos et
456 millions de mises à jour de statuts dans Facebook, 645
millions de tweets, 5,5 milliards de requêtes sur Google, 417
milliards de messages sur WhatsApp.

La possession de ces données donne un pouvoir énorme aux


GAFA17 et à leurs équivalents chinois. Néanmoins, Google
nous offre des interfaces de programmation permettant
d’interroger les siennes. Google Maps, par exemple, autorise
l’accès à la cartographie de la planète entière. Google
propose un site où nous pouvons comparer les tendances sur
plusieurs motsclés, avec possibilité de zoomer sur des zones
géographiques, sur des échelles de temps, ou bien de filtrer
sur des catégories. À titre d’exemple, nous pouvons ainsi
comparer l’évolution de l'intérêt pour la recherche « Macron »
versus « Trump » entre novembre 2016 et novembre 2017 (voir
graphique 1).

On voit que les recherches « Macron » ont dépassé les


recherches « Trump » début mai 2017. Que s’est-il passé à ce
moment? Pour le savoir, il suffit de regarder sur la même
Page 23 sur 116
page du site, un peu plus bas, quelles sont les requêtes
associées (voir graphique 2).
En position 3 et 4, nous trouvons la fameuse poignée de main
entre Emmanuel Macron et Donald Trump qui a
enthousiasmé le monde entier ! Nous savions que cette
poignée de main était hautement symbolique. Google l’a
quantifiée.

Graphique 2 : Requêtes associées

Source : trends.google.com/trends/explore?q=Macron,Trump

Il est également possible de faire des zooms par région sur la


même requête (voir graphique 3). Le président des États-Unis
retient l’attention du continent américain, mais en Russie, en
France et dans certains pays africains, c’est le président
Macron qui l’emporte.

Graphique 3 : Requêtes Trump contre Macron selon les pays

Page 24 sur 116


Source : https://trends.google.fr/trends/.

Cette méthode fonctionne pour une pluralité de recherches.


Par exemple, la comparaison entre Dementia et Alzheimer a
permis de montrer que le premier terme est utilisé dans le
monde anglo-saxon, tandis que le second l’est en Europe et
en Amérique latine. Cette facilité de faire du zoom in, c’est-à-
dire d’aller du général au particulier, est l’un des plus
puissants apports du big data.

Il existe aussi des jeux de données qui sont publics. ImageNet


en est un exemple, mais nous avons aussi la carte du monde
entier disponible grâce à OpenStreetMap. Certains sites
comme Amazon ou Kaggle 19 permettent de savoir quelles
sont les données publiques disponibles.

Ces données sont importantes pour la compréhension de


notre monde. Le statisticien Seth Stephens-Davidowitz, qui a
accès aux données de Google, fait le constat que nous
mentons tout le temps : aux sondages d’opinion, à nos amis
sur Facebook et dans tous les lieux de partage. Le seul
endroit où nous sommes sincères est lorsque nous posons
une question à Google, qui est en quelque sorte devenu le
psychanalyste de toute la planète. L’auteur montre ainsi, en
Page 25 sur 116
analysant les requêtes contenant le mot « nègre », que,
contrairement à ce que prétendent nombre de sociologues,
l’Amérique est toujours très raciste.

Dans un monde de plus en plus chaotique, les grandes


tendances ne suffisent plus. Avant le big data, nous savions
que tel État des États-Unis votait plutôt démocrate ou plutôt
républicain. Avec le big data, nous pouvons le savoir à
l’échelle d’un quartier ou d’une rue.

Ce phénomène change radicalement une campagne :

Les actions à entreprendre pour convaincre les électeurs


potentiels sont bien plus ciblées.

Ainsi, des chercheurs de Stanford ont réalisé un moteur


d’intelligence artificielle qui, en analysant les voitures
stationnées sur Google Street View, en déduisent la couleur
politique du voisinage.

Dans les exemples exposés ci-dessus, les données sont


essentiellement utilisées pour essayer de comprendre des
phénomènes. C’est ce que le monde anglosaxon appelle le
data mining, la capacité d’aller chercher des réponses dans
des bases de données de plus en plus riches, croisées avec
des outils de plus en plus sophistiqués.

Néanmoins, l’humain est encore irremplaçable lorsqu’il s’agit


de prendre des décisions à partir des résultats de ces
méthodes statistiques. On a vu qu’Emmanuel Macron a
devancé Donald Trump en mai 2017 et que la machine peut
faire la corrélation entre ce phénomène et l’émergence du
mot handshake, mais la mise en contexte politique et
Page 26 sur 116
l’interprétation de ce que cela signifie pour les relations
diplomatiques entre la France et les États-Unis reste encore
de l’ordre de la créativité et de l’esprit humain. Le temps n’est
pas encore arrivé où, à partir de ces données, un ordinateur
en conclurait que le président Macron doit inviter le président
Trump au défilé du 14 Juillet de la même année.

D’une certaine manière, si le data mining est basé sur des


méthodes scientifiques, l’interprétation des données a encore
besoin des sciences molles.

En revanche, il est à craindre que les différences d’approches


des législateurs sur le problème de la propriété des données
engendrent un énorme différentiel dans la disponibilité
industrielle d'IA.

S’il est raisonnable de vouloir avertir le citoyen de ce que cela


signifie d’échanger sur Facebook ou bien de poser des
questions à Google, toute contrainte réglementaire sur les
données crée néanmoins une problématique.

Comme souvent, ceci favorisera les groupes puissants au


détriment des start-up. L’IA a besoin de données, espérons
que le législateur saura tenir compte de ces aspects avant
d’édicter des interdictions.

L’IMPORTANCE DE L’APPRENTISSAGE

Le meilleur moteur d’intelligence artificielle n’est rien sans


apprentissage. Investir dans un système d’intelligence
artificielle signifie en premier lieu avoir des jeux de données
permettant de décrire des cas déjà rencontrés. Il y a deux
grandes catégories d’apprentissage : l’apprentissage
supervisé et l’apprentissage non supervisé.
Page 27 sur 116
Danslepremiercas, l’algorithme est nourri d’exemples :

Des bases de données annotées lui sont fournies et le


système en déduit le programme qui sera utilisé par la suite.
Ce programme pourra s’améliorer continuellement si on lui
fournit les résultats de ses décisions. Si une image reconnaît
un chien alors qu’il s’agissait d’un chat, le fait de lui indiquer
que le résultat est mauvais permet d’améliorer l’algorithme.

En revanche, dans l’apprentissage non supervisé, on cherche


à construire un système qui apprend à partir de rien. Il est
possible d’utiliser des méthodes statistiques pour obtenir des
séparations automatiques entre plusieurs groupes, par
exemple des images de chiens d’un côté et des images de
chats d’un autre. Cet apprentissage non supervisé fait
actuellement l’objet d’intenses recherches.

La grande rupture de 2011 a permis l’essor de l’apprentissage


profond (deep learning). C’est le début de cette nouvelle
classe de réseaux de neurones qui permet de faire des
systèmes de reconnaissance d’image, de parole, de vidéo,
bien plus puissants que ce qui avait été conçu jusqu’à cette
époque, et ce grâce à de gigantesques bases de données.

L’Intelligence Artificielle a un autre objectif : nous permettre


de résoudre des problèmes ou de prendre des décisions,
même au niveau individuel. La voiture autonome possède la
carte routière dans sa mémoire, a accès aux informations de
trafic. Elle les croise avec les informations qu’elle tire de ses
divers capteurs, et doit prendre en permanence des décisions
sur la conduite à tenir. Comme le robot qui fait un salto
arrière possède des algorithmes neuronaux qui interprètent
ses capteurs en permanence, et en déduit les actions à
Page 28 sur 116
mener sur ses moteurs.

Salto arrière d'un robot


Source : What’s New, Atlas? Boston Dynamics
(https://www.youtube.com/watch?v=fRj34o4hN4I).

Pour arriver à ces résultats, l’algorithme a dû passer par une


phase d’apprentissage, qui n’est jamais vraiment terminée.
Il y a trois grandes époques de l’intelligence artificielle. Le
graphique 5 l’illustre bien : la machine commence à jouer aux
échecs, l’apprentissage lui permet de faire la distinction entre
spam et courriel normal, et l’apprentissage profond lui
permet de dire qu’une image contient un chat.

LES GRANDS ACTEURS DE L’INTELLIGENCE


ARTIFICIELLE

Google, Apple, Facebook et Amazon ne pouvaient pas ne pas


s’investir fortement dans l’intelligence artificielle alors qu’ils
possèdent des données en énorme quantité. En voici
quelques exemples.

a) Google

Google, très impliqué dans l’intelligence artificielle, procède


habituellement par rachat. En 2014, Google a acheté la société
anglaise DeepMind, qui avait développé des réseaux de
neurones pour jouer aux jeux vidéo. Mais l’objectif avoué de
Page 29 sur 116
DeepMind est actuellement de « comprendre ce qu’est
l’intelligence ». DeepMind est célèbre pour son programme
AlphaGo, qui a battu le champion du monde de go. En octobre
2017, le programme a franchi une étape supplémentaire : en
jouant contre lui-même, non seulement son apprentissage a
été plus court, mais surtout il est devenu plus fort que la
version précédente. Nous avons ici un premier exemple
d’apprentissage non supervisé, facilité par le fait que le
contexte, à savoir les règles du jeu de go, est arfaitement
mathématisable. Google a aussi son propre moteur de
recommandation nommé GoogleHome, un haut-parleur et un
assistant vocal disponible en trois versions différentes.

b) Amazon

Amazon utilise de l’intelligence artificielle dans son moteur


de recommandation, nommé Echo, et dans ses assistants
basés sur son système de reconnaissance vocale, Alexa,
disponible en sept versions différentes. Via son offre de
services dans le cloud, mazon propose également des
services fondés sur l’intelligence artificielle, comme la
reconnaissance de la parole ou des robots de discussion, les
fameux chatbot.

c) Facebook

Facebook est un énorme utilisateur d’intelligence artificielle.


Il choisit les messages qu’il affiche en utilisant un moteur de
type moteur de recommandation. Récemment, Facebook a
mis en place un moteur d’intelligence artificielle pour
détecter les tendances suicidaires. Comme le dit Joaquin
Candela, directeur du département d’intelligence artificielle

Page 30 sur 116


appliquée, « Facebook n’existerait pas sans intelligence
artificielle ».

d) Apple

Apple investit énormément dans l’intelligence artificielle et


propose même un blog où sont expliquées ses recherches.
Siri en est l’expression la plus évidente : ce système de
reconnaissance de la parole très performant utilise des
réseaux de neurones de dernière génération qui permettent
de comprendre des commandes même dans des
environnements très bruyants, comme dans la rue. Apple va
également bientôt lancer son propre moteur de
recommandation, nommé HomePod, un haut-parleur
connecté avec Apple Music.

e) IBM

IBM a créé Watson, un système d’intelligence artificielle pour


jouer, à ses débuts, au jeu Jeopardy, l’équivalent américain de
l’émission française Questions pourun champion. Watson a
analysé 200 millions de pages pour finalement battre les
anciens champions et ainsi gagner le premier prix.

Maintenant, Watson est proposé par IBM dans d’autres


domaines, comme la médecine ou le droit. IBM présente aussi
un blog sur le sujet de l’intelligence artificielle. La question
majeure est le degré d’ouverture de ces systèmes. IBM
propose des interfaces de programmation à Watson qui sont
ouvertes, tout comme Amazon propose des interfaces sur
son système d’apprentissage profond.

Donc tout le monde peut, à peu de frais, se connecter à ces

Page 31 sur 116


systèmes et en bénéficier. Facebook, en revanche, ne partage
pas la plupart de ses recherches, ne propose pas encore
d’interfaces de programmation permettant de les utiliser 31,
mais a récemment mis en accès libre son environnement
d’apprentissage, Caffe.

Cette apparente simplicité de connexion n’est pas suffisante :


il faut insister sur le fait que ce ne sont pas les algorithmes
qui détiennent la valeur principale, mais les données
d’apprentissage. Ces systèmes d’intelligence artificielle sont
d’autant plus performants qu’ils sont contextualisés et ont
donc besoin de données ciblées pour profiter d’un
apprentissage efficace.

En 1988, le chercheur en informatique indien Raj Reddy


définissait ainsi les grands challenges de l’intelligence
artificielle : le téléphone qui traduit (en cours de
développement), le champion de jeu d’échecs (réalisé), la
résolution de théorèmes athématiques (certains théorèmes
le sont déjà), les voitures autonomes (réalisé), les systèmes
auto-organisants (encours) et les systèmes autorépliquants
(en cours).

Page 32 sur 116


Chapitre 2: Introduction aux Algorithmes
Page 33 sur 116
de Recherche pour la Résolution de
Problèmes

Introduction et motivation
Comme le titre l’indique, le but de ce chapitre est d’introduire
des algo- rithmes de recherche pour la r´esolution des
probl`emes. Nous commençerons par une d´efinition formelle
d’un probl`eme (et d’une solution), et ensuite nous verrons un
nombre d’exemples sp´ecifiques pour illustrer cette d´efinition
et pour motiver la suite.
Dans la deuxi`eme partie du chapitre, nous d´etaillerons
plusieurs algorithmes de recherche, d’abord les algorithmes de
recherche dits non-inform´es, puis des algorithmes de
recherche inform´es (ou algorithmes de recherche
heuristiques), et enfin les algorithmes de recherche locale.

Définition formelle d’un problème


Dans le contexte de ce chapitre, un probl`eme sera d´efini
par les cinq ´el´ements suivants :

Page 34 sur 116


 Un ´etat initial
 Un ensemble d’actions
 une fonction de successeur, qui d´efinit l’´etat
résultant de l’éxécution d’une action dans un ´etat
 Un ensemble d’´etats buts
 Une fonction de coût, associant `a chaque action un
nombre non-négative (le coût de l’action)

Nous pouvons voir un probl`eme comme un graphe orient´e où


les noeuds sont des ´états accessibles depuis l’´etat initial et où
les arcs sont des actions. Nous appellerons ce graphe
l’espace des états. Une solution sera un chemin de l’´etat
initial à un ´etat but. On dit qu’une solution est optimale si
la somme des couˆts des actions du chemin est minimale
parmi toutes les solutions du probl`eme.

Page 35 sur 116


Nous passons tout de suite à des exemples concrets qui
devraient vous permettre de mieux comprendre cette
d´efinition.

Exemples de problèmes
Nous commençons par deux probl`emes ludiques : le taquin et
le probl`eme des huit reines.
Exemple 1 (Le taquin). Pour ceux que le connaissent pas, le
taquin est une sorte de puzzle. Nous commençons avec une
grille 3 ⇥ 3 de neuf cases où sont plac´ees huit tuiles
´etiquet´ees par les nombres 1 à 8, une des cases restant
vide. Une tuile situ´ee à cˆot´e de la case vide peut ˆetre
d´eplac´ee vers cette case. L’objectif du jeu est d’arriver à
obtenir une certaine configuration des tuiles dans la grille.
Voici une formalisation de ce probl`eme :
Etats Des ´etats sont des configurations des huit tuiles
dans les neuf cases de la grille. Voir FIG. 1 pour deux
exemples.

Etat initial N’importe quel ´etat pourrait ˆetre chosi comme


l’´etat initial.

Actions Il y aura 4 actions possibles correspondant aux


quatre façons de changer la position du carr´e vide : haut,
bas, gauche, droite (remar- quez que dans certaines
configurations, il n’y aura que 2 ou 3 actions possibles).

Fonction de successeur Cette fonction sp´ecifie les ´etats


r´esultants des di↵´erentes actions. Par exemple, la fonction
va nous dire que l’ex´ecution de l’action droite dans le
Page 36 sur 116
premier ´etat de FIG. produira le deuxi`eme ´état.

Test de but L’´etat but est unique et fix´e au d´ebut du jeu


(n’importe quel ´etat peut ˆetre choisi comme ´etat but,
mˆeme si en pratique il s’agit de remettre les nombres dans
l’ordre).

Coû t des actions Chaque d´eplacement d’une tuile a couˆt


de 1 (pour trouver une solution avec le moins de
d´eplacements).

Le taquin est souvent utilis´e pour tester les algorithmes de


recherche. En augmentant la taille de la grille, nous pouvons
cr´eer les probl`emes de plus en plus complexes. Les
algorithmes d’aujourd’hui arrivent à r´esoudre les taquins 3 ⇥ 3
et 4 ⇥ 4 (qui ont des espaces d’´etats de taille 181440 et
d’environ 1, 3 milliard r´espectivement), mais les instances du
taquin 5 ⇥ 5 (avec un ´espace d’´etats de taille 1025 ) restent
difficiles.

7 4 7 4

5 2 6 5 2 6

8 3 1 8 3 1

FIG. 1 + Deux états du jeu de taquin.

Page 37 sur 116


Exemple 2 (Huit reines). L’objectif de ce jeu est de placer
huit reines sur un ´echiquier (une grille 8 ⇥ 8)1 tel qu’ aucune
reine attaque une autre reine, c’est à dire qu’il n’y a pas
deux reines sur la mˆeme colonne, la mˆeme ligne, ou sur la
mˆeme diagonale. La configuration donn´ee dans FIG. 2 n’est
donc pas une solution parce qu’il y a deux reines sur la mˆeme
diagonale.

Voici une premi`ere formalisation :


Etats Toute configuration de 0 à 8 reines sur la grille.
Etat initial La grille vide.
Actions Ajouter une reine sur n’importe quelle case vide de
la grille.
Fonction de successeur La configuration qui
r´esulte de l’ajout d’une reine a une case sp´ecifi´e à la
configuration courante.

Test de but Une configuration de huit reines avec aucune


reine sous at- taque.
Coû ts des actions Ce pourrait ˆetre 0, ou un couˆt
constant pour chaque action - nous nous int´eressons pas
du chemin, seulement l’´etat but obtenu.
On peut r´eduire l’´espace d’´etats drastiquement
⇥ (de 3
1014 à 2057 !) en observant qu’il est inutile de continuer de
d´evelopper des configuations où il y a d´ejà à un conflit
(comme on ne peut pas r´esoudre le conflit en ajoutant des
reines suppl´ementaires). Voici les changements de notre
formalisation :
Etat initials Configurations de n reines (0 n 8), une reine
par colonne dans les n colonnes plus à gauche, avec aucun
conflit.
Actions Ajouter une reine à une case vide dans la
colonne vide la plus à gauche dans une façon à eviter un
Page 38 sur 116
conflit.
Ces deux formalisations sont incr´ementales car nous
plaçons des reines une par une sur la grille. Mais ce n’est
pas la seule façon de le faire. Une autre possibilit´e serait
de commencer avec les huits reines sur la grille (une par
colonne) et puis de changer la position d’une reine à chaque
tour.
Etat initials Une configuration de 8 reines telle qu’il n’y a
qu’une seule reine par colonne

Etat initial Un ´etat choisi al´eatoirement.


Actions Changer la position d’une reine dans sa colonne.
Notons qu’avec les characterisations incr´ementales nous ne
tombons jamais sur un ´etat d´ejà visit´e, mais ce n’est pas le
cas avec cette derni`ere formalisa- tion (car nous pouvons
changer la position d’une reine et apr`es la remettre dans sa
position d’origine) ni avec le taquin (où nous pouvons tr`es
bien d´eplacer une tuile et la remettre à sa place au coup
suivant). Dans ces der- niers cas, il nous faut faire attention
pour ne pas explorer une deuxi`eme fois un chemin d´ejà
explor´e ou de tourner en boucle.

FIG. 2 + Une presque solution pour le problèmes des huit reines.


Page 39 sur 116
Nous remarquons que ces deux probl`emes sont de nature
assez di↵´erentes. Avec le taquin, nous savons depuis le
d´ebut quel ´etat nous voulons, et la difficult´e est de
trouver une s´equence d’actions pour l’atteindre. En ce qui
concerne le probl`eme des huit reines, nous ne sommes pas
int´er´ess´es par le chemin mais seulement par l’´etat but
obtenu. Ces deux jeux sont des exemples de deux grandes
classes de probl`emes ´etudi´es en IA : des probl`emes de
pla- nification et des probl`emes de satisfaction de
contraintes. Nous examinons plus en d´etail ces deux classes
de probl`emes.
Exemple 3 (Probl`emes de planification). Dans un probl`eme
de planification, nous cherchons une suite d’actions pour relier
l’´etat initial à un ´etat but. Voici une formalisation standard du
probl`eme :
Etats Un ensemble d’´etats du monde qui correspondent aux
di↵´erentes valuations d’un ensemble de propositions. Par
exemple, consid´erons un cas tr`es simple avec une seule
proposition allumée (qui dit que la lumi`ere est allum´ee).
Nous avons deux ´etats du monde possibles : al- lumée=vrai
et allumée=faux.

Etat initial L’´etat actuel du monde, e.g.3 allumée=vrai.


Actions Un ensemble d’actions autoris´ees, e.g. actionner
l0 interrupteur.
Fonction de successeur Cette fonction va nous dire quelles
actions sont possibles dans chaque ´etat du monde et
comment les actions changent l’´etat du monde, e.g. l’action
actionner l0interrupteur va faire passer de l’´etat
allumée=vrai à l’´etat allumée=faux et inversement.
Test de but Th´eoriquement, ce pourrait ˆetre n’importe quel
ensemble d’´etats, mais souvent nous d´efinissons le but comme
l’ensemble des ´etats satis- faisants une certaine valuation
Page 40 sur 116
partielle des propositions.
Coû t des actions Pour essayer de trouver des plans les
plus courts, nous pouvons mettre tous les couˆts à 1. Nous
pouvons aussi d´efinir les couˆts des actions en fonction de
leur dur´ee, de leur couˆt en argent, de la quantit´e de
ressources qu’elles consomment, etc.
Les probl`emes de planification sont courants dans la vie de
tous les jours. Par exemple, consid´erons le probl`eme de
trouver le chemin le plus court pour atteindre une
destination. C’est un probl`eme tellement courant qu’il y a
maintenant des GPS d´edi´es à cette tˆache. Citons
´egalement les syst`emes de planification de voyage qui
cherchent des itin´eraires en transports en com- mun4, en train
ou en avion.
Formalisons ce dernier exemple :
Etas Chaque ´etat est compos´e d’un a´eroport et la date et
l’heure actuelle.
Etat initial L’a´eroport d’où part le client, la date de
d´epart souhait´ee, et l’heure à partir de laquelle le client peut
partir.
Actions Ce sont des vols d’un a´eroport à un autre.
Fonction de successeur Les actions possibles sont des vols
qui partent de l’a´eroport de l’´etat actuel, plus tard que l’heure
actuelle (en fait, nous devrons aussi exiger une certaine dur´ee
entre l’arriv´ee dans un a´eroport et le prochain vol, sinon le
client risque de rater sa correspondance ! !).
Test de but Les ´etats où le client est à l’a´eroport de sa
destination.
Coû t des actions Cela va d´ependre des pr´ef´erences du
client. Ce pourrait ˆetre 1 pour chaque action (pour minimiser
la nombre de connections), ou la dur´ee des vols (pour

Page 41 sur 116


minimiser la dur´ee du voyage), ou le prix des trajets (pour
trouver le voyage le moins cher).
Un probl`eme tr`es similaire est celui du routage dans les
r´eseaux, où il faut trouver les chemins pour envoyer des
paquets. Enfin, les planificateurs sont aussi utilis´es dans
l’industrie pour trouver des manipulations physiques pert-
mettant à un robot de construire des objets complexes à partir
de composants donn´es.
Nous n’avons pas le contrˆole, nous allons chercher une
stratégie, c’est à dire un choix d’action pour chaque ´etat où
pourrait se trouver l’agent. Voici une formalisation d’un jeu à
plusieurs joueurs :
Etats Des configurations du jeu plus le nom de joueur dont
c’est le tour. Etat initial La configuration initiale plus le
nom du joueur qui commence. Actions Les coups l´egaux
pour le joueur dont c’est le tour.
Fonction de successeur La nouvelle configuration du jeu,
et le nom de joueur dont c’est le tour.
Test de but Les configurations gagnantes pour le joueur.
Coû t des actions Cela d´ependra du jeu en question.
Pour le jeu d’´echecs, nous aurions la formalisation suivante :
Etats Des ´etats sont compos´es d’une configuration de
l’´echiquier plus le nom du joueur dont c’est le tour.
Etat initial La configuration standard pour le d´ebut d’une
partie d’´echecs.
Actions Ce sont des coups qui peuvent ˆetre jou´es par le
joueur dont c’est le tour dans la configuration actuelle du jeu
(y compris l’action d’aban- donner le jeu).
Fonction de successeur La configuration du jeu ´evolue
selon le coup choisi, et c’est maintenant à l’autre joueur de
Page 42 sur 116
jouer.
Test de but Il y a beaucoup de façons de terminer une
partie, la plus connue ´etant l’´echec et mat (je ne vais pas
les d´etailler ici, ceux que cela int´eresse pourront se
documenter sur le sujet).
Coû t des actions Nous pouvons les mettre à 1 pour
chercher les coups qui amm`enent le plus vite à une
configuration gagnante.

Structure générale d’un algorithme de recherche


La plupart des algorithmes de recherche suivent à peu
pr`es le mˆeme sch´ema : nous commençons toujours dans
l’´etat initial et puis nous ex´ecutons les ´etapes suivantes en
boucle jusqu’à terminaison :

 s’il n’y a plus d’´etats `a traiter, renvoyez echec


 sinon, choisir un des ´etats `a traiter (?)
 si l’´etat est un ´etat but, renvoyez la solution
correspondante
 sinon, supprimer ce ´etat de l’ensemble des ´etats à
traiter, et le remplacer par ses ´etats successeurs

Ce qui va di↵´erencier les di↵´erents algorithmes est la mani`ere


dont on e↵ectue le choix à l’´etape (?).

Evalution des algorithmes de recherche


Dans la suite, nous allons di↵´erents d’algorithmes de
recherche. Comment pouvons-nous les comparer ? Voici quatre
crit`eres que nous allons utiliser pour comparer les di↵´erents
algorithmes de recherche :
Page 43 sur 116
Complexité en temps Combien du temps prend l’algorithme
pour trouver la solution ?

Complexité en espace Combien de m´emoire est utilis´ee


lors de la recherche d’une solution ?
Complétude Est-ce que l’algorithme trouve toujours une
solution s’il y en a une ?
Optimalité Est-ce que l’algorithme renvoie toujours des
solutions optimales ?

Page 44 sur 116


Chapitre 3 : Algorithmes de
Recherche
Un algorithme de recherche générique

En informatique, un algorithme de recherche est un type


d'algorithme qui, pour un domaine, un problème de ce
domaine et des critères donnés, retourne en résultat
un ensemble de solutions répondant au problème.

Il existe trois structures algorithmiques différentes :

- la structure linéaire ou séquentielle ;


- les structures alternatives ou conditionnelles ;
- les structures répétitives ou itératives.

Exemple de l’algorithme de Google : L'algorithme de Google


est un ensemble de calculs analytiques qui ont pour but de
déterminer le Page Rank. Il s'agit de la valeur SEO d'un site
web, autrement appelé Google Juice (de façon non officielle).
Le Page Rank, ou PR, détermine quel site arrivera en premier
sur un mot-clé donné.

A noter : Comment écrire un algorithme « standard »

 I. Introduction.
 Étape 1 : Poser clairement le problème.
 Étape 2 : Essayer d'éviter tout travail.
 Étape 3 : Définir l'interface. Étape 3-a : Déterminer
le nom de la fonction. ...
 Étape 4 : Écrire les tests.
 Étape 5 : Écrire l'algorithme.
 Étape facultative 6 : Optimiser.
 II. Résumé
Recherche non-informée
Dans cette section, nous introduisons des algorithmes de
recherche non- informés. Ces algorithmes sont ainsi
nomm´es parce qu’ils ne disposent pas d’informations
suppl´ementaires pour pouvoir distinguer des ´etats
prometteurs (ce n’est pas le cas par exemple des
programmes joueurs d’´echecs qui ne peuvent explorer toutes
les possibilit´es, et se concentrent donc à chaque ´etape sur
un petit nombre de coups qui leur semblent ˆetre les
meilleurs). En l’absence de telles informations, ces
algorithmes font une recherche exhaus- tive de tous les
chemins possibles depuis l’´etat initial.

Parcours en largeur
Le parcours en largeur est un algorithme de recherche tr`es
simple : nous examinons d’abord l’´etat initial, puis ses
successeurs, puis les successeurs des successeurs, etc. Tous
les noeuds d’une certaine profondeur sont examin´es avant
les noeuds de profondeur sup´erieure. Pour impl´ementer cet
algorithme, il suffit de placer les nouveaux noeuds
syst´ematiquement à la fin de la liste de noeuds à traiter. Le
fonctionnement du parcours en largeur sur un exemple

État Nœud 7 3 2

5 4 5 44

66 11 88
ETAT 7 33 22
7

6 1 88
C HEMIN = (haut, haut, droite)
7 3 2 COUT DU CHEMIN = 3

FIGURE 2 + Un noeud est composé d’un état, un chemin (une suite


d’actions qui relie l’état à l’état initial), et le coû t du chemin.
Est présenté sur la Figure 3.

A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G

FIGURE 3 + Le parcours en largeur pour un arbre binaire


simple. Nous com- mençons par l’´etat initial A, puis nous
examinons les noeuds B et C de profondeur 1, puis les
noeuds D, E, F, et G de profondeur 2.

Le parcours en largeur est un algorithme de recherche complet


2
à condi- tion que le nombre de successeurs des ´etats
soit toujours fini (ce qui est tr`es souvent le cas dans les
probl`emes courants). Pour voir pourquoi, soit p le nombre
minimal d’actions n´ecessaires pour atteindre un ´etat but
depuis l’´etat initial. Comme nous examinons les noeuds
profondeur par profondeur, et qu’il n’y a qu’un nombre fini de
noeuds à chaque profondeur (ce ne serait pas le cas si un
noeud pouvait avoir un infini de successeurs), nous atteindrons
forc´ement le niveau p. Le parcours en largeur trouve
toujours un ´etat but de plus petite pro- fondeur possible.
Donc si nous cherchons une solution quelconque, ou une
solution avec le moins d’actions possibles, le parcours en
largeur est optimal. Un peu plus sp´ecifiquement, le parcours en
largeur est optimal quand le couˆt du chemin ne d´epend que
du nombre d’actions de ce chemin. Par contre le parcours en
largeur n’est pas optimal dans le cas g´en´eral (Exercice).
Consid´erons ensuite la complexit´e de cet algorithme.
Supposons que chaque ´etat poss`ede s successeurs et
que p soit le nombre minimal d’actions pour relier l’´etat
initial a` un ´etat but. Dans le pire des cas, nous allons
examiner tous les noeuds de profondeur au plus p afin
de trouver l’´etat but qui se trouve a` cette profondeur.
Nous allons alors produire nœuds.

1 + s + s2 + s3 + ... + sp + (sp+1 * s)

La quantit´e sp+1 — s dans cette formule correspond au


nombre de noeuds de profondeur p + 1 qui ont ´et´e produits lors
de l’examen des noeuds

Profondeur Noeuds Générés Temps Mémoire


2 1100 0,11 sec 1 mega-octet
4 111 100 11 sec 106 mega-octet
6 10 7
19 min 10 giga-octet
8 10 9
31 h 1 tera-octet
10 10 11 129 jours 101 tera-octets
12 10 13 35 ans 10 peta-octets

FIGURE 4 + Voici le nombre de noeuds g´en´er´es et le


temps et la m´emoire utilis´es par le parcours en largeur
pour un nombre de successeurs fix´e à 10 (supposant 10,000
noeuds par seconde et 1000 octets par noeud).

De profondeur p moins les successeurs du dernier noeud


(comme le dernier noeud est le bon, nous ne produisons pas
ses successeurs). Le parcours en largeur a donc une
complexit´e en temps de o (sp+1). La complexit´e en espace est
aussi en (sp+1) puisque nous avons au plus 1 + sp+1 s noeuds
en m´emoire lors de l’examen du dernier noeud.

La Figure 4 montre le temps et la m´emoire n´ecessaires au


parcours en largeur pour un probl`eme ayant 10 successeurs
par ´etat (s = 10). Nous voyons que mˆeme pour p = 6, le
parcours en largeur utilise 10 giga-octets de m´emoire, et pour p
= 8, il lui faut 1 tera-octet ! Le temps de calcul pose aussi
probl`eme : l’algorithme prend 35 ans pour trouver une solution
de profondeur p = 12. Cette haute complexit´e en temps et en
espace restreint l’utilisation du parcours en largeur aux petits
probl`emes.

Parcours en profondeur
Le parcours en profondeur suit le chemin courant le plus
longtemps pos- sible. Il est facile à impl´ementer : il faut tout
simplement mettre des succes- seurs du noeud courant au
d´ebut de la liste de noeuds à traiter. La Figure 5 montre le
fonctionnement de cet algorithme sur un petit exemple.

Le parcours en profondeur n’est pas complet parce que


l’algorithme peut continuer sur un chemin infini, ignorant
compl`etement un ´etat but qui se trouve sur un autre
chemin. Si par contre, nous n’avons qu’un nombre fini de
chemins possibles (ce qui n’est pas souvent le cas), le
parcours en profondeur sera complet. L’algorithme n’est pas
optimal : il n’y a rien qui garantie que le premier ´etat but
trouv´e sera le bon. Consid´erons maintenant la complexit´e.
Si nous avons s successeurs et une profondeur maximale de m
actions, dans le pire des cas nous aurions besoin d’examiner
tous les sm noeuds pour trouver une solution. Sur ces trois
premiers crit`eres, il est ´evident que le parcours en :
A A A

B C B C B C

D E F G D E F G D E F G

H I J K L M N O H I J K L M N O H I J K L M N O

A A A

B C B C B C

D E F G D E F G E F G

H I J K L M N O I J K L M N O J K L M N O

A A A

B C B C C

E F G E F G F G

J K L M N O K L M N O L M N O

A A A

C C C

F G F G F G

L M N O L M N O M N O
Chapitre 3: Planification
La planification, comme nous l’avons d´efinie dans le
dernier chapitre, consiste à produire une suite d’actions
pour relier un ´etat initial à un ´etat but. Dans ce chapitre,
nous allons voir en d´etail la sp´ecification des probl`emes de
planification, et nous montrerons comment les algorithmes de
recherche ´elabor´es dans le chapitre pr´ec´edent peuvent nous
servir pour r´esoudre de tels probl`emes. Nous consid´ererons
´egalement quelques autres approches de la planification et
des extensions possibles du cadre classique de la planification.

Spécification des problèmes de planification


Dans le dernier chapitre, nous avons parl´e bri`evement de la
sp´ecification des probl`emes de planification. En particulier,
nous avons dit que les ´etats correspondaient aux valuations
de certaines propositions et que la fonction de successeur
d´efinissait quelles actions ´etaient possibles dans un ´etat
donn´e et comment les actions modifiaient l’´etat du monde.
Dans cette section, nous introduisons un langage pour sp´ecifier
des probl`emes de planification.

Le langage que nous allons utiliser s’appelle STRIPS. Nous


allons voir abstraitement en quoi consiste ce langage, puis
nous allons utiliser STRIPS pour formaliser des probl`emes de
planification concrets.

Etats du monde Nous allons d´efinir les ´etats des


ensembles d’atomes. Des atomes peuvent ˆetre des
propositions comme P orte Ouverte ou des atomes complexes
comme Dans(lait, panier). Les atomes complexes sont
construits à partir d’un ensemble de pr´edicats, e.g. Dans,
et des constantes, e.g. lait, panier. Chaque pr´edicat a un
nombre fixe d’arguments, e.g. Dans a 2 arguments. Nous
faisons la supposition du monde clos, c’est à dire que toutes
les atomes qui ne sont pas dans l’´etat sont suppos´es faux.
Cette supposition nous permet de repr´esenter les ´etats de
façon plus compacte.

But Le but va ˆetre un ensemble d’atomes. Un ´etat est un


´etat but si tous les atomes du but sont vrais dans l’´etat, i.e. si
le but est un sous-ensemble de l’´etat.

Description des actions Nous allons permettre les actions


simples comme dormir mais aussi les actions prenant des
arguments comme marcher (laposte, supermarche´). Pour
d´ecrire les actions, il nous faut sp´ecifier leurs pr´econditions
(les conditions n´ecessaires pour les ex´ecuter) et leurs e↵ets
(comment ils a↵ectent l’´etat du monde). En STRIPS, les
pr´econditions sont simplement un ensemble d’atomes, et les
e↵ets sont d´ecrits par deux ensembles, l’un donnant les atomes
que l’action a rendu vrais, l’autre pr´ecisant les atomes que
l’action a rendu faux. Pour ne pas avoir besoin d’´ecrire une
description pour les di↵´erentes actions de type marcher
(marcher(maison, e´cole), marcher(laposte, maison),
marcher(maison, supermarche´), etc. ), ce qui serait
redondant en plus d’ˆetre extrˆemement p´enible s’il y avait
beaucoup de lieux di↵´erents, nous pouvons utiliser les
variables dans les pr´econditions et les e↵ets, à condition que
ces variables soient des param`etres de l’action. Voici un
exemple pour illustrer cela :
Action marcher (l1, l2)
Préconditions Lieu (l1 ), Lieu (l2 ), Proche (l1 , l2 ), A`(l1 )
E↵ets +A`(l2 ) *A`(l1 )
Cette description indique que pour marcher de l1 `a l2, il faut
que l1 et l2 soient des lieux, que l1 et l—
2 soient proches, et que
l’agent se trouve à l1 . A la fin de l’action, l’agent est
maintenant à l2 (ce que nous no- tons par +A`(l2 )) et ne se
trouve plus à l1 ( A`(l1 )). Nous remarquons que toutes les
variables dans les pr´econditions et les e↵ets font par- tie
des param`etres de l’action+ ce qui garantit que les
pr´econditions et e↵ets d’une action sont toujours des
ensembles d’atomes (sans va- riables). Nous apellerons
respectivement Pre(A), Pos(A), et Neg(A) les pr´econditions,
les e↵ets postifis, et les e↵ets n´egatifs d’une action A.

Une action A est ex´ecutable dans l’´etat E1 si ses


pr´econditions sont satisfaites, i.e. P re(A) ✓ E1 . L’´etat
r´esultant de l’ex´ecution de A dans E1 est ´egale à E1 avec les
e↵ets positifs de A ajout´es et les e↵ets n´egatifs de A
supprim´es, i.e. E2 = E1 [ P os (A) \ Neg(A).

Nous allons maintenant montrer sur des exemples concrets


comment repr´esenter un probl`eme de planification avec
STRIPS. Nous commençons avec un exemple tr`es simple où
nous n’avons que des atomes et actions simples :
Exemple 1 (Pizza). Dans cet exemple, le but de notre agent
est d’ˆetre à la maison avec une pizza. Dans l’´etat initial, notre
agent est à la maison avec de l’argent, son t´el´ephone
fonctionne, et il n’a pas encore pass´e une commande de
pizza. Il peut passer une commande depuis la maison si
son t´el´ephone fonctionne, ou il peut commander sa pizza
directement dans le restaurant. L’agent peut aller au
restaurant ou rentrer chez lui, et il peut prendre sa pizza s’il a
d´ejà pass´e une commande et si il a de l’argent.
Atomes Nous utiliserons les atomes T , A, M, R, C, P
respectivement pour le fait que le t´el´ephone fonctionne,
que l’agent ait de l’argent, que l’agent soit à la maison,
que l’agent soit au restaurant, qu’une pizza soit command´ee,
et que l’agent ait sa pizza.
Etat initial L’état initial est {T, A, M}.
Etat but Le but est d’ˆetre à la maison (M) avec une pizza
(P), ce qui donne
{M, P}.
Actions Il y a 5 actions di↵´erentes : appeler pour passer
une commande (appeler), aller au restaurant (aller), rentrer
du restaurant (rentrer), commander une pizza dans le
restaurant (commander), et acheter sa pizza (acheter). Voici
les d´escriptions des di↵´erentes actions :
Action appeler Préconditions M, T
E↵ets +C Action aller Préconditions M
E↵ets +R *M Action rentrer
Préconditions R E↵ets +M *R Action
commander Préconditions R E↵ets +C
Action acheter Préconditions A, C, R E↵ets +P *A *
C
Maintenant que nous avons compris les bases, essayons de
formaliser un probl`eme un peu plus complexe :
Exemple 2 (Livraison). Dans cet exemple, nous travaillons
pour une com- pagnie de livraison. Notre compagnie d´essert
les villes de Paris, Marseille, et Lyon, et nous disposons d’un
avion et de trois camions, un par ville. Aujour- d’hui nous
avons deux livraisons à e↵ectuer : il faut livrer un DVD à
Paul, qui habite à Lyon et un livre à Marie qui habite à
Marseille. Actuellement, ces deux objets, ainsi que notre
camion de Paris, se trouvent à notre entrepˆot de Paris.
L’avion est à l’a´eroport de Paris, et les deux autres
camions sont aux a´eroports de Lyon et de Marseille.

Prédicats Nous allons utiliser les pr´edicats unaires 1


Objet, Camion, et Avion qui servent à sp´ecifier qu’une
certaine chose est un objet, un camion, ou un avion. Nous
utiliserons le pr´edicat unaire Lieu pour d´esigner les lieux
sp´ecifiques, et Aeroport pour les a´eroports (notons que les
a´eroports seront aussi des lieux). Enfin, le pr´edicat unaire
Ville sera utilis´e pour sp´ecifier des noms de ville. Nous
aurons ´egalement besoin de quelques pr´edicats binaires :
Dans V ehicule (qui dit qu’un certain objet est dans un
certain camion ou avion), Dans V ille (qui dit qu’un certain
lieu se trouve dans une certaine ville), et A` (qui dit qu’une
certaine chose est à un certain lieu).

Noms d’objets Pour cet exemple, nous avons deux objets à


livrer dvd de paul et livre de marie, trois camions à notre
disposition camion paris, camion lyon, et camion marseille,
un avion notre avion, six lieux di↵´erents entrepoˆt, chez
marie, chez paul, aeroport paris, aeroport lyon, et aeroport
marseille, et les villes paris, lyon, et marseille.
Etat initial Notre ´etat initial va ˆetre l’ensemble suivant :
{Objet(dvd de paul), Objet(livre de marie), Camion(camion
paris), Camion(camion lyon), Camion(camion marseille),
Avion(notre avion), V ille(paris),V ille(lyon),V ille(marseille),
Aeroport(aeroport paris), Aeroport(aeroport lyon),
Aeroport(aeroport marseille), Lieu(entrepoˆt), Lieu(chez
marie), Lieu(chez paul), Lieu(aeroport marseille),
Lieu(aeroport paris), Lieu(aeroport lyon), Dans V
ille(entrepoˆt, paris), Dans V ille(chez paul, lyon), Dans V
ille(chez marie, marseille), Dans V ille(aeroport paris,
paris), Dans V ille(aeroport lyon, lyon), Dans V ille(aeroport
marseille, marseille), A`(dvd de paul, entrepoˆt), A`(livre de
marie, entrepoˆt), A`(camion paris, entrepoˆt), A`(notre
avion, aeroport paris), A`(camion lyon, aeroport lyon),
A`(camion marseille, aeroport marseille)}
Notre ´etat comporte des atomes d´ecrivant l’´etat initial, e.g.
A`(dvd de paul, entrepoˆt), ainsi que les faits d´ecrivant les
types des di↵´erents constantes,
e.g. Aeroport(aeroport lyon), et la g´eographie, e.g. dans
ville(entrepoˆt, paris) 2 Comme vous pouvez remarquer,
´ecrire l’´etat initial est assez long, mˆeme pour notre tout
petit exemple. N´eanmoins, ce serait pire si nous n’avions
pas fait la supposition du monde clos, parce que nous aurions
eu besoin d’´ecrire tous les atomes qui sont v´erifi´es dans
l’´etat initial plus tous les atomes qui ne le sont pas.
But Nous voulons que le DVD soit livr´e à Paul et que le
livre soit livr´e à Marie, ce qui donne le but suivant dans le
langage STRIPS :
{A`(dvd de paul, chez paul), A`(livre de marie, chez
marie)}

Description des actions Dans notre exemple, il y aura six


types d’actions : mettre un objet dans un camion, mettre un
objet dans un avion, enlever un objet d’un camion, enlever un
objet d’un avion, conduire un camion d’un lieu à un autre
dans la mˆeme ville, et d´eplacer un avion d’un a´eroport à
un autre a´eroport. Pour chaque action, il nous faut sp´ecifier
ses param`etres, ses pr´econditions, et ses e↵ets.
Commençons d’abord par l’action de mettre un objet dans
un camion :

Action charger camion (o, c, l)


Préconditions Objet(o), Camion(c), Lieu(l), A`(o, l), A`(c, l)
E↵ets +Dans V ehicule (o, c) *A`(o, l)

Cette action prend trois param`etres, correspondant à l’objet, le


camion, et le lieu où se trouve l’action. Les pr´econditions
exigent que les trois pa- ram`etres sont bien typ´es (i.e. que o
soit bien un objet, que c soit bien un camion, et que l soit bien
un lieu) et que l’objet et le camion se trouvent au mˆeme
endroit. Apr`es l’ex´ecution de charger camion(o, c, l), l’ob-
jet o est dans le camion c (ce qui donne respectivement
l’e↵et positif +Dans V ehicule(o, c) et l’e↵et n´egatif *A`(o, l)).

Consid´erons ensuite l’action de d´echarger un objet d’un


camion :

Action de´charger camion (o, c, l)


Préconditions Objet(o), Camion(c), Lieu(l), Dans Vehicule
(o, c), A`(c, l)
Effets *Dans V ehicule (o, c) +A`(o, l)
Nous avons les trois mˆemes param`etres que pour l’action
pr´ec´edent. Les pr´econditions exigent que les trois param`etres
sont bien typ´es, que l’objet o est dans le camion c, et que le
camion c se trouve à l. Il y a deux e↵ets : l’objet o est
maintenant à l et n’est plus dans le camion c.

Enfin, consid´erons l’action de conduire un camion d’un lieu à


un autre :

Action conduire camion(c, l1, l2, v)


Préconditions Camion(c), Lieu(l1 ), Lieu(l2 ), A`(c, l1 ),
Dans V ille(l1 , v), Dans V ille(l2, v), V ille(v)
E↵ets +A`(c, l2 ), *A`(c, l1 )
Cette action prend quatre param`etres : un camion, deux
lieux, et une ville. Les pr´econditions disent que les
param`etres sont bien typ´es, que le camion c se trouve au
lieu l1, et que les deux lieux se trouvent dans la mˆeme ville.
Apr`es l’ex´ecution de l’action, le camion est à l2 et n’est plus
à l1 .

Les trois autres actions ressemblent fortement aux trois


actions que nous venons de voir. Voici leurs descriptions :
Action charger avion(o, a, l)
Préconditions Objet(o), Avion(a), Lieu(l), A`(o, l), A`(a, l)
E↵ets *A`(o, l) +Dans V ehicule(o, a)
Action de´charger avion (o, a, l)
Préconditions Objet(o), Avion(a), Lieu(l), Dans V ehicule
(o, a), A`(a, l)
E↵ets +A`(o, l) *Dans V ehicule(o, a)
Action voler avion (a, l1, l2)
Préconditions Avion(a), A`(a, l1 ), Aeroport(l1 ), Aeroport(l2 )
E↵ets +A`(a, l2 ), *A`(a, l1 )
Dans cet exemple, nous n’avons eu que deux objets à livrer et
trois villes d´esservies, mais notre formalisation pourrait ˆetre
l´eg`erement modifi´ee pour traiter d’autres exemples plus
r´ealistes avec plus de villes, camions, avions, et objets à
livrer (Exercice).

Planification avec les algorithmes de recherche


Nous allons consid´erer dans cette section deux faç ons de
planifier en uti- lisant des algorithmes de recherche. La
premi`ere consiste à commencer par l’´etat initial et à ajouter
les actions les unes apr`es les autres pour construire des
plans. La deuxi`eme possibilit´e est de commencer par
l’´etat but et de construire les plans dans le sens inverse
(la derni`ere action, puis l’avant derni`ere action, etc.).
Recherche en avant
Avec la recherche en avant, nous construisons les plans
action par action jusqu’à ce que nous trouvions un ´etat but.
Par souci de compl´etude, nous donnons la formalisation
comme un probl`eme de recherche (bien que ce soit assez
simple) :
Etats Les ensembles d’atomes.
Etat Initial L’état initial du probl`eme.
Actions Les actions du probl`eme.

Fonction de successeur Un ´etat E2 est un successeur


de l’´etat E1 s’il existe une action A telle que A est
ex´ecutable dans E1 (P re(A) ✓ E1 ) et E2 est l’´etat r´esultant
de l’ex´ecution de A dans E1 (E2 = E1 [ Pos(A) \ Neg(A)).
Test de but Un ´etat est un ´etat but s’il contient toutes les
atomes du but.
Coû t des actions Chaque action couˆte 1.

AM
appele T alle
r r

ACM AR
T command
T rentre
appele alle
er r
r r

ACM ACR ACR AM


T T T rentre T
boucl r boucl
e achete rentre
achete command e
r r er
r
commande
A Cr R PR ACM PR ACRT ACMT
T T T T
boucl boucle
rentre rentre boucle
e r command r rentr
appel
command er er
er
erC P R MP CPR MP ACM ACR
T T T T T T

H état but H H état but H boucle boucle


Chapitre 4: Jeux
Introduction

Un jeu vidéo est un jeu électronique doté d'une interface


utilisateur permettant une interaction humaine ludique en
générant un retour visuel sur un dispositif vidéo. Le joueur de
jeu vidéo dispose de périphériques pour agir sur le jeu et
percevoir les conséquences de ses actes sur un
environnement virtuel.

Les 8 étapes de création d’un jeu vidéo

Avant de passer en revue le rôle de chacun dans la création


d’un jeu vidéo, il convient de s’arrêter sur chacune des étapes
nécessaires à son développement. Pour les grosses
productions, le processus peut prendre plusieurs années, par
exemple, le développement de Red Dead Redemption 2 a duré
7 ans. Voyons cela en pratique :

Modele d’un projet de conception d’un jeu video

1. Trouver le concept

La première étape du long


processus de création d’un
jeu vidéo, c’est la recherche
du concept. C’est une étape
qui peut sembler très
créative, et elle l’est
sûrement dans beaucoup
de studios indépendants,
mais c’est surtout une affaire de business. Les grands studios
évaluent les besoins du public tout en réalisant
différentes études de marché pour analyser ce qui fonctionne.
Grâce à cela, ils peuvent estimer la rentabilité d’un concept et
décider si ce dernier est faisable ou non. Les studios
indépendants de taille plus réduite peuvent se permettre
d’être plus libre dans la création de jeux vidéo, car moins
d’enjeux financiers pèsent sur eux (actionnaires, attente du
public, etc.). Bien entendu, ils ne peuvent pas non plus se
permettre de faire n’importe quoi au risque de devoir fermer
boutique. En clair, il faut trouver l’idée de base. Celle qui
permet de développer par la suite un gameplay,
une narration, un thème et par la même occasion, un public
visé. Comme nous le disions, c’est majoritairement le travail
des Game Designer qui se posent une simple question : en
quoi consistera le jeu ? À la fin de cette première phase de
réflexion, les Game Designer doivent avoir une idée assez
précise du produit final et doivent être capables de le
présenter dans les grandes lignes.

Si jamais vous avez décidé de créer votre jeu vidéo seul en


tant qu’indépendant, c’est sur ce concept que repose tout
votre projet. Vous pouvez le présenter à un éditeur afin qu’il
en finance le développement, ou alors vous pouvez chercher
un financement de la part des banques, de l’état ou de la
région. Quoi qu’il en soit, c’est la présentation de votre projet
et votre sérieux qui vous permettra de gagner la confiance de
ces investisseurs, c’est donc une étape essentielle à ne pas
prendre à la légère.

2. Rédiger le cahier des charges

Une fois que le projet est validé, c’est le moment de rédiger le


cahier des charges, aussi appelé Game Design Document.
Certains parlent même de “Bible du développeur”. C’est bien
simple, c’est le document qui va rassembler tous les
éléments du projet.
On y trouve donc le gameplay prévu, l’ébauche détaillée du
scénario, la charte graphique ainsi qu’une idée générale de la
musique. C’est une to-do list géante qui va permettre à tous
de faire en sorte que le projet avance de façon cohérente et
ressemble à ce à quoi il doit ressembler.

Un rétroplanning est également inclus dans ce document, afin


que chacun sache se repérer temporellement et puisse
évaluer les éventuels retards. On y indique aussi les outils qui
seront utilisés tout au long du développement, mais aussi le
personnel. Vous l’aurez compris, toutes les lignes
directrices sont inscrites à l’intérieur de ce document. Il
permet de figer les choses et d’éviter que tout le monde parte
dans tous les sens et se disperse. Ce cahier des charges
est la clé de la réussite du projet, c’est le fil rouge qui relie
toutes les équipes.

3. Réaliser les esquisses

Une fois que le concept de


base est décidé et que le
cahier de charge est réalisé, il
reste tout une grosse partie à
dégrossir : les graphismes.
C’est le moment pour
les Game Artists d’entrer en
scène. Ils sont responsables de ce à quoi va ressembler le
jeu, des graphismes à l’animation en passant par l’interface.
Dans un premier temps, un infographiste va travailler sur le
story-board. Ce dernier se compose majoritairement
d’esquisse 2D et d’instructions qui serviront à la réalisation
du jeu. Tout doit être travaillé le plus précisément possible
afin que les Game Artist qui travaillent sur la version finale
puissent savoir ce qu’ils doivent faire. Dans un jeu tel que
Assassin’s Creed, chaque lieu, chaque personnage et chaque
bâtiment a été réfléchi, esquissé et dessiné par les Game
Artist. Après cela, une ébauche 3D est nécessaire pour mieux
se rendre compte de ce à quoi le jeu va ressembler dans un
moteur 3D. Ce résultat devra encore être discuté et analysé
avant d’être validé et que le développement à proprement
parler puisse commencer.

Ces étapes préparatoires sont absolument indispensables, il


ne faut surtout pas les bâcler. Ce sont elles qui assurent le
développement du jeu vidéo dans de bonnes conditions, sans
incompréhension ou retard.

4. Créer les niveaux de jeux

Il reste une toute dernière étape, qui se déroule en parallèle


des deux précédentes, avant que le développement du jeu ne
commence réellement. Il s’agit de la conception des niveaux.
C’est le Level Designer qui s’en occupe. C’est lui qui va
concevoir l’architecture dans laquelle les joueurs vont
évoluer. En plus de la réalisation du parcours, ce sont eux qui
définissent les défis et les obstacles rencontrés par les
joueurs. Les difficultés se décident en fonction du public visé,
et l’augmentation de cette dernière doit se faire de façon
progressive.
5. Réaliser la programmation

Maintenant que toutes


ces étapes sont
terminées, il est temps
de passer à la
programmation, c’est-
à-dire : donner vie au
jeu qui n’existe jusqu’à
présent que sur du
papier. C’est aux programmeurs de rentrer en scène. Ces
derniers vont entrer des dizaines et des dizaines de lignes de
codes dans un ordinateur qui se chargera ensuite d’animer le
jeu. Ils vont donc rassembler tous les éléments qui ont été
définis précédemment et les mélanger pour créer une
expérience de jeu à part entière. Les jeux vidéo peuvent être
programmés sous différents moteurs, par exemple Unity
3D ou Unreal Engine. Les développeurs travaillent bien
souvent en équipe, car il faut un temps colossal pour animer
tout ce qui doit l’être. Du plus petit brin d’herbe, aux
personnages principaux en passant par l’interface, tout passe
entre les mains des développeurs qui doivent produire un
code viable et lisible. Ils doivent donc connaître sur le bout
des doigts plusieurs langages de programmation.

C’est aussi à ce moment que sont conçus les premiers


prototypes. Cela permet d’avoir une première idée de la
jouabilité du jeu et de son rendu final. C’est essentiel pour
tester certains aspects du gameplay ou des graphismes. Au
fur et à mesure que le projet avance, les prototypes sont de
plus en plus détaillés. Ils permettent aussi de faire
ressortir les défauts ou les points qui auraient besoin d’une
amélioration. On écarte ainsi les mauvaises pistes avant
même de les prendre.

6. Effectuer les tests et déployer le jeu

L’avant-dernière phase du
processus est celle des tests. Une
fois qu’une version finale du jeu
est disponible, elle est confiée à
des testeurs, mais aussi au public
lors d’alpha et de bêta. Ces
derniers ont pour mission de
jouer au jeu pendant plusieurs
semaines voire plusieurs mois
afin de faire remonter aux
développeurs d’éventuels bugs, surcharges de serveurs ou
autres problèmes qui leur auraient échappé. C’est une phase
très importante, essentielle même. C’est elle qui évite le
déploiement d’un jeu buggé qui serait un échec commercial.

Pour créer un jeu mobile, vous avez le choix entre de


nombreux outils tels que :

I. Unreal Engine est une option de choix avec des


fonctionnalités puissantes adaptées aux développeurs
expérimentés et débutants. ...
II. Unity, GameMaker, LÖVE sont des options iéales
pour créer des jeux sur Android.

Pour notre exemple de jeu video serpent nous allons utiluser


le logiciel Power Batch :
1er etape : Installer le logicil Powerbatch :

Extraire le package Powerbatch


Après avoir lu les conditions d’utilusation du logiciel,
Accepter et clicker sur suivant ;
Choisir ou sera stocker ou choisir le repertoire ou sera
placer les fichiers de votre applicatio ;
Faire suivant pour crée les raccourcis ;

Sélectionner les tâches complémentaires ;


Passer a l’installation.
Terminer l’installation.

Après l’installation passez a la confuguration de votre


logiciel :

Placer votre nom et le nom de votre entreprise ;


Après installation de Powerbatch il vous faut noter le code
avec precission pour la conception du jeu video ;

Voir le code :

@ECHO OFF
IF NOT EXIST BatBox.exe CALL :MakeBb_
IF NOT EXIST Terrain.txt CALL :MakeTerrain_
IF NOT EXIST Home.txt CALL :MakeHome_
IF NOT EXIST End.txt CALL :MakeEnd_
cls
SETLOCAL EnableDelayedExpansion
if %PROCESSOR_ARCHITECTURE%==x86 (
Set delay=10
set total=100
) else (
set delay=50
set total=200
)
ECHO Batch Snake game - par Darkbatcher
ECHO Loading...
ECHO * Graphic's module ...
::chargement du térrain
CALL :ScrFill_ Home " "
CALL :ScrFill_ End " "
CALL :ScrFill_ Game " "
ECHO SuccŠs
ECHO.
ECHO * Playground ...
ECHO - Home.txt
CALL :ScrLoad_ home Home.txt
ECHO - End.txt
CALL :ScrLoad_ End End.txt
ECHO - Terrain.txt
CALL :ScrLoad_ Game terrain.txt
ECHO Success
ECHO.
Set /P choice= Olingi obeta jeux na Tv mobimba to ya ndambu
(XP only) ? (Y/n)
if %choice%==n GOTO :Size
BATBOX /f 1
:Size
Mode con cols=80 lines=25
:Restart
set Screen=%Game%
Batbox /c 0x78
CALL :ScrDisp_ home
BATBOX /g 25 14 /c 0x72 /d " Start Game " /g 11 2 /a
176 /a 177 /a 178 /G 13 3 /a 219 /G 13 4 /a 2 /c 0x7A /g 25 15 /d "
Help " /g 25 16 /c 0x76 /d " Change difficulty " /c
0x7C /g 25 18 /d " Exit Game " /g 13 5 /a 25 /g 79 24
:MouseGet
FOR /F "tokens=1,2 delims=:" %%A in ('BatBox /M') DO (
SET clicY=%%B
SET clicX=%%A
)
if NOT %clicX% GEQ 24 GOTO :MouseGet
if NOT %clicX% LSS 54 GOTO :MouseGet
if NOT %clicY% GEQ 14 GOTO :MouseGet
if NOT %clicY% LSS 19 GOTO :MouseGet
if %clicY% EQU 15 call :Help
if %clicY% EQU 16 call :Difficulty
if %clicY% EQU 17 goto :MouseGet
if %clicY% EQU 18 GOTO:EOF
:: d‚claration de la pile
SET Pile=10:10,11:10,12:10
:: Position De la tˆte
SET PosX=12
SET PosY=10
:: Sens de d‚placement
SET X=1
SET Y=0
SET score=0
:: Affichage du serpent
COLOR 78
CALL :ScrPuts_ Screen 10 10 "ÛÛÛ"
CALL :ScrDisp_ Screen
BATBOX /c 0x22
CALL :NewSeed
SET key=0
:KeyGet
SET OldY=%Y%
SET OldX=%X%
BATBOX /w %delay% /k_
If %ERRORLEVEL%==335 goto :Bas
If %ERRORLEVEL%==332 goto :Droite
If %ERRORLEVEL%==327 goto :Haut
If %ERRORLEVEL%==330 goto :Gauche
If %ERRORLEVEL%==32 goto :Pause
GOTO :Next
:Gauche
REM L'utilisateur a press‚ la touche Q
SET X=-1
SET Y=0
goto :Next
:Haut
REM L'utilisateur a press‚ la touche Z
SET Y=-1
SET X=0
goto :Next
:Droite
REM L'utilisateur a press‚ la touche D
SET X=1
SET Y=0
goto :Next
:Bas
REM L'utilisateur a press‚ la touche S
SET X=0
SET Y=1
goto :Next
:Pause
Rem en cas de pause
Cls
COLOR 78
Call :ScrDisp_ Screen
BATBOX /G %etoileX% %etoileY% /c 0x7C /d "*" /c 0x78 /g 65
23 /d " Score : %score%"
BatBox /a 7 /k
BatBox /a 7
:Next
SET /A Sum=(%OldX%+%X%)+(%OldY%+%Y%)*2
IF %Sum%==0 (
SET X=%OldX%
SET Y=%OldY%
)
SET /A posX=%posX%+%X%
SET /a posY=%posY%+%Y%
CALL :ScrGetc_ Screen Char %posX% %posY%
IF "%char%"=="*" (
SET /A score+=1
CALL :NewSeed
) ELSE (
IF NOT "%char%"==" " GOTO :Loose
FOR /F "tokens=1,2,* delims=,:" %%A IN ("%pile%") DO (
SET Xend=%%A
SET Yend=%%B
SET pile=%%C
)
)
CALL :ScrPutc_ Screen %posX% %posY% "Û"
SET PILE=%PILE%,%posX%:%PosY%
CALL :ScrPutc_ Screen %Xend% %Yend% " "
BATBOX /G %posX% %posY% /c 0x22 /A 32 /c 0x72 /G %Xend%
%Yend% /A 32
::CALL :ScrDisp_ Screen
Goto :KeyGet

:Loose
COLOR 78
CALL :ScrPuts_ End 74 23 " "
CALL :ScrPuts_ End 74 23 %score%
CALL :ScrDisp_ End
:PurgeBuffer
BATBOX /k_
if NOT %ERRORLEVEL%==0 goto :PurgeBuffer
PAUSE>NUL
goto :Restart
GOTO:EOF

:Difficulty
COLOR 78
cls
ECHO Setting difficulty
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO. Nightmare Simple too young
to die
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ECHO.
ECHO. Difficulty : %%
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Valid º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set /a taux=100-(%delay%*100)/%total%
Set /a CursorPos=(73*(100-%taux%))/100+3
:MenuMouse
BATBOX /g %CursorPos% 11 /a 0xDB /g 39 14 /d " " /g 39 14 /d
"%taux%"
FOR /F "tokens=1,2 delims=:" %%A in ('BatBox /M') DO (
SET clicY=%%B
SET clicX=%%A
)
IF %clicY% EQU 11 (
IF %clicX% LSS 3 Goto :MenuMouse
IF %clicX% GTR 76 Goto :MenuMouse
BatBox /g %CursorPos% 11 /a 0x20
SET /a taux=100-^(^(%clicX%-3^)*100^)/73
SET CursorPos=%clicX%
GOTO :MenuMouse
)
IF %clicY% EQU 21 (
IF %clicX% LSS 27 Goto :MenuMouse
IF %clicX% GTR 47 Goto :MenuMouse
set /A delay=^(100-%taux%^)*%total%/100
GOTO :EOF
)
Goto :MenuMouse

:Help
COLOR 78
CLS
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Help º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ECHO.
ECHO - Rules :
ECHO.
ECHO * Hit (and eat) the snake food (the : *)
ECHO * Don't hit yourself or the wall bordering the
playground
ECHO.
ECHO Sounds simple isn't it ?
ECHO.
ECHO - Controls :
Batbox /d " * " /a 24 /d "," /a 25 /d "," /a 26 /d "," /a 26 /d " :
moves the snake" /a 13
ECHO * [SpaceBar] : Pauses the game
ECHO.
ECHO.
ECHO Please visit http://batch.xoo.it/ or
http://dos9.franceserv.com/ for support
ECHO.
ECHO So, are you ready ? the snake is waiting for
you ^^^!
PAUSE>NUL
GOTO:EOF
:NewSeed
Set /a etoileX=%random%%%78+1
Set /A etoileY=%random%%%22+1
CALL :ScrGetc_ Screen Char %etoileX% %etoileY%
IF NOT "%char%"==" " GOTO :NewSeed
CALL :ScrPutc_ Screen %etoileX% %etoileY% "*"
BATBOX /G %etoileX% %etoileY% /c 0x7C /d "*" /c 0x78 /g 65
23 /d " Score : %score%"
GOTO:EOF

:ScrFill_
FOR /l %%A IN (1,1,1850) DO (SET %1=!%1!%~2)
GOTO:EOF

:ScrDisp_
CLS
ECHO !%1!
GOTO:EOF

:ScrPuts_
SET /a ScrPos=80*%3+%2
CALL :Strlen_ Scrlong "%~4"
SET /a ScrEnd=%ScrPos%+%ScrLong%
SET %1=!%1:~0,%ScrPos%!%~4!%1:~%ScrEnd%!
GOTO:EOF

:ScrPutc_
SET /a ScrPos=80*%3+%2
SET /a ScrEnd=%ScrPos%+1
SET %1=!%1:~0,%ScrPos%!%~4!%1:~%ScrEnd%!
GOTO:EOF

:ScrGetc_
SET /a ScrPos=80*%4+%3
SET %2=!%1:~%ScrPos%,1!
GOTO:EOF

:ScrSave_
ECHO !%1!>%2
GOTO:EOF

:ScrLoad_
SET %1=
FOR /F "tokens=*" %%a IN (%~2) DO (
SET %1=!%1!%%a
)
GOTO:EOF

:STRLEN_
SET LibI=0
SET libCh=%~2
:strlBoucle
SET /a LibI+=1
SET LibLigne=!libCh:~0,%LibI%!
IF NOT "%LibLigne%"=="%libCh%" GOTO :strlBoucle
SET %1=%libI%
GOTO:EOF

:MakeBb_
for %%b in (
4d534346000000004f030000000000002c00000000000000030
1010001000000000000004700000001000100000600000000000
0
0000a440c6b82000626174626f782e657865008699d033000300
06434bb55441481461147ea36b90a6b3ac6e85118d90c7342b2f
b50b2bbb4b456b2eae5874b17177d69975776699fdb70c3a183b8
26950870e1eba88751582a2253a28061925d82108ebe0a1420b
128224249cde9b595d37043bd4db7dff7bef7befffdff7fff3cfb45f1a
040e001ce004d304f05180e2839d6510b5e6d0d31a78b4
7bae21cf85e61aba642523a475ad4f1753425454558d09bd92a06
755415185404744486931a9a9baf2f0c61ae1204088e3807bf8
b663035b049eabe2b82092024b499c5b94d8912d0328d0dd2c03
c1c67b7e0194537a730eb7c9dbb9650f3e17c024f7179bfdc7d2
144f8a0c6dbda340c861f3de2a97e928feb3c8ebb53e48d846fe4e
c3371c4cf72d827f98eebccb07136b14ac1682550c9616f0c8
064f35f3439fd0f1b74c8d94ef113cfdeca2a78f374670594f941df18
8bc31437e9c373e908df1c64fb229ded885d33c5779e30a
dae5711c96867148e02f62bac7b043d86c5db3884c61cfafb7133d8
8df4360688ad598eebb96c71bcc44710f63e4a593ca56d941
854937cb74df21aacda50b4f94d521585f0a4e2f3ab90a4a98adf6
68f77e8ebd979dd862e90b94b293bd2e2a30d05f5e59c78297
a50589e206e669915754f3006b22724b71e6634413fbcdd655abf0
1926ecc7c1c9bb2c16363e8b78ce4b09606fe2392fe5cab22f
72d57bc9c9792d937d32eaad44e7e6faf48af3c6677a95c76b302e
afa074f842b77ca2d8d74b6cf6fdb125d3fd9a9836602e5741
37c1317a90cce881a1f78c9b49807d9e8d19688c9db4fed01885586
df12e5dc777c9c078cc55c486d1cfbbb6bf7bed916e7f6757
532014023817ec3c1f0c1d3f664700ef70ce12ea1a6a1dae79143580
1a2af4db290f705a6211163b23aab1a4447144627e4dcd68
49a91dbf41a5489734c0da18d395de2c934a32feac9ed1f4b096519
8a2a934ab53126385e459359d656d549f94a474c9bc809249
27c56b56abfbc86912358f3a8b3a8fba80fab1c075a73c405a5754
1627afa74f6251d9f2c84d898a2aea7d198ca5018559787faf
6c7b19a6332d59f0a2b2bedd57ee37
) Do>>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
Echo WScript.StdOut.Write
Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
Cscript /b /e:vbs t.dat>batbox.ex_
Del /f /q /a t.dat
Expand -r batbox.ex_
Del /f /q /a batbox.ex_
GOTO:EOF

:MakeTerrain_
for %%b in (
4d5343460000000080000000000000002c0000000000000003
01010001000000000000004800000001000100ac070000000000
0000005b
418f8120007465727261696e2e747874005ceced9a3000ac07434
b3b79969a60b7022fd72e056a825da3268e9a386ae2a889a3268
e9a38
c84d44ad4bf7004d3c41617dba6713320000
) Do>>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
Echo WScript.StdOut.Write
Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
Cscript /b /e:vbs t.dat>terrain.tx_
Del t.dat
Expand -r terrain.tx_
Del terrain.tx_
GOTO:EOF

:MakeHome_
for %%b in (
4d5343460000000025010000000000002c00000000000000030
1010001000000000000004500000001000100ad0700000000000
000005b
41809a2000686f6d652e74787400ff33de36d800ad07434b3b799
69a60b7022fd72e056a825d48266e02031813c2574091439605d3
c872
98266e52d80426210454099c425102a5e11492124c13e18e82990d
b30259c926889da862a49908f1198a899b506dc1e66bd4f0407723
92
379142123d84d14cc4f4180e0a9b1bb1c7354926a28723161337a16
bda8442210471c435a17054c096e6145092149a1cae70a46a9e410
3
9b0801924da4be1bb50868d51a3571804c1c71e931382f313b55c13
d3137554157c139bfa0b228333da34441235953c125b1283b29b124
3923b548c1c8c0d008ab8927a85abbee0100
) Do>>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
Echo WScript.StdOut.Write
Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
Cscript /b /e:vbs t.dat>home.tx_
Del /f /q /a t.dat
Expand -r home.tx_
Del /f /q /a home.tx_
GOTO:EOF

:MakeEnd_
for %%b in (
4d5343460000000050010000000000002c00000000000000030
1010001000000000000004400000001000100ac0700000000000
000005c
41439c2000656e642e74787400167922630401ac07434bc5954b0
e82301086f726de6176dec18d87e008d205898211bcd82c9103e8c
23b
29d076660ac52234b649d3e79779fc6d9faf35cb1db69b1ad62cb5
24a22e34124bd04f880de2844bb42bfa605b25126ddbcf00b1c78
8ed
2c32fb5b22dbda0d4d6b89309b487ba7881eaf0dd1c4c589d21871
18468f8d144766c0a4d7e0cbcc2851cf23af26c6d39971dc205f280
8
ac0d524f0c854723527e659c44ead18c038826ab3a0d22370403
86fe4244a61022fae414e2350acd0dfaa4980544328a07ee47227f
811c
44389132630da3aeeb36ce548f5090fb208ba5ffdd99a4b8e5a94
aa1ccce979382accc771564151ce2de42f997361fe263e17fda40722
c
ae0af61dff0d
) Do>>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
Echo WScript.StdOut.Write
Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
Cscript /b /e:vbs t.dat>End.tx_
PAUSE
Del t.dat
Expand -r End.tx_
Del End.tx_
GOTO:EOF
Remarque : Pour bien utiluser Powerbatch il faut lire sur la
programmation Batch.

Quelques notions de base de la programmation Batch

Les fichiers batch sont des scripts de commandes qui


s'exécutent dans l'interpréteur de commande Windows. Alors
quelle pourrait être l'utilité d'écrire ces lignes de commande
dans un script ? En fait, il y a plusieurs raisons :

 éviter d'avoir à réécrire sans cesse les mêmes


commandes lors de tâches répétitives ;
 possibilité de créer de vrais petits « programmes »
facilitant les tâches qui doivent être réalisées via
l'interpréteur de commande.

Nous allons étudier les méthodes permettant de concevoir


ces programmes. Dans la suite de ce document, nous
utiliserons la convention suivante :

 les termes « interpréteur de commande » ou


« interpréteur » désignent l'exécutable « cmd.exe » ;
 dans les syntaxes de commande, les parties encadrées
avec les caractères [ et ] sont optionnelles, les parties
encadrées avec les caractères < et > sont à remplacer
par différentes informations à fournir (celles-ci seront
précisées avec la syntaxe) et les parties encadrées avec
les caractères { et } sont des parties à choix multiple où
chaque choix est séparé des autres avec le caractère |.

La convention syntaxique est la même que celle pour l'aide en


ligne de commande, ainsi il vous sera plus facile de la
comprendre.
L'éditeur de texte

Un simple éditeur de texte, tel que le notepad fourni avec


Windows, s'avère peu pratique pour écrire des scripts batch.
Pour exploiter pleinement les capacités de ces scripts, il faut
pouvoir encoder les caractères non anglophones comme les
accents ou le « ç » afin de pouvoir accéder aux fichiers dont
les noms comportent ce genre de caractères exotiques. La
plupart des éditeurs de texte encodent les fichiers avec le jeu
de caractères de la norme ANSI qui correspond à la langue
d'installation du système d'exploitation alors que
l'interpréteur de commande utilise une étendue de page de
code (aussi appelée Code Page) comme CP-850 qui est
l'encodage par défaut de l'interpréteur pour les systèmes
Windows installés en français (France).

Sous Windows, il y a un éditeur de texte que vous possédez


peut-être déjà, c'est Notepad++ (la version 5.9.x ou
supérieure est nécessaire) ; si ce n'est pas le cas, vous
pouvez le télécharger ici : http://notepad-plus-plus.org/fr/

Dans ce dernier, vous pourrez sélectionner l'encodage dans


le menu « Encodage > Codage de caractères », puis si vous
voulez le français par exemple : sélectionnez « Langues
d'Europe occidentale>OEM-850 ». Dans Notepad++, les code
pages sont appelés OEM-XXX, au lieu de CP-XXX, mais ce
sont les mêmes encodages. Il faut aussi noter que dans le
même menu que OEM-850, il y a OEM-863 : français ; c'est
bien du français, mais pour le Québec. Cette manipulation
sera à effectuer pour chaque script afin d'utiliser le bon
encodage, il n'est pas possible d'effectuer cette opération de
façon automatique dans Notepad++.
B. Encodage des caractères

La gestion des pages de code dans l'interpréteur se fait via


les commandes mode et chcp, ces commandes permettent
d'afficher le code page utilisé ou de le modifier en utilisant
l'une des syntaxes suivantes.

Définir le code page à utiliser (où <XXX> est le numéro


de code page).

mode con cp select=<XXX>

chcp <XXX>
Afficher le code page utilisé.

mode con cp [/status]

chcp

Le tableau 1 fournitune liste non exhaustive des


différents code pages utilisés par l'interpréteur de
commande.

Code
Description
Page
CP-437 pour le support des langues anglophones.
CP-720 pour le support des langues arabes.
CP-737 pour le support du grec.
CP-775 pour le support des langues baltes.
pour le support des langues d'Europe occidentale (mis à
jour par CP 858) dont le français (France), mais aussi
l'allemand, le basque, le catalan, le danois, l'espagnol, le
CP-850
finnois, l'italien, le néerlandais, le norvégien, le
portugais, le suédois, l'afrikaans, le faeroese, le flamand
et l'irlandais.
CP-852 pour le support des langues d'Europe centrale.
CP-855 pour le support de l'alphabet cyrillique.
CP-857 pour le support du turc.
pour le support des langues d'Europe occidentale, dont
le français (France), il s'agit d'une mise à jour de 1998
CP-858
basée sur CP-850 ou seul le symbole « € » a été ajouté
au point de code 0xD5.
CP-861 pour le support de l'islandais.
CP-863 pour le support du français (Québec).
CP-864 pour le support des langues arabes.
CP-866 pour le support de l'alphabet cyrillique.
CP-869 pour le support du grec.

Tableau 1 : Code Page


Il faut noter que malgré la mise à jour de CP-850 par CP-858,
l'encodage par défaut pour l'interpréteur sous Windows
installé en français (France) reste CP-850. Il est donc
préférable d'utiliser CP-850. La liste des code
pages supportés par un système Windows est disponible
dans le registre sous la
clé : HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage
. Vous noterez la présence de 1252 dans la clé précédemment
mentionnée, il s'agit de l'encodage Windows-1252 utilisé par
les API Windows et donc par la plupart des blocs-notes sur
les systèmes installés en français (France) ; cependant il
n'est pas recommandé de l'utiliser dans l'interpréteur de
commande du fait que les commandes ne sont pas faites pour
le supporter, il peut même provoquer des bogues dans
certains cas. L'encodage par défaut pour l'interpréteur peut
être trouvé via la valeur OEMCP de type REG_SZ toujours
dans la clé précédemment mentionnée.

Il est possible d'ajouter les Code Pages manquants (par


défaut, seuls les code pages correspondant à la langue
d'installation sont disponibles) en installant le pack de langue
correspondant à l'encodage voulu. Chaque pack de langue
comprend une table de conversion permettant à Windows de
convertir un point de code en sa représentation graphique et
donc de l'afficher. Il est aussi possible d'utiliser l'Unicode
(UCS-2 seulement) avec les sorties de commandes internes
de l'interpréteur pour permettre l'interaction avec les
programmes qui utilisent Unicode de manière « native » (pour
Perl par exemple) en appelant l'interpréteur via la commande
suivante (où <commande> est la commande à exécuter).

cmd /u <commande>

Dans Notepad++, les caractères absents du clavier peuvent


êtres rajoutés via le menu « Édition>Panneau des caractères
ASCII » puis double-clic sur le caractère voulu.

C. Hello World

Nous allons commencer par le traditionnel « hello world »,


dont voici le code (Script 1). Copiez le code dans Notepad++,
puis enregistrez-le avec l'encodage OEM-850 et l'extension
« .bat » ou « .cmd » (seulement sur les systèmes Vista et
supérieur).

@echo off
cls

rem Ceci est une remarque.


:: Ceci est un commentaire.

echo Hello World !!!! Déjà là ?


echo.
pause

Lorsqu'on exécute ce script en cliquant dessus, on obtient


l'affichage suivant.
Étudions la composition du script 1. La première ligne, @echo
off, est déjà intéressante, elle est composée :

 du préfixe @ qui sert à inverser l'état de l'affichage


standard ;
 de la commande echo qui sert à gérer l'affichage en
ligne de commande ;
 et du paramètre off qui sert à désactiver l'affichage
standard.

L'affichage standard définit ce que l'interpréteur de


commande affiche par défaut. Par exemple lors du lancement
de l'interpréteur de commande ci-dessous ; l'affichage
standard renvoie le chemin d'accès du répertoire courant,
soit C:\Users\Portable>.

Lors de l'exécution d'un script, l'affichage standard renvoie,


par défaut, le chemin d'accès du répertoire courant suivi de la
commande en cours d'exécution comme dans l'exemple ci-
dessous.

Le préfixe @, quand il est placé en début de ligne, sert à


inverser l'état de l'affichage standard (activé ou désactivé)
pour l'exécution de la commande qui le suit (pas seulement
pour la commande echo). Ce comportement prend fin une fois
la commande exécutée. Ainsi la commande @cd /d
"C:\Users\Portable\" ne sera affichée que si l'affichage
standard est désactivé. La syntaxe du préfixe @ est la
suivante (où <commande> est la commande à exécuter) :

@<commande>

La commande echo gère l'affichage dans l'interpréteur, elle


peut :

 modifier l'état de l'affichage standard ;


 afficher l'état de l'affichage standard ;
 afficher un message ou une ligne vide dans
l'interpréteur.

Désactiver l'affichage standard peut être fait via la syntaxe


suivante (seuls les erreurs et les messages de la
commande echo sont affichés).

echo off

Activer l'affichage standard peut être fait via la syntaxe


suivante (tout est affiché).

echo on

Utilisée sans paramètre, la commande echo renvoie l'état de


l'affichage standard en cours.

echo

Si l'on reprend le script 1, la ligne @echo off permet de


désactiver l'affichage standard sans que la commande soit
affichée. Sur la deuxième ligne du script 1, la
commande cls est utilisée pour vider la fenêtre de
l'interpréteur de son contenu, cette commande ne prend
aucun paramètre. Sa syntaxe est donc la suivante.

cls

La ligne suivante du script 1 est vide, elle ne sera donc pas


prise en compte lors de l'exécution du script permettant ainsi
de le rendre plus lisible. La quatrième ligne est composée de
la commande rem et d'une chaîne de caractères, cette
commande permet d'insérer des remarques dans son script.
Si et seulement si l'affichage standard est activé, la
commande rem sera affichée. La syntaxe de la
commande rem est la suivante (où <remarque> est la chaîne
de caractères à insérer en remarque).

rem <remarque>

La cinquième ligne du script 1, :: Ceci est un commentaire., est


composée du préfixe :: et d'une chaîne de caractères. Le
préfixe :: définit la chaîne de caractères qui le suit comme
étant un commentaire ; ce comportement prend fin au
premier retour à la ligne. Quel que soit l'état de l'affichage
standard, la chaîne de caractères préfixée par :: ne sera pas
affichée. La syntaxe est la suivante (où <commentaire> est le
commentaire à insérer).

::<commentaire>

Suit une autre ligne vide puis la commande echo Hello


World !!!! Déjà là ? qui affiche Hello World !!!! Déjà là ? dans la
fenêtre de l'interpréteur. La syntaxe suivante permet donc
d'afficher un message même si l'affichage standard est
désactivé (où <message> est le message à afficher).

echo <message>
Vient ensuite la commande echo. qui permet d'afficher la
ligne vide que l'on voit dans l'affichage obtenu. Si un point suit
directement la commande echo et qu'après le point il y a un
retour à la ligne, celle-ci affiche une ligne vide.

echo.

Sur la ligne suivante se trouve la commande pause qui met


en pause l'exécution du script jusqu'à ce que l'utilisateur
appuie sur une touche quelconque du clavier, elle affiche le
message Appuyez sur une touche pour continuer… (quel que
soit l'état en cours de l'affichage standard) et ne prend aucun
paramètre. Dans le script 1, cette commande permet de
visualiser le contenu de la fenêtre de l'interpréteur avant que
celle-ci ne se ferme.

pause
Annexe 1. Représentation des
Connaissances et Raisonnement
Automatique
Définition : La représentation des connaissances et le
raisonnement automatique font partie de l'intelligence
artificielle symbolique. La représentation des connaissances
incorpore certains résultats de la psychologie sur la façon
dont les humains résolvent les problèmes et représentent les
connaissances.

Le raisonnement automatique intègre des principes de la


logique pour automatiser divers types de raisonnement, tels
l'application de règles ou les relations d'ensembles et de
sous-ensembles.

Les exemples de formalisme de représentation des


connaissances symboliques comprennent les réseaux
sémantiques, les représentations par cadres sémantiques,
les règles et les ontologies. Les exemples de raisonnement
automatique comprennent les moteurs d'inférence, les
démonstrateurs de théorèmes et les classificateurs.

En intelligence artificielle, les systèmes physiques ou virtuels


évoluant de manière autonome doivent être pourvus de
capacités de représentation de leur environnement et de
raisonnement. L’axe thématique « Représentation des
connaissances et raisonnements » se consacre à l’étude
(l’identification, la modélisation, la représentation et
l’implémentation) des différents types d’informations
(connaissances, croyances, préférences, actions, etc.) et de
raisonnements nécessaires au développement de tels
systèmes.

Des langages logiques (propositionnels, modaux, pondérés,


etc.) et des modèles graphiques (réseaux bayésiens,
systèmes d’argumentation abstraits, réseaux conceptuels,
etc.) sont utilisés pour représenter les différentes
informations (qualitatives ou numériques) disponibles. Le
choix du langage de représentation des connaissances est
crucial pour obtenir des propriétés désirables en termes
d’expressivité, d’efficacité spatiale, de complexité
algorithmique, etc. Une fois le langage de représentation fixé
et le raisonnement souhaité modélisé, il s’agit de concevoir
des méthodes pratiques pour réaliser ce raisonnement, et
s’intéresser aux aspects calculatoires de ces méthodes,
éléments importants afin de juger de leur utilisation pratique.
Les recherches menées au sein de l’axe « Représentation de
connaissances et raisonnements » s’articulent notamment
autour des thématiques et problématiques suivantes :

Dynamique des croyances

Développement d’approches permettant l’actualisation


des croyances d’un agent en fonction de nouvelles
informations (théorie du changement de croyances,
rationalité, opérateurs de mise à jour et de révision de
croyances, logiques pour le changement de croyances,
etc.).

Argumentation

Étude de systèmes d’argumentation (théorie de


l’argumentation, sémantiques pour l’argumentation
abstraite, sémantiques à base d’extensions, sémantiques
à base de classement, révision et agrégation de
systèmes d’argumentation, systèmes de délibération,
etc.).
Raisonnement épistémique, raisonnement sur les
actions

Conception d’approches pour le raisonnement sur


l’action et le changement dans le contexte d’un système
dynamique multi-agents (logiques modales, logique
épistémique, logique dynamique, etc.).

Fusion d’informations

Étude d’approches de fusion d’informations multi-


sources possiblement conflictuelles (opérateurs de
fusion de croyances, opérateurs à base de distance,
agrégation de préférences, évaluation de la fiabilité des
sources, agrégation de jugements, décisions collectives,
etc.).

Gestion des informations conflictuelles

Développement de méthodes pratiques de restauration


de la cohérence et d’interrogation à partir bases
inconsistantes totalement ou partiellement ordonnées.
Développement des mesures d’incohérence, qui
permettent de mesurer à quel point plusieurs
informations sont en conflit.

Ontologies et logiques de description

Étude de formalismes d’ontologies formelles à partir de


logiques de description afin de prendre en compte les
priorités ou l’incertitude lors de la représentation des
connaissances ou encore un raisonnement révisable
(raisonnement en présence d’incohérence, logiques
possibilistes, logiques de description non monotones,
logiques de description “légères”, complétion
d’ontologies, etc.).

Modèles graphiques et incertitude

Conception de formalismes à base de modèles


graphiques pour la représentation et le raisonnement à
partir d’informations incertaines ou imprécises (réseaux
bayésiens, théorie des possibilités, réseaux
possibilistes, etc.).

Raisonnement spatio-temporel

Étude de formalismes permettant de raisonner sur des


connaissances temporelles et spatiales représentées
qualitativement (formalismes qualitatifs, représentation
symboliques, langages relationnels, etc.).

Espaces conceptuels

Développement d’approches pour l’apprentissage de


représentations d’espaces conceptuels et raisonnement
à partir d’espaces conceptuels. Application au traitement
automatique de la langue.

Compilation

Développement d’approches et de modèles pour la


compilation de connaissances (cartes de compilation de
connaissances, langages de représentation,
expressivité, compacité, complexité). Application à la
configuration de produits.
Raisonnement automatisé
Le raisonnement automatisé est un domaine de l'informatique
consacré à la compréhension des différents aspects du
raisonnement de manière à permettre la création de logiciels
qui permettraient aux ordinateurs de « raisonner » de
manière automatique, ou presque.

Les sous-domaines les plus développés du raisonnement


automatisé sont probablement l'assistant de preuve (qui en
pratique se trouve être plus pragmatique mais moins
automatisé que sa théorie), la démonstration automatique de
théorèmes et la vérification de preuve (procédé qui garantit
un raisonnement correct en se basant sur l'axiome selon
lequel les hypothèses fournies sont justes). Récemment, l'on
a proposé le raisonnement continu pour réduire la complexité
nécessaire pour analyser des systèmes de large échelle.
Cependant, un travail énorme a été fourni dans le
raisonnement par analogie, induction et abduction. D'autres
sujets importants sont aussi le raisonnement sous les
contraintes de l'incertitude et le raisonnement non-monotone.
Une partie importante du raisonnement sous la contrainte de
l'incertitude est l'argumentation, sous des contraintes de
minimalité et de cohérence, appliquée au sommet des
déductions automatisées tout ce qu'il y a de plus standard. Le
système d'Oscar de John Pollock (en) est un exemple
d'argumentation automatisée bien plus spécifique qu'un
« simple » assistant de preuve de théorème. L'argumentation
formelle est un sous-domaine de l'intelligence artificielle.
Les outils et techniques du raisonnement automatisé incluent
les logiques et les calculs classiques de la preuve
automatique de théorème, mais aussi la logique floue,
l'inférence bayésienne, le raisonnement par le principe
d'entropie maximale et un grand nombre de techniques ad-
hoc moins formelles.
Annexe 2. Apprentissage Automatique
L'apprentissage automatique (machine learning en
anglais) est un champ d'étude de l'intelligence artificielle qui
vise à donner aux machines la capacité d'« apprendre » à
partir de données, via des modèles mathématiques.

Les trois types d'apprentissage automatique

On distingue trois techniques de Machine Learning


: l'apprentissage supervisé, l'apprentissage non-supervisé, et
l'apprentissage par renforcement.

Les 4 styles d'apprentissage

Style d'apprentissage identifié à partir de quatre styles issus


de la combinaison de deux dimensions bipolaires : concret-
abstrait, action-réflexion :

 Style convergent (abstrait-action)


 Style divergent (concret-réflexion)
 Style assimilateur (abstrait-réflexion)
 Style accommodateur (concret-action)

Les 4 étapes de l’apprentissage (Et comment bien les


gérer)

Lors de tout apprentissage que ce soit à l’école, dans un


sport, au travail, ou dans n’importe qu’elle situation de la vie
quotidienne, il y a plusieurs étapes. Il est important de les
connaître afin de savoir les appréhender et de comprendre
comment nous assimilons les nouvelles informations. Ainsi,
vous saurez pourquoi parfois vous avez l’impression de
stagner, voire même de régresser, en dépit de vos efforts et
de votre investissement.
Ne vous est-il jamais arrivé d’avoir beaucoup révisé pour un
examen, et peu de temps avant l’épreuve, avoir l’impression
que vous ne savez plus rien, que tout se bouscule dans votre
tête ? Et bien cela fait partie de l’apprentissage. Et c’est même
un bon signe ! (voir l’étape 4) L’apprentissage et les progrès
ne se font pas en un jour. Il faut être patient.

Les étapes de l’apprentissage sont au nombre de 4 :


 Inconsciemment incompétent
 Consciemment incompétent
 Consciemment compétent
 Inconsciemment incompétent

Etape 1 : Inconsciemment incompétent + « Je ne sais


pas que je ne sais pas »

Cette phase peut se résumer comme cela : « Je ne sais pas


que je ne sais pas. » (Non non il n’y a pas d’erreur de frappe
!). Vous venez de découvrir une nouvelle activité ou de
nouvelles connaissances et vous ne savez pas que vous
n’avez pas encore les compétences nécessaires. Prenons
l’exemple, de l’un de vos premiers apprentissages : marcher.
Lorsque vous étiez tous petits, avant de voir une personne
marcher debout, vous ne saviez pas que vous ne saviez pas
marcher. Vous ne connaissiez pas ce mode de déplacement.
A ce moment là vous étiez Inconsciemment-incompétent
pour marcher.

Etape 2 : Consciemment incompétent + « Je sais que je


ne sais pas »

Cette phase, se caractérise par une prise de conscience des


efforts qu’il faudra réaliser pour acquérir la nouvelle
compétence. Elle peut procurer une motivation importante à
l’idée de commencer un nouveau projet et d’apprendre de
nouvelles choses. En reprenant notre exemple de
l’apprentissage de la marche, vos parents ont essayé de vous
apprendre à marcher, en vous tenant, en vous guidant, en
vous montrant, et c’est à ce moment là que vous avez pris
conscience de la difficulté de marcher. Vous vous êtes rendu
compte que vous ne maîtrisiez pas cette nouvelle
compétence et que vous aviez de grandes difficultés à rester
debout. A certains moments lors de cette phase vous pouvez
vous sentir découragés et dire « Je n’y arriverai jamais », «
C’est au dessus de mes moyens »… Dites-vous que tout le
monde doit en passer par là et que ça fait partie de tout
apprentissage. On peut résumer cette étape par « Je sais que
je ne sais pas ».

Etape 3 : Consciemment compétent + « Je sais que je


sais »

Maintenant que vous avez acquis les compétences


nécessaires (vous savez marcher) vous les appliquez de
façons scolaires : vous devez y penser pour le faire
correctement. Vous devez consacrer toute votre attention
pour mettre en œuvre vos compétences. Dès que vous
arrêtez d’y penser, les résultats deviennent moins bons. Dans
notre exemple, vous devez vous concentrer et penser à
mettre une jambe devant l’autre et à équilibrer votre corps
pour marcher. Si vous relâchez votre attention, vous
commencer à ne plus marcher droit ou à avoir le pas
hésitant. Cette étape est souvent source de démotivation car
elle semble longue et paraît ne jamais finir. Il faut faire de
nombreux efforts pour rester concentrés et les résultats ne
nous semblent pas toujours à la hauteur de nos espérances.

C’est en faite une des phases la plus importante car elle


constitue le coeur même de l’apprentissage. Afin de rester
motivés, il faut faire preuve de patience, de détermination et
d’abnégation. Le saint graal de l’apprentissage n’est pas loin !
Comme je l’évoquais dans l’introduction, parfois la transition
entre les étapes 3 et 4, se traduit pas une impression de ne
plus rien savoir et que tout se mélange dans notre tête. Cette
phase est temporaire et est le signe que nous passons à
l’étape supérieure. Bien que cela soit déstabilisant sur le
moment, gardez en tête que la 4e étape vous tend les bras!

Etape 4 : Inconsciemment compétent + « Je ne sais


pas que je sais »

Ça y est vous y êtes ! Vos efforts ont fini par être


récompensés. Vous savez marcher et vous n’avez même pas
à y penser. Lorsque vous avez atteint cette étape, tous les
automatismes se sont mis en place. Vous connaissez les
informations, vous savez faire les choses sans avoir besoin
d’y penser. Les 3 étapes précédentes ont porté leurs fruits.
Vous y ressentez la sensation grisante que vous maîtrisez la
compétence. Vous êtes à l’aise et efficace. Pour la plupart des
choses du quotidien vous êtes dans cette phase : vous
conduisez votre voiture sans y penser, vous lisez sans y
prêter attention… Ces 4 étapes sont les mêmes pour tous les
apprentissages de la vie quotidienne. Il est important que
vous ayez ces différentes phases en tête afin d’évaluer à
quelle étape vous vous trouvez et anticiper les difficultés
futures. Le rôle du professeur, du supérieur, du coach ou du
mentor sera de faire en sorte que « l’élève » passe d’une
étape à l’autre dans les meilleures conditions et sans se
décourager. Il doit l’accompagner tout au long de ce voyage.

Les réseaux de neurones artificiels

Nous discutons à présent les réseaux de neurones artificiels :


un modèle qui, au cours des soixante dernières années, s’est
incarné sous différentes formes, a suscité des attentes
parfois démesurées, est retombé dans l’oubli (relatif), mais a
fini par surpasser la concurrence sur certains problèmes au
point d’être souvent synonyme d’Intelligence Artificielle dans
le discours public.

Le perceptron (neurone artificiel)

Notre histoire commence dans les années 1950 lorsque Frank


Rosenblatt, psychologue américain, propose un des premiers
algorithmes de l’apprentissage automatique : le perceptron.
Ses travaux font suite à la première modélisation du neurone
biologique proposée par Walter Pitts et Warren McCulloch en
1943. Rosenblatt propose un algorithme permettant d’adapter
les paramètres du modèle d’un neurone en fonction
d’exemples d’apprentissage. Voici un extrait de l’introduction
de son rapport de recherche de 1957 intitulé “The Perceptron,
a perceiving and recognizing automaton” :
“Since the advent of electronic computers and modern servo
systems, an increasing amount of attention has been focused
on the feasibility of constructing a device possessing such
human-like functions as perception, recognition, concept
formation, and the ability to generalize from experience. In
particular, interest has centered on the idea of a machine
which would be capable of conceptualizing inputs impinging
directly from the physical environment of light, sound,
temperature, etc. + the "phenomenal world" with which we
are all familiar + rather than requiring the intervention of a
human agent to digest and code the necessary information. A
primary requirement of such a system is that it must be able
to recognize complex patterns of information which are
phenomenally similar, or are experimentally related + a
process which corresponds to the psychological phenomena
of "association" and "stimulus generalization". The system
must recognize the "same" object in different orientations,
sizes, colors, or transformations, and against a variety of
different backgrounds.”

En langage moderne, l’objectif est bien de résoudre des


problèmes de classification super-

FIGURE 1+ Modèle de perceptron de Rosenblatt : y = 1 si w0 +


Pd i=1 wi xi > 0; y = −1 sinon.
visée à partir d’observations qui seraient des images ou des
sons. Une telle présentation du perceptron est très optimiste,
mais, par certains aspects, les réseaux de neurones
convolutifs apparus il y a quelques années commencent à
atteindre cet objectif. Nous allons présenter le perceptron
comme un classifieur biclasse. Comme l’illustre la figure 9.1,
le perceptron admet d valeurs scalaires (x 1 ,x 2 ,...,x d ) en
entrée, et retourne en sortie 1 ou -1 selon le signe de w0 +
w1x 1 + ...wd x d , où w0,...,wd sont les paramètres du modèle.
En langage moderne, le perceptron calcule de quel côté d’un
hyperplan affine se situe une observation x = (x 1 ,...,x d ). Il
s’agit donc d’un classifieur linéaire. Les d +1 poids wi doivent
être adaptés selon les exemples d’apprentissage. Même si sa
représentation graphique évoque le neurone biologique (ou
en tout cas un modèle assez grossier de neurone), le
perceptron se contente juste de mettre en œuvre un
classifieur linéaire.

Algorithme d’apprentissage du perceptron


La base d’exemples est formée de N observations étiquetées
(xn, yn)1ÉnÉN , où pour tout n, xn ∈ R d et yn ∈ {−1,1}. Quitte à
considérer xn ∈ R d+1 avec une première composante x 0
égale à 1, on peut toujours se ramener à des hyperplans de R
d+1 d’équation w · x. On adoptera cette convention pour
alléger les notations. L’algorithme d’apprentissage du
perceptron, permettant d’adapter les poids w en fonction de
la base d’exemples, est le suivant :
Ici, signe(z) = −1 si z < 0, et signe(z) = 1 sinon. À chaque étape,
l’algorithme compare la « vraie étiquette » yn et l’étiquette
prédite ybn par le perceptron sur une observation xn, cette
étiquette étant calculée à l’aide de l’estimation courante des
poids w. Si ycn ne correspond pas à yn, les poids du
perceptron sont mis à jour. L’algorithme est donc error-
driven (les mises à jour visent à corriger les erreurs), et
online (les exemples sont présentés successivement).

Théorème (Novikoff 1962) Si les observations étiquetées sont


linéairement séparables, alors l’algorithme du perceptron
aboutit en un nombre fini d’étapes aux paramètres d’un
hyperplan séparateur

Démonstration Soit w définissant un hyperplan séparateur


des deux classes (qui existe par hypothèse). Les poids du
perceptron correspondant sont définis à une constante
multiplicative près (seul le signe de w · xn importe), on
suppose donc sans perte de généralité ∥w∥2 = 1. Chaque
hyperplan séparateur définit une marge entre les deux
classes comme la plus petite distance entre les observations
de chaque classe et l’hyperplan. Rappelons que la distance
entre une observation x et l’hyperplan défini par w est |w ·
x|/∥w∥2. La marge γ est donc γ = min1ÉnÉN ynw · xn car on
suppose ∥w∥2 = 1. Notons également R = max1ÉnÉN ∥xn∥2.
Considérons la k-ème erreur de l’algorithme, commise sur
l’observation étiquetée (xn, yn). On a : ynwk · xn < 0 (car yn et
wk · xn ont des signes différentes), et la mise à jour s’écrit
wk+1 = wk + ynxn. D’une part : wk+1 ·w = wk ·w + ynxn ·w Ê wk
·w +γ par définition de γ. Donc par récurrence : wk+1 ·w Ê kγ
car w0 = 0. D’autre part : ∥wk+1∥ 2 2 = ∥wk + ynxn∥ 2 2 = ∥wk ∥
2 2 + 2ynxn · wk + ∥xn∥ 2 2 É ∥wk ∥ 2 2 + R 2 car ynwk · xn < 0
et ∥xn∥ 2 2 É R 2 . Donc par récurrence : ∥wk+1∥ 2 2 É kR2.
Comme ∥w∥2 = 1, wk+1 ·w/∥wk+1∥2 est le cosinus de l’angle
formé par les vecteurs wk+1 et w. Nous déduisons des deux
inégalités précédentes, pour tout k : p kγ/R É wk+1 ·w/∥wk+1∥2
É 1 Autrement dit, au cours des mises à jour l’hyperplan défini
par le perceptron (paramètre wk ) tend à s’aligner sur
l’hyperplan séparateur de paramètre w, car le cosinus de leur
angle se rapproche de 1. Par ailleurs, p kγ/R É 1, donc k É R 2
/γ 2 : cela signifie que le nombre de mises à jour est au plus
R 2 /γ 2 avant que le perceptron ne fasse plus d’erreurs.

La démonstration nous indique que plus la marge γ entre les


deux classes à discriminer est grande (relativement à R),
plus la convergence est rapide. Le nombre de mises à jour
est indépendant de la dimension d, ainsi que du nombre
d’observations N. Cela ne signifie

FIGURE 2 + Perceptron : ambiguïté de l’hyperplan séparateur


obtenu. Selon l’hyperplan retenu, une observation non
étiquetée sera associée à une classe ou à l’autre.

Pas que la vitesse de convergence est indépendante de N, car


plus N est grand plus on peut mettre de temps à « tomber »
sur les erreurs de classification permettant la mise à jour. Si
les données ne sont pas séparables, l’algorithme ne converge
pas. Il faut alors arrêter après un certain nombre de parcours
des données. Un parcours de la base d’apprentissage en
entier est appelé époque, ou epoch. L’algorithme
d’apprentissage du perceptron nous fournit un des
hyperplans séparateurs, de manière relativement arbitraire
(cela dépend de l’ordre de parcours des observations).
Comme l’illustre la figure 2, l’indétermination pose problème
pour la prédiction de la classe de nouvelles observations.

Vous aimerez peut-être aussi