Comment le Deep Learning repousse les limites des machines

Le Deep Learning est à la mode. On en entend parler régulièrement sans vraiment bien comprendre de quoi il en retourne. Wikipedia n’est pas forcément d’une très grande aide puisqu’il nous donne la définition suivante : « un ensemble de méthode d’apprentissage automatique tentant de modéliser avec un haut niveau d’abstraction des données grâce à des architectures articulées de différentes transformations linéaires ».

Tachons de comprendre en termes plus profanes de quoi il en retourne.

Comprendre l’apprentissage automatique

Une manière différente de résoudre des problèmes

L’apprentissage profond (ou Deep Learning) est une technique exploitée par un champ particulier de l’informatique : l’apprentissage automatique (Machine Learning).

Classiquement, un informaticien écrit des programmes ou des algorithmes. En clair il définit une série d’instructions précises facilement compréhensibles par une machine.

Mais cette approche se heurte à la résolution de certains problèmes qu’il est difficile de réduire à un protocole. Pour reprendre un exemple tiré d’une conférence Ted donnée par Fei Fei Li de l’université de Stanford : comment apprendre à un ordinateur à reconnaitre un chat ? On pourrait imaginer une méthode basée sur la silhouette en créant un programme capable d’identifier des formes géométriques.

Tentative de définition d'un chat basé sur la géométrie - Ted Fei Fei Li Mars 2015

Tentative de définition d’un chat basée sur la géométrie – ConférenceTed Fei Fei Li Mars 2015

Malheureusement cette technique montre vite ses limites pour peu que la posture du chat soit différente ou qu’une partie de son corps soit cachée sur l’image. On pourrait alors se dire qu’il faut utiliser en plus de la géométrie les couleurs, et ainsi de suite à chaque difficulté rencontrée.

Les problèmes d'une approche géométrique - Ted Fei Fei Li Mars 2015

Les limites d’une approche géométrique – Ted Fei Fei Li Mars 2015

En définitive, il y a toute une série de tâches que l’on effectue inconsciemment mais qui sont très difficiles à traduire en instructions informatiques : reconnaître des images, analyser des textes, identifier des sons…

Et c’est ici qu’intervient l’apprentissage automatique : au lieu d’écrire un programme pour résoudre le problème, on va créer un programme qui apprend à résoudre le problème. Le programme n’est pas figé, il s’améliore continuellement avec le temps et devient au final plus efficace que les traditionnelles lignes de code rigides.

Si cette méthode connait un fort regain d’intérêt de la part des scientifiques ces dernières années, elle est relativement ancienne puisqu’elle fut mise au point dans les années 60. Cependant, l’apprentissage automatique ne donne des résultats satisfaisants qu’à la condition de disposer de beaucoup de données pour « entrainer » les machines et d’une puissance de calcul suffisante pour élaborer des modèles complexes. Manifestement, les deux conditions sont aujourd’hui remplies.

Fonctionnement schématique

Partons d’un exemple pour illustrer une méthode courante. Mettons que l’on souhaite créer un modèle qui reconnait les chats sur les images. On va :

  • Récupérer des données à analyser.
  • Extraire les variables nécessaires au modèle (feature engineering) : des formes géométriques, les couleurs principales de l’image … C’est une étape cruciale car de la qualité des variables (features) dépend la pertinence du modèle.
  • Entraîner le modèle à partir des variables extraites
    • A chaque étape le modèle émet une prédiction
    • On compare cette prédiction au résultat attendu
    • En fonction de l’erreur on modifie les paramètres du modèle.
  • On répète l’étape précédente jusqu’à ce que l’on arrête de constater une amélioration
  • Le modèle est maintenant prêt à réaliser des prédictions à partir de données nouvelles.

Une infographie très claire est disponible en français pour comprendre le processus à partir d’un exemple simple. Comment je peux déterminer si un appartement est situé à San Francisco ou New York à partir d’une base de données donnant son prix et son altitude ?

Pour résumer, les ingénieurs ont besoin de concevoir 3 choses :

  • Les programmes pour identifier et extraire les variables initiales
  • Les opérations mathématiques qui donnent du sens aux données (le modèle à proprement parlé)
  • Les algorithmes qui ajustent les paramètres du modèle

Apprentissage supervisé et non-supervisé

Le cœur de l’apprentissage automatique, ce sont les algorithmes qui permettent d’entraîner le modèle. On peut distinguer 2 grandes écoles.

L’apprentissage supervisé : on fournit au modèle un jeu de données (des images, des textes …) associé à un signal (ceci est une photo d’un chien, ce texte parle de jardinage …). Le modèle réalise une prédiction que l’on va comparer au résultat attendu (le signal). En fonction de la pertinence de la prédiction, le modèle auto-ajuste ses paramètres de manière à abaisser son taux d’erreur.

Parmi les algorithmes supervisés les plus populaires on peut citer les arbres de décisions, les forêts d’arbres décisionnels (Random Forest), les Machines à Vecteur de support (Support Vector Machine), les classifications naïves bayésiennes.

L’apprentissage non supervisée : on fournit au modèle un jeu de données pour le laisser déterminer des structures en son sein, par exemple des similitudes (cluster analysis). Cela ne répond pas au même but, ici on cherche à « faire parler » les données quand l’apprentissage supervisé essaie de fournir des prévisions.

Quelques exemples d’algorithmes non supervisés : k-moyennes (K-means), fuzzy clustering, hierarchical clustering …

Réseaux neuronaux et modèles probabilistes

Un modèle est fondé sur des modules de base qui remplissent différentes fonctions : ranger, classifier, identifier …

Certains des modèles les plus populaires sont basés sur des réseaux neuronaux (Neural Networks), autrement dit une série de modules mathématiques structurés pour transformer les données dans un but précis. Pour dissiper toute ambiguïté, le fonctionnement du cerveau humain est encore aujourd’hui très largement incompris, le seul rapport établi entre ces réseaux et les neurosciences réside dans les intentions originelles des chercheurs qui voulaient imiter dans les années 1960 le fonctionnement, présumé, du cerveau.

D’autres techniques sont plutôt d’inspiration statistique.

Je ne vais pas rentrer dans les détails, car je ne les maîtrise tout simplement pas, mais il faut retenir ici que l’apprentissage automatique ne se résume pas aux réseaux neuronaux ni à l’apprentissage profond que l’on va aborder juste après.

Il existe une variété de méthode pour construire un modèle et l’entrainer ; chacune étant plus ou moins adaptées à certaines tâches. Dans les faits, les chercheurs combinent souvent plusieurs techniques.

Classification des principales méthodes utilisées en Machine Learning - NYU

Classification des principales méthodes utilisées en Machine Learning – NYU

Le Deep Learning

Principe généraux

Différents niveaux d'abstraction - H.Lee et al, Princeton 2011

Différents niveaux d’abstraction – H.Lee et al, Princeton 2011

Les techniques d’apprentissage automatique conventionnelles ont une capacité limitée à interpréter des données naturelles brutes telle que nous les percevons au quotidien : les sons, la vue, le texte …

Pourquoi ? Car il faut disposer de données initiales. Or réunir de telles informations demandait de mettre au point manuellement des sous-programmes très complexes afin de les traduire en données facilement interprétables par un algorithme.

 

L’apprentissage profond (Deep Learning) n’est pas à proprement parler un algorithme mais plutôt une combinaison de différentes méthodes.

L’essence de la technique est de construire des représentations des données de plus en plus complexes. Pour la reconnaisance d’image on identifie d’abord des pixels, qui sont utilisés pour définir des contours, puis des formes, des parties et enfin des objets.

Ce signal vient alimenter d’autres fonctions et ainsi de suite pour former un modèle dit en plusieurs couches (layering). On découvre donc d’abord des caractéristiques simples qui servent de fondation pour découvrir de nouvelles propriétés plus complexes.

De fait les couches sont hiérarchisées. De l’architecture du modèle, construit en couches ou niveaux successifs, découle le qualificatif de profond.

La phase d’entrainement du modèle va consister à le nourrir de données pour que la machine raffine les fonctions mathématiques qui gouvernent chaque niveau jusqu’à obtenir un résultat précis.

Variantes

Dans les faits, les ingénieurs ont développé différentes architectures : on parlera de Deep Neural Network, Convolutional Deep Neural Network (ConvNets) ou encore de Deep Belief Network.

De même, il existe une multitude de méthode pour entraîner le modèle :

  • L’apprentissage supervisé fonctionne très bien pour les modèles de reconnaissance du texte et de l’image
  • On peut aussi entraîner chaque couche de manière non supervisée avant entrainement la couche supérieure classificatrice (classifier) selon un mode supervisé. C’est une méthode adaptée si l’on dispose de peu de données brutes identifiées.
  • On peut également entraîner chaque couche de manière non supervisée puis re-entraîner l’ensemble du modèle avec supervision. C’est la technique privilégiée en cas de données d’entrée de mauvaise qualité comme pour les systèmes de détection des piétons à bord des voitures autonomes.

Avantages

Recourir au Deep Learning permet d’automatiser l’étape du feature engineering, afin de laisser le modèle déterminer lui-même les variables à extraire des données brutes. Pour reprendre l’exemple des photos de chat, il suffira de fournir au modèle de nombreuses photos légendées pour qu’il détermine lui-même les critères à évaluer.

Auparavant, il fallait être un expert du fonctionnement des pixels et de la géométrie pour « fabriquer » les variables d’un modèle de reconnaissance d’image ; un physicien spécialiste des ondes sonores pour un modèle de synthèse vocale … C’était une étape longue et fastidieuse.

Aujourd’hui les modèles automatiques font systématiquement mieux que les programmes écrits par les experts (dans un certain nombre de domaine tout du moins). Et par dessus le marché il sont beaucoup plus rapides à créer.

Les avancées récentes

La reconnaissance d’image

Le Deep Learning a permis de faire des avancées remarquables dans le domaine de la reconnaissance d’image. Fei Fei Li de Stanford, montre dans cette conférence les capacités des machines à décrire une photographie. Au moment de l’enregistrement début 2015, l’experte comparait son système à un enfant de 3 ans. Gageons qu’il atteindra la majorité plus tôt que prévu.

Les applications industrielles les plus prometteuses dans ce domaine concernent les voitures autonomes et l’imagerie médicale.

Il est évident que les voitures ne pourront être autonomes que le jour où elles seront en mesure de percevoir et d’analyser leur environnement en temps réel. Comme on a pu l’évoquer, les équipes de recherche les plus en pointe sont déjà très avancées.

Farabet et al. ICML 2012, PAMI 2013

Farabet et al. ICML 2012, PAMI 2013

En termes de médecine, comme expliqué dans le Digital Doctor les systèmes d’imageries modernes sont très précis, voir trop puisque les radiologistes sont submergés d’information. Des systèmes capables de détecter des signes de maladies sur les scanners pourraient être un atout précieux pour les médecins. La start-up américaine Enlitic prétend avoir mis au point un algorithme 50% plus efficace pour repérer les cellules cancéreuses sur les radiographies.

Et ce n’est vraisemblablement que le début. Les applications semblent infinies :

  • On peut créer un modèle capable d’identifier le caractère drôle ou pas d’une image ; puis l’utiliser pour modifier automatiquement n’importe quelle image de manière à la rendre plus ou moins amusante.
  • Tout le monde a également constaté avec quelle efficacité Facebook est capable d’identifier seul les personnes présentes sur un photo.
  • Google a entrainé un modèle qui essaie de deviner à partir d’une image l’endroit dans le monde où elle a été prise. On l’a ensuite mesuré à plusieurs voyageurs chevronnés sur un même jeu d’image. Résultat ? Victoire de la machine sur 28 des 50 manches, avec une erreur moyenne de 1100km contre 2320km pour les humains.
  • Une équipe de la Rudgers University dans le New Yersey a nourri son modèle avec des centaines de tableaux classiques. Ils ont ensuite laissé le modèle déterminer les éventuelles influences entre les peintres et les courants. L’ordinateur a retrouvé de lui-même de nombreux liens attestés entre les œuvres mais pourraient aussi avoir identifié des similitudes troublantes peu connues dans l’histoire de l’art.
  • On peut utiliser un algorithme pour déterminer la meilleure photographie parmi une série de portrait.
  • Plus original, on peut à partir de Google Street View identifier le type de voiture le plus courant dans un certains quartier (plus ou moins luxueux par exemple) et ensuite étudier d’éventuelles corrélations avec des données sociologiques comme l’orientation politique.
  • Dans la même veine, des chercheurs ont entrainé un modèle à établir un lien entre l’aspect visuel des rues (comme celui visible sur Google Street View) et le taux de criminalité. Ensuite, ils prédisent le taux de criminalité par quartier d’une autre ville sur la seule base de l’apparence des rues.

La compréhension du langage

Il suffit d’utiliser une seule fois les assistants virtuels embarqués dans les smartphones (Siri, Google Now …) pour réaliser les progrès accomplis en termes de reconnaissance du langage naturel (celui que l’on parle au quotidien).

Il ne s’agit pas seulement d’une simple retranscription d’un signal sonore en texte. De plus en plus les algorithmes peuvent déterminer le sens d’une phrase pour y apporter une réponse adéquate. On sait aussi de mieux en mieux identifier les sujets abordés ou les sentiments véhiculés.

Enfin, les machines nous comprennent mais sont aussi capables de s’exprimer de manière intelligible. Là encore les applications sont légions :

  • Narrative Science a mis au point des algorithmes qui rédigent des articles informatifs par exemple sur les publications financières des entreprises cotées ou les résultats sportifs.
  • D’autres se sont essayé à la rédaction de discours politique.
  • Google a détaillé dans un article le fonctionnement d’un robot capable de répondre à un utilisateur par messagerie instantanée pour le dépanner en cas de problème informatique.
  • Des entreprises comme Blackstone Discovery sont par ailleurs spécialisées dans l’analyse automatique de documents légaux afin de déterminer lesquels sont utiles pour une procédure donnée.

La recherche scientifique

L’application des techniques d’apprentissage automatique s’avère également très fructueuse dans de nombreux laboratoires. Notamment pour faire analyser des jeux de données expérimentaux d’apparence incompréhensible.

Des avancées ont pu être faites dans la compréhension des résultats des accélérateurs de particule, des ondes cérébrales, la modélisation des effets de molécules pharmaceutiques expérimentales ou bien encore des mutations d’ADN.

Qui sont les champions du secteur ?

Les applications industrielles de l’apprentissage automatique commencent à peine à émerger. La discipline reste encore très expérimentale même si elle va vraisemblablement exploser dans les années à venir vu les applications potentielles.

L’essentiel de l’expertise sur la question était détenue par les laboratoires des grandes universités nord-américaines. Depuis quelques années, les pionniers à qui l’ont doit les principales avancées ont été largement débauchés par un petit nombre d’entreprises privées.

Citons notamment (une liste plus complète est disponible ici) :

  • Geoffrey Hinton, université de Toronto et maintenant employé par Google
  • Andrew Ng, université de Standford, passé par Google et maintenant chez le chinois Baidu.
  • Yann LeCun, université de New York, Facebook

Comme on le voit, les géants du web préparent l’avenir.

Share Button

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *