ibm bluemix paris meetup #27 20171219 - manipuler des probabilités avec agrum
TRANSCRIPT
Manipuler des probabilités et des données avec aGrUM
Pierre-Henri Wuillemin, Lip6Lionel Torti, LTO Data ConsultingGaspard Ducamp, Lip6/IBM
Informatique/IA décisionnelle : interfacer l’aléatoire
décision=fonction(input1,input2,input3,...)
● Décision face à l’utilisateur● Décision face à l’incertain● Décision face à des informations partielles
● S’adapter à l’utilisateur
Interfacer l’aléatoire : solutions
● Règles● Scoring● Arbres de décision● Algorithmes ad-hoc
Notre postulat : Dans un grand nombre de cas, la ‘vraie’ solution serait le calcul des probabilités des différentes alternatives et la prise de décision articulées sur ces probabilités.
Avantages d’une utilisation des probabilités
● vers l’apprentissage automatique,● vers l’adaptabilité,● vers la réactivité (prise en compte des informations partielles),● vers l’explicabilité,● vers des outils sophistiqués d’analyse.
Un modèle général qui englobe les (ou une bonne partie des) solutions précédentes.
Utilisation opérationnelle des probabilités complexes
Inconvénients à l’utilisation des probabilités complexes :
● Calculs complexes (voire très complexe)● Paramétrisation complexe (voire cauchemardesque)
Notre proposition :Les réseaux Bayésiens forment un modèle opérationnel, compréhensible et manipulable pour les probabilités complexes.
Utilisation des réseaux bayésiens
Un outil puissant, polymorphe et complet mais complexe à implémenter.
Intelligent Tutoring Systems: réseaux de compétences
Trouver le prochain exercice à proposer à l’étudiant vers l’acquisition de la compétence-cible.
aGrUM une API C++ GPL depuis 2008
● Autheurs○ Pierre-Henri Wuillemin, Maître de Conférence - LIP6 -
UPMC○ Christophe Gonzales, Professeur - LIP6 - UPMC
● Utilisateurs/Partenaires○ Laboratoire de recherche: LIP6, INRA, IRSN○ Industriels: EDF, Airbus, IBM○ Startups: Akheros, EdgeMind○ Projet Open Source: Open Turns.
De la recherche à la production
Une API Dédiée
● Hyper paramétrable● Structures de données
adaptés● Algorithmes optimisées
La Recherche
● Projets Européens○ MIDASE○ SCISSOR
● Projets ANR○ SKOOBS○ INCALIN○ ...
Diffuser et promouvoir
● Wrapper Python● Documentation● Notebooks● Interventions
pyAgrum: un wrapper Python d’aGrUM
Une toolbox pour les PGM
● Un accès simplifié aux algorithmes d’aGrUM● Un accès à l’écosystème Python● Une intégration avec les Jupyter Notebooks● Disponible sur PyPI et Anaconda
Une combo C++/Python
● C++ est rapide et aGrUM est très performant● D’autres wrappers en préparation (Java, JavaScript, …)
Installer pyAgrumhttp://agrum.gitlab.io
Avec pip:
pip install pyAgrum
Avec anaconda:
conda install -c conda-forge pyagrum
Pour utiliser les notebooks:
pip install numpy nbformat nbconvert jupyter matplotlib pydotplus pandas scipy
conda install numpy nbformat nbconvert jupyter matplotlib pydotplus pandas scipy
● GitLab○ https://gitlab.com/agrumery/aGrUM
● Anaconda○ https://github.com/conda-forge/pyagrum-feedstock
● PYPI○ https://pypi.python.org/pypi/pyagrum
● Besoin d’aide ?○ [email protected]○ https://mailia.lip6.fr/wws/info/agrum-users
Quelques liens pour utiliser aGrUM/pyAgrum
Diagnostic probabiliste en langage naturel avec Watson
● Framework de l’agent : JAVA● Moteur probabiliste : aGrUM● Modèle probabiliste : Réseaux Bayésiens● Traitement du langage naturel : Watson
Troubleshooting [Pearl, 1982]
● Établir un diagnostic peu coûteux à l’aide d’observations sur un système
● Énumérer toutes les combinaisons devient vite très cher● Utilisation de réseaux bayésiens pour réduire l’ensemble des
possibles
+ des mécanismes liés au langage naturel (prise en compte des erreurs, possibilités de ne pas savoir répondre…)
Réseau bayésien dans un problème de troubleshooting
On décompose notre réseau bayésien en 4 types de noeuds :
● Noeuds de diagnostic (en rouge)● Noeuds observables (en bleu)● Noeuds non-observables (en jaune)● Noeud problématique (en vert)
Sélection des questions
Basée sur la théorie de l’information de Claude Shannon [1948]
● Calcul d’information mutuelle/entropie conditionnelle grâce à aGrUM● Pondération des gains d’information par le coût de chaque question● Sélection de la question maximisant le score
Raisonnement
Etant donné nos connaissances sur le système on va :
➢ Chercher à établir un diagnostic
➢ Chercher la meilleure variable à interroger en fonction de son apport d’information et son coût
Planification
On fait le lien entre variable et question :
Oil.dipstickLevelOk
“Comment est le niveau d’huile ?”
Conversation [1/2]
Utilisation de Text-To-Speech via un simple appel au service Watson
InputStream converti et lu en utilisant le package javax.sound
Conversation [2/2]
Utilisation du Natural Language Classifier de Watson
Plusieurs classification possibles :● Oui● Non● Je ne sais pas● Demande d’informations
Mise à jour des connaissances
L’agent :
● met à jour sa base de connaissance● Fait une inférence via aGrUM● Informe de changements importants
Intuition de l’agent
En fonction des réponses de l’utilisateur et de l’évolution des diagnostics notre agent est capable d’informer ce dernier de changements significatifs.
Annexe : pondération des réponses
Discuter avec l’utilisateur peut introduire des erreurs de compréhension pouvant causer des problèmes lors de l’inférence (observations contradictoires), deux bruits ont été ajoutés :
➢ Coût cognitif β : lié difficulté de compréhension de la question➢ Niveau d’expertise α : lié à la connaissance par l’utilisateur du système diagnostiqué
Au lieu d’ajouter une hard evidence avec une distribution de, par exemple, [0,1] sur une variable aléatoire binaire on ajoutera une soft evidence valant :
[(α+β)/(1+2*(α+β)) , 1+(α+β)/(1+2*(α+β))]
La réponse à la question “L’alternateur est-il cassé ?” sera prise avec plus de recul que celle de la question “Les feux marchent-ils ?”
Annexe : remise en cause des réponses
Soit S notre base de connaissances, X la variable qu’on interroge et a la valeur de X associée à la réponse de l’utilisateur. Si :
, où r est un paramètre de notre agent
Alors on va demander à l’utilisateur une confirmation de sa réponse