Une introduction à l’IA: les systèmes experts#
Qu’est-ce que l’IA?#
résoudre des problèmes?
prendre des décisions?
produire du sens? le manipipuler?
IA forte ou faible
Quelques pistes selon Russel et Norvig#
humain ou rationnel
pensée vs comportement
Faire des choses comme les font les êtres humains
une idée pas formellement définie
se concentrer sur le comportement
une interprétation du test de Turing
se concentrer sur le résultat
Penser comme un être humain
se concentrer sur les processus de pensée
se concentrer sur l’imitation de l’humain
Faire des choses rationnelles
se conceptrer sur le comportement
se concentrer sur les processus qui déterminent le comportement
Penser de manière rationnelle
la logique aristotélicienne
Capacités vs allignement#
La machine fait ce qu’on lui demande de faire
La machine fait ce qu’on attend d’elle
On peut avoir une machine qui exécute exactement nos instructions, mais qui produit des résultats qui ne sont pas allignés avec nos attentes.
Exemple
Le bot raciste.
Approches logiciste, symbolique ou connectiviste#
représentation des connaissances et logique propositionnelle (symbolique et logique)
déduction vs induction (symbolique et logique vs connectiviste)
Un peu d’histoire#
Les débuts
une vieille histoire (Lulle, Leibniz, Pascal, Turing…)
Les modèles d’aprentissage (perceptron, 1943)
Période “Look, Ma, no hands” (McCarthy)
Darmouth workshop (1956)
On peut tout modéliser
Ce n’est pas si facile que ça… (1960-1980)
problème d’échelle (combinatorial explosion)
limites de force de calcul
limites de modélisation
Systèmes experts
l’intelligence artificielle “faible”
règles
déduction
Le succès de l’aprentissage (1980-aujourd’hui)
plus de données
plus de force de calcul
induction!
approches statistiques et probabilistes
Un exemple#
Je veux décider si un animal est un mammifère.
Je vais faire la liste des caractéristiques des mammifères à partir de la définition donnée sur Wikipédia qui est la suivante:
Les Mammifères (Mammalia) sont une classe d’animaux vertébrés caractérisés par la présence de fourrure (excepté pour certains mammifères marins), d’une oreille moyenne comportant trois os, d’un néocortex et de glandes mammaires, dont les représentants femelles nourrissent leurs juvéniles à partir d’une sécrétion cutanéo-glandulaire spécialisée appelée lait (on dit alors qu’elles allaitent). Mammifère, Wikipédia
On peut donc modéliser de façon formelle. Un mammifère est un animal qui a les caractéristiques suivantes:
fourrure
oreille moyenne avec 3 os
néocortex
glandes mammaires
Maintenant on va créer un tableau avec tous les animaux et on va spécifier la présence ou l’absence de ces caractéristiques.
Par exemple:
Animal |
Fourrure |
Oreille moyenne |
Néocortex |
Glandes mammaires |
|---|---|---|---|---|
Chien |
1 |
1 |
1 |
1 |
Chat |
1 |
1 |
1 |
1 |
Oiseau |
0 |
0 |
1 |
0 |
Singe |
1 |
1 |
1 |
1 |
Souris |
1 |
1 |
1 |
1 |
Serpent |
0 |
0 |
0 |
0 |
Baleine |
0 |
1 |
1 |
1 |
Lapin |
1 |
1 |
1 |
1 |
Saumon |
0 |
0 |
0 |
0 |
Thon |
0 |
0 |
0 |
0 |
Poisson-lune |
0 |
0 |
0 |
0 |
Requin |
0 |
0 |
0 |
0 |
Grenouille |
0 |
0 |
0 |
0 |
… |
… |
… |
… |
… |
animals_list = [
{
"Animal": "Chien",
"Fourrure": 1,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Chat",
"Fourrure": 1,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Oiseau",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 1,
"Glandes mammaires": 0
},
{
"Animal": "Singe",
"Fourrure": 1,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Souris",
"Fourrure": 1,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Serpent",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
},
{
"Animal": "Baleine",
"Fourrure": 0,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Lapin",
"Fourrure": 1,
"Oreille moyenne": 1,
"Néocortex": 1,
"Glandes mammaires": 1
},
{
"Animal": "Saumon",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
},
{
"Animal": "Thon",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
},
{
"Animal": "Poisson-lune",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
},
{
"Animal": "Requin",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
},
{
"Animal": "Grenouille",
"Fourrure": 0,
"Oreille moyenne": 0,
"Néocortex": 0,
"Glandes mammaires": 0
}
]
for animal in animals_list:
if animal['Animal'] == "Grenouille":
print(animal['Animal'])
else:
print("Ce n'est pas une grenouille")
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Ce n'est pas une grenouille
Grenouille
def is_mammal(name):
my_animal = [a for a in animals_list if a['Animal'] == name][0]
if my_animal['Fourrure'] == 1 and my_animal['Oreille moyenne'] == 1 and my_animal['Néocortex'] == 1 and my_animal['Glandes mammaires'] == 1:
return True
else:
return False
is_mammal('Chat')
True
Agents basés sur la connaissance (knowledge-based agents)#
représentation formelle de la connaissance
axiomes
règles
Prise de décision basée sur des connaissances#
Un exemple: est-ce que je dois prendre mon parapluie aujourd’hui?
On doit formaliser un certain nombre de choses:
Je ne veux pas me mouiller
S’il pleut, je vais me mouiller
Si j’ai un parapluie, je ne vais pas me mouiller
Mon système dans ce cas peut être très simple:
Puisque mon objectif est de ne pas me mouiller et que si je prends le parapluie je ne vais pas me mouiller, alors il faut que je prenne toujours le parapluie!
Mais… peut-être avais-je oublié une autre proposition…
Avoir un parapluie n’est pas confortable, donc je ne veux prendre le parapluie que si c’est nécéssaire.
Il en suivra le système suivant:
s’il pleut, prends le parapluie
S’il pleut pas, ne prends pas de parapluie
def take_ombrella(rain):
if rain:
return True
else:
return False
rain = False
take_ombrella(rain)
False
rain = True
take_ombrella(rain)
True
Limites#
Comment je fais pour savoir s’il pleut? Et si la pluie s’arrête dès que je sors?
Je dois donc ajouter des règles?
Est-ce que je suis capable d’identifier toutes les conditions? (Où vais-je? Pour combien de temps? Que signifie “se mouiller”? Est-ce qu’une goutte de pluie suffit?, De quelle taille est mon parapluie? Quelles sont les facteurs qui me permettent de savoir s’il va plevoir ou pas?…)
On peut arriver à des arbres de décision très complexes:
Est-ce qu'il pleut ?
/ \
Oui / \ Non
/ \
Prendre un parapluie Y a-t-il des prévisions de pluie ?
/ \
Oui Non
/ \
Humidité > 80% ? Y a-t-il des nuages menaçants ?
/ \ / \
Oui Non Oui Non
/ \ / \
Prendre un parapluie Y a-t-il des prévisions d'orage ? Température < 10°C ?
/ \ / \
Oui Non Oui Non
/ \ / \
Je vais à un événement extérieur ? Prendre un parapluie
/ \
Oui Non
/ \
Est-ce un événement long ? Température > 10°C ?
/ \ / \
Oui Non Oui Non
/ \ / \
Prendre un parapluie Ne pas prendre Prendre un parapluie Ne pas prendre
de parapluie de parapluie de parapluie
Condition |
Action |
|---|---|
Il pleut |
Prendre un parapluie |
Il y a des prévisions de pluie pour la journée |
Prendre un parapluie |
Humidité > 80% |
Prendre un parapluie |
Température < 10°C et possibilité de pluie |
Prendre un parapluie |
Il y a des nuages menaçants et des prévisions de pluie |
Prendre un parapluie |
Prévisions d’orage ou de tempête |
Prendre un parapluie |
Je vais à un événement en extérieur (pique-nique, concert, festival) avec risque de pluie |
Prendre un parapluie |
Je vais faire du shopping et je préfère rester au sec |
Prendre un parapluie |
Je fais une promenade longue (plus de 30 minutes) |
Prendre un parapluie (pour le retour) |
Je suis dans une région où il pleut souvent à cette période de l’année |
Prendre un parapluie |
Je vais visiter une zone à forte probabilité de pluie |
Prendre un parapluie |
Je porte des vêtements légers et je veux éviter qu’ils se mouillent |
Prendre un parapluie |
Je préfère être prudent si je ne suis pas sûr de la météo |
Prendre un parapluie |
Il fait beau et sec, et je n’ai pas de plans en extérieur |
Ne pas prendre de parapluie |
Je suis pressé et je ne peux pas retourner à la maison si je me fais mouiller |
Ne pas prendre de parapluie |
Il y a des alertes de conditions extrêmes (ex. inondations) |
Prendre un parapluie |
J’ai des antécédents de maladies liées au froid ou à l’humidité |
Prendre un parapluie |
Je fais une activité physique intense à l’extérieur (course, randonnée) et il y a des risques de pluie |
Prendre un parapluie (pour le retour) |
Je suis sensible aux changements de température et je prévois de rester longtemps à l’extérieur |
Prendre un parapluie |
J’ai une préférence personnelle pour ne pas être mouillé, peu importe la situation |
Prendre un parapluie |
Les prévisions météo indiquent une tendance à la pluie dans les jours suivants |
Prendre un parapluie |
Ou encore:
Condition |
Action |
|---|---|
Il pleut |
100% prendre un parapluie |
Il y a des prévisions de pluie pour la journée |
100% prendre un parapluie |
Humidité > 80% |
90% prendre un parapluie |
Température < 10°C et possibilité de pluie |
85% prendre un parapluie |
Il y a des nuages menaçants et des prévisions de pluie |
80% prendre un parapluie |
Prévisions d’orage ou de tempête |
95% prendre un parapluie |
Je vais à un événement en extérieur (pique-nique, concert, festival) avec risque de pluie |
90% prendre un parapluie |
Je vais faire du shopping et je préfère rester au sec |
75% prendre un parapluie |
Je fais une promenade longue (plus de 30 minutes) |
80% prendre un parapluie (pour le retour) |
Je suis dans une région où il pleut souvent à cette période de l’année |
85% prendre un parapluie |
Je vais visiter une zone à forte probabilité de pluie |
80% prendre un parapluie |
Je porte des vêtements légers et je veux éviter qu’ils se mouillent |
70% prendre un parapluie |
Je préfère être prudent si je ne suis pas sûr de la météo |
90% prendre un parapluie |
Il fait beau et sec, et je n’ai pas de plans en extérieur |
10% prendre un parapluie |
Je suis pressé et je ne peux pas retourner à la maison si je me fais mouiller |
20% prendre un parapluie |
Il y a des alertes de conditions extrêmes (ex. inondations) |
95% prendre un parapluie |
J’ai des antécédents de maladies liées au froid ou à l’humidité |
85% prendre un parapluie |
Je fais une activité physique intense à l’extérieur (course, randonnée) et il y a des risques de pluie |
80% prendre un parapluie (pour le retour) |
Je suis sensible aux changements de température et je prévois de rester longtemps à l’extérieur |
75% prendre un parapluie |
J’ai une préférence personnelle pour ne pas être mouillé, peu importe la situation |
90% prendre un parapluie |
Les prévisions météo indiquent une tendance à la pluie dans les jours suivants |
80% prendre un parapluie |
Problème!!!
Et cela, juste pour décider si je dois prendre un parapluie! Que se passe-t-il si je dois décider comment conduire une voiture? Avec tous les cas possibles? Toutes les variables en jeu?