1. Présentation
Dernière mise à jour : 28/03/2022
Machine learning
Le machine learning (apprentissage automatique) est un domaine qui évolue très rapidement. De nouvelles recherches et possibilités voient le jour quotidiennement pour proposer des cas d'utilisation jusqu'alors inenvisageables.
En général, un modèle est créé à partir de là. Les modèles peuvent être interprétés comme de très longues équations mathématiques avec une entrée (par exemple, une image) qui produit un résultat (par exemple, la classification).
- Et si vous souhaitez utiliser l'un de ces nouveaux modèles avec vos propres données ?
- Comment tirer profit de ces modèles de pointe pour votre cas d'utilisation ou dans votre application ?
Cet atelier de programmation vous aidera à personnaliser facilement les modèles de machine learning en fonction de vos données.
Créer et entraîner des modèles de machine learning présentent de nombreux défis :
- Ces opérations prennent beaucoup de temps.
- De grandes quantités de données sont utilisées.
- Elles nécessitent un certain niveau d'expertise dans des domaines comme les mathématiques et les statistiques.
- Elles sont gourmandes en ressources : l'entraînement de certains modèles peut prendre plusieurs jours.
Créer des architectures de modèles prend beaucoup de temps. Cela peut nécessiter de nombreux tests et années d'expérience. Et si vous pouviez mettre à profit toutes ces connaissances et les utiliser sur vos propres données en adaptant simplement les recherches de pointe à votre propre problème ? C'est possible grâce à une technique appelée apprentissage par transfert !
Dans cet atelier de programmation, vous allez apprendre à implémenter l'apprentissage par transfert. Vous découvrirez également comment il fonctionne et quand l'utiliser.
Points abordés
- Comprendre en quoi consiste l'apprentissage par transfert et savoir quand s'en servir
- Utiliser l'apprentissage par transfert
- Ajuster les modèles
- Utiliser TensorFlow Lite Model Maker
- Utiliser TensorFlow Hub
Prérequis
- Comme tout le code est exécuté à l'aide de Google Colaboratory, vous n'avez rien à installer sur votre machine. Il vous suffit d'avoir accès à Internet et à un compte Google pour vous connecter à Colab.
- Vous devez posséder des connaissances de base sur TensorFlow et l'API Keras.
- Vous devez disposer de connaissances sur Python.
Si vous n'avez pas de connaissances de base sur TensorFlow ou sur le machine learning, vous pouvez malgré tout en apprendre davantage sur l'apprentissage par transfert. Lisez l'étape suivante "Qu'est-ce que l'apprentissage par transfert ?" pour connaître la théorie sur cette technique, puis passez à la section "Apprentissage par transfert avec Model Maker". Si vous souhaitez en savoir plus sur le processus et aller plus loin, consultez les sections sur l'apprentissage par transfert avec TensorFlow Hub.
2. Qu'est-ce que l'apprentissage par transfert ?
Un modèle pré-entraîné est un réseau enregistré qui a déjà été entraîné sur un ensemble de données volumineux, généralement sur une tâche de classification d'images à grande échelle. Vous pouvez vous servir du modèle pré-entraîné tel quel ou utiliser l'apprentissage par transfert pour le personnaliser en fonction d'une tâche donnée.
Avec l'apprentissage par transfert pour la classification d'images, on suppose que si un modèle est entraîné sur un ensemble de données suffisamment volumineux et général, il servira efficacement de modèle générique du monde visuel. Vous pouvez ensuite exploiter ces cartes de caractéristiques apprises sans partir de zéro en entraînant un grand modèle sur un ensemble de données volumineux.
Il existe deux manières de personnaliser un modèle de machine learning.
- Extraction de caractéristiques : utilisez les représentations apprises par un réseau précédent pour extraire des caractéristiques importantes de nouveaux échantillons. Il vous suffit d'ajouter un classificateur entraîné à partir de zéro, en plus du modèle pré-entraîné, afin de pouvoir réutiliser les cartes de caractéristiques apprises au préalable pour l'ensemble de données. Il n'est pas nécessaire de réentraîner le modèle dans son intégralité. Le réseau convolutif de base contient déjà des fonctionnalités généralement utiles pour classer les images. Cependant, la partie de classification finale du modèle pré-entraîné est spécifique à la tâche de classification d'origine, puis à l'ensemble des classes sur lesquelles le modèle a été entraîné.
- Ajustement : débloquez certaines couches supérieures d'une base de modèle figée, puis entraînez conjointement les couches de classificateurs que vous venez d'ajouter et les dernières couches du modèle de base. Cela nous permet d'"ajuster" les représentations de caractéristiques supérieures dans le modèle de base afin de les rendre plus pertinentes pour la tâche spécifique.
L'extraction de caractéristiques est plus rapide à entraîner, mais les ajustements vous permettent d'obtenir de meilleurs résultats.
Vous allez tester l'extraction de caractéristiques et l'ajustement à l'aide de deux méthodes d'apprentissage par transfert :
- La bibliothèque TensorFlow Lite Model Maker se charge automatiquement de la plupart des pipelines de données et de la création de modèles, ce qui simplifie considérablement le processus. De plus, le modèle obtenu peut être exporté facilement sur mobile et dans le navigateur.
- Les modèles TensorFlow Hub exploitent le vaste dépôt de modèles de machine learning disponibles sur TensorFlow Hub. Les chercheurs et la communauté contribuent à ces modèles qui rendent les modèles de pointe beaucoup plus rapides et plus diversifiés.
3. Apprentissage par transfert avec Model Maker
Maintenant que vous connaissez le concept de l'apprentissage par transfert, nous allons commencer à utiliser la bibliothèque TensorFlow Lite Model Maker, un outil qui vous permettra de réaliser cette opération facilement.
La bibliothèque TensorFlow Lite Model Maker est une bibliothèque Open Source qui simplifie le processus d'apprentissage par transfert et qui le rend beaucoup plus accessible aux développeurs qui ne sont pas spécialisés dans le machine learning (comme les développeurs Web ou d'applications mobiles).
Le notebook Colab vous indique comment procéder. Voici ce que vous devez faire :
- Charger les données
- Diviser les données
- Créer et entraîner le modèle
- Évaluer le modèle
- Exporter le modèle
Après cette étape, vous pourrez commencer à entraîner vos propres données pour l'apprentissage par transfert en suivant exactement la même procédure.
Colaboratory
Passons maintenant à l'entraînement du modèle personnalisé dans Google Colab.
Comptez environ 15 minutes pour lire les explications et comprendre les principes de base du notebook.
Avantages :
- La personnalisation des modèles est facile.
- Il n'est pas nécessaire de comprendre en quoi consistent TensorFlow et l'API Keras.
- Il s'agit d'un outil Open Source qui peut être modifié si vous avez besoin d'une configuration spécifique qui n'a pas encore été implémentée.
- Il permet d'exporter directement le modèle pour l'exécuter sur mobile ou dans le navigateur.
Inconvénients
- Les possibilités de configuration sont moins nombreuses par rapport aux cas où vous créez vous-même le pipeline et le modèle complets, comme avec les deux méthodes précédentes.
- Même lorsque vous choisissez le modèle de base, tous les modèles ne peuvent pas être utilisés comme base.
- Cette solution n'est pas adaptée aux grandes quantités de données, où le pipeline est plus complexe.
4. Trouver un modèle sur TensorFlow Hub
À la fin de cette section :
- vous saurez trouver des modèles de machine learning sur TensorFlow Hub ;
- vous aurez compris le concept des collections ;
- vous connaîtrez les différents types de modèles.
Pour implémenter l'apprentissage par transfert, vous avez d'abord besoin de deux éléments :
- Des données, par exemple des images des sujets que vous souhaitez reconnaître
- Un modèle de base que vous pouvez personnaliser en fonction de vos données
La partie "données" dépend généralement du type d'activité, mais la méthode la plus simple consiste à prendre beaucoup de photos de ce que vous souhaitez reconnaître. Qu'en est-il du modèle de base ? Où pouvez-vous en trouver un ? C'est là que TensorFlow Hub peut vous aider.
TensorFlow Hub est le dépôt de modèles qui répond aux besoins de vos modèles TensorFlow.
Vous pouvez parcourir et lire la documentation de milliers de modèles utilisables immédiatement. Nombre d'entre eux sont prêts pour l'apprentissage par transfert et l'ajustement.
Rechercher un modèle
Commençons par lancer une recherche simple sur les modèles TensorFlow à utiliser dans votre code.
Étape 1 : Dans votre navigateur, ouvrez le site tfhub.dev.
Pour l'apprentissage par transfert sur le domaine de l'image, nous avons besoin de vecteurs de caractéristiques. Ces vecteurs sont comme les modèles de classification, mais sans tête de classification.
Les vecteurs de caractéristiques peuvent convertir des images en représentation numérique dans le n-ième espace (n étant le nombre de dimensions de la couche de sortie du modèle).
Sur TFHub, vous pouvez rechercher des vecteurs de caractéristiques précis en cliquant sur une fiche spécifique.
Vous pouvez également rechercher le nom d'un modèle à l'aide du filtre de gauche pour n'afficher que Image feature vectors
.
Les fiches associées à des icônes bleues sont des collections de modèles. Si vous cliquez sur une collection d'images, vous aurez le choix entre de nombreux modèles similaires. Sélectionnez la collection d'images.
Faites défiler la page vers le bas, puis sélectionnez MobileNet V3
. N'importe quel vecteur de caractéristiques conviendra.
La page d'informations du modèle vous permet de lire toute la documentation le concernant, d'afficher des extraits de code pour le tester ou même de l'essayer directement sur un notebook Colab.
Pour l'instant, il vous suffit d'avoir l'URL en haut de la page. Il s'agit de l'identifiant du modèle et du lien qui vous permet d'y accéder facilement depuis la bibliothèque TensorFlow Hub.
5. Apprentissage par transfert avec TensorFlow Hub
Maintenant que vous avez choisi le modèle à utiliser, vous pouvez le personnaliser en le chargeant avec la méthode KerasLayer de la bibliothèque TensorFlow Hub.
Cette méthode charge un modèle de sorte qu'il puisse être utilisé comme couche sur votre modèle, ce qui vous permet de le créer autour de cette couche.
Précédemment, lorsque vous avez appris à utiliser Model Maker, tous les éléments internes n'apparaissaient pas pour que vous puissiez comprendre la procédure plus facilement. À présent, vous allez voir ce que fait Model Maker en arrière-plan.
Colaboratory
Passons maintenant à l'entraînement du modèle personnalisé dans Google Colab.
Comptez environ 20 minutes pour lire les explications et comprendre les principes de base du notebook.
Avantages :
- Vous avez accès à des milliers de modèles auxquels ont contribué des chercheurs et la communauté, et qui ont été entraînés sur divers ensembles de données.
- Vous disposez de modèles pour toutes les tâches, par exemple pour la vision, le texte et l'audio.
- Il est facile de tester différents modèles similaires. La modification du modèle de base peut nécessiter la correction d'une seule chaîne.
Inconvénients
- L'utilisation de ces modèles requiert malgré tout une certaine expertise de TensorFlow/Keras.
Pour aller plus loin, vous pouvez aussi implémenter l'apprentissage par transfert à l'aide de l'application Keras. C'est presque le même principe qu'avec TensorFlow Hub, mais cette procédure ne concerne que les principales API TensorFlow.
6. Félicitations
Félicitations ! Vous avez découvert l'apprentissage par transfert et la procédure à suivre pour l'appliquer à vos propres données.
Dans cet atelier de programmation, vous avez appris à personnaliser des modèles de machine learning en fonction de vos données à l'aide de l'apprentissage par transfert.
Vous avez essayé deux méthodes d'apprentissage par transfert :
- Avec un outil comme TensorFlow Lite Model Maker
- Avec un vecteur de caractéristiques de TensorFlow Hub
Les deux méthodes présentent leurs avantages et leurs inconvénients, ainsi que de nombreuses configurations possibles pour vos besoins spécifiques.
Vous avez également appris que vous pouviez aller encore plus loin et affiner les modèles en modifiant légèrement leurs pondérations afin de mieux les adapter à vos données.
Ces deux méthodes permettent d'ajuster les modèles.
L'apprentissage par transfert et l'ajustement des modèles ne sont pas réservés aux modèles d'image. L'idée étant d'utiliser une représentation apprise d'un domaine pour optimiser votre ensemble de données, vous pouvez aussi vous en servir pour les domaines textuels et audio.
Étapes suivantes
- Essayez avec vos propres données.
- Présentez-nous vos créations et ajoutez le tag TensorFlow à vos projets sur les réseaux sociaux.
En savoir plus
- Pour en savoir plus sur l'ajustement des modèles de pointe tels que BERT, consultez Ajuster un modèle BERT.
- Pour en savoir plus sur l'apprentissage par transfert pour les modèles audio, consultez Apprentissage par transfert avec YAMNet pour la classification des sons environnementaux.