IFT 615 Intelligence Artificielle Jean-François Landry Département d’informatique Université de Sherbrooke Révision – Examen final http://planiart.usherbrooke.ca/~jflandry/ift615/
Sujets principaux Réseaux bayésiens Réseaux de neurones Réseaux bayésiens dynamiques Logique du premier ordre Systèmes experts à base de règles IFT615
RB - Syntaxe Un RB est un graphe orienté, acyclique, dont les nœuds sont des variables (le plus souvent aléatoires) et les arcs représentent des dépendances (causalités) probabilistes entre les variables et des distributions de probabilités conditionnelles (locales) pour chaque variable étant donné ses parents. IFT615
Exemple La topologie du RB modélise la connaissance causale. Un arc d’un nœud X vers un nœud Y signifie que la variable X influence la variable Y. Un cambriolage peut déclencher l’alarme. Un séisme aussi. L’alarme peut inciter Jean à appeler. Idem pour Marie à appeler. Pour chaque nœud, une table de probabilité conditionnelle (TPC) donne la probabilité pour chaque valeur du nœud étant donné les combinaisons des valeurs des parents du nœud. P(C) .001 P(S) .002 Cambriolage Séisme C S P(A|C,S) T T .95 T F .94 F T .29 F F .001 Alarme MarieAppelle JeanApelle A P(M|A) T .70 F .01 A P(J|A) T .90 F .05 IFT615
Définitions S’il y a un arc d’un nœud X vers un nœud Y, cela signifie que la variable X influence la variable Y. X est appelé le parent de Y. Parents(X) est l’ensemble des parents de X. Si X n’a pas de parents, sa distribution de probabilités est dite inconditionnelle ou à priori. Si X a des parents, sa distribution de probabilités est dite conditionnelle (par rapport aux parents) ou à postériori. Deux variables sont indépendantes si Si X est une variable observée, ont dit que c’est une évidence. Cambriolage Séisme Alarme JeanApelle MarieAppelle C S P(A|C,S) T T .95 T F .94 F T .29 F F .001 A P(J|A) T .90 F .05 A P(M|A) T .70 F .01 P(C) .001 P(S) .002 IFT615
Rappel de notions de base en probabilités P(X,Z) = P(X|Z)P(Z). P(Z,X) = P(Z|X)P(X). On en déduit P(X|Z) = P(X,Z) / P(Z) P(X|Z) = P(Z|X)P(X) / P(Z) Règle de Bayes Si on a une distribution conjointe pour P(Z,Y) on peut calculer la distribution P(Z) par la somme des probabilités pour toutes les valeurs possibles de Y (marginalisation): P(Z) = Σy P(Z, Y = y). Si on a une distribution conditionnelle P(Z|Y), on peut « conditionner » : P(Z) = Σy P(Z | Y = y)P(Y=y). P(Z) peut donc être considéré comme un facteur constant, α IFT615
Rappel de notions de base en probabilités Ceci nous donne P(X|Z) = α P(X,Z) α est une constante de normalisation pour s’assurer que la somme des probabilités de la distribution P(X,Z) soit égale à 1. De manière générale, soit X, l’ensemble de variables pour laquelle on fait l’interrogation, E, les variables d’évidences (qu’on peut observer) et Y, les variables cachées (qu’on ne peut pas observer). e, les valeurs observées pour les variables dans E. P(X|E=e) = α P(X,E=e) = Σy P(X, E=e, Y = y) Noté aussi P(X|e) = α Σy P(X, e, y) IFT615
Inférence par énumération On a vu que : P(X|e) = α Σy P(X, e, y) où e=evidence, et y=variables cachées. On a vu aussi que selon la sémantique d’un RB P(X1, … ,Xn) = π i = 1 P (Xi | Parents(Xi)) Les termes P(X, e, y) peuvent donc s’écrire comme le produit des probabilités conditionnelles du réseau. En d’autre termes, on peut calculer la réponse à une interrogation P(X|e) sur un RB, simplement en calculant les sommes des produits des probabilités conditionnelles du RB. Algorithme Figure 14.9, Page 506 du livre. n IFT615
Exemple P(Cambriolage | JeanApelle = T, MarieAppelle = T ) Noté P(C | j, m) Les variables cachées sont Séisme et Alarme. P(C | j, m) = α Σs,a P(C, s, a, j, m) Note : s et a veulent dire, toutes les valeurs possibles de S=s et A=a variables. Ne pas confondre avec j et m qui sont des évidences fixes (J=j et M=m). Cambriolage Séisme Alarme JeanApelle MarieAppelle C S P(A|C,S) T T .95 T F .94 F T .29 F F .001 A P(J|A) T .90 F .05 A P(M|A) T .70 F .01 P(C) .001 P(S) .002 Voir la note 5 en bas de la page 505 dans le livre. IFT615
Exemple = α Σs,a P(c)P(s)P(a|c,s)P(j|a)P(m|a) P(C | j, m) = α Σs,a P(C, s, a, j, m) On calcule pour C = true P(c | j, m) = α Σs,a P(c)P(s)P(a|c,s)P(j|a)P(m|a) =0.001*0.002*0.95*0.90*0.70+ 0.001*0.998*0.94*0.90*0.70+ 0.001*0.02*0.05*0.05*0.01+ 0.001*0.998*0.06*0.05*0.01 =α (0.00059224) Et C = false = α Σs,a P(┐c)P(s)P(a| ┐c,s)P(j|a)P(m|a) = α (0.0014919) α = 1/(0.00059224+ 0.00059224) Donc, P(C | j, m) = [0.284, 0.716] Cambriolage Séisme Alarme JeanApelle MarieAppelle C S P(A|C,S) T T .95 T F .94 F T .29 F F .001 A P(J|A) T .90 F .05 A P(M|A) T .70 F .01 P(C) .001 P(S) .002 Je n’ai pas vérifié les chiffres, je les ai prises telles quelles du livre. Ça me semble quand même l’inverse, c.-à-d., P(C =true | j, m) = 0.716 et P(C=false | j, m) = 0.284. Refaire les calculs et vérifier. IFT615
Apprentissage d’un RB La structure d’un RB (le graphe) est le plus souvent spécifiée à l’aide d’un expert. Dans d’autres applications, la structure est générée automatiquement à partir des données statistiques. C’est un des problèmes d’apprentissage machine. Dans d’autres problèmes, on connaît la structure du RB, mais on ne connaît pas les TPC. Là aussi, on peut les apprendre à partir des données statistiques. C’est un autre problème d’apprentissage machine. IFT615
Diagrammes d’influence Un diagramme d’influence (DI) est une extension d’un RB avec des nœuds de décision et des nœuds d’utilité. Les nœuds habituels d’un RB sont appelés des nœuds chances. On ajoute : Des nœuds de décision représentant une prise de décision Des nœuds d’utilité représentant l’utilité (coût ou degré de désirabilité) des nœuds chances influencés par les actions. Ainsi on peut modéliser des prises des décisions simples Pour des décisions complexes (séquentielles), les processus de décision de Markov sont généralement préférables. IFT615
Résumé Un RB est un graphe orienté, acyclique, représentant des connaissances causales, et reflétant les dépendances conditionnelles entre des variables. La topologie du réseau (arcs entres les variables) et les TPC donnent une représentation compacte de la distribution conjointe des probabilités. Les connaissances du réseau (liens de causalité et probabilités) sont généralement obtenus avec l’aide d’un expert. Pour des applications concrètes, ceci peut être très laborieux. Un diagramme d’influence est un réseau bayésien avec des nœuds de décision et des nœuds d’utilité. IFT615
Exemple Exemple – fichier PDF IFT615 © É. Beaudry & F. Kabanza
Réseaux bayésiens dynamiques (RBD) Comment modéliser des situations dynamiques? Les changements dynamiques peuvent être vues comme une séquence d’états, chaque état représentant la situation à un instant donné. Xt : Ensemble des variables non observables décrivant l’état au temps t. Et : Ensembles de variables observées (évidence) au temps t. Le terme dynamique réfère au dynamisme du système qu’on veut modéliser et la structure du réseau. Il existe plusieurs exemples de systèmes dynamiques dont on ne peut voir ou déterminer la séquence d’états internes avec certitude. Mais on peut observer les signaux émis par les états, toutefois avec du bruit. À partir de ces observations bruitées, on aimerait pouvoir : Prédire la dynamique (séquence d’états) du système émettant les signaux. Déterminer l’historique du système. Déterminer la probabilité de la prochaine observation. Ce sont des problèmes typiques des réseaux bayesiens dynamiques, en particulier des chaînes cachées de Markov et des filtres de Kalman que nous verrons plus loin. IFT615
RBD - Représentation Problème: Il faudrait spécifier un nombre infini de tables de probabilité conditionnelle: une pour chaque variable, dans chaque état. Chaque table pourrait impliquer un nombre infini de parents. Solution: Supposer que les changements dynamiques sont causées par un processus stationnaire - les probabilités ne changent pas dans le temps: P(Xt | Parent(Xt)) est la même pour tous les t. Supposer que les changements dynamiques sont causées par un processus markovien – l’état courant dépend seulement d’un nombre fini d’états précédents. Processus markoviens du premier ordre: P(Xt | X0:t-1) = P(Xt | Xt-1) modèle pour les transitions Supposer que l’évidence dépend uniquement de l’état courant. P(Et | X0:t ,E0:t-1) = P(Et | Xt) modèle pour les observations/capteurs En plus de restreindre les parents de la variable d’état Xt, on doit restreindre les parent de la variable d’observation/évidence Et IFT615
RBD - Illustrations Réseau bayesien dynamique (RBD) du premier ordre avec une seule variable X, répliquées dans les différents états pour modéliser la dynamique du système. Le premier exemple de RBD est aussi une chaîne de Markov. Nous les étudierons plus spécifiquement plus loin. RBD du second ordre IFT615 17
RBD Comment rendre un RBD plus précis? Augmenter l’ordre du modèle markovien. Par exemple, Raint aurait comme parents, non seulement Raint-1 mais aussi Raint-2 pour un processus markovien du second ordre. Ceci donnerait des prédictions plus précises. Augmenter le nombre de variables d’états. Par exemple, on pourrait ajouter: Une variable Seasont pour tenir compte des statistiques historiques sur les temps de pluie selon les saisons. Des variables Temperaturet , Humidityt and Pressuret pour tenir compte de la physique des conditions de pluie. IFT615 18
Types d’inférence dans un RBD Filtrage (filtering) ou monitorage/surveillance (monitoring) Prédiction, lissage Explication la plus plausible (séquence d’états) Des algorithmes pour des RBD générales existent pour chaque type d’inférence. Des algorithmes plus efficaces existent pour des cas particuliers de RBD: Chaînes cachées de Markov Filtres de Kalman Filtres de particules IFT615
Réseaux de neuronnes [McCulloch-Pitts, 1943] net = Σ wixi f(net)= +1 si net ≥ 0, -1 sinon. C.à-d. : f(net) = sign(net) n Un model mathématique simple d’un neurone, model conçu par McCulloch et Pitts en 1943. Entrée: -1 (inhibition) ou +1 (excitation) Sortie: -1 ou +1 Threshold: 0 En gros, il « s’active » lorsque la combinaison linéaire de ses entrées dépasse un certain seuil (zéro dans ce cas-ci). Un lien d’un neurone i vers le neurone j sert à propager l’activation xi du neurone i vers le neurone j. Chaque lien a un poids wi qui sert à déterminer la force de la sortie associée dans la combinaison linéaire avec les autres signaux. La fonction d’activation f est conçue pour remplir deux rôles: On veut que le neurone soit actif (≥ 0) lorsqu’une entrée correcte est donnée, inactif (<= 0) lorsqu’une entrée erronée est donnée. On veut que f ne soit pas linéaire, autrement on n’a pas besoin d’un réseau de neurones, une fonction linéaire simple ferait l’affaire. Dans le manuel de référence la fonction « f » est nommée « g ». i=1 IFT615
Fonction d’activation sigmoïde x= Σ wixi f(x) = 1 1+e-λx Souvent la fonction d’activation sigmoide est préférée à la fonction signe puisqu’elle est dérivable. La dérivabilité est une propriété requise pour certains algorithmes d’apprentissage. f(x) = sign(x) IFT615
Comment un RNA apprend ? Les liens entre les neurones ont des poids numériques. Un poids reflète la force, l’importance, de l’entrée correspondante. La sortie de chaque neurone est fonction de la somme pondérée de ses entrées. Un RNA apprend en ajustant ses poids itérativement jusqu’à ce que les sorties soient en accord avec les entrées. IFT615
Est-ce qu’un seul neurone peut apprendre ? Oui. Perceptron [Rosenblatt, 1958] i=1 n net = Σ wixi Paramètres xi : entrée wi : poids (nombre réel) c : pas(step) d’apprentissage:0 ≤ c ≤1 d : sortie désirée y=f(net)= sign(net) Algorithme d’apprentissage Pour chaque donnée d’entraînement, incrémenter le poids wi par : wi = c(d-y)xi Une perceptron est un réseau de neurones à une seule couche, c.à-d., les entrées sont directement connectées aux sorties. En particulier, les exemples des portes ET et OU vus auparavant sont des perceptrons à trois neurones d’entrées et un seul neurone de sortie. En général on va avoir plusieurs neurones d’entrées et plusieurs neurones de sorties dans un perceptron. L’idée de base de l’apprentissage, qui est derrière tous les algorithmes d’apprentissage des RN, est d’ajuster les poids du RN, pour minimiser une certaine mesure d’erreur sur l’échantillon d’apprentissage. Ainsi, l’apprentissage est formulée comme une recherche optimale dans l’espace des poids! La mesure de l’erreur classique est la somme des carrées des écarts qui est aussi utilisée pour la méthode des moindres carrées pour la régression linéaire: on va ajuster les poids pour minimiser la somme des carrés des écarts entre les sorties observées et les sorties désirées. IFT615
Exemple net = Σ wixi x1 x2 d 1.0 1 9.4 6.4 -1 2.5 2.1 8.0 7.7 0.5 2.2 7.9 8.4 7.0 2.8 0.8 1.2 3.0 7.8 6.1 1 c = 0.2 wi = c (d-y)xi i=1 n net = Σ wixi y=f(net)= sign(net) 1. Initialisation : w = [w1, w2, w3] = [.75, .5, -.6] 2. f(net) = sign(.75×1+.5×1-.6×1)=sign(.65)=1; w = 0.2(1-1)X= 0; donc w est inchangé. 3. f(net) = sign(.75×9.4+.5×6.4-.6×1)=sign(9.65)=1; w = -.4X; donc w = w -.4 [9.4, 6.4, 1] = [-3.01, -2.06, -1] … w = [-1.3, -1.1, +10.9]. Équation de la ligne séparant les données : -1.3x1 + -1.1x2+10.9 = 0. Ces données pourraient provenir par un exemple d’un microphone, représentant les valeurs sonores d’une voix d’une personne. On essaie alors de reconnaitre les sons représentant effectivement la voie de la personne (+1) de celle d’une autre (-1). Ou ce pourrait par exemple être les données digitalisées provenant d’un défibrillateur cardiaque. On essaie alors de classifier les données en deux pathologies différentes. Les données pourraient aussi être pour le contrôle du régime moteur d’un véhicule: x1 = régime (vitesse) d’un moteur à propulsion. x2 = température du moteur. Données calibrées sur l’intervalle [0,10]. Quand la température et la vitesse sont excessivement élevée, on veut donner une alerte : dangereux (-1) ou sécuritaire (+1). Pour les classifier, on essaie de trouver une fonction qui minimise la distance entre les données. On peut montrer que si les données sont linéairement séparable, Alors une telle fonction existe. Le perceptron montré ici permet d’apprendre la fonction. IFT615
Apprentissage d’un perceptron avec une fonction d’activation sigmoïde x1i xni f(neti) oi : sortie du neurone i di : sortie désirée pour le neurone i c : pas d’apprentissage : 0 ≤ c ≤1 wji : ajustement du poids de l’entrée j au neurone i. f ’(neti)= λ× f(neti) × (1-f(neti)) n j=1 neti = Σ wjixji oi=f(neti) = 1 1+e-λneti Algorithme d’apprentissage Pour chaque donnée d’entraînement, incrémenter le poids wji par : wji = c(di-oi)f ’(neti)xji L’algorithme est décrit dans le manuel de référence (Stuart et Russel), page 740-744. Comme pour la fonction signe, on va utiliser la méthode des moindres carrées, c.à-.d., il faut ajuster les poids du réseau des neurones pour minimiser la sommes des carrés des écarts entre les sorties obtenues et les sorties désirées. Le livre explique comment arriver à l’algorithme (page 740-744). Grosso modo: Le carré de l’erreur pour le neurone i est E=1/2 Err2=1/2 (di-oi)2 Garder à l’esprit que oi = f(neti) = 1 / 1+e-λneti On va utiliser la descente du gradient pour réduire l’erreur, en calculant la dérivée partielle de l’erreur par rapport au poids. Cela donne (di-oi)f ’(neti)xj Ainsi, on va donc ajuster le poids Wij comme suit : Wji ← Wji + c(di-oi)f ’(neti)xj L’avantage d’une fonction sigmoïdale par rapport à la fonction signe est qu’elle permet une mesure de l’erreur plus précise. Intuitivement, c (le pas d’apprentissage) détermine la grandeur des « pas » entre deux poids successives dans l’apprentissage: wi= wi_old + c*deltawi. Plus le pas est petit, l’apprentissage va être précise, mais ça va prendre plus de temps. Par contre, plus le pas est grand, plus l’apprentissage est rapide, mais on risque de manquer le minimum et on risque d’osciller au tour des minimum locaux. On trouve la valeur optimale de c par des ajustements expérimentaux. IFT615
Réseaux de neurones Exemple – Fichier pdf IFT615 © É. Beaudry & F. Kabanza
Logique du premier ordre Mettre sous forme clausale Eliminer implications Distribuer les négations Standardiser les variables Skolemisation (on enlève les quantificateurs existentiels pour les remplacer par une fonction) On enlève les quantificateurs universels On distribue les OU au lieu des ET IFT615 © É. Beaudry & F. Kabanza
IFT615 © É. Beaudry & F. Kabanza
Systèmes experts Base des connaissances Moteur d'inférence - chaînage avant Moteur d'inférence - chaînage arrière IFT615 © É. Beaudry & F. Kabanza