Deep Learning

deep learning
Temps de lecture : 21 minutes
Share on facebook
Share on twitter
Share on linkedin
Share on email

Depuis quelques années, un nouveau lexique lié à l'émergence de l’intelligence artificielle dans notre société inonde les articles scientifiques, et il est parfois difficile de comprendre de quoi il s'agit.DataScientest a donc décidé de s'attaquer à l'un des sujets majeurs : le Deep Learning ou Apprentissage Profond.
Vous allez pas à pas découvrir le fonctionnement et les applications des réseaux de neurones, les principaux types de réseaux tels que les CNN-Convolutionnal Neural Network, ainsi que des méthodes et divers exemples d'applications du Deep Learning aujourd'hui.

Deep Learning: Définition et applications

Lorsqu’on parle d’intelligence artificielle, on fait très souvent l’allusion aux technologies associées comme le Machine learning ou le Deep learning. Deux termes extrêmement utilisés avec des applications toujours plus nombreuses, mais pas toujours bien définis. 

Pour commencer, revenons sur ces trois définitions essentielles: 

L’intelligence artificielle : c’est un champ de recherche qui regroupe l’ensemble des techniques et méthodes qui tendent à comprendre et reproduire le fonctionnement d’un cerveau humain.

Le Machine Learning : c’est un ensemble de techniques donnant la capacité aux machines d’apprendre automatiquement un ensemble de règles à partir de données. Contrairement à la programmation qui consiste en l’exécution de règles prédéterminées.

Le Deep Learning ou apprentissage profond : c’est une technique de machine learning reposant sur le modèle des réseaux neurones: des dizaines voire des centaines de couches de neurones sont empilées pour apporter une plus grande complexité à l’établissement des règles.

Qu’est ce que le Machine Learning : Apprentissage supervisé et non supervisé, pas de panique, on vous explique tout !

Le Machine Learning est un ensemble de techniques donnant la capacité aux machines d’apprendre, contrairement à la programmation qui consiste en l’exécution de règles prédéterminées. 

Il existe deux principaux types d’apprentissages en Machine Learning. L’apprentissage supervisé et non supervisé. 

En apprentissage supervisé, l’algorithme est guidé avec des connaissances préalables de ce que devraient être les valeurs de sortie du modèle. Par conséquent, le modèle ajuste ses paramètres de façon à diminuer l’écart entre les résultats obtenus et les résultats attendus. La marge d’erreur se réduit ainsi au fil des entraînements du modèle, afin d’être capable de l’appliquer à de nouveaux cas.

Deep Learning
Convergence d’un modèle -Apprentissage supervisé

En revanche, l’apprentissage non supervisé n’utilise pas de données étiquetées.
Il est alors impossible à l’algorithme de calculer de façon certaine un score de réussite. Son objectif est donc de déduire les
regroupements présents dans nos données.  

Prenons l’exemple, d’un jeu de données de fleurs, on recherche à les regrouper en classes. Ici, nous ne connaissons pas l’espèce de la plante, mais nous voulons essayer de les regrouper :

  • Exemple: si les formes des fleurs sont similaire alors elles sont en rapport avec une même plante correspondante.

Il existe deux principaux domaines de modèles dans l’apprentissage non-supervisées pour retrouver les regroupements :

Deep Learning
Kmeans avec k=3

Si on passait au Deep learning ?

Le Deep learning  ou apprentissage profond est l’une des technologies principales du Machine learning. Avec le Deep Learning, nous parlons d’algorithmes capables de mimer les actions du cerveau humain grâce à des réseaux de neurones artificielles.  Les réseaux sont composés de dizaines voire de centaines de « couches » de neurones, chacune recevant et interprétant les informations de la couche précédente.

Deep Learning
Source: Medium

Chaque neurone artificiel représenté dans l’image précédente par un rond, peut être vu comme un modèle linéaire. En interconnectant les neurones sous forme de couche, nous transformons notre réseau de neurones en un modèle non-linéaire très complexe.

Deep Learning
Source: Machine Learnia

Pour illustrer le concept, prenons un problème de classification entre chien et chat à partir d’image. Lors de l’apprentissage, l’algorithme va ajuster les poids des neurones de façon à diminuer l’écart entre les résultats obtenus et les résultats attendus. Le modèle pourra apprendre à détecter les triangles dans une image puisque les chats ont des oreilles beaucoup plus triangulaires que les chiens.

Pourquoi utilisons-nous le Deep learning ?

Les modèles de Deep learning ont tendance à bien fonctionner avec une grande quantité de données alors que les modèles d’apprentissage automatique plus classique cessent de s’améliorer après un point de saturation.

Deep learning
Source: Medium

Au fil des années, avec l’émergence du big data et de composants informatiques de plus en plus puissant, les algorithmes de Deep Learning gourmands en puissance et en données ont dépassé la plupart des autres méthodes. Ils semblent être prêt à résoudre bien des problèmes : reconnaître des visages, vaincre des joueurs de go ou de poker, permettre la conduite de voitures autonomes ou encore la recherche de cellules cancéreuses.

Intelligence Artificielle et Deep Learning

Presque toutes les industries sont affectées par l’Intelligence Artificielle . Le Machine Learning et le Deep Learning y jouent un grand rôle. 

Que vous soyez un professionnel de la santé ou un avocat, il est possible qu’un jour un modèle hautement autonome vous assiste ou même vous remplace.

Dans les métiers de la santé, il existe déjà des applications pour automatiquement diagnostiquer un patient.

Deep Learning
Détection automatique de fracture à l’aide du deep learning

Les métiers de l’automobile sont également bousculés avec l’arrivé de la conduite assistée.

C’est aussi grâce au deep Learning que le modèle Alpha Go de Google a réussi à battre les meilleurs champion de Go en 2016. Le moteur de recherche du géant américain est lui-même de plus en plus basé sur l’apprentissage par deep Learning plutôt que sur des règles écrites.

Aujourd’hui le deep Learning est même capable de « créer » tout seul des tableaux de peintre. C’est ce qu’on appelle le Style Transfer. Si ce sujet vous intéresse, un article entièrement consacré à ce thème arrive bientôt sur notre blog ! Dans la suite, nous allons vous présenter les réseaux de neurones avec une approche inédite , on espère que ça vous plaira ! 

style transfer deep learning
Transfert de style

Réseau de neurones : Biologique ou Artificiels, même combat ?

Neurone Biologique : Structure et rôle

Le système nerveux est composé de milliards de cellules : c’est un réseau de neurones biologiques. En effet, les neurones ne sont pas indépendants les uns des autres, ils établissent entre eux des liaisons et forment des réseaux plus ou moins complexes.

 Le neurone biologique est composé de trois parties principales :

  • Le corps cellulaire composé du centre de contrôle traitant les informations reçues par les dendrites.
  • Les dendrites sont les principaux fils conducteurs par lesquels transitent l’information venue de l’extérieur
  • L’axone est fil conducteur qui conduit le signal de sortie du corps cellulaire vers d’autres neurones.
neurone
Source : Research Gate

Quant aux synapses, elles font effet de liaison et de pondération entre neurones et permettent donc aux neurones de communiquer entre eux.

neurones biologique
Source : Studdy

En résumé :

Les neurones biologiques disposent d’un centre de contrôle (appelé cellule somatique) faisant la somme des informations recueillies par les dendrites. Ensuite, le centre de contrôle retourne un potentiel d’action en suivant les règles suivantes :

  • Si la somme en entrée ne dépasse pas le seuil d’excitation : pas de message nerveux via l’axone.
  • Si la somme en entrée dépasse le seuil d’excitation : un message nerveux est émis via l’axone (c’est l’idée, mais en réalité un peu plus compliqué).

Quel est le lien entre les neurones biologiques et neurones artificiels?

Procédons à une comparaison simple des étapes principales de l’algorithme du perceptron avec les éléments constitutifs des neurones biologiques. Ce choix d’algorithme se justifie car il se rapproche au mieux du fonctionnement des neurones biologiques :

  • Les synapses/dendrites : pondération de chaque élément en entrée wixi
  • Corps cellulaires : application d’une fonction d’activation f à la somme des entrées pondérées
  • Axone : sortie de notre modèle
formule
neuron
Source : Datacamp

Le vocabulaire spécifique à cet algorithme est le suivant :

  • Le vecteur w porte le nom de vecteur de poids (qui s’ajuste lors de l’entraînement).
  • Le vecteur x  porte le nom de vecteur d’entrée.

f porte le nom de fonction d’activation.

Pour la plupart des fonctions d’activations, le perceptron consiste à trouver l’hyperplan séparateur (définie par w) entre nos deux classes :

Le vocabulaire spécifique à cet algorithme est le suivant :

  • Le vecteur w porte le nom de vecteur de poids (qui s’ajuste lors de l’entraînement).
  • Le vecteur x  porte le nom de vecteur d’entrée.

f porte le nom de fonction d’activation.

Pour la plupart des fonctions d’activations, le perceptron consiste à trouver l’hyperplan séparateur (définie par w) entre nos deux classes :

algorithme de Perceptron
Source: Computer Science University of Toronto

L’algorithme de Perceptron simple n’est plus utilisé en pratique puisque d’autres algorithmes comme le Support Vector Machine sont bien plus performants. De même, les neurones biologiques ne sont pas utilisés individuellement, ils sont généralement reliés à d’autres neurones.

neurons
Source : Wikipédia

L’intérêt de l’algorithme du Perceptron vient d’une technique démontrée en 1989 par George Cybenko qui consiste à lier et empiler des couches de perceptron pour apporter une plus grande complexité. Un algorithme de ce type s’appelle Perceptron Multicouche (Multilayer Perceptron en anglais), souvent abrégé par l’acronyme MLP.

Perceptron Multicouche

Dans la figure précédente, le modèle consiste à classifier (en 10 classes) des images de chiffres manuscrits. Les carrés verts sont les entrées de notre modèle, les perceptrons sont représentés par des ronds gris et les liaisons sont représentées par les flèches.

En général, la dernière couche de notre modèle permet de mettre en forme le résultat souhaité. Ici, comme nous avons un problème de classification, nous recherchons alors à prédire la probabilité de chaque classe (chiffre 0, chiffre 1 …). C’est pour cet raison que la dernière couche possède 10 neurones puisqu’il y a 10 classes, et une fonction d’activation « softmax » permettant de retourner une probabilité.

C’est beaucoup plus libre pour les autres couches de notre modèle, il est surtout très important que les fonctions d’activations des perceptrons soient non-linéaires pour complexifier son modèle. En pratique, les fonctions d’activations tanh ou ReLU sont les plus utilisées.

Comme dans les LEGO, c’est au Data Scientist de choisir l’architecture de son modèle.
Perceptron lego
Source : Freelug
Il existe des architectures plus performante que d’autre, mais il n’y a pas vraiment de règle mathématique derrière. C’est l’expérience qui prime sur le choix des structures de modèle.

Pour résumer, les modèles de Perceptron Multicouche avec son nombre important de paramètres peuvent être vus comme des méthodes de brute force pour résoudre un problème de data science. 

Il existe d’autres couches dans le Deep learning comme les convolutions qui vont permettre d’appliquer des filtres à nos images pour extraire des caractéristiques plus pertinente que des pixels : forme géométrique, bord …

Fonctionnement des réseaux de neurones

Troisième épisode de notre série consacrée au Deep Learning, n’hésitez pas à lire ou relire le premier volet pour vous rafraîchir la mémoire sur les définitions de Deep Learning, Machine Learning et Intelligence Artificielle ainsi que sur les grandes lignes du fonctionnement et des applications des réseaux de neurones.

Vous allez maintenant découvrir en détails comment les réseaux de neurones artificiels apprennent et leur manière de s’articuler dans un réseau.

Petit rappel sur les réseaux de neurones

Pour rappel, les multi-layers perceptron sont un empilement de perceptron qui sont mis sous forme de couche. Prenons l’exemple suivant pour illustrer le concept :

Deep learning neuronnes

Le modèle consiste à classifier (en 10 classes) des images de chiffres manuscrits. Les carrés verts sont la couche d’entrée de notre modèle, c’est-à-dire la valeur des pixels. La couche intermédiaire et la couche sortie sont des perceptrons représentés par des ronds gris. La dernière couche possède 10 neurones puisqu’il y a 10 classes et retourne la probabilité correspondante à chaque classe.

Nous pouvons très facilement implémenter le modèle sur tensorflow :

Tensorflow

Entraînement du modèle

Pour entraîner notre modèle, c’est-à-dire trouver les poids adaptés, il est nécessaire de définir une fonction qui va quantifier l’erreur de notre modèle . En général, pour les problèmes de classification, nous utilisons la fonction « cross-entropy » pour mesurer l’erreur. 

Notre problème d’optimisation consiste à trouver les poids de notre modèle qui minimise notre fonction d’erreur : 

J(w)

En Deep Learning, nous sommes confrontés à des problèmes de minimisation complexe et sans solution explicite. C’est pourquoi, des méthodes d’optimisation comme la descente de gradient sont utilisée pour les résoudre.

Descente de gradient : Pour descendre, il faut aller vers le bas

Pour découvrir d’une manière intuitive le concept de descente du gradient, regardez notre vidéo sur le sujet : 

Dans notre cas, la fonction de perte (d’erreur) peut être vue comme une montagne où l’on recherche les coordonnées (poids de modèle) du point d’altitude minimale. Et, la valeur du gradient de la fonction de perte correspond à l’orientation et à l’inclinaison de la pente en un point donné :

  • Si la norme du gradient est élevée, c’est que la pente est très raide.
  • Si la norme du gradient est faible, c’est que la pente est peu inclinée.
  • Si le gradient est nul, c’est qu’on se trouve sur un plat (minimum).

Par conséquent, la descendre de gradient consiste initialement à choisir les poids aléatoires, et de suivre l’inverse du gradient à chaque itération : 

Deep learning

Avec :

  • Wt : les paramètres de notre modèle
  • η : pas du gradient, autrement dit, la vitesse d’apprentissage
  • : fonction de perte

Un pas de gradient trop grand ou trop petit ne permettra pas à l’algorithme MLP de converger vers une solution satisfaisante. Trouver le bon pas de gradient est tout le challenge du deep learning.

Pour résumer, le neurone artificiel autrement appelé le perceptron se comporte comme un modèle de classification linéaire. Le perceptron multicouche quant à lui lie et empile sous forme de couche les perceptrons pour apporter une plus grande complexité à l’établissement des règles.

Après avoir défini les paramètres du modèle, nous avons vu qu’il était nécessaire de quantifier l’erreur de celui-ci. Pour ce faire, le Deep Learning utilise principalement la descente de gradient pour ajuster ses poids de façon à minimiser la fonction de perte.

Pour explorer  les mathématiques qui se cachent derrière cet algorithme de descente de gradient et l’importance du taux d’apprentissage découvrez cet article .

Convolutional neural network

Dans cette partie, nous allons nous focaliser sur un des algorithmes les plus performants du Deep Learning, les CNN (Convolutional Neural Network ou réseau de neurones convolutifs en français), modèles de programmation puissants permettant notamment la reconnaissance d’images en attribuant automatiquement à chaque image fournie en entrée, une étiquette correspondant à sa classe d’appartenance.

modele cnn
Reconnaissance d’un père-noël par un modèle CNN

Architecture d’un Convolutional Neural Network-CNN

Les CNN désignent une sous-catégorie de réseaux de neurones et sont à ce jour un des modèles de classification d’images réputés être les plus performant

 Leur mode de fonctionnement est à première vue simple : l’utilisateur fournit en entrée une image sous la forme d’une matrice de pixels.
Celle-ci dispose de 3 dimensions :

  • Deux dimensions pour une image en niveaux de gris.
  • Une troisième dimension, de profondeur 3 pour représenter les couleurs fondamentales (Rouge, Vert, Bleu).

Contrairement à un modèle MLP (Multi Layers Perceptron) classique qui ne contient qu’une partie classification, l’architecture CNN dispose en amont d’une partie convolutive et comporte par conséquent deux parties bien distinctes :

  • Une partie convolutive : Son objectif final est d’extraire des caractéristiques propres à chaque image en les compressant de façon à réduire leur taille initiale. En résumé, l’image fournie en entrée passe à travers une succession de filtres, créant par la même occasion de nouvelles images appelées cartes de convolutions. Enfin, les cartes de convolutions obtenues sont concaténées dans un vecteur de caractéristiques appelé code CNN.
  • Une partie classification : Le code CNN obtenu en sortie de la partie convolutive est fourni en entrée dans une deuxième partie, constituée de couches entièrement connectées appelées perceptron multicouche (MLP pour Multi Layers Perceptron). Le rôle de cette partie est de combiner les caractéristiques du code CNN afin de classer l’image. Pour revenir sur cette partie, n’hésitez pas à consulter l’article sur le sujet . 
convolutional neural network
Schéma représentant l’architecture d’un CNN
convolutional neural network
Schéma représentant l’architecture d’un CNN

Tout d’abord, à quoi sert la convolution ?

La convolution est une opération mathématique simple généralement utilisée pour le traitement et la reconnaissance d’images. Sur une image, son effet s’assimile à un filtrage dont voici le fonctionnement :

neural network
Schéma du parcours de la fenêtre de filtre sur l'image
  1. Dans un premier temps, on définit la taille de la fenêtre de filtre située en haut à gauche.
  2. La fenêtre de filtre, représentant la feature, se déplace progressivement de la gauche vers la droite d’un certain nombre de cases défini au préalable (le pas) jusqu’à arriver au bout de l’image.
  3. À chaque portion d’image rencontrée, un calcul de convolution s’effectue permettant d’obtenir en sortie une carte d’activation ou feature map qui indique où est localisées les features dans l’image : plus la feature map est élevée, plus la portion de l’image balayée ressemble à la feature.

Exemple d’un filtre de convolution classique

Lors de la partie convolutive d’un CNN, l’image fournie en entrée passe à travers une succession de filtres de convolution. Par exemple, il existe des filtres de convolution fréquemment utilisés et permettant d’extraire des caractéristiques plus pertinentes que des pixels comme la détection des bords (filtre dérivateur) ou des formes géométriques. Le choix et l’application des filtres se fait automatiquement par le modèle.

Parmi les filtres les plus connus, on retrouve notamment le filtre moyenneur (calcule pour chaque pixel la moyenne du pixel avec ses 8 proches voisins) ou encore le filtre gaussien permettant de réduire le bruit d’une image fournie en entrée :

Voici un exemple des effets de ces deux différents filtres sur une image comportant un bruit important (on peut penser à une photographie prise avec une faible luminosité par exemple). Toutefois, un des inconvénients de la réduction du bruit est qu’elle s’accompagne généralement d’une réduction de la netteté :

CNN Deep learning
Effet des filtres moyenneur et gaussien - DataScientest

Comme on peut l’observer, contrairement au filtre moyenneur, le filtre gaussien réduit le bruit sans pour autant réduire significativement la netteté. 

Outre sa fonction de filtrage, l’intérêt de la partie convolutive d’un CNN est qu’elle permet d’extraire des caractéristiques propres à chaque image en les compressant de façon à réduire leur taille initiale, via des méthodes de sous-échantillonnage tel que le Max-Pooling.

Méthode de sous échantillonnage : le Max-Pooling

Le Max-Pooling est un processus de discrétisation basé sur des échantillons. Son objectif est de sous-échantillonner une représentation d’entrée (image, matrice de sortie de couche cachée, etc.) en réduisant sa dimension. De plus, son intérêt est qu’il réduit le coût de calcul en réduisant le nombre de paramètres à apprendre et fournit une invariance par petites translations (si une petite translation ne modifie pas le maximum de la région balayée, le maximum de chaque région restera le même et donc la nouvelle matrice créée restera identique).

Pour rendre plus concret l’action du Max-Pooling, voici un exemple : imaginons que nous avons une matrice 4×4 représentant notre entrée initiale et un filtre d’une fenêtre de taille 2×2 que nous appliquerons sur notre entrée. Pour chacune des régions balayées par le filtre, le max-pooling prendra le maximum, créant ainsi par la même occasion une nouvelle matrice de sortie où chaque élément correspondra aux maximums de chaque région rencontrée.

Illustrons le processus :

convolutional neural network
Processus de Max-Pooling

La fenêtre de filtre se déplace de deux pixels vers la droite (stride/pas = 2) et récupère à chaque pas “l’argmax” correspondant à la valeur la plus grande parmi les 4 valeurs de pixels.

reseau de neurones convolutif
Exemple d’effet du Max-Pooling

On comprend mieux l’utilité de la partie convolutive d’un CNN : contrairement à un modèle MLP classique, l’ajout en amont de la partie convolutive permet d’obtenir en sortie une “carte de caractéristiques” ou “code CNN” (matrice de pixels située à droite dans l’exemple) dont les dimensions sont plus petites que celles de l’image initiale ce qui va avoir l’avantage de diminuer grandement le nombre de paramètres à calculer dans le modèle.

Exemple d’une architecture CNN et sa sortie

Après la partie convolutive d’un CNN, vient la partie classification. Cette partie classification, commun à tous les modèles de réseaux de neurones, correspondant à un modèle perceptron multicouche (MLP). 
Son objectif est  d’attribuer à chaque échantillon de données une étiquette décrivant sa classe d’appartenance. 
reseau de neurones
Représentation d’un perceptron multicouche

L’algorithme que les perceptrons utilisent pour mettre à jour leurs poids (ou coefficients de réseaux) s’appelle la rétropropagation du gradient de l’erreur, célèbre algorithme de descente de gradient que nous verrons plus en détail par la suite .  

reseau de neurones
Exemple d’architecture d’un CNN

Généralement, l’architecture d’un CNN est sensiblement la même : 

  • Couche de convolution (CONV) : Le rôle de cette première couche est d’analyser les images fournies en entrée et de détecter la présence d’un ensemble de features. On obtient en sortie de cette couche un ensemble de features maps (cf plus haut : à quoi sert la convolution ?)
  • Couche de Pooling (POOL) : La couche de Pooling est une opération généralement appliquée entre deux couches de convolution. Celle-ci reçoit en entrée les features maps formées en sortie de la couche de convolution et son rôle est de réduire la taille des images, tout en préservant leurs caractéristiques les plus essentielles. Parmi les plus utilisés, on retrouve le max-pooling mentionné précédemment ou encore l’average pooling dont l’opération consiste à conserver à chaque pas, la valeur moyenne de la fenêtre de filtre. 

Finalement, on obtient en sortie de cette couche de Pooling, le même nombre de feature maps qu’en entrée mais considérablement compressées.

  • La couche d’activation ReLU (Rectified Linear Units) : Cette couche remplace toutes les valeurs négatives reçues en entrées par des zéros. L’intérêt de ces couches d’activation est de rendre le modèle non linéaire et de ce fait plus complexe.
ReLU Rectified Linear Units
Fonction d’activation ReLU
  • Couche Fully Connected (FC) :  Ces couches sont placées en fin d’architecture de CNN et sont entièrement connectées à tous les neurones de sorties (d’où le terme fully-connected). Après avoir reçu un vecteur en entrée, la couche FC applique successivement une combinaison linéaire puis une fonction d’activation dans le but final de classifier l’input image (voir schéma suivant). Elle renvoie enfin en sortie un vecteur de taille d correspondant au nombre de classes dans lequel chaque composante représente la probabilité pour l’input image d’appartenir à une classe.
couche fully connected
Fonctionnement d’un réseau neuronal à 2 couches cachées

Implémentation d’un CNN pré-entraîné sur Python 

Pour des usages pratiques et étant donné la complexité de création de performants CNN “fait à la main“, nous allons utiliser des réseaux pré-entraînés disponibles dans le module Torchvision. Voyons comment celui-ci peut être implémenté sur Python :

Mise en application d’un CNN : Identification d’images quelconques à partir du dataset ImageNet : dix millions d’images étiquetées

ImageNet est une base de données de plus de dix millions d’images étiquetées produit par l’organisation du même nom, à destination des travaux de recherche en vision par ordinateur. 

Voici un extrait de ce volumineux dataset :

Extrait de la base de données ImageNet
Extrait de la base de données ImageNet

Étape 0 : Tout d’abord, importons toutes les librairies qui nous serons nécessaires pour la suite

Étape 1 : Entrainement du modèle pré-entrainé VGG16

Étape 2 : Importation des 3 images à prédire

Étape 3 : Prétraitement des images

Étape 4 : Prédiction du modèle

prediction algorithme
Affichage des prédictions du modèle VGG16

On peut également afficher les 5 labels jugés les plus probables par VGG16 :

prediction algorithme
Top 5 des labels jugés les plus probables par VGG16

VGG16 a donc réussi à prédire avec une grande confiance (95,6%) que non seulement l’image donnée en entrée était un loup mais est même allé plus loin en précisant sa race à savoir ici un loup gris de l’Est (timber wolf). Impressionnant non ?

Finalement, le principe de fonctionnement d’un CNN est assez facile à comprendre, mais paradoxalement, la mise en place d’un tel procédé pour classifier des images demeure très complexe étant donné le nombre considérable de paramètres à définir : nombre, taille, déplacement des filtres, choix de la méthode de pooling, choix du nombre de couches de neurones, nombre de neurones par couches, etc. 

Pour pallier à cet obstacle, Python à travers le module Torchvision, offre la possibilité d’exploiter des modèles CNN pré-entraînés performants tels que VGG16, Resnet101, etc.

Nous avons défini dans cet article le fonctionnement et l’architecture des CNN, en nous concentrant sur sa spécificité: la partie convolutive. 

Dans la suite, nous allons nous intéresser à une des méthodes principales du Deep Learning : Le Transfer Learning.  

Transfer Learning

Andrew Ng, scientifique en chef à Baidu et professeur à Stanford, a déclaré lors de son très populaire tutoriel NIPS 2016 que l’apprentissage par transfert sera le prochain moteur du succès commercial de Machine Learning. Et il n’est pas le seul à vanter le potentiel du Transfer Learning …

Dans cette section, nous vous disons tout sur cette notion qui fait de plus en plus le buzz. DataScientest va vous aider à répondre à 3 questions fondamentales

  • Qu’est-ce que le Transfer Learning ? 
  • Sur quelles stratégies les techniques de Transfer Learning reposent ?

Comment sont-elles mises en œuvre concrètement pour la résolution de problématiques de Deep Learning ?

Transfer Learning : définition

Commençons d’abord par définir ce terme de plus en plus utilisé en Data Science.

Le Transfer Learning, ou apprentissage par transfert en français, désigne l’ensemble des méthodes qui permettent de transférer les connaissances acquises à partir de la résolution de problèmes donnés pour traiter un autre problème. 

Le Transfer Learning a connu un grand succès avec l’essor du Deep Learning.  En effet, bien souvent, les modèles utilisés dans ce domaine nécessitent des temps de calcul élevés et des ressources importantes. Or, en utilisant des modèles pré-entraînés comme point de départ, le Transfer Learning permet de développer rapidement des modèles performants et résoudre efficacement des problèmes complexes en Computer Vision ou Natural Language Processing, NLP.

transfer learning
Figure 1 – Approche traditionnelle vs. Approche de Transfert Learning

Intuitivement, le Transfer Learning s’inspire fortement du processus avec lequel nous apprenons. 

Prenons l’exemple de quelqu’un qui maîtrise la guitare et souhaite apprendre à jouer au piano. Il pourra capitaliser sur ses connaissances en musique pour apprendre à jouer un nouvel instrument. De la même manière, un modèle de reconnaissance de voiture pourra être très rapidement réadapté à la reconnaissance de camions.

Sur quelles stratégies les techniques de Transfer Learning reposent ?

Le Transfer Learning repose sur une idée simple, celle de ré-exploiter les connaissances acquises dans d’autres configurations (sources) pour la résolution d’un problème particulier (cible). Dans ce contexte, on peut distinguer plusieurs approches selon ce que l’on souhaite transférer, quand et comment réaliser le transfert. Globalement, nous pouvons distinguer trois types de Transfer Learning :

  1. Apprentissage par transfert inductif, ou Inductive Transfer Learning

Dans cette configuration, les domaines source et cible sont les mêmes (même données), mais les tâches source et cible sont différentes mais proches. L’idée consiste alors à utiliser les modèles existants pour réduire de manière avantageuse le champ d’application des modèles possibles (biais de modèle) comme illustré dans le figure ci-dessous.

Inductive Transfer Learning
Figure 2 – Illustration de l’apprentissage par transfert inductif, ou Inductive Transfer Learning

Par exemple, il est possible d’utiliser un modèle entraîné pour la détection d’animaux sur des images pour construire un modèle capable d’identifier des chiens.   

  1. Apprentissage par transfert non supervisé, ou Unsupervised Transfer Learning

Comme dans le cas de l’apprentissage par transfert inductif, les domaines source et cible sont similaires, mais les tâches sont différentes. Toutefois, les données des deux domaines ne sont pas labellisées.

Il est souvent plus facile d’obtenir de grandes quantités de données non labellisées, à partir de bases de données et de sources sur le web par exemple, que des données labellisées. C’est pourquoi l’idée d‘utiliser l’apprentissage non supervisé en combinaison avec le Transfer Learning suscite un grand intérêt

A titre d’exemple, le Self-taught clustering est une approche qui permet de réaliser le clustering de petites collections de données cibles non labellisées, avec l’aide d’une grande quantité de données sources non labellisées. Cette approche s’avère plus performante que les approches de pointe traditionnellement utilisées, lorsque les données cibles sont labellisées de manière non pertinente.

  1. Apprentissage par transfert transductif, ou Transductive Transfer Learning :

Dans cette configuration, les tâches sources et cibles sont similaires, mais les domaines correspondants sont différents soit en termes de données ou de distributions de probabilités marginales. 

Par exemple, les modèles de NLP, tels que ceux utilisés pour l’étiquetage morpho-syntaxique de mots, Part-Of-Speech Tagger (POS Tagger) en anglais, sont généralement entraînés et testés sur des données d’actualité comme celles du Wall Street Journal. Ils peuvent être adaptés aux données issues des réseaux sociaux dont le contenu est différent mais proche de celles des journaux.

Comment le Transfer Learning est mis en œuvre concrètement pour la résolution de problématiques de Deep Learning ?

Maintenant que nous avons défini le Transfer Learning, intéressons-nous à son application aux problématiques de Deep Learning, domaine dans lequel il connaît aujourd’hui un grand succès.

L’utilisation des méthodes de Transfer Learning en Deep Learning consiste principalement à exploiter des réseaux de neurones pré-entraînés

Généralement, ces modèles correspondent à des algorithmes très performants qui ont été développés et entraînés sur de larges bases de données et qui sont aujourd’hui librement partagés.

Dans ce contexte, on peut distinguer 2 types de stratégies :

  1. Utilisation de modèles pré-entraînés comme extracteurs de features :

L’architecture des modèles de Deep Learning se présente très souvent sous la forme d’un empilement de couches de neurones. Ces couches apprennent différentes caractéristiques en fonction du niveau où elles se situent. La dernière couche (généralement une couche entièrement connectée, dans le cas de l’apprentissage supervisé) est utilisée pour obtenir la sortie finale. La figure ci-dessous illustre l’architecture d’un modèle de Deep Learning utilisé pour la détection de chat/chien. Plus la couche se situe en profondeur, plus elle permet d’extraire des features spécifiques.

transfer learning
Figure 3 – Exemple de modèle de réseau de neurones utilisé pour la classification d’images

L’idée est donc de réutiliser un réseau pré-entraîné sans sa couche finale. Ce nouveau réseau fonctionne alors comme un extracteur de features fixes pour la réalisation d’autres tâches.

Afin d’illustrer cette stratégie, prenons le cas où nous souhaitons créer un modèle capable d’identifier l’espèce d’une fleur à partir de son image. Il est alors possible d’utiliser les premières couches du modèle de réseau de neurones convolutif AlexNet, initialement entrainé sur la base d’image ImageNet pour la classification d’images.

Si l’idée paraît simple, on pourrait s’interroger sur les performances d’une telle approche. En pratique, elle fonctionne très bien comme le montre la figure ci-dessous.

transfer learning
Figure 4 – Performance de modèles Deep Learning spécifiquement entraînés sur la tâche (vert) par rapport aux modèles pré-entraînés (rouge, rose)
    1. Ajustement de modèles pré-trainés :

 

Il s’agit d’une technique plus complexe, dans laquelle non seulement la dernière couche est remplacée pour réaliser la classification ou la régression, mais d’autres couches sont également ré-entraîner de manière sélective. En effet, les réseaux neuronaux profonds sont des architectures hautement configurables avec divers hyperparamètres. De plus, alors que les premières couches capturent les caractéristiques génériques, les dernières couches se concentrent davantage sur la tâche spécifique à accomplir, comme le montre la figure-ci-dessous

modèle de réseau de neurone
Figure 5 – Exemple de modèle de réseau de neurones utilisé pour reconnaissance faciale

L’idée est donc de geler (c’est-à-dire fixer les poids) de certaines couches pendant l’entraînement et affiner le reste pour répondre à la problématique. 

Cette stratégie permet de réutiliser les connaissances en termes d’architecture globale du réseau et d’exploiter ses états comme point de départ pour l’entraînement. Elle permet donc d’obtenir de meilleures performances avec un temps d’entraînement plus court.


La figure ci-dessous récapitule les principales approches de Transfer Learning utilisées communément en Deep Learning

transfer learning
Figure 6 – Approche de Transfer Learning en Deep Learning,

L’une des exigences fondamentales de l’apprentissage par transfert est la présence de modèles qui fonctionnent bien sur les tâches sources. Heureusement, de nombreuses architectures de Deep Learning de pointe sont aujourd’hui partagées librement par leurs équipes respectives. Celles-ci s’étendent sur différents domaines tels que la vision par ordinateur ou Computer Vision, et le Traitement du langage nature ou le NLP, deux domaines très populaires en Deep Learning.

Parmi les modèles très fréquemment utilisés :

Points clés à retenir

Le Transfer Learning correspond à la capacité à utiliser des connaissances existantes, développées pour la résolution de problématiques données, pour résoudre une nouvelle problématique.Nous avons abordé plusieurs approches de Transfert Learning. Afin de pouvoir choisir la stratégie la plus adaptée, il est important d’examiner les trois questions suivantes : 
    1. Que veut-on transférer ? C’est la première question à se poser et la plus importante. Elle vise à définir quelle partie de la connaissance est à transférer de la source à la cible, afin de répondre à la problématique de la tâche cible. 
    2. Quand veut-on transférer ? Il peut y avoir des scénarios où l’application de méthodes de Transfert Learning peut conduire à une dégradation des résultats. En réalité, ces performances dépendent de la similarité entre les domaines et les tâches cible et source.
    3. Comment va-t-on réaliser le transfert ? Une fois que nous avons répondu à la question “quoi” et “quand”, nous pouvons commencer à identifier la technique de Transfer Leaning la plus adaptée au problème que nous souhaitons résoudre. 

Intéressé(e) par le Transfer Learning ? Découvrez prochainement un exemple d'application avec un article consacré au Style Transfer

S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments
text mining de gaulle
📂 Actu et Buzz

Text Mining – Appel du 18 Juin

Qui d’entre vous n’a jamais rêvé d’une analyse de textes automatisée ? Avec le Machine Learning, certaines perspectives auparavant de l’ordre de l’imaginaire sont désormais

Lire plus »
job data science
📂 Business et Data Science

Devenir Data Scientist en 11 semaines

Avec l’émergence des métiers liés à la Data Science et à l’intelligence artificielle, la diversification des postes dans ces domaines rend parfois difficile la compréhension

Lire plus »
Fermer le menu