Dans AI Branches, vous avez appris que les réseaux de neurones ont des couches. Un réseau avec une ou deux couches cachées est dit peu profond. Ajoutez plus de couches — 10, 50, 100+ — et vous obtenez un réseau de neurones profond. Ce simple mot, « profond », est ce qui donne son nom au deep learning.
Mais pourquoi la profondeur est-elle importante ? Parce que chaque couche apprend un niveau d'abstraction différent :
Couche 1 → Bords et textures simples
Couche 2 → Coins et contours
Couche 3 → Parties d'objets (yeux, roues)
Couche 4 → Objets entiers (visages, voitures)
Couche 5+ → Scènes et contexte
Imaginez la lecture d'un livre. La couche 1 reconnaît les lettres, la couche 2 reconnaît les mots, la couche 3 comprend les phrases, et la couche 4 saisit le sens complet. Un lecteur peu profond bloqué à la couche 1 ne verrait que des lettres — sans jamais comprendre l'histoire.
Les réseaux peu profonds peuvent approximer beaucoup de fonctions en théorie, mais en pratique ils nécessitent une couche impraticablement large. Les réseaux profonds obtiennent les mêmes résultats (et meilleurs) avec beaucoup moins de paramètres en composant des caractéristiques simples en caractéristiques complexes.
Les premiers chercheurs ont essayé d'empiler beaucoup de couches, mais l'entraînement échouait. Le coupable : les gradients qui s'évanouissent.
Pendant la rétropropagation, les signaux d'erreur sont multipliés à travers chaque couche. Avec des fonctions d'activation comme sigmoid, ces multiplications impliquent des nombres entre 0 et 1. Multipliez suffisamment de petits nombres et le signal diminue presque à zéro :
Signal d'erreur : 0.25 × 0.25 × 0.25 × 0.25 = 0.0039
1. Activation ReLU — Pour les entrées positives, le gradient est exactement 1, donc les signaux passent sans diminuer.
2. Connexions de Saut (Apprentissage Résiduel) — Le signal peut sauter des couches. Si une couche n'a rien d'utile à ajouter, les données passent simplement.
x ──→ [Couche] ──→ (+) ──→ sortie
│ ↑
└───────────────────┘ ← connexion de saut
3. Normalisation par Lots — Normalise les entrées de chaque couche pour que les valeurs restent dans une plage saine.
Avant ces percées, les réseaux de plus de 10 couches étaient presque impossibles à entraîner. Après, les chercheurs ont entraîné avec succès des réseaux de plus de 1 000 couches !
ResNet a introduit les connexions de saut et a remporté la compétition ImageNet avec un réseau de 152 couches. Au lieu d'apprendre une sortie directement, chaque bloc apprend le résiduel — la différence entre ce que vous avez et ce que vous voulez.
L'architecture Transformer a remplacé le traitement séquentiel par un mécanisme d'auto-attention. Au lieu de lire le texte mot par mot, il regarde tous les mots simultanément et décide lesquels sont importants les uns pour les autres.
"Le chat s'est assis sur le tapis parce qu'il était fatigué"
L'auto-attention demande : à quoi se réfère « il » ?
« il » ←→ « chat » (score d'attention élevé : 0.82)
« il » ←→ « tapis » (score d'attention bas : 0.11)
Les Transformers sont l'architecture derrière GPT, Claude, Llama et pratiquement tous les LLM modernes. Nous approfondirons dans la prochaine leçon.
Entraîner un réseau profond de zéro nécessite des millions d'exemples. Le transfert d'apprentissage vous permet de sauter la majeure partie de ce travail.
Étape 1 : Prendre un modèle pré-entraîné (entraîné sur des millions d'images)
Étape 2 : Geler les premières couches (elles connaissent déjà les bords, formes, textures)
Étape 3 : Remplacer la couche finale par votre tâche (ex. : 3 classes)
Étape 4 : Entraîner seulement les dernières couches sur vos données
Étape 5 : Terminé ! Haute précision avec une fraction des données et du temps.
Le transfert d'apprentissage, c'est comme un chef expérimenté qui passe de la cuisine française à la cuisine japonaise. Il n'a pas besoin de réapprendre à tenir un couteau — ces compétences se transfèrent. Il doit seulement apprendre les nouvelles recettes.
L'entraînement des réseaux de neurones est principalement de la multiplication matricielle. Les CPU traitent ces opérations une à la fois. Les GPU en traitent des milliers simultanément.
CPU : 4-16 cœurs → traite les tâches une par une
GPU : milliers de cœurs → traite des milliers de tâches en parallèle
Les percées modernes en IA seraient impossibles sans les GPU. Quand vous entendez que les entreprises d'IA dépensent des milliards en matériel, c'est pourquoi.
# Étape 1 : Charger un modèle pré-entraîné
model = load_pretrained_model("resnet50")
# Étape 2 : Geler toutes les couches
for layer in model.layers:
layer.trainable = False
# Étape 3 : Remplacer la couche finale de classification
model.final_layer = DenseLayer(input_size=2048, output_size=3)
model.final_layer.trainable = True
# Étape 4 : Préparer notre petit jeu de données
train_data = load_images("fleurs/train/", categories=["rose", "tournesol", "tulipe"])
val_data = load_images("fleurs/val/", categories=["rose", "tournesol", "tulipe"])
# Étape 5 : Entraîner pour quelques époques
model.compile(optimizer="adam", loss="cross_entropy", learning_rate=0.001)
model.fit(train_data, validation_data=val_data, epochs=5)
# Étape 6 : Évaluer
accuracy = model.evaluate(val_data)
print(f"Précision de validation : {accuracy:.1%}")
Remarquez le peu de données nécessaires ! Sans transfert d'apprentissage, entraîner de zéro avec quelques centaines d'images conduirait à du surapprentissage. Le transfert d'apprentissage rend le deep learning accessible même sans jeux de données massifs.
Vous comprenez maintenant comment fonctionnent les réseaux profonds. Dans la prochaine leçon, nous plongerons dans les Grands Modèles de Langage — les moteurs derrière ChatGPT, Claude et la révolution de l'IA. 📝