Étiquette : Machine learning

  • Le machine learning au service de la conduite autonome

    Le machine learning au service de la conduite autonome

    Le machine learning est aujourd’hui omniprésent. Il transforme peu à peu l’industrie et notamment le marché des voitures autonomes. Au sein de cet article, nous expliciterons la notion de voiture autonome, dans le but d’identifier les méthodes existantes pour les faire fonctionner. L’enjeu est primordial : comprendre les liens entre l’apprentissage de la conduite par des machines et la compréhension humaine, tant sur l’aspect sémantique que sur l’aspect factuel.

    Qu’est-ce qu’une voiture autonome ?

    Les voitures autonomes s’apprêtent à bouleverser nos déplacements et notre gestion du trafic routier. Il convient donc d’en dresser une définition. Jusqu’à récemment, une définition unanime n’avait pas encore été approuvée par l’ensemble des acteurs internationaux, tant sur le plan technique (en termes de méthodes d’apprentissage), que sur le plan juridique (en termes de responsabilités et de législation routière), ou même géographique (en termes de dépendances entre les deux précédents points et selon le pays). Un consensus récent a cependant vu le jour, définissant divers niveaux d’automatisation , lesquels nous permettent non seulement d’entrevoir l’avenir mais également de situer l’avancement des recherches.

    Les niveaux d’automatisation – U.S. National Highway Traffic Safety Administration

    Le rapport du véhicule avec ce qui l’entoure et la manière qu’il peut avoir de réagir aux événements qui se déroulent autour de lui sont des enjeux primordiaux pour l’instauration d‘une confiance de la société envers cette innovation. Le fonctionnement d’une voiture autonome peut être décrit comme suit : le véhicule perçoit son environnement, planifie son trajet puis infère le trajet en fonction des informations des capteurs. Il y a donc trois sous-composantes : la perception, la planification et le contrôle. Il est alors possible d’entrevoir le rôle primordial que pourrait jouer la donnée, puisqu’elle semble être à l’origine la base d’apprentissage nécessaire à la prise de décision du véhicule autonome au sein de cette chaîne de traitement. Une question importe : comment se servir du machine learning dans ce cas ?

    La question du machine learning en conduite autonome

    Le machine learning, y compris sa variante récente deep learning, est un sous-domaine de l’intelligence artificielle. Il est possible de distinguer plusieurs types d’apprentissages adaptés à un secteur applicatif particulier. Dans le transport autonome, on se concentre sur l’apprentissage supervisé et celui par renforcement, mais ces deux derniers ne se basent pas du tout sur le même paradigme théorique.

    En apprentissage supervisé, la donnée est prépondérante. Cette dernière est labélisée (chaque donnée possède une description), et le système apprend simplement à relier un ensemble de caractéristiques observées à un label. Si nous cherchons à reconnaître quel fruit se trouve sur une image, chaque donnée pourrait décrire la circonférence et la couleur du fruit, et on connaîtrait déjà la typologie de chacune de ces entrées.

    Le système pourrait ensuite être capable de conclure la nature du fruit à chaque nouveau duo de circonférence et de couleur qu’on lui donnerait. L’explosion du deep learning a d’ailleurs rendu ces tâches beaucoup plus simples qu’auparavant et les réseaux de neurones sont maintenant au cœur des méthodes utilisées. Dans le cas des voitures autonomes, la perception identifierait un panneau de signalisation et des données sur la vitesse par exemple et prendrait une décision sur l’accéleration à appliquer ou sur le fait de freiner, en fonction de cette information.

    Workflow de perception et de prises de décision à travers les données capteurs

     

    Bien que de nombreux modèles apparaissent et sont fonctionnels, nous restons dépendants de la donnée. De grandes quantités de ces dernières sont nécessaires pour obtenir une représentativité suffisante des situations. Sans données variées, la voiture pourrait faire face à une situation qu’elle n’a jamais rencontrée . Il serait donc intéressant de pouvoir jouer sur les données différemment pour se rapprocher de l’intelligence humaine, pour aller au-delà de cet apprentissage par l’association. Mais comment faire ?

    Un paradigme différent face aux données

    L’apprentissage par renforcement pourrait être considéré comme un modèle de théorie des jeux, à la croisée de nombreux domaines allant de l’informatique aux neurosciences en passant par la psychologie. En effet, un agent agit sur un environnement au moyen d’actions. Ce dernier lui renvoie une récompense, qui est la première clé du renforcement. Nous déduisons de la connaissance à partir des observations passées et nous souhaitons maximiser la récompense à travers le temps. La donnée n’est plus le socle, mais constitue une interaction avec l’agent en décrivant l’environnement après une action ! Les équations de Bellman permettent alors de formaliser la prise décision et la maximisation de la récompense.

    Principe de l’apprentissage par renforcement

    Comment savoir si une action fut le meilleur choix ? C’est le principe d’exploration/exploitation qui constitue la seconde clé du renforcement. Imaginons que notre environnement soit constitué de deux portes qui se trouvent face à nous. La première nous offrirait une petite somme constante à chaque fois qu’on l’ouvrirait, tandis que la seconde nous offrirait un immense trésor mais seulement à de très rares ouvertures de cette dernière. Il nous faudrait alors trouver le bon équilibre. L’agent risquerait de considérer la première porte comme étant la plus intéressante, mais la seconde mériterait de ne pas complètement être délaissée : l’exploration de ce que nous ne connaissons pas, face à l’exploitation des éléments connus de l’environnement.

    Le renforcement utilise des modèles tels que les réseaux de neurones, plus connus pour leur utilisation dans l’apprentissage supervisé, pour des problèmes où l’apprentissage se fait avec des données pour lesquelles on ne connaît pas réellement la réponse attendue au premier abord. En effet, le principe d’exploration/exploitation énoncé plus haut implique une modification constante des entrées et des actions possibles, ce qui va à l’encontre des modèles supervisés qui ont ce besoin en données labélisées. Par l’utilisation de plusieurs astuces, on se retrouve pour certaines méthodes dans une situation similaire au supervisé et les réseaux de neurones sont alors en mesure d’être utilisés de manière stable. Ces derniers ont une finalité différente de ce que l’on peut rencontrer habituellement. Il faut donc relier le modèle, l’algorithme en somme, et la formulation du problème dans lequel on se trouve.

    Liens entre modèles et formulation d’un problème

    Si l’on revient à notre cas d’usage, l’environnement serait donc la route autour de notre véhicule, ce dernier prenant des actions dans cet environnement qui lui renvoie des récompenses selon les actions prises. Il s’agit donc d’un apprentissage par l’erreur, comme si le modèle raisonnait pour éviter de prendre de mauvaises décisions au fil du temps. Le nombre de portes devient cependant gigantesque, et plusieurs problèmes, déjà énoncés pour certains, apparaissent :

    • l’apprentissage est souvent complexe, le modèle met du temps à se stabiliser,
    • l’espace des actions et résultats possibles est énorme dans le cas des voitures autonomes,
    • les entrées et sorties dont le système se sert pour apprendre changent constamment, puisque l’environnement est dynamique.

    On entraîne le plus souvent les systèmes de renforcement dans des simulateurs réalistes pour veiller à étudier leurs comportements avant d’imaginer pouvoir les mettre en production pour le monde réel, compte tenu des problèmes énoncés. Après la perception et la représentation des données qui en découle, la prise de décision en renforcement pourrait aller plus loin que celle étudiée via les méthodes supervisées : l’intelligence artificielle capable de raisonner, la clé pour que les voitures autonomes soient définitivement une réalité et se rapprochent du raisonnement humain, capable de moduler ses décisions en fonction de l’environnement qui l’entoure.

     

    Entre extraction de connaissances et raisonnement, combiner le meilleur des différents mondes pourrait donc permettre à l’être humain de voir sa vison du transport révolutionnée. Comme un pas de plus vers l’intelligence artificielle généralisée, les voitures autonomes sont au cœur des préoccupations puisque la technique rencontre ici un système critique, qui nécessite une mise en relation directe de son efficacité avec les biais humains qu’elles se doivent d’outrepasser.
    Il reste encore de nombreuses travaux à effectuer, la recherche et l’industrie s’intéressant de plus en plus au renforcement comme l’avenir du domaine, et potentiellement sa sécurisation, enjeu majeur du déploiement de ces technologies.

  • Vérification des réseaux de neurones : entre besoins et défis

    Vérification des réseaux de neurones : entre besoins et défis

    Le Réseau de Neurone (RN) est l’une des principales méthodes d’apprentissage automatique supervisé. La vérification de son comportement, c’est-à-dire l’évolution de ses sorties en fonction de la variation de ses entrées, représente un réel défi. Néanmoins, cette vérification est nécessaire dans un environnement incertain où les entrées du RN sont bruitées. Cet article introduit l’importance de la vérification du RN, donne quelques exemples d’applications et décrit la formulation de leur vérification.

    Dans un article précèdent, Loic Cantat, responsable du domaine «  Science des données, Intelligence Artificielle et Interactions » et Georges Hebrail, responsable de l’axe de recherche « Science des Données et Interaction » ont présenté un état de lieux des principales approches de Machine Learning (algorithmes, outils et plateformes). Le Réseau de Neurones (RN) est l’une des approches de Machine Learning (ML) les plus populaires. Il est appliqué à plusieurs domaines, à savoir la robotique, la télécommunication, les véhicules autonomes, etc.

    Dans le contexte des véhicules autonomes, les RNs peuvent être utilisés pour différentes problématiques :

    • la perception du véhicule (détection et reconnaissance des obstacles tels que les piétons, les panneaux de signalisation, le marquage au sol, etc.),
    • la surveillance du conducteur (état de ses yeux, angle de sa tête, sa fréquence cardiaque et respiratoire, etc.),
    • et la prise de décision en fonction de l’environnement du véhicule (changement de voie, calcul de la vitesse et angle de braquage, etc.).

    Quel que soit le domaine d’application, la décision des réseaux de neurones (détecter la présence ou l’absence d’un piéton, changer ou garder la voie, etc.) peut impacter la sécurité du conducteur, des passagers et des autres utilisateurs de la route. Par exemple, détecter l’absence du piéton alors qu’il est réellement présent peut provoquer un grave accident. Ces mauvaises décisions sont généralement causées par la perturbation de l’environnement du système de décision, d’où le besoin d’une part de métriques permettant l’évaluation de la sécurité des RNs face à l’incertitude de leur environnement extérieur, et d’autre part de stratégies adversaires permettant la sécurisation des RNs contre ces incertitudes.

    Au cours de cet article, nous rappellerons le principe de fonctionnement d’un réseau de neurones. Nous définirons ensuite la sécurité d’un RN, le défi qu’elle engendre et les applications les nécessitant. Finalement, nous présenterons quelques approches de vérification d’un RN ainsi que les critères permettront de les comparer.

    Qu’est-ce qu’un réseau de neurones ?

    Un RN est composé de trois types de couches : une couche d’entrée, une couche de sortie et un ensemble de couches cachées. Le fonctionnement générique d’un RN est le suivant :

    • La couche d’entrée prend une donnée sous n’importe quel format (image, audio, description d’un trafic réseau, etc.).
    • La couche de sortie délivre une information qui peut avoir plusieurs formats (une valeur discrète, valeur continue, un vecteur de probabilités, etc.).
    • Pour passer de la couche d’entrée à la couche de sortie, une chaine de traitement est faite à travers les couches cachées. Ces dernières peuvent être des couches de convolution, de réduction de dimensionnalité, des fonctions d’activation etc.

    Au sein de cet article, nous définirons l’espace des entrées par l’ensemble de toutes les entrées possibles du RN ; et l’espace des sorties par l’ensemble des sorties possibles du RN.

    Vocabulaire d’un réseau de neurones

    Que signifie la sécurité des réseaux de neurones et comment la vérifier ?

    L’étude de la sécurité d’un réseau de neurone consiste à vérifier la capacité du RN à prendre la même décision pour toutes les données similaires, malgré les perturbations qu’elles peuvent engendrer. On appelle « une attaque » tout bruit pouvant perturber le RN.

    Le vérificateur (le système vérifiant la sécurité du RN) prend en entrée, une donnée et une attaque, et délivre à la sortie l’information sous la forme d’une « donnée sécurisée contre l’attaque ou donnée non-sécurisée contre l’attaque ».

    L’idée principale de la vérification consiste à calculer, à partir de la donnée en entrée, toutes les données possibles suite à l’attaque en question (données bruitées), et vérifier que les propriétés de la donnée originale restent valides pour les données bruitées. Les propriétés sont fixées préalablement, elles peuvent être l’appartenance à une plage d’intervalle ou encore l’appartenance à une classe d’objet.

    Principe de la vérification du réseau de neurones

    La figure suivante schématise la vérification de la sécurité d’un réseau de neurones pour une entrée donnée et pour une attaque connue. L’espace des entrées, en bleu, est l’ensemble de toutes les entrées résultantes de l’attaque en question. L’espace atteignable des sorties du RN, en rouge, désigne l’ensemble de toutes les sorties possibles. En calculant l’ensemble atteignable, deux cas peuvent exister :

    • l’ensemble atteignable est inclus dans l’ensemble désiré en vert, c’est-à-dire les propriétés des entrées sont conservées, et donc le RN est dit sécurisé.
    • l’ensemble atteignable n’est pas inclus, totalement ou partiellement, dans l’ensemble désiré, en vert, alors les propriétés ne couvrent pas l’ensemble des entrées, et donc le RN est dit non-sécurisé.
    Sécurité d’un réseau de neurones

    Pourquoi la sécurité des réseaux de neurones est-elle un défi ?

    La variation d’éclairage d’une image de piéton peut perturber le réseau de neurones qui classera par la suite le piéton comme un autre objet. Ces facteurs perturbants sont nombreux et diffèrent d’un contexte à un autre (image, audio, vidéo, etc.). Ces facteurs peuvent être regroupés en trois catégories :

    • Les facteurs environnementaux liés à l’environnement extérieur du système : il s’agit des conditions météorologiques, de l’infrastructure routière, du comportement du trafic routier, etc.
    • Les facteurs matériaux dus à la défaillance du système liée à sa durée de vie, sa configuration, son interférence avec d’autres capteurs, etc.
    • Les facteurs algorithmiques (logiciels) liés à l’erreur de précision des variables, etc.

    Le visuel ci-dessous illustre un exemple de deux attaques de RNs : dans le contexte de traitement d’images, le port des lunettes peut être une attaque qui perturbe le système biométrique de reconnaissance des visages et dans le contexte de traitement audio, un petit bruit inséré dans le signal audio a complètement modifié la transcription du signal.

    Exemples des attaques perturbant le réseau de neurones. Gauche : exemple en traitement d’images. Droite : exemple en audio.
    Exemples des attaques perturbant le réseau de neurones. Gauche : exemple en traitement d’images. Droite : exemple en audio.

    Tous ces facteurs perturbants peuvent impacter la performance du RN. Le défi actuel n’est pas uniquement de former un système de prise de décision performant (par exemple, en matière de taux de reconnaissance, de taux de bonnes détections, etc.) mais aussi le fait que ce dernier soit sécurisé (i.e. robuste) à la perturbation de ses entrées. Il s’agit du problème de vérification (ou certification) du réseau de neurones.

    Quelles sont les applications de la vérification de RN ?

    Les algorithmes de Machine Learning sont de plus en plus utilisés pour résoudre des problèmes très complexes et très sensibles à la tolérance des fautes. Prenons l’exemple de deux applications d’utilisation de réseaux de neurones : la première consiste à estimer les ressources nécessaires pour une application dans le cloud et la deuxième consiste à estimer l’angle de braquage d’un véhicule autonome. Bien que les deux applications aient la même importance, commettre une erreur de prise de décision dans la deuxième application a plus de risques que dans la première. En conséquence, la vérification d’un RN est fortement recommandée dans les applications à risques. Avoir des outils permettant de fournir des garanties formelles sur le comportement des systèmes reste un défi.

    D’une manière générale les applications à risque nécessitent une vérification/certification du RN avant son déploiement. Parmi ces applications, nous pouvons citer la cybersécurité (détection d’anomalies, détection d’intrusion, protection du mot de passe, etc.), la médecine (une mauvaise décision pourrait mettre en danger la vie des patients) et les systèmes autonomes (véhicules, robots, avions, etc.).

    Comment le problème de vérification de réseau de neurones a-t’il été formulé dans la littérature ?

    Les approches de l’état de l’art se différencient par la façon avec laquelle le problème de vérification de réseau de neurones a été formulé. On peut identifier deux stratégies de vérification du RN :

    • La première stratégie suppose l’existence d’un contre-exemple ; un exemple où le RN n’est pas sécurisé et tente de le trouver. L’existence du contre-exemple prouve que le RN n’est pas sécurisé.
    • La deuxième stratégie consiste à calculer l’ensemble atteignable de toutes les entrées et vérifie s’il est inclus dans l’ensemble désiré. Son inclusion prouve que le RN est sécurisé.

    Quels sont les critères pertinents qui peuvent nous aider à choisir l’approche de vérification ?

    Pour un utilisateur intéressé à vérifier son RN, la question qui se pose est la suivante : quels sont les critères permettant de choisir l’approche la plus adéquate ?

    Parmi les critères qui distinguent une approche de vérification d’un réseau de neurones d’une autre, on cite :

    • Le temps moyen de réponse : il s’agit du temps moyen nécessaire pour vérifier une entrée donnée.
    • La scalabilité : certaines approches perdent leur efficacité lorsqu’elles sont appliquées sur les réseaux de neurones de large profondeur. La scalabilité est définie par la capacité de l’approche à rester efficace même pour des RNs de large profondeur.

     

    Dans cet article, nous avons évoqué le problème de vérification de réseau de neurones, un problème très important pour les systèmes à faible tolérance aux fautes pour garantir sa sécurité. D’une manière générale, ce problème est celui de la vérification de l’évolution des sorties d’un réseau de neurones en fonction de la perturbation de ses entrées. Cette perturbation est due globalement au trouble de l’environnement extérieur du réseau de neurones. Pour résoudre le problème de vérification, plusieurs approches ont été proposées avec des formulations différentes. Pour un contexte donné, l’approche la plus adéquate peut-être sélectionnée en fonction de son temps moyen de réponse et de sa scalabilité. Le comportement des approches en fonction de ces critères varie d’un contexte à l’autre et d’un type de données à un autre.

  • Le Machine Learning, un domaine de l’Intelligence Artificielle en forte évolution

    Le Machine Learning, un domaine de l’Intelligence Artificielle en forte évolution

    Le Machine Learning est l’une des principales technologies de l’Intelligence Artificielle (IA). Cet article vous propose un état des lieux des approches de Machine Learning et des plateformes et outils actuellement disponibles dans ce domaine.

    Le Machine Learning et sa place dans l’IA

    Dans leur rapport au Sénat en mars 2017 (synthèse du rapport), le député Claude de Ganay et la sénatrice Dominique Gillot retiennent six grands domaines pour définir l’intelligence artificielle, en lien étroit avec cinq domaines des sciences humaines et sociales (partie droite du graphique ci-dessous) :

    Les pourcentages indiquent la répartition estimée de manière approximative des chercheurs français entre les différents domaines de l’intelligence artificielle. (Source : Rapport Claude de Ganay/Dominique Gillot « Pour une intelligence artificielle maîtrisée, utile et démystifiée »).

    L’apprentissage automatique (« Machine Learning » en anglais) est l’un des principaux domaines de l’intelligence artificielle. Il permet de réaliser des programmes informatiques, accomplissant des tâches difficiles à programmer par des moyens traditionnels (ou bien au prix d’un effort, d’une expertise et d’un temps bien plus important). L’idée est de concevoir des algorithmes capables d’apprendre à trouver eux-mêmes une solution, soit à partir d’exemples déjà résolus (apprentissage supervisé), soit en récompensant chaque progression de l’algorithme vers une solution satisfaisante (apprentissage par renforcement).

    Les différents types de Machine Learning

    Le Machine Learning consiste à construire un algorithme qui utilise directement des données représentatives du problème que l’on cherche à résoudre. En conséquence, les différents types de Machine Learning correspondent aux manières d’utiliser ces données pour « apprendre à la machine » à résoudre un problème.
    Elles se distinguent principalement par le niveau de supervision de l’apprentissage, et/ou la manière de récompenser la progression de l’apprentissage vers une bonne solution. Nous avons dressé ci-dessous une liste des principales typologies :

    → Apprentissage supervisé (supervised)

    On présente à l’algorithme des exemples de la tâche à réaliser, où sont fournies à la fois les entrées (des images par exemple) et les sorties (résultats) souhaitées (par exemple voiture, avion, etc.). Le but de l’algorithme de Machine Learning (réseaux de neurones, SVM – machine à vecteurs de support, etc.) est alors de rechercher une règle générale qui fait correspondre les entrées aux sorties.
    Le cas général de l’apprentissage supervisé est adapté lorsque l’on connait le résultat attendu pour un grand nombre de données d’entrée. Plus les modèles sont complexes, plus la quantité de données nécessaires pour obtenir de bons résultats est grande.
    En fonction des données disponibles pour l’apprentissage, on pourra utiliser des versions dérivées de l’apprentissage supervisé telles que celles présentées ci-dessous :

    • Apprentissage semi-supervisé (semi-supervised) : l’ordinateur ne reçoit qu’un signal d’apprentissage incomplet. Pour une partie des exemples, les entrées sont disponibles mais les sorties sont manquantes.
    • Apprentissage actif (active) : l’ordinateur ne peut obtenir la sortie que pour un nombre limité d’entrées (basé sur un budget) et doit optimiser son choix des exemples pour lesquels il demande d’acquérir la sortie. L’apprentissage se déroule de manière interactive, les exemples étant présentés à l’utilisateur pour être étiquetés.
    • Apprentissage par renforcement (reinforcement) : les données d’entraînement (sous forme de récompenses et de punitions) ne sont données qu’à titre de rétroaction aux actions du programme dans un environnement dynamique, comme la conduite d’un véhicule ou le jeu contre un adversaire. Un exemple de ce type d’algorithme est le Q-Learning.

    → Apprentissage non supervisé (unsupervised)

    Cette méthode se distingue de l’apprentissage supervisé par le fait qu’il n’y a a priori pas de connaissance des sorties attendues. Dans l’apprentissage non supervisé, il y a comme entrée un ensemble de données collectées. Ensuite le programme traite ces données comme des variables aléatoires et construit un modèle de « densités jointes » pour cet ensemble de données. L’algorithme doit découvrir par lui-même la structure plus ou moins cachée des données.
    Voici deux exemples de méthode d’apprentissage non supervisé :

    • Le clustering pour identifier dans un ensemble de données, des sous-populations présentant des caractéristiques proches. Cette méthode permet par exemple d’identifier des groupes de personnes au sein d’un échantillon.
    • L’auto-encodeur correspond à la capacité à construire une représentation intermédiaire des données d’entrée, équivalente mais de plus petite dimension, et permettant de générer, à partir de cette représentation un résultat aussi proche que possible des données sources.

    Exemple : à partir d’un ensemble d’images HD couleur (1082x920x3~=3 millions de valeurs), on construit un réseau de neurones qui, pour chacune des images, fournira une représentation sous la forme de X valeurs (1000 par exemple) permettant de reconstruire une image la plus proche possible de l’original. Cette méthode peut être utilisée pour la compression d’images (on ne transfère plus que les 1000 valeurs au lieu des 3 millions), mais cette méthode peut aussi avoir d’autres usages. En effet, pour compresser l’image, le réseau va devoir chercher à « interpréter » le contenu de l’image, et donc identifier des caractéristiques propres à celles-ci. Ces caractéristiques sont utiles pour la classification d’images, on pourra donc utiliser le modèle appris via un auto-encodeur (sur des images non étiquetées), pour le réutiliser dans l’apprentissage d’un classifieur d’images.

    → Apprentissage par transfert (transfer)

    L’apprentissage par transfert peut être vu comme la capacité d’un système à reconnaître et appliquer des connaissances et des compétences apprises à partir de tâches antérieures sur de nouvelles tâches ou domaines partageant des similitudes. Les questions qui se posent alors sont : comment identifier les similitudes entre la ou les tâche(s) cible(s) et la/les tâche(s) source(s) ? Comment transférer la connaissance de la/des tâche(s) source(s) vers la/les tâche(s) cible(s) ?
    Nous avons donné un exemple de transfert dans la description de l’auto-encodeur, mais cette technique s’applique à bien d’autres cas. Elle permet souvent de pallier le faible nombre de données disponibles pour un problème donné, en utilisant les résultats obtenus avec des problématiques proches.
    Pour une vision plus complète des méthodes de Machine Learning, voici une carte mentale construite par l’IRT SystemX :

    Les applications du Machine Learning

    Avec l’informatisation de la plupart des processus dans les entreprises, de nombreuses données reflétant l’activité de l’entreprise, de ses employés et de ses clients sont générées. Ces données contiennent les « règles » ou les « équations » régissant ces processus : on peut donc envisager d’automatiser certaines tâches en utilisant ces données comme exemples d’apprentissage. On trouve donc des applications du Machine Learning dans quasiment tous les secteurs, comme l’atteste le diagramme ci-dessous issu d’un blog du 4 juin 2016 du magazine économique américain Forbes.

    Comment mettre en œuvre le Machine Learning ?

    Pour développer une application basée sur du Machine Learning, il faut trois éléments principaux :

    → Des données

    Comme le principe de ces applications est d’utiliser des données servant d’exemples pour l’apprentissage, il est indispensable de disposer de telles données, qui peuvent être notées ou non, en fonction du problème posé (supervisé ou non). On distingue les données servant à l’apprentissage, pour construire le modèle, de celles servant à l’évaluation de la performance du modèle. Dans tous les cas, on préfère utiliser des données réelles, mais dans certains cas, celles-ci ne sont pas suffisantes. Il est donc nécessaire de générer des données synthétiques pour compléter les données réelles.

    → Des algorithmes

    Les méthodes d’apprentissage automatique sont mises en œuvre par des algorithmes qui s’appliquent aux données au travers d’outils informatiques (hardware et software). On distingue plusieurs types d’outils :

    • ceux qui permettent de stocker et structurer les données (fichiers, bases de données, solutions Big Data),
    • ceux qui permettent d’appliquer les algorithmes sur les données pour construire des modèles (réseau de neurones, random forest, etc.),
    • ceux qui permettent d’évaluer leurs performances et mettre en production des modèles (plateformes de Machine Learning).

    La plupart des environnements disponibles permettent d’utiliser conjointement ces deux types d’outils.

    → De la connaissance et du savoir-faire

    Comme tout outil, il faut disposer du mode d’emploi avant de mettre en œuvre une méthode de Machine Learning. Le domaine étant très actif, les méthodes et outils évoluent très vite. Il est indispensable de se documenter pour se tenir à jour des dernières avancées. Les bonnes pratiques se trouvent en consultant régulièrement des publications scientifiques, les benchmarks, les tutoriels et les MOOC en ligne, ou bien en participant ou en organisant des hackathons et des challenges.

    Où trouve-t-on les données ?

    Lorsque l’on travaille sur un projet, les premières sources de données sont celles fournies par le projet (par exemple des données de trafic routier ou de consommation d’énergie). Néanmoins, il est souvent nécessaire de compléter les données privées disponibles dans le projet par d’autres données (par exemple, les données météo sont de bons facteurs explicatifs du trafic routier ou de la consommation d’énergie). De nombreuses plateformes dites Open Data (et des moteurs de recherche dédiés) permettent de rechercher et télécharger ces données externes aux projets, disponibles gratuitement ou devant être achetées. Ces plateformes permettent aussi de publier ses propres données (avec l’accord des commanditaires), et ainsi d’augmenter leur visibilité et de profiter du résultat de la recherche ouverte appliqués à ces données.

    Dans certains cas, la quantité et la diversité de nos données privées – éventuellement augmentées par des données externes – restent insuffisantes. Il faut alors envisager de générer des données synthétiques, les plus réalistes possible. Bien que ce problème soit récurrent, on ne trouve pour l’instant que peu d’outils génériques ou de plateformes de génération de données.

    Comment gérer les données pour le Machine Learning ?

    Nous avons expliqué dans les paragraphes précédents que la donnée était au cœur des méthodes de Machine Learning. Un élément à prendre en compte est donc le stockage et la gestion de ces données pour mettre en œuvre ces méthodes correctement.
    La gestion des données pour le Machine Learning doit répondre à plusieurs problématiques.

    → Comment collecter les données ?

    Les données brutes – publiques ou privées – sont rarement exploitables directement, les travaux suivants sont souvent nécessaires pour obtenir des résultats pertinents :

    • le nettoyage des données pour éviter l’apprentissage de comportements non souhaités,
    • l’étiquetage des données pour définir le résultat attendu de l’apprentissage,
    • la qualification des données pour estimer leur représentativité.

    De plus, cette collecte peut être effectuée ponctuellement, ou résulter d’un processus de flux avec une arrivée constante de nouvelles données. Certaines plateformes mettent à disposition tout un ensemble d’outils et/ou d’infrastructures pour simplifier ce processus.

    → Comment stocker les données ?

    Une fois collectées ces données doivent être stockées, et là encore le stockage va dépendre de la typologie de données collectées et de la phase du projet (développement/exploitation).
    En fonction de la typologie des données, il est possible d’utiliser des fichiers (par exemple des images ou bien fichiers binaires propres aux frameworks utilisés) pour des données homogènes. Par contre, si les données sont nombreuses et variées, il est préférable d’avoir recours à des bases de données.
    Concernant le déploiement, les algorithmes de Machine Learning s’insèrent dans les systèmes d’information au même titre que d’autres composants, avec un accès aux data warehouses (entrepôts de données) et aux data lakes (méthode de stockage des données utilisée par le Big Data).
    Dans tous les cas, on conserve l’historique des données et traitements associés dans la phase de développement (cahier de laboratoire) et l’exploitation (gestion de configuration).

    Où trouve-t-on les algorithmes ?

    Pour mettre en œuvre les algorithmes de Machine Learning, il n’est plus nécessaire de les programmer. De nombreux outils sont disponibles sous la forme de librairies, de framework ou de plateformes, le plus souvent sous forme de logiciel libre.

    Il est néanmoins possible de distinguer trois manières de mettre en œuvre ces algorithmes :

    → L’installation d’outils « in premises » : par exemple scikit learn, tensorflow, pytorch, R
    Les logiciels sont installés directement sur le PC du Data Scientist ou sur un serveur auquel on lui donne un accès pour travailler à distance. Ces outils nécessitent la connaissance d’un langage de programmation (majoritairement Python, mais d’autres langages sont disponibles) pour définir les modèles à utiliser, injecter les données, et piloter les phases d’apprentissage.

    → Des plateformes Cloud (MLaaS) : Azure ML, Watson, Google, Amazon
    Ces plateformes permettent de mettre en œuvre des algorithmes de Machine Learning via des applications web déployées sur le Cloud. Ces plateformes sont souvent dédiées à une typologie de données.

    → Des environnements hybrides : Dataiku, OpenML
    Ces plateformes peuvent être utilisées comme des services (MLaaS) ou déployées dans un environnement.

     

    Le Machine Learning s’avère donc être une branche de l’intelligence artificielle prometteuse, porteuse de nombreuses évolutions technologiques dans de nombreux domaines sociétaux et industriels. Afin de soutenir son développement, de nombreux outils sont aujourd’hui à disposition :

    • Des plateformes de mise à disposition de données ont été créées, telles que gouv.fr, le Machine Learning Repository de l’UC Irvine, ou encore OpenDataSoft. Ces sources de données externes peuvent être utilisées dans des projets de R&D en complément des données privées.
    • Des plateformes et/ou environnements de développement : nous citerons par exemple Amazon Machine Learning, Dataiku, SciKit-Learn et Tensorflow + Keras, pytorch.

    Des plateformes de connaissance, pour développer son expertise autour des méthodes de Machine Learning via des MOOCs, des tutoriels mis à disposition en ligne et des publications scientifiques.

    Plutôt que de décrire les technologies et algorithmes sous-jacents au Machine Learning, nous avons présenté dans cet article les spécificités de cette nouvelle approche par rapport aux méthodes analytiques[1] plus classiques de la science informatique.
    La pertinence des solutions à base de Machine Learning est très dépendante des connaissances métier (pour la formulation et l’identification du problème que l’on souhaite résoudre), des données associées (à partir desquelles le Machine Learning pourra être effectué) et de la structure du modèle utilisé pour les traiter à partir des outils disponibles (le métier des spécialistes en Machine Learning). A cette fin, nous avons partagé un vocabulaire et une compréhension des enjeux pour faciliter les collaborations entre « expert métiers » de cas d’usage et spécialistes du Machine Learning.