mercredi 14 février 2018

Hackathon citoyen sur l'IA au service de l'accessibilité bancaire et numérique

Mon premier hackathon : une expérience très riche et réussie



Le thème de cet Hackathon était l’IA au service de l’accessibilité bancaire et numérique.




Un thème lorsque je l’ai su 2 mois avant l’épreuve m’a interpellé.
        Difficile dans un premier temps d’associé l’IA avec l’accessibilité de personnes en marge du numérique et/ou en pré-bancarisation.

Ce que je retiens de ce hackathon :

  • de belles rencontres avec une diversité de métiers dont des personnes vivants au quotidien avec les clients ou prospects ayant les difficultés énoncées (il n’y avait pas que des développeurs geeks) notamment avec les membres de mon équipe : Bruno, Héloïse, Lamine, Nicolas, Ny hary que je remercie encore 
  • Tous motivés et pleins d’énergies, des équipes jusqu’au staff et même à la direction, tout le monde était motivé par les enjeux et avaient envie de bien faire. 
  • le retour d’expérience des associations de terrain essayant de d’aider à l’accessibilité numérique (WeTech Care, Emmaus Connect) ou bancaire (Crésus ou même LBP avec l’ “appui”) 
  • des courageux et courageuses qui venaient de province pour participer (devant s’organiser pour leur famille restée là-bas) 
  • malgré la compétition, la bonne humeur des équipes du jeudi soir et de vendredi. On était là aussi pour se faire plaisir en plus de pouvoir être utile. 

Les surprises :

  • Plus d’internes que d’externes alors que j’étais persuadé du contraire. Les externes avaient déjà en général participé à d’autres hackathons et avaient déjà préparé des choses à l’avance 
  • Alors que pour moi, un hackathon, c’était avant tout un rendez-vous de codeurs (donc plutôt) masculin, il y a avait une très grande proportion de femmes (et tant mieux). 
  • Avant l’épreuve, je m’attendais à voir une armée de codeurs avec déjà leurs projets quasi-finis avant même le début, heureusement ça a été le contraire

Ce à quoi, il faut faire attention :

  • La gestion du temps est très importante 
  • Lorsqu’on passe devant un jury, il faut absolument bien travailler l’oral et les slides de manière commune (3 minutes de pitch, c’est très court et l’entrainement est obligatoire). 
  • Les distractions qui enlevaient du temps pour préparer le pitch et les slides : présentation OpenBankProject ou celle de Google sur le Google Home et aussi un exercice incendie un peu avant les remises des slides au jury 
  • Au final avec l’équipe, on n’a peut-être eu réellement que 2 heures de préparation du pitch et 1 heure pour les slides. En voyant les pitchs et slides des autres équipes, on a vu que c’est un point sur lequel on aurait dû insister davantage 
  • Les équipes étaient aussi jugés sur leur cohésion, on aurait peut-être dû l’afficher davantage dans les slides par une photo de l’équipe. 
  • Comme cela parlait d’IA, et parce que parallèlement je travaillais sur un concours Kaggle, je m’étais imaginé que cela en ferait un concours de Data Science alors que non… Sans rentrer dans un débat, utiliser des API Cloud de ChatBot, ce n’est pas de l’IA pour moi… en tout ca pas de la Data Science ! 
  • Au départ, je voulais présenter un sujet seul, j’avais préparé des slides pour présenter mes 2 projets au choix. Mais heureusement, le jeudi soir, j’ai pu trouver Ny hary qui avait quasiment la même idée que moi et l’équipe a pu se constituer. 

Au final :

  • J’ai appris, j’ai encore progressé sur certains points sur ma façon d’utiliser les outils de data science en Python (pandas et scikit learn).
  • Pas finaliste, forcément déçu que notre message n’est pas été bien compris
  • On a apprend de ses échecs et ça donne davantage de motivations pour faire mieux la prochaine fois
  • Comme disait Coubertin : “l’important, c’est de participer

jeudi 10 mars 2016

Intelligence artificielle : comprenez les dessous d'AlphaGo et Watson via les projets OpenSource

L'intelligence artificielle vous intéresse mais vous ne savez pas par quoi commencer ?

La surprenante réussite d'AlphaGo au jeu de GO, contre le champion d'Europe en novembre 2015 et plus récemment en mars 2016 contre le champion du monde, attise votre curiosité ? Parfait ! Voici de quoi mieux comprendre le dessous des cartes....

Voici par sous-discipline de l'IA une liste de projets Open Source :

Cela vous permettra de manipuler et mieux appréhender certains concepts très différents au sein de ce mot fourre-tout qu'est l'intelligence artificielle.

  • Le traitement automatique du langage naturel (NLP en anglais)

Afficher l'image d'origine

  • Raisonnement, déduction, résolution de problème

  • Représentation de la connaissance (ontologie)

  • L'apprentissage artificiel (dont le "machine learning" associé au Big Data)

Afficher l'image d'origine

  • La vision artificielle (reconnaissance de forme, de visages, d'émotions...) et reconnaissance vocale 

Résultat de recherche d'images pour "opencv"

  • La planification et le séquencement de tâches

    • le projet SHOP (Simple Hierarchical Ordered Planner)
    • le projet GraphPlan 
    • le projet AltAlt (variante de GraphPlan)
          Votre humble serviteur connaît peu le sujet, donc je n'ai pas trouvé beaucoup de référence.  

  • Le déplacement et manipulation d'objet (spécifique à la robotique)

Afficher l'image d'origine

  • L'intelligence sociale :

Désolé, pour l'instant aucun projet Open Source n'est vraiment dessus.

  • Cela viendra par une meilleure compréhension des émotions et des sentiments des humains par les machines. 
  • Il faudra aussi un système permettant d'adapter ce que la machine va répondre en fonction de la personne qui est en face d'elle (introvertie, extravertie, rationnelle ou émotionnelle), de son sexe, de son âge et de sa culture d'origine. 
  • Le jouet dinosaure créé en 2015 par CogniToys est à surveiller car s'adresse aux enfants dans leur phase "question" et dont le jouet est connecté à IBM Watson pour répondre à l'enfant de manière ludique :
Résultat de recherche d'images pour "ibm watson cognitoys"

mardi 1 mars 2016

Démystifier l'intelligence artificielle




L'intelligence artificielle démystifiée

L'IA est un mot de plus en plus utilisé y compris par des personnalités issues des sciences pures ou de l'informatique (Stephen HAWKING, Bill GATES, Elon MUSK), mais qu'est ce que l'intelligence artificielle ?


Qu'est-ce que l'intelligence artificielle ?


Déjà, il n'y a pas une IA mais 2 types d'intelligence artificielle :
  • L'intelligence artificielle dite "forte" :
             C'est le fantasme de pouvoir créer une intelligence dotée d'une conscience autonome ayant son libre arbitre. Le cinéma nous renvoie alors de suite à une vision forcément négative d'une telle IA.
L'IA FORTE a une conscience artificielle.

             De toute façon, en l'état actuel, cela reste de la pure science fiction et cela pour de nombreuses années à venir.  En admettant que la théorie de la conscience quantique de Roger Penrose soit avérée, il faudra attendre une informatique quantique pour espérer voir une conscience sortir ex nihilo.   Cependant, des architectes en IA pensent déjà des "blueprints" où bizarrement l'éthique ou la morale sont évoqué en annexe et pas en principe directeur de cette architecture de la conscience.
  • L'intelligence artificielle dite "faible"
C'est l'intelligence artificielle sans conscience (façon de parler "à la demande").
Maintenant l'IA faible est ce que l'on peut déjà faire partiellement aujourd'hui.

Les exemples d'IA les plus visibles du grand public sont les assistants pour Smartphone :
  • Siri côté Apple
  • Google Now côté Google
  • Cortana côté Microsoft
Sachant que la plupart sont en fait très scripté.

Ce qui se rapproche le plus d'une vraie IA est Watson d'IBM qui en 2011 a gagné au jeu Jeopardy.
Résultat de recherche d'images pour "watson ibm"

Mais l'IA faible n'est pas une seule discipline mais au moins 7 différentes : 
  • Le traitement automatique du langage naturel (NLP en anglais)
  • Raisonnement, déduction, résolution de problème
  • Représentation de la connaissance (ontologie)
  • L'apprentissage artificiel (dont le "machine learning" associé au Big Data)
  • La vision artificielle (reconnaissance de forme, de visages, d'émotions...) et reconnaissance vocale 
  • La planification et le séquencement de tâches
  • Le déplacement et manipulation d'objet (spécifique à la robotique)
Autres domaines à plus long terme :  l'intelligence sociale (arrive avec une certaine compréhension des sentiments),  la créativité et de quoi arriver un jour à une IA "forte"...  

Pour conclure :

J'espère avoir pu montrer brièvement que derrière ce mot, il y a de multiples champs d'activité et que nous sommes encore très très loin de pouvoir créer une IA dotée d'une conscience artificielle.

Pour vous élargir l'esprit, peut-on considérer les animaux comme des êtres pensants, ont-ils pour certains d'entre eux une conscience ?
A se demander aussi la question sur les plantes, dont il est établi qu'elles ont une intelligence de type réseau.

jeudi 30 avril 2015

Analyse du livre "Big Data et machine learning" (dernier article, point de vue "computer vision")

Introduction


Cet article est le dernier (sur quatre au total) présentant un livre très récent dédié au Big Data, à la Data Science et notamment au Machine Learning.
Ce dernier article donnera ma vision du livre d'un point de vue de la vision par ordinateur.

Les 3 "V" du Big Data et la vision artificielle


Le spécialiste de la vision par ordinateur se retrouve confronté d'une manière beaucoup plus marquée que n'importe quel "Data Miner" ou "Data Scientist" aux 3 "V" du Big Data :
  • Variété: Ici, une image où seuls les pixels peuvent nous donner des informations de plus haut niveau est autrement plus difficile à traiter qu'une table SQL ou même des données au format XML ou JSON
  • Volume: Une image couleur au format FullHD (1920*1024) prend 3 à 4 octets par pixel.  Soit lorsque l'image est traitée sans compression en mémoire pour analyse, cela prend 5,6Mo d'emprunte mémoire.  Si nous devons analyser une image (ou sa signature c.a.d un résumé) de manière naïve dans une vidéo FullHD de 2 heures (2h*3600sec*24image/sec) soit 172 800 images, cela représente 945Go. Bien sûr, on peut analyser plus intelligemment, cependant, certains descripteurs d'une image sont plus volumineux que l'image elle-même (surtout lorsqu'on utilise les points d'intérêts voir la 2ème illustration) 
Exemple de point d'intérêt SIFT (vecteur à 128 dimensions)
Crédit Wikimedia CC by 2.0
A titre d'exemple dans cette petite image à gauche (320*288 en JPG de 56Ko) 
on a 2128pts d'intérêts d'une taille de 128 dimensions soit en mémoire RAM ~290Ko soit plus de 5 fois la taille JPG) voir l'image de droite indiquant les points d'intérêts en rouge.

à gauche, l'image originale, à droite les points d'intérêts repérés
où chaque point d'intérêt est une donnée à 128 dimensions

  • Vitesse:  En vision par ordinateur, certains traitements demandent d'être traités en temps réel (par exemple la réalité augmentée ou la vision des robots). Il faut donc en général, analyser l'image en moins de 33 millisecondes (1 seconde divisée par le nombre d'image seconde de la caméra, soit 30ips d'où 1000/30).

La malédiction de la dimension, un mal nécessaire en vision artificielle

Autre point où le spécialiste en vision artificielle va plus loin que les Data Miner/Scientist, il manipule de multiples données avec des dimensions supérieures à 10 très souvent :

  • Les point d'intérêts sont des tableaux(vecteurs) contenant entre 32 à 128 dimensions et on peut facilement avoir plus de 300 points d'intérêts par image (en fait plus l'image est grande, plus elle en aura)
    Descripteur de point d'intérêt SIFT à 128 dimensions prenant en compte
    des informations sur les pixels voisins à de multiple échelle de l'image.
    Crédit par Indif - Wikimedia - CC BY-SA 3.0
  • La signature sur les couleurs d'une image (dans sa globalité) peuvent prendre entre 32 à 216 dimensions (on parle d'histogramme de couleur

Le vrai "machine learning"

Avec ces notions en tête, on comprendra que le "Machine Learning" abordé dans le livre fera gentiment sourire le spécialiste en vision par ordinateur qui pourra conseiller le livre à toute personne ne connaissant pas son travail et les notions qu'il doit pratiquer.

Cependant, en vision par ordinateur, le "machine learning" prend vraiment tout son sens.  On ne travaille qu'avec des données non structurées auxquelles il faut trouver du sens pour en faire de la classification ou de la prévision.

Pour s'en convaincre, voici des liens vers l'API OpenCV permettant de faciliter la vision par ordinateur:
Toujours en parlant d'apprentissage, aucun référence à l'apprentissage par renforcement n'est indiquée dans l'ouvrage. Pourtant, ce type d'apprentissage qui prend en compte le feedback de l'utilisateur est assez fréquent en "Machine Learning" pour l'analyse d'images (mais également utile pour réduire le fossé sémantique qui est la différence entre les descripteurs "bas niveau" de l'image et sa représentation sémantique).

Machine Learning et 64 dimensions ou plus

Comme le spécialiste en vision artificielle ne peut pas tout réduire à 2 ou 3 dimensions et faire des analyse en composante principale (ACP) à tout va, il doit être plus malin qu'un Data Scientist / Miner.

Pour continuer à travailler avec 64 dimensions ou beaucoup plus, il faut améliorer les algorithmes existants et la façon de stocker/rechercher les données.

Techniques d'indexation multi-dimensionnelles:

Les bases de données relationnelles reposent sur des données à une dimension (on n'a des index que sur un seul entier/flottant d'une colonne de la table SQL). Le type d'index le plus approprié pour retrouver des valeurs dans un intervalle est l'arbre B+ qui est la référence de nombreux SGBDR.
En augmentant à 3 dimensions il faut oublier l'arbre B qui commence déjà à montrer ces limites, on lui préférera le Kd-tree ou un octree.

Mais dès qu'on dépasse 4 dimensions, les algos classiques s'écroulent vite en pertinence et temps de traitement. D'autres structures d'arbres existent pour indexer des données à forte dimensions :
  • R-tree : reprend le principe des octree & kd-tree mais en ayant un système de zone de regroupement de données locales (ex : cube pour des données en 3D) avec possibilités de recoupement entre zones.
  • M-tree : reprend le principe d'un arbre B mais avec des calculs de distances basés sur des métriques (permettant de travailler avec des données non numériques).
Pour aller encore plus vite car l'analyse d'image le permet, on peut indexer de manière approximative :
  • VA-File (Vector Approximation) (PDF) Ici, l'idée est d'affecter un index binaire (ex:  0010001) en découpant l'espace où se trouvent les données. Cela reprend un peu le système de hachage où l'index est prévu pour tenir en mémoire RAM et donc de pouvoir stocker facilement et accéder rapidement aux vecteurs tout en permettant une recherche approximative des k plus proches voisins car affectés localement à priori au même index. Dans un second temps, on peut faire une recherche plus précise en regardant sur disque les données exactes des points associées à la "page" indexée par un numéro binaire unique.
Exemple de VA File.  Credit SCL
  • LSH (Locality Sensitive Hashing) où l'idée est que des points proches en terme de coordonnées multi-dimentionnelle aient la même signature de hachage (et facilite ainsi le regroupement et la recherche des k plus proche voisin).
Crédit TU-Berlin

Pour info, des index existent aussi dans les bases NoSQL mais se limitent toutes à un ArbreB. Donc aucune base NoSQL ne peut correctement contenir des données multimédias.
Cependant, du côté des SGBDR "classiques", il faut surveiller les index de type GIST qui peuvent généraliser le principe d'index.

Algorithmes améliorés:

L'algorithme des k plus proches voisins et celui du k-means sont très couramment utilisés en vision par ordinateur.

Il existe des variantes des KNN et K-means qui vont utiliser les index R ou M-tree pour accélérer la recherche des plus proches voisins.
On trouvera aussi des variantes utilisant les index approximatifs. Exemple à lire ici.

Grâce à ce genre d'améliorations, les données à dimensions multiples n'effraient plus un spécialiste en vision artificielle alors que cela laissera un mauvais souvenir à un Data Scientist et un Data Miner.

Pour aller plus loin 

Toujours en analyse d'images, il est intéressant de suivre les projets autour de la robotique comme PCL (Point Cloud Library). On y trouve des techniques :
  • sur la géométrie et l'indexation de nuage de point 3D (octree et Kd-tree)
  • la gestion des points d'intérêts
  • l'algo RANSAC pour pré-traiter les données. Il permet d'éliminer les "outliers" (valeurs extrêmes ou aberrantes) pour aider à la fusion d'images (voir la 2ème image ci-dessous).
Exemple d'ensemble de points d'intérêts ayant été utilisés pour reconstituer en 3D des objets et la géométrie du monde réel
Crédit PCL (CC By CA 3.0)
Exemple de fusion d'images en mode Panorama (image stitching) grâce aux points d'intérêts et à l'algo RANSAC
Crédit Wikimédia par Noso CC By SA 3.0

Conclusion

Le lecteur qui aura eu le courage de lire les 4 articles l'aura compris, le livre est une très bonne introduction, suffisamment abordable pour servir de base à un travail commun entre différents acteurs dont certains n'ayant jamais entendu parler de Big Data et encore moins de Machine Learning.


Ne faisant que 220 pages, les auteurs ont fait des choix sur les sujets à présenter cependant l'essentiel y est.

Avant de s'auto-proclamer "Data Scientist" après la lecture du livre, celui-ci reste néanmoins une invitation à pousser encore plus loin la porte de la curiosité et de plonger dans des notions approfondies dans les domaines suivants :

  • Statistique et probabilité
  • Data Mining (et aussi les réseaux de neurones au sens large)
  • Text Mining et analyse d'opinion
  • Machine Learning en Vision artificielle (ou en multimédia en général)
J'espère au travers des 3 derniers articles vous avoir donner envie de creuser par vous-même les aspects abordés et de vous en faire votre propre opinion.

dimanche 26 avril 2015

Analyse du livre "Big Data et Machine Learning" (vision Data Mining)

Introduction


Cet article est le troisième sur quatre prévus présentant un livre très récent dédié au Big Data, à la Data Science et notamment au Machine Learning.
Ce troisième article donnera ma vision du livre d'un point de vue du Data Mining.

On parlera essentiellement ici des :

  • chapitre 6 : Exploration et préparation des données
  • chapitre 7 : Machine Learning
Encore une fois, le livre est une excellente introduction à ce sujet complexe qu'est l'apprentissage artificiel (Machine Learning).


Que peut retenir un spécialiste du Data Mining du livre ?

Sur le chapitre 6 : Exploration et préparation des données

  • Sur cet aspect, l'essentiel est dans le livre présentant la diversité des types de données et des moyens de les explorer et de les préparer.
  • Cependant, le chapitre de 16 pages consacrés à ce sujet est sous-dimensionné par rapport à l'importance d'avoir de bonnes données en entrée.  Mes profs en Data Mining nous martelaient bien le message suivant : l'analyse et pré-traitement des données représentent au moins 80% du travail en Machine Learning (=> cette notion n'apparaît pas dans le livre). 
  • En exploration des données, il est étonnant de ne pas déjà parler de classifications automatisées pour se donner une idée des regroupements dans les données (la notion de kmeans est abordée en chapitre 7).
  • Il aurait été intéressant d'évoquer (ne serait-ce qu'en note de bas de page) les méthodes pour les fonctions de densité comme les fenêtres de Parzen qui sont une généralisation des histogrammes. (Ceci est présenté en chapitre 8 dans le livre dans la partie visualisation).

Sur le chapitre 7 : Machine Learning 

  • Voici le détail des algorithmes abordés:
                   - présentation des différentes familles d'algorithmes :
                          (paramétrique et non, supervisé ou non, probabiliste ou non...)
                   - régression linéaire
                   - k plus proches voisins
                   - classification naïve bayésienne
                   - régression logistique
                   - k-moyenne (ou k-means)
                   - arbre de décision
                   - forêt aléatoires
                   - machine à vecteur support SVM
                   - Des techniques de réduction dimensionnelle (dont l'ACP)
  • Ce que j'aime bien :
          La présentation claire avec schémas (et parfois quelques formules) de chaque algo : 
                   - une description théorique et accessible à tous 
                   - les avantages de l'algorithme
                   - ses inconvénients 

Hum... C'est tout? Y a pas d'autres algorithmes ?

Encore une fois, le livre ne fait que 220 pages ce qui est bien insuffisant pour devenir, malgré la phrase choc du livre, un "manuel du Data Scientist".

Là, le chapitre 7 m'a clairement laissé sur ma faim, le titre n'est-il  pas "Big Data et Machine Learning" ?  Dans "Learning" il y a apprentissage, la notion est abordée mais vraiment survolée. J'y reviendrais dans un article dédié à l'apprentissage articifiel.

Coté algorithme, aucune référence aux réseaux de neurones n'est faite ! C'est pourtant le classificateur universel de base en Data Mining.
Schéma interne d'un réseau de neurones (source Wikimédia CC3)
Sans les réseaux de neurones, il manque toute une famille d'algorithme :
  • Le perception multi-couche (MLP en anglais) qui sert universellement en classification, en régression et prévision.  Il est certes plus dur à expliquer aux néophytes mais le livre a réussi l'exploit d'expliquer les SVM de manière claire. Le problème des MLP est la mise en place de l'architecture du réseau de neurone et de son côté "boite noire" par la suite.
  • Les réseaux de neurones temporels (ex: TDNN)
  • Les chaînes de Markov cachée (HMM en anglais) pourtant très utilisées en prévision pour la reconnaissance vocale et gestuelle
Pour la classification également, il manque plusieurs algos :

De plus, sur certains algorithmes présentés, d'autres précisions auraient été utiles. Par exemple, c'est pour les SVM, où il n'a pas été mentionné en avantage qu'avec très peu de données, l'algo est performant. En autre car celui-ci s'intéresse aux frontières entre données à classifier (contrairement aux MLP et autre algo de stats).



Autre oubli, celui de la logique Floue. Tous les algos présentés dans le livre donnent l'impression de trouver une valeur numérique ou catégorielle unique. Or, il existe des variantes pour avoir des prévisions non pas "binaire" 0 ou 100% (oui/non) mais proposant des probas de réalisation (ex: 60%) d'une catégorie et 40% d'une autre. Cela rejoint aussi les algos de type mélange de gaussienne comme l'EM.

Concernant les techniques de réduction de dimension, il est dommage qu'elles n'apparaissent pas en chapitre 6 car c'est souvent un préalable en data mining.


Sur la comparaison entre modèles :

La validation croisée est expliquée par un schéma bien parlant, de même pour les courbes ROC et on a bien la notion de matrice de confusion, tout y est. Tout ceci est par contre découpé bizarrement entre le chapitre 7 et le 8.

Un statisticien apprécierait également que les notions plus mathématiques que sont les critères AIC et BIC soient abordées ne seraient-ce qu'en bas de page.

Et le Text Mining dans tout ça ?

Bien qu'une "analyse" de texte soit évoquée lors de la présentation d'Hadoop (Comptage de mots), une personne cherchant des entrées pour du Text Mining restera sur sa faim.
Il est juste dommage de ne pas avoir évoquer le sujet tant des outils comme WATSON d'IBM commence à prendre de plus en plus d'importance dans l'analyse du langage naturel.
D'ailleurs, les outils de "NLP" (Natural Language Processing) utilisent du Machine Learning pour déterminer à quel groupe grammatical appartiennent tel ou tel élément d'une phrase.
Voici un exemple de reconstruction de l'arbre grammatical à partir d'un parseur NLP (ici LanguageTool):



Pour conclure


Le livre permet d'avoir tous les concepts théoriques pour faire du Machine Learning, il est évident qu'un livre de 220 pages ne peut pas tout couvrir mais l'essentiel y est.
Comme souvent, le Data Scientist en herbe devra compléter ses connaissances d'algo notamment sur les réseaux de neurones car, même s'ils n'ont plus la côte, ils n'ont même pas été abordés dans l'ouvrage ainsi que tout ce qui concerne les mélanges de gaussiennes.

L'ouvrage a été l'occasion pour moi de découvrir les forêts aléatoires comme algo pouvant être performant. Ne croyant que ce que je teste, je validerais (ou pas) l'affirmation du livre sur la performance supérieure de cette famille d'algo sur les SVMs lors d'un prochain article.