23.7. Apprentissage par transfert et mise au point : gel des couches

L'apprentissage par transfert et le réglage fin sont des techniques puissantes dans le domaine du Machine Learning et du Deep Learning qui permettent le transfert de connaissances d'un modèle pré-entraîné vers une nouvelle tâche dans le but d'améliorer les performances et l'efficacité de la formation. L'essence de l'apprentissage par transfert est de prendre les poids et les caractéristiques apprises par un modèle sur un grand ensemble de données, généralement sur une tâche connexe, et de les appliquer à une nouvelle tâche avec moins de données disponibles.

L'une des stratégies les plus efficaces de Transfer Learning est le gel des couches. Cette technique consiste à maintenir fixes les poids de certaines couches d'un modèle pré-entraîné, tandis que seules certaines couches sont ajustées ou « affinées » pour la nouvelle tâche. Explorons plus en profondeur le fonctionnement de cette stratégie et comment elle peut être appliquée à l'aide de bibliothèques Python et Deep Learning telles que TensorFlow et Keras.

Qu'est-ce que le gel des couches ?

Dans le contexte des réseaux de neurones profonds, le gel des couches est le processus consistant à maintenir le poids de certaines couches inchangé pendant l'entraînement. Ceci est dû au fait que ces couches ont déjà appris les caractéristiques générales qui peuvent être utiles pour la nouvelle tâche. Généralement, les premières couches d'un réseau neuronal convolutif (CNN) apprennent les fonctionnalités de bas niveau, telles que les bords et les textures, tandis que les couches plus profondes apprennent les fonctionnalités de niveau supérieur, plus spécifiques à la tâche d'origine.

En gelant les premières couches, nous pouvons réutiliser ces fonctionnalités générales et concentrer la formation sur les couches supérieures, qui seront ajustées pour capturer les nuances de la nouvelle tâche. Cela permet non seulement d'économiser du temps et des ressources de calcul, mais peut également améliorer les performances sur des tâches comportant des ensembles de données plus petits, où l'apprentissage à partir de zéro peut conduire à un surapprentissage.

Comment geler des calques en Python avec TensorFlow/Keras ?

Avec des bibliothèques telles que TensorFlow et Keras, geler les couches est un processus simple. En chargeant un modèle pré-entraîné, nous pouvons facilement définir quelles couches doivent être gelées. Voici un exemple de la façon de procéder :

de tensorflow.keras.applications importer VGG16
à partir des couches d'importation tensorflow.keras, des modèles

# Chargez le modèle VGG16 pré-entraîné avec les poids ImageNet
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# Geler toutes les couches du modèle de base
pour la couche dans base_model.layers :
    layer.trainable = Faux

# Ajouter de nouveaux calques personnalisés à la nouvelle tâche
x = layer.Flatten() (base_model.output)
x = couches.Dense(1024, activation='relu')(x)
prédictions = layer.Dense(num_classes, activation='softmax')(x)

# Créer le modèle final
model = models.Model(inputs=base_model.input, sorties=predictions)

# Désormais, seules les couches ajoutées seront entraînées

Dans le code ci-dessus, toutes les couches du modèle VGG16 sont gelées et de nouvelles couches sont ajoutées pour la tâche spécifique. Pendant l'entraînement, seuls les poids des nouvelles couches seront mis à jour.

Quand utiliser le gel des calques ?

Le gel des niveaux est plus efficace lorsque le nouvel ensemble de données de tâches est petit ou lorsque les tâches source et cible sont similaires. Si le nouvel ensemble de données est volumineux et très différent de l'ensemble de données d'origine, il peut être nécessaire d'entraîner davantage de couches, voire l'ensemble du réseau, pour obtenir de bonnes performances.

Réglage précis après le gel des calques

Après une première période d'entraînement avec des couches gelées, il est souvent utile d'affiner certaines des couches supérieures du modèle pré-entraîné. Cela implique de débloquer un petit nombre de couches supérieures et de poursuivre la formation pour adapter les fonctionnalités de haut niveau au nouvel ensemble de données.

Par exemple :

# Dégeler les 5 dernières couches du modèle de base
pour la couche dans base_model.layers[-5:] :
    layer.trainable = Vrai

# Continuer la formation avec un taux d'apprentissage inférieur
optimiseur = keras.optimizers.Adam(lr=1e-5)
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])

Lors du dégel des couches, il est important d'utiliser un taux d'apprentissage plus faible pour éviter de détruire les fonctionnalités déjà apprises.

Considérations finales

L'apprentissage par transfert et le réglage fin avec le gel des couches sont des techniques précieuses pour exploiter des modèles pré-entraînés pour de nouvelles tâches. En ajustant soigneusement les couches à geler et à débloquer et en choisissant la bonne stratégie de formation, vous pouvez obtenir un modèle très efficace, même avec un ensemble de données limité. L'utilisation de bibliothèques comme TensorFlow et Keras facilite la mise en œuvrementation de ces techniques en Python, permettant aux praticiens du Machine Learning et du Deep Learning de se concentrer sur la création de solutions robustes et innovantes.

Répondez maintenant à l’exercice sur le contenu :

Laquelle des affirmations suivantes concernant le gel des couches dans le contexte de l'apprentissage par transfert et du réglage fin du Deep Learning est vraie ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Transfert d'apprentissage et mise au point : adaptation des modèles à de nouveaux domaines

Page suivante de lebook gratuit :

92Transfert d'apprentissage et mise au point : adaptation des modèles à de nouveaux domaines

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte