---
header-includes:
  - \usepackage[T1]{fontenc}
  - \usepackage[french]{babel}
  - \usepackage{datetime}
  - \usepackage{hyperref}
---

# Semaine 3: Les systèmes experts à base de règles

Lecture principale: Luger (2009)

## Système de production

Source: [Young - Production Systems in Cognitive Psychology](http://www0.cs.ucl.ac.uk/staff/r.m.young/publications/00.PS-encyc-article.pdf)

- Un système de production est une collection de règles `si ... alors ...` qui ensemble forment un modèle de simulation et traitement de l'information d'une tâche cognitive ou d'un ensemble de tâches. 
- Le fonctionnement est un cycle de reconnaissance (conditions) et d'action
- Caractéristiques:
    - Traitement en série et en parallèle
    - Indépendance des règles
    - Contrôle flexible
- Utilisés dans des domaines avec une forte concentration de connaîssances, par exemple le domaine médical et le jeu d'échecs.
- Deux mémoires: 
    1. Mémoire de production (règles)
    1. Mémoire de données (informations sur la tàche en cours)
- Résolution de conflits
    - Un conflit se produit si plusieurs règles sont satisfaites simultanément
    - Différentes méthodes de résolution: ordre de précédence des règles, âge des données, complexité des conditions de la règle, ...
- Young and O’Shea (1981): Résolution de soustractions chez les enfants: une douzaine de règles. Les erreurs les plus fréquentes sont répliquées facilement en enlevant ou ajoutant une règle au système.
- Depuis les années 1990: Architectures cognitives intégrées:
    - Soar (Newell 1990): 
    - ACT (Anderson and Lebiere 1998): 

## Définition

- Les systèmes experts représentent les connaîssances servant à résoudre les problèmes sous la forme de règles `si ... alors ...`.
- Plus ancienne forme de représentation des connaîssances
- Un système expert à base de règles est construit à partir d'un **système de production** tel que défini par Newell and Simon:
    - Modéliser la performance humaine dans la résolution de problèmes
    - Base de connaîssances spécifique au domaine: ensemble de règles de production
    - Expérimentation sur la cryptarithmétique: résolution de problèmes arithmétiques où les nombres sont encodés. Observation du processus de résolution et établissement de règles.
- Un système expert doit respecter ces conditions:
    - Ouvert à l'inspection
    - Facilement modifiable
    - Nature heuristique

## Recherche
### Recherche vers l'avant

- La recherche vers l'avant est utilisée lorsqu'il est difficile de formuler une hypothèse ou un but. 
- Par exemple, dans un problème d'interprétation. 
- Recherche avec parcours en largeur.

### Recherche vers l'arrière

- La recherche par l'arrière dans un système expert revient au test d'une hypothèse.
- L'objectif est identifié et placé en mémoire. 
- Des objectifs intermédiaires peuvent être résolus en demandant à l'utilisateur des informations supplémentaires. 
- Pas de mécanisme de propagation par l'arrière. 
- Recherche avec parcours en profondeur.

## Explication et transparence

Les deux questions auxquelles un système expert à base de règles peut répondre sont: pourquoi? et comment?

- Pourquoi demandes-tu cette information? 
    - Retourne la règle courante pour laquelle il manque une information.
- Comment es-tu arrivé à cette conclusion? 
    - Retourne la réquence de règles qui ont permis d'arriver à la conclusion.

Caractéristiques:

- Le programme peut être arrêté à chaque cycle et inspecté. 
- Chaque règle représente un élément de résolution du problème, une étape logique.
- Contrairement à un programme traditionnel compilé où l'instruction courante fera peu de sens.

Avantages et inconvénients:

- Le mécanisme est simple, mais le pouvoir d'explication est remarquable. 
- Si les règles sont mal divisées par contre, les réponses seront adéquates, mais les explications seront vagues, arbitraires ou illogiques. 
    - Ceci réduira la confiance de l'utilisateur envers le système.

## Raisonnement à partir des données

Ce mode de raisonnement est une recherche avec parcours en largeur: les conditions des règles sont vérifiées une par une dans l'ordre où les règles sont enregistrées dans la base de connaissances.

**Recherche opportuniste**: Dès qu'un règle est déclenché et génère une nouvelle information, cette information est ajoutée comme une prémisse et sert à déterminer en priorité les prochaines règles à vérifier. 

- La recherche est beaucoup moins orientée.
- L'atteinte d'un objectif n'existe pas vraiment.
- Les explications disponibles pour l'utilisateur sont plutôt limitées. On peut seulement partager la liste des règles qui ont été déclenchées jusqu'à maintenant.

## Heuristiques et contrôle

### Système avec objectif
- Il est possible de contrôler la recherche par la structuration et l'ordonnancement des règles.

- Tri des règles:
    - Interprétation des règles de façon procédurale. 
    - Doit suivre un plan comme le ferait un expert humain.

- Ordonner les prémisses dans une règle:
    - Ce qui a le plus de chances d'échouer est le plus facile à tester en premier.
    - Tenir compte du coût de calcul de chacun des tests.

### Système à base de données

Trois heuristiques à haut niveau pour la résolution de conflits (Luger, section 6.2.3.):

- Réfraction:
    - Si une règle a été déclenchée, elle ne peut être déclenchée à nouveau tant que les éléments qui correspondent à ses conditions n'ont pas été modifiées. Ceci prévient les boucles.
- Récence: 
    - Préférer les règles dont les conditions correspondent à des éléments récemment ajoutés en mémoire. Donne une seule ligne de raisonnement.
- Spécificité:
    - Il est approprié d'utiliser une règle plus spécifique qu'une règle plus générale. On définit la spécificité par le nombre de conditions.

Algorithme RETE:

- Structure en réseau.
- Graphes acycliques directionnels qui représentent des ensembles de règles à plus haut niveau.
- Plus efficient que l'approche naïve qui revient à tester les règles une par une en boucle.
- Utilisé par FICO Advisor

## Langages et outils utilisés

(Source: pages Wikipédia correspondantes)

- Prolog, Scheme, Java
- Langage de systèmes de production OPS5
     [Page Wikipédia](https://en.wikipedia.org/wiki/OPS5)
- CLIPS: C Language Integrated Production System (1985)
    - [Site officiel](http://clipsrules.sourceforge.net/)
- Système Soar (John Laird, 1983), toujours très utilisé aujourd'hui 
    - [Site web officiel](https://soar.eecs.umich.edu/)
- Paquetage Rulu pour Python
    - [Rulu Documentation](http://rulu.readthedocs.io/en/latest/)

## Jeux et démonstrateurs

- [Clips the Game](https://md5crypt.github.io/clipsgame/#level-select)









