Qu’est-ce que le Transfer Learning ?

Le Transfer Learning est une technique qui consiste à réutiliser un modèle entraîné sur un grand dataset (comme ImageNet) et à l’adapter à votre problème spécifique. Au lieu de partir de zéro, vous bénéficiez des features déjà apprises par le modèle.

Le Transfer Learning est probablement l’avancée la plus impactante en Deep Learning appliqué. Il permet d’obtenir d’excellents résultats même avec peu de données.

Pourquoi ça fonctionne ?

Les premières couches d’un réseau de neurones apprennent des features génériques (contours, textures, formes). Seules les dernières couches se spécialisent pour la tâche précise. En réutilisant les premières couches, vous gagnez un énorme avantage.

Exemple avec PyTorch et ResNet

import torch
import torchvision.models as models
import torch.nn as nn

# Charger ResNet50 pré-entraîné
model = models.resnet50(pretrained=True)

# Geler les couches pré-entraînées
for param in model.parameters():
    param.requires_grad = False

# Remplacer la dernière couche pour notre problème
# (ex: classification de 5 types de produits)
model.fc = nn.Sequential(
    nn.Linear(2048, 256),
    nn.ReLU(),
    nn.Dropout(0.3),
    nn.Linear(256, 5)
)

# Seules les nouvelles couches seront entraînées
optimizer = torch.optim.Adam(model.fc.parameters(), lr=0.001)

Fine-tuning : aller plus loin

Après avoir entraîné les nouvelles couches, vous pouvez “dégeler” progressivement les couches pré-entraînées et les affiner avec un learning rate très faible :

# Dégeler les dernières couches de ResNet
for param in model.layer4.parameters():
    param.requires_grad = True

# Fine-tuning avec un learning rate très faible
optimizer = torch.optim.Adam([
    {"params": model.layer4.parameters(), "lr": 1e-5},
    {"params": model.fc.parameters(), "lr": 1e-3},
])

Transfer Learning en NLP avec Hugging Face

En traitement du langage naturel, le Transfer Learning a révolutionné le domaine avec des modèles comme BERT, GPT et CamemBERT (pour le français) :

from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Charger CamemBERT pour la classification de texte en français
tokenizer = AutoTokenizer.from_pretrained("camembert-base")
model = AutoModelForSequenceClassification.from_pretrained(
    "camembert-base", num_labels=3
)

Conclusion

Le Transfer Learning rend le Deep Learning accessible même sans GPU massif ni millions d’exemples. C’est une compétence essentielle que nous couvrons en détail lors du jour 3 de notre formation.