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

  1. 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

  1. Penser comme un être humain

  • se concentrer sur les processus de pensée

  • se concentrer sur l’imitation de l’humain

  1. Faire des choses rationnelles

  • se conceptrer sur le comportement

  • se concentrer sur les processus qui déterminent le comportement

  1. 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:

  1. fourrure

  2. oreille moyenne avec 3 os

  3. néocortex

  4. 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:

  1. Je ne veux pas me mouiller

  2. S’il pleut, je vais me mouiller

  3. 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:

  1. s’il pleut, prends le parapluie

  2. 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?