Le deep learning (apprentissage profond) est un type d’algorithme d’apprentissage automatique qui a la particularité d’utiliser un réseau de neurones artificiels. Ceux-ci sont directement inspirés des neurones biologique contenus dans le cerveau humain. En d’autres termes, le deep learning imite certains concepts complexes du cerveau humain pour apprendre par lui même.

Vous utilisez très certainement le deep learning dans votre vie de tous les jours. Quand vous roulez dans votre voiture autonome, quand vous parlez à votre assistant vocal (Google Home ou Amazon Echo), quand vous passez la douane avec votre passeport biométrique ou encore quand vous regardez un programme que Netflix vous a recommandé. Le deep learning a totalement révolutionné notre vie à tous et n’est pas prêt de s’arrêter. Si vous désirez comprendre comment fonctionne le deep learning, vous êtes à la bonne place.

Deep Learning vs Machine Learning vs Intelligence Artificielle

Intelligence artificielle, machine learning, deep learning, qu’est-ce que tous ces termes ont en commun ? Et bien tout simplement, le deep learning est une façon bien particulière d’utiliser un réseau neuronal. Un réseau de neurones est un type d’algorithme de machine learning (apprentissage automatique). Celui-ci se calque sur le fonctionnement du cerveau humain, en reprenant le principe de neurones, cet algorithme est capable d’apprendre sur base d’exemples qu’on lui fournit. Quand à l’intelligence artificielle, celle-ci est un programme utilisant un ou plusieurs modèles entraînés par un algorithme de machine learning dans le but de réaliser de la reconnaissance d’images, de réaliser des prédictions ou encore de la recommandation de contenus (Pour plus d’infos, consultez notre article sur l’intelligence artificielle).

Qu’est-ce qu’un neurone artificiel ?

Avant de comprendre ce qu’est le deep learning, il vous faut comprendre le principe de base d’un neurone. Car le deep learning est un réseau de neurones artificiels un peu particulier.

Commençons par les neurones biologiques (ceux que l’on trouve dans notre cerveau). Un neurone biologique, est une cellule nerveuse capable de transmettre une impulsion. Cette cellule est composée de dendrites et d’un axone. Chacune des dendrites est capable de recevoir des signaux bioélectriques (impulsion nerveuse en provenance d’un autre neurone). Le neurone est susceptible de la transmettre via son axone au neurone suivant (via une terminaison axonale). Quand un neurone transmet un signal, on dit qu’il le décharge. Notez bien, qu’un neurone qui reçoit un signal, ne va pas forcément le décharger.

L’idée de base d’un réseau de neurones est donc d’utiliser un ensemble de neurones artificiels. Un neurone artificiel fonctionne sensiblement de la même manière qu’un neurone biologique. Il reçoit des données en entrées (comme les dendrites) et décharge ou non l’information (comme l’axone).

Ce neurone artificiel est en fait une fonction mathématique simple composée des entrées (x1, x2 …), d’un poids variable associé à chaque entrée (p1, p2…), et d’un seuil variable (S). On peut traduire la fonction de la sorte : si la somme des entrées * leurs poids respectifs est supérieure au seuil -> le neurone décharge (y = 1) si par contre la somme est inférieure au seuil, le neurone ne décharge pas (y = 0).

(X1 * p1) +  (X2 * p2) + (X3 * p3) > S ? Si oui y = 1 Si non y = 0 

Comme vous le remarquez sur le schéma ci dessus, les poids et le seuil sont variables (comme des petites roues que l’on pourrait tourner pour changer leurs valeurs). Cette fonctionnalité ne sert pas à grand chose pour un neurone seul mais est très utilisée dans un réseau de neurones.

Qu’est ce qu’un réseau de neuronnes?

Nous sommes bien d’accord, le but d’un neurone seul est bien limité. Par contre, quand on commence à en associer plein ensemble, on peut commencer à réaliser des fonctions bien plus compliquées. On peut donc en associer autant que l’on veut avec les petites roues variables qui vont avec (les poids et les seuils).

Le but va donc être d’utiliser ce réseau pour lui apprendre des choses. Pour ce faire, on va donner au réseau un ensemble de données en entrées et on va lui laisser tourner l’ensemble des petites roues (poids et seuils) jusqu’à ce qu’il soit capable de reconnaître l’ensemble des données. Cela va produire en sortie, un modèle qui est en fait une fonction mathématique extrêmement complexe.

Ce modèle va ensuite pouvoir être utilisé pour prédire une sortie pour une nouvelle entrée qu’il n’a jamais rencontré. Le modèle peut donc être perçu comme une boite noire très complexe (tellement complexe que Stephen Hawking lui même pourrait certainement passer 2 vies entières à en déchiffrer une).

Cas concret de réseau neuronal

La théorie c’est bien mais comment l’applique-t-on à la réalité ? Prenons un exemple : la détection de fraudes dans les transactions bancaires sur internet.

Dans la pratique, on va utiliser un réseau de neurones non pas avec des neurones placés n’importe où. On va organiser les neurones par couches dans le réseau. Généralement un réseau neuronal est composé de 3 ou 4 couches. Car si on désire en mettre plus, le nombre de neurones devient trop important et le réseau devient trop difficile à entraîner (trop de combinaisons entre les petites roues à tourner).

La première couche contiendra les neurones d’entrées (les X). Et la seconde (la couche intermédiaire) sera composée d’un nombre variable de neurones (plus on est a, plus le réseau deviendra performant mais plus il sera compliqué à entraîner -> il faut donc trouver le bon compromis en fonction du cas d’utilisation).

Dans cet exemple, nous allons fournir des milliers de transactions bancaires au réseau (certaines taggées comme frauduleuses et d’autres comme valides). Les X du réseau vont donc être les caractéristiques de chaque transaction (montant, durée de la transaction,… Et également le tag qui dit si la transaction est frauduleuse ou non). Le réseau va donc apprendre à reconnaître les transactions frauduleuses et celles qui ne le sont pas.

Reseau neuronal entrainement détection de fraude bancaire

Une fois le réseau entraîné, nous obtiendrons un modèle (qui contient le réseau entraîné). Que nous pourrons réutiliser pour prédire si une nouvelle transaction est frauduleuse ou non.

Prédiction fraude bancaire

Et le deep learning dans tout ça?

Les réseaux de neurones c’est génial mais quel est le rapport avec le deep learning? Et bien, sachez que, pour les problèmes avec un nombre raisonnable d’entrées, un réseau de neurones avec 3 ou 4 couches peu très bien convenir. Par contre, quand on se retrouve avec des centaines de milliers d’entrées, le réseau devient beaucoup trop compliqué à entraîner.

Illustration du problème

Si on veut réaliser de la reconnaissance d’images avec un réseau de neurones classique, nous allons devoir fournir en entrée chacun des pixels de chaque images. Pour une image de 500 * 500, cela fait 250 000 pixels à donner en entrées au modèle. Avec un nombre aussi important d’entrées, un réseau de neurones ne fonctionne plus (car trop complexe à entraîner). Et c’est pour répondre à cette problématique, qu’intervient le deep learning.

On vient de le dire, un réseau de neurones avec énormément d’entrées et beaucoup de couches ne peut pas fonctionner. Oui mais voila, depuis les années 90, une petite poignée d’irréductibles chercheurs ont continués à y croire (comme par exemple le Français Yann Lecun qui dirige aujourd’hui le laboratoire d’intelligence artificielle chez Facebook). Ils étaient vu par la communauté scientifique comme des fous qui perdent leur temps. Jusqu’en 2012 où un algorithme de deep learning a remporté (haut la main) une compétition qui consiste a reconnaître le plus d’images possibles dans la base de données ImageNet (qui contient 14 millions d’images labellisées). À partir de ce moment, le deep learning est rentré dans le game du machine learning et tout le monde a commencé à en faire.

Cette petite révolution a été rendue possible grâce aux progrès qui ont été faits dans l’amélioration des cartes graphiques. En effet, ce sont les processeurs de cartes graphiques (GPU) qui sont utilisés pour réaliser du deep learning. Car ils sont plus puissant que les processeurs traditionnels quand on réalise des calculs sur des images. S’ajoute à cela, la disponibilité des données. Pour que le deep learning fonctionne, il faut lui fournir un nombre énorme de données (des centaines de milliers voir des millions). Et grâce à l’avènement du big data et à l’ouverture de certaine base de données d’images au public, cette petite révolution qu’est le deep learning est aujourd’hui possible.

Fonctionnement du deep learning

Le deep learning est comme on l’a dit précédemment, un réseau de neurones particulier. Sa particularité est qu’il possède un grand nombre de couches de neurones, il peut en posséder jusqu’à 150. C’est pour cette raison qu’on dit que c’est un réseau profond. Il a également une architecture bien particulière pour qu’il puisse fonctionner (pour qu’il puisse être entraîné).

Quand on donne un nombre considérable d’images au réseau profond, celui-ci va pour chaque images ajuster ses petites roues. Ce qui va permettre au réseau, au fil du temps, de comprendre certaines choses. La première couche va identifier les pixels clairs et foncés, la seconde va commencer à détecter des bords dans les images, la troisième va être capable de combiner ces bords. Et ainsi de suite de couche en couche. L’avant dernière couche va être capable de détecter des formes et la dernière des combinaisons de formes. Elles va donc pouvoir détecter des visages, des voitures, des animaux, ou tout ce que vous voulez.

Deep learning explication

On pourrait par exemple si on le désirait, récupérer 2 ou 3 photos de chaque personne présente sur Facebook et entraîner un réseau profond pour reconnaître à peu tout le monde sur la planète (ce n’est pas très GDPR je vous l’accorde). Cela ferait à peu près 21 milliards d’images (7 milliards * 3) à fournir au réseau. Ce qui est tout à fait possible en utilisant du cloud computing (comme par exemple Google Cloud ML Engine).

La rétro-propagation

On l’a dit, un réseau profond n’est pas n’importe quel réseau de neurones. Pour qu’il puisse fonctionner efficacement, il utilise une technique pour corriger les poids des neurones (petites roues) en cas d’erreur. Cette technique s’appelle la rétro-propagation (backpropagation). Elle fonctionne de la sorte :

  1. L’image est fournie au réseau
  2. Le réseau s’entraîne et se trompe en sortie
  3. Le réseau va utiliser la rétro-propagation pour aller modifier tous les poids des neurones par lesquels il est passé (pour cette image). Cela va beaucoup plus vite que de recommencer le processus depuis le début
  4. Il recommence l’option 3 jusqu’à ce que l’image soit correctement identifiée
Deep learning backpropagation

Ré-entraîner un modèle

Une autre fonctionnalité intéressante du deep learning est qu’il n’est pas nécessaire d’entraîner un réseau depuis le début à chaque fois. Car entraîner un réseau avec des centaines de milliers d’images depuis le début peut vous prendre jusqu’à 2 semaines (même en passant par le cloud).

Heureusement il est possible de prendre un modèle déjà existant (par exemple Inception v1, v2, mobilenet,…) et de ré-entraîner uniquement l’avant dernière couche (elle s’appelle la bottleneck). Souvenez-vous, l’avant dernière couche est celle qui détecte des formes. Vous ré-entraînerez donc uniquement cette couche et la dernière pour spécifier au modèle quels objets il doit pouvoir reconnaître (visage, voitures, objets, ou ce que vous désirez reconnaître). En procédant de la sorte, il est possible d’entraîner efficacement votre modèle personnel en seulement quelques heures (2 ou 3 heures via Google Cloud ML Engine).

Ré entrainer un modèle de deep learning

Que peut on faire avec le deep learning ?

La reconnaissance faciale

Les gouvernements et notamment le gouvernement Chinois utilise le deep learning pour appliquer la reconnaissance faciale à tous les habitants du pays. Ils sont capables de vous assigner un identifiant unique et de vous reconnaître à chaque fois que vous passez devant une caméra.

Reconnaissance faciale en Chine
© wired.com

Facebook utilise également cette technologie pour identifier les personnes dans les photos.

Les voitures autonomes

Tesla utilise le deep learning pour ses voitures autonomes. Dans le but de reconnaître, les piétons, les autres véhicules, la route et ses bords, les signaux de signalisation… Il n’y a pas que du deep learning dans cette technologie (notamment des capteurs et du traitement d’images), mais tout ce qui touche à la reconnaissance d’objets (voiture piétons etc) est lié au deep learning. Il est par exemple intéressant pour une Tesla de pouvoir faire la différence entre un petit rocher et un sac en carton sur la route (grâce au deep learning).

Voiture Tesla en auto-pilote sur une autoroute Française

Les assistants vocaux

Les assistants vocaux comme Google Home ou l’Amazon Echo (Alexa) utilise le deep learning. Notamment pour comprendre le langage humain (Speech recognition) et également pour reconnaître plusieurs profils de voix (ils peuvent différencier plusieurs types de personnes sur base de leurs voix).

Google home et alexa
© aiptek.fr

Recommandation de contenu

Netflix, Spotify et bien d’autres utilisent le deep learning pour vous recommander du contenu. Ils utilisent le deep learning pour construire des systèmes de recommandations basés sur vos préférences et sur votre historique de lecture. En d’autres termes, ils essayent de vous proposer les prochains contenus qui vous correspondent le plus. Le réseau va notamment être capable de comprendre que certains profils d’utilisateurs vous ressemblent et regarder ce qui les intéressent pour vous le proposer.

Recommandation de contenu
Photo-Illustration by C.J. Burton for TIME

Détection d’objets

Il est possible de reconnaître absolument tout ce que vous voulez avec le deep learning. Cela peut aller de la simple détection de piétons, à la détection de cellules cancéreuses dans une image.

Google Deep Dream

Dans le genre un peu plus fun, Google a entraîné un algorithme de machine learning avec des images d’animaux et de peintures. Et ils ont ensuite demandé à l’algorithme et au modèle de générer des images sur base de ce qu’il avait appris (on lui a demandé de rêver). Le résultat est un peu déroutant mais intéressant 🙂

En espérant que cet article vous aura été utile pour comprendre le fonctionnement des réseaux de neurones et du deep learning. N’hésitez pas à laisser votre avis en commentaires 🙂

3 claps