Deep Learning
Ce chapitre explore le cœur battant de l’intelligence artificielle moderne : le deep learning (ou apprentissage profond). Reposant sur des réseaux de neurones à plusieurs couches, cette approche permet de traiter des données complexes et massives, et alimente les progrès spectaculaires dans la vision par ordinateur, la traduction automatique, ou encore la génération de contenus. Le chapitre introduit les fondements théoriques des réseaux de neurones, puis détaille les principales architectures utilisées dans les applications actuelles.
Réseaux de neurones artificiels
- Architecture de base : Un réseau de neurones artificiels est composé de plusieurs couches de neurones organisées en une architecture. L’élément de base est le perceptron, une unité de calcul avec des entrées, des poids, une fonction d’activation, et une sortie. Ces réseaux peuvent être composés de couches denses, où chaque neurone de la couche précédente est connecté à chaque neurone de la couche suivante.
- Type de couches de neurones : Il existe plusieurs types de couches de neurones, chacune ayant un rôle spécifique dans l’architecture. Les couches denses sont les plus courantes, mais il existe aussi des couches de convolution (CNN), de récurrence (RNN), ou de normalisation (batch normalization), qui permettent de traiter différents types de données ou d’améliorer l’entraînement du modèle.
- Fonctions d’activation : Les fonctions d’activation sont utilisées pour introduire des non-linéarités dans le réseau. Parmi les plus courantes, on trouve :
- ReLU (Rectified Linear Unit) : Une fonction qui renvoie 0 pour les entrées négatives et l’entrée elle-même pour les entrées positives.
- Sigmoid : Une fonction qui transforme l’entrée dans l’intervalle [0, 1], souvent utilisée pour les sorties probabilistes.
- Tanh (Tangente hyperbolique) : Une fonction qui transforme l’entrée dans l’intervalle [-1, 1], avec une forme similaire à la sigmoid mais centrée sur 0.
CNN – Réseaux Convolutifs
- Structure : Un réseau de neurones convolutifs (CNN) est composé de différentes couches :
- Convolutions : Ces couches appliquent des filtres ou noyaux à l’image d’entrée pour extraire des caractéristiques importantes (par exemple, les bords, textures, etc.).
- Pooling : Une opération de réduction de la taille de l’image (ou des caractéristiques extraites), généralement par un sous-échantillonnage de type Max Pooling ou Average Pooling, afin de réduire la dimensionnalité et le risque de surapprentissage.
- Fully connected : Après les couches convolutives et de pooling, les caractéristiques extraites sont généralement connectées à une ou plusieurs couches entièrement connectées pour effectuer la classification ou la régression.
- Applications : Les CNN sont principalement utilisés pour des tâches de traitement d’images, telles que :
- Vision par ordinateur : Détection d’objets, segmentation d’images, analyse de scènes, etc.
- Reconnaissance d’images : Identification d’objets ou de personnes dans des images ou des vidéos.
- Architectures célèbres : Parmi les architectures CNN les plus connues, on trouve :
- VGG : Un modèle célèbre pour sa simplicité, basé sur une pile de couches convolutives suivies de couches entièrement connectées. Il est connu pour sa profondeur (16 ou 19 couches).
- ResNet : Introduit le concept de « résidus » (skip connections) qui permet de former des réseaux beaucoup plus profonds sans que les gradients ne disparaissent pendant l’entraînement.
- EfficientNet : Une architecture conçue pour être plus efficace en termes de performance et de calcul en utilisant un scaling des dimensions du modèle (largeur, profondeur et résolution) de manière optimale.
RNN – Réseaux Récurrents
- Traitement de séquences avec LSTM et GRU :
Les réseaux de neurones récurrents (RNN) sont conçus pour traiter des séquences de données. Cependant, les RNN de base peuvent rencontrer des problèmes pour apprendre de longues dépendances. Pour résoudre ce problème, des architectures avancées comme le LSTM (Long Short-Term Memory) et le GRU (Gated Recurrent Unit) ont été introduites.- LSTM : Utilise des portes pour réguler le flux d’information, ce qui permet de mieux capturer les dépendances à long terme et de résoudre le problème de la disparition du gradient.
- GRU : Semblable au LSTM mais plus simple, il combine certaines des portes du LSTM en une seule porte de mise à jour, ce qui le rend plus rapide tout en maintenant une performance similaire.
- Applications : Les RNN, LSTM et GRU sont utilisés dans de nombreuses applications liées aux données séquentielles, telles que :
- NLP (Traitement du Langage Naturel) : Modélisation de séquences de mots pour des tâches comme la traduction automatique, la génération de texte, l’analyse de sentiments et la reconnaissance de la parole.
- Séries temporelles : Prédiction de valeurs futures sur la base de données temporelles, par exemple dans les prévisions financières, la météorologie ou l’analyse des ventes.
- Problèmes et solutions : Les RNN rencontrent certains défis, notamment :
- Explosions de gradients : Les gradients peuvent devenir extrêmement grands lors de l’entraînement, ce qui rend l’apprentissage instable. Cela peut être mitigé par une technique appelée « clipping » de gradients.
- Disparition de gradients : Les gradients peuvent devenir très petits, empêchant l’apprentissage des dépendances à long terme. Les architectures LSTM et GRU aident à résoudre ce problème grâce à leurs mécanismes de porte qui régulent le flux d’information.
Architectures modernes
- Transformers et mécanismes d’attention :
Les transformers ont révolutionné le traitement du langage naturel et d’autres tâches séquentielles. Contrairement aux RNN qui traitent les données de manière séquentielle, les transformers utilisent un mécanisme d’attention pour traiter toutes les entrées simultanément. Cela leur permet de mieux capter les dépendances à long terme dans les séquences. Le mécanisme d’attention permet de pondérer l’importance de différentes parties d’une séquence pour chaque position donnée.- Attention : Permet à un modèle de se concentrer sur les parties pertinentes d’une entrée pendant l’entraînement. Ce mécanisme est crucial pour des tâches comme la traduction automatique et la génération de texte.
- Self-attention : Les tokens d’une séquence interagissent entre eux pour définir des relations contextuelles.
- Modèles de langage de grande taille (GPT, BERT, T5…) :
Ces modèles pré-entraînés de grande taille, souvent basés sur l’architecture transformer, sont capables de traiter une variété de tâches NLP avec une performance de pointe.- GPT (Generative Pretrained Transformer) : Un modèle génératif qui génère du texte de manière cohérente en se basant sur un contexte donné. Il est pré-entraîné sur une grande quantité de texte puis affiné pour des tâches spécifiques.
- BERT (Bidirectional Encoder Representations from Transformers) : Conçu pour comprendre le contexte complet des mots dans une phrase, BERT est souvent utilisé pour des tâches de classification et d’extraction d’information.
- T5 (Text-to-Text Transfer Transformer) : Utilise un modèle unifié où toutes les tâches NLP sont converties en un format de texte à texte, facilitant ainsi l’utilisation de la même architecture pour une multitude de tâches.
- Modèles hybrides (CNN + RNN, attention + CNN) :
Les architectures hybrides combinent différentes architectures de réseaux pour tirer parti des forces de chacune.- CNN + RNN : Parfois utilisé dans des tâches comme la reconnaissance vidéo ou la génération de légendes, où les CNN traitent les aspects visuels (comme les images ou les vidéos) et les RNN traitent les aspects temporels ou séquentiels.
- Attention + CNN : L’intégration de mécanismes d’attention avec des CNN permet de mieux capturer les relations contextuelles entre les régions d’une image ou les éléments d’une séquence, améliorant ainsi les performances sur des tâches complexes comme la segmentation d’images ou la traduction de texte.
💡 Objectif du chapitre : permettre au lecteur de comprendre comment les réseaux de neurones profonds fonctionnent, pourquoi ils sont si puissants, et comment choisir la bonne architecture selon le type de données et la tâche visée.