Le deep learning ou apprentissage profond est une des disciplines les plus en vogue actuellement dans le domaine de l’intelligence artificielle. Il fait l’objet d’une intense activité de recherche dans les universités et dans les entreprises comme les GAFA et autres Baidu.

Que recouvre précisément ce terme ? Quels sont ses principes de fonctionnement et ses grands axes d’implémentation ? Au cours de cet article et des suivants, j’essaierai d’apporter à ces questions des explications claires sans tomber dans le simplisme.

Le deep learning, une discipline difficile mais…

A moins d’avoir vécu comme un ermite au cours des deux dernières années, vous avez forcément entendu parler du deep learning.

Google Trends : Statistiques de recherche pour « deep learning » au cours des cinq dernières années. Le score de 100 représente le maximum enregistré sur la période.

Et si vous avez eu la curiosité de lire à ce sujet, vous avez dû vous apercevoir que c’est une discipline hautement technique et complexe en apparence. Cette complexité est de trois ordres :

  • complexité liée à l’implémentation, qui ne concerne que les ingénieurs
  • complexité liée au jargon, que je vais tenter de vous expliquer1)Dans cette série d’articles, j’emploierai fréquemment les termes anglais avec la traduction en Français. En effet, les travaux sur le sujet sont très majoritairement conduits en Anglais et il est important d’utiliser le même vocabulaire pour une meilleure compréhension.
  • enfin complexité liée au caractère abstrait des représentations utilisées. Pour ce dernier aspect, il n’y a pas de solution miracle mais la manipulation répétée de ces objets finit par en donner une certaine intuition. Pour reprendre un propos attribué à John von Neuman, “en mathématiques, on ne comprend jamais vraiment, on s’habitue”.

La bonne nouvelle, c’est que si construire et surtout optimiser un modèle de deep learning est difficile, les concepts généraux sont assez accessibles. Dans cet article, je m’en tiendrai à une présentation générale du deep learning et j’expliquerai l’origine des réseaux neuronaux. Dans le prochain article, nous étudierons notre premier modèle de réseau neuronal. Puis j’étendrai progressivement mes explications à différents modèles et notions constituant la boîte à outils de l’ingénieur en deep learning.

Disclaimer : cette série d’articles ne prétend pas constituer un cours. Aussi omettrai-je volontairement certains éléments trop techniques, ou bien les résumerai-je de façon rapide. J’inclurai par endroits des formules mathématiques pour ceux que cela intéresse, mais il y aura aussi des explications en Français pour les autres donc ne vous sentez pas obligés d’entrer dans le détail des calculs. L’important est de démystifier ce qui n’est pas qu’un « buzzword ».

Qu’est-ce que le “deep learning” ?

Avant de parler du deep learning, évoquons le « machine learning ». Le machine learning est une branche de l’intelligence artificielle qui vise à permettre aux ordinateurs d’apprendre à effectuer des tâches de classification ou de prédiction, sans que l’opérateur ait à saisir explicitement les règles permettant de les accomplir.

Par exemple, imaginons une banque qui chercherait à classer ses clients demandeurs de prêt en « risqué » ou « sûr ». Des dizaines de paramètres peuvent entrer dans cette classification : l’historique de paiement du client, sa situation professionnelle, sa situation familiale, son âge, s’il est déjà propriétaire ou non etc. Pour un humain, créer un algorithme modélisant précisément le risque en fonction de tous ces paramètres serait fastidieux voire impossible.

Avec les algorithmes de machine learning, on choisit l’approche inverse : on ne cherche pas à deviner précisément les paramètres du modèle. Par contre, on entre dans l’algorithme des milliers d’exemples réels, c’est-à-dire de clients pour lesquels on connaît les variables d’entrée ainsi que la catégorie dans laquelle ils appartiennent (par exemple : « risqué » = a eu un incident de paiement au cours des $n$ dernières années). On laisse alors l’algorithme découvrir seul les critères sur chacune des variables qui permettent de prédire le classement le plus précis possible par rapport à notre référence.2)Je décris ici l’apprentissage « supervisé », i.e. où on dispose d’un jeu de données de référence incluant le résultat à obtenir, mais il y a aussi des algorithmes non supervisés pour d’autres types de tâches.

Une des classes d’algorithmes les plus populaires du machine learning est le réseau neuronal artificiel (Artificial Neural Network ou ANN), qui existe sous de multiples formes. Les ANN traditionnels ne comptent souvent qu’une couche d’entrée, une couche de sortie et 1 à 3 couches entre les deux. Une couche, c’est un groupe de neurones qui reçoivent leurs signaux d’entrée des mêmes neurones (la couche précédente) et envoient leur signal de sortie aux même neurones (la couche suivante).

Ce réseau neuronal simple comporte deux couches « cachées » (hidden layers) – ainsi appelées car l’utilisateur ne voit que ce qui entre dans le réseau et en sort, pas ce qui se passe au milieu. La couche de sortie ($y$) calcule le résultat final du réseau. Les nœuds bleus $X_1$, $X_2$ et $X_3$ représentent les signaux d’entrée et ne sont pas des neurones.

Le terme de deep learning désigne l’utilisation d’ANN à multiples couches et mélangeant souvent plusieurs types de neurones différents pour mener à bien des tâches hautement complexes.

 Une brève histoire du neurone artificiel

C’est dans les années 40 que la neurophysiologie a commencé à comprendre le fonctionnement des neurones biologiques, avec notamment les notions d’influx nerveux, de seuil d’activation, d’excitation du neurone et de renforcement de certaines structures par l’apprentissage (nous reviendrons plus longuement sur ce fonctionnement dans le prochain article).

Naturellement, les chercheurs essayèrent alors de reproduire un neurone de façon artificielle, d’abord sous forme de circuits électriques puis lorsque les langages de programmation le permirent, sous forme de code. En 1957, Franck Rosenblatt invente le perceptron, que nous verrons plus en détail bientôt et qui est la première tentative de reconnaissance d’image par un algorithme.

Après un creux dans les années soixante en raison de doutes sur la robustesse théorique de ces modèles, la recherche sur les ANN prit un second souffle en 1986 lorsque l’algorithme dit de « rétro-propagation » (back-propagation) permit de multiplier le nombre de couches d’un ANN et donc sa capacité à reconnaître des concepts de plus en plus complexes. En 1998, le Parisien Yann Le Cun (aujourd’hui en charge de l’Intelligence Artificielle chez Facebook) proposa le fameux réseau LeNet-5 pour la reconnaissance de caractères.

Mais pénalisés par le manque de données et la puissance limitée des machines de l’époque, les réseaux neuronaux passèrent de mode à nouveau au début des années 2000 au profit d’autres techniques de machine learning. Ce n’est que vers 2010 que débuta l’accélération que nous connaissons aujourd’hui. Deux raisons à cela :

  • d’une part, l’augmentation exponentielle de la quantité de données produites dans le monde (plus un modèle est complexe, plus il faut de données pour l’entraîner)
  • d’autre part l’apparition de cartes graphiques performantes et abordables. En effet, les calculs requis pour afficher des objets 3D en mouvement sont très similaires à ceux réalisés dans un ANN : il s’agit dans les deux cas essentiellement de produits matriciels. L’intelligence artificielle doit donc beaucoup aux video-gamers !

A quoi ça sert ?

Le deep learning est aujourd’hui massivement utilisé dans des domaines aussi divers que la traduction automatique (y compris de texte présent sur une image), la reconnaissance vocale, l’identification d’objets et de visages à partir de photographies etc. Une autre application est en train de s’imposer rapidement : le guidage de véhicules autonomes. Les lignes sur la route, les panneaux de signalisation, les autres véhicules, les piétons etc. sont repérés et reconnus à l’aide de réseau neuronaux à convolutions (Convolutional Neural Networks ou CNN), une forme de deep learning particulièrement adaptée au traitement d’images. Enfin, le deep learning ouvre des perspectives intéressantes en médecine.

D’autres applications moins évidentes mais amusantes ont aussi été tentées, comme : coloriser automatiquement des images en noir et blanc ; sonoriser un film en générant un son réaliste pour chaque matériau lorsqu’il est frappé ; produire un texte imitant le style de Shakespeare etc.

Les géants d’Internet ont réellement intégré le Deep Learning dans leur cœur de métier et l’utilisent pour proposer des applications innovantes et pour optimiser leurs revenus publicitaires. C’est donc une course à qui produira les meilleurs algorithmes. Mais de larges portions de ces recherches sont publiées et des outils sont même accessibles en Open Source (voir par exemple TensorFlow, la bibliothèque développée par Google pour les langages Python et C++).

Pourquoi le deep learning ?

On peut se demander ce qui justifie le recours au deep learning par rapport à d’autres algorithmes de machine learning. Après tout, il existe d’excellents algorithmes moins exigeants en puissance de calcul et plus simples à optimiser. Si on regarde les applications citées plus haut, on s’aperçoit qu’elles ont deux points communs :

  • les données à analyser sont peu structurées : on ne part pas de tableaux de données bien rangées et propres, mais d’images, de sons, de textes, bref de matériel éminemment « organique »
  • on essaye de capturer des concepts hautement abstraits : qu’est-ce qu’un chat ? qu’est-ce qui définit les sonorités de la langue anglaise ? pourquoi traduire un mot par celui-ci plutôt que celui-là dans un contexte donné ?

De par leur complexité, les ANN « profonds » permettent, couche par couche, de capter des structures de plus en plus complexes, de la même façon que nous sommes capables instinctivement de reconnaître une voiture à partir de telle courbe, telle ligne, puis telle combinaison de formes simples, jusqu’à en arriver au concept de voiture.

Avant d’en arriver là, nous avons un long chemin à parcourir qui va commencer dans notre cerveau ! Stay tuned

References   [ + ]

1. Dans cette série d’articles, j’emploierai fréquemment les termes anglais avec la traduction en Français. En effet, les travaux sur le sujet sont très majoritairement conduits en Anglais et il est important d’utiliser le même vocabulaire pour une meilleure compréhension.
2. Je décris ici l’apprentissage « supervisé », i.e. où on dispose d’un jeu de données de référence incluant le résultat à obtenir, mais il y a aussi des algorithmes non supervisés pour d’autres types de tâches.