IA 101
Qu’est-ce que l’apprentissage par transfert ?

Qu’est-ce que l’apprentissage par transfert ?
Lorsque vous pratiquez l’apprentissage automatique, la formation d’un modèle peut prendre beaucoup de temps. Créer une architecture de modèle à partir de zéro, former le modèle, puis ajuster le modèle est une énorme quantité de temps et d’efforts. Une façon beaucoup plus efficace de former un modèle d’apprentissage automatique est d’utiliser une architecture qui a déjà été définie, potentiellement avec des poids qui ont déjà été calculés. C’est l’idée principale derrière l’apprentissage par transfert, en prenant un modèle qui a déjà été utilisé et en le réutilisant pour une nouvelle tâche.
Avant de plonger dans les différentes façons dont l’apprentissage par transfert peut être utilisé, prenons un moment pour comprendre pourquoi l’apprentissage par transfert est une technique si puissante et utile.
Résoudre un problème d’apprentissage profond
Lorsque vous essayez de résoudre un problème d’apprentissage profond, comme la construction d’un classificateur d’images, vous devez créer une architecture de modèle et former le modèle sur vos données. La formation du classificateur implique l’ajustement des poids du réseau, un processus qui peut prendre des heures ou même des jours en fonction de la complexité du modèle et du jeu de données. Le temps de formation sera proportionnel à la taille du jeu de données et à la complexité de l’architecture du modèle.
Si le modèle n’obtient pas le niveau de précision nécessaire pour la tâche, il est probable que des ajustements du modèle devront être effectués, puis le modèle devra être réentraîné. Cela signifie encore plus d’heures de formation jusqu’à ce qu’une architecture optimale, une durée de formation et une partition de jeu de données soient trouvées. Lorsque vous considérez le nombre de variables qui doivent être alignées les unes avec les autres pour qu’un classificateur soit utile, il est logique que les ingénieurs en apprentissage automatique soient toujours à la recherche de moyens plus faciles et plus efficaces pour former et mettre en œuvre des modèles. C’est pourquoi la technique d’apprentissage par transfert a été créée.
Après avoir conçu et testé un modèle, si le modèle s’est avéré utile, il peut être sauvegardé et réutilisé plus tard pour des problèmes similaires.
Types d’apprentissage par transfert
En général, il existe deux types d’apprentissage par transfert : développer un modèle à partir de zéro et utiliser un modèle pré-formé.
Lorsque vous développez un modèle à partir de zéro, vous devez créer une architecture de modèle capable d’interpréter vos données de formation et d’en extraire des modèles. Après que le modèle ait été formé pour la première fois, vous devrez probablement apporter des modifications pour obtenir les meilleures performances du modèle. Vous pouvez alors sauvegarder l’architecture du modèle et l’utiliser comme point de départ pour un modèle qui sera utilisé pour une tâche similaire.
Dans le deuxième cas – l’utilisation d’un modèle pré-formé – vous n’avez qu’à sélectionner un modèle pré-formé à utiliser. De nombreuses universités et équipes de recherche rendent les spécifications de leur modèle disponibles pour une utilisation générale. L’architecture du modèle peut être téléchargée avec les poids.
Lors de la réalisation de l’apprentissage par transfert, l’ensemble de l’architecture du modèle et les poids peuvent être utilisés pour la tâche en cours, ou seulement certaines parties/couches du modèle peuvent être utilisées. Utiliser uniquement une partie du modèle pré-formé et former le reste du modèle est appelé affiner.
Affiner un réseau
Affiner un réseau décrit le processus de formation de certaines couches du réseau. Si un nouveau jeu de données de formation est très similaire au jeu de données utilisé pour former le modèle d’origine, de nombreux poids peuvent être réutilisés.
Le nombre de couches du réseau qui devraient être débloquées et réentraînées devrait être proportionnel à la taille du nouveau jeu de données. Si le jeu de données sur lequel vous formez est petit, il est préférable de conserver la plupart des couches telles qu’elles sont et de n’entraîner que les dernières couches. Cela permet d’éviter que le réseau ne surapprenne. Alternativement, les dernières couches du réseau pré-formé peuvent être supprimées et de nouvelles couches peuvent être ajoutées, qui sont ensuite formées. En revanche, si le jeu de données est grand, potentiellement plus grand que le jeu de données d’origine, l’ensemble du réseau devrait être réentraîné. Pour utiliser le réseau comme extracteur de fonctionnalités fixe, la plupart du réseau peuvent être utilisées pour extraire les fonctionnalités tandis que seule la dernière couche du réseau peut être débloquée et formée.
Lorsque vous affinez un réseau, rappelez-vous simplement que les premières couches du ConvNet sont celles qui contiennent les informations représentant les fonctionnalités génériques des images. Ce sont des fonctionnalités telles que les bords et les couleurs. En revanche, les couches plus tardives du ConvNet contiennent les détails qui sont plus spécifiques aux classes individuelles contenues dans le jeu de données sur lequel le modèle a été formé à l’origine. Si vous formez un modèle sur un jeu de données qui est très différent du jeu de données d’origine, vous voudrez probablement utiliser les premières couches du modèle pour extraire les fonctionnalités et n’entraîner que le reste du modèle.
Exemples d’apprentissage par transfert
Les applications les plus courantes de l’apprentissage par transfert sont probablement celles qui utilisent des données d’images comme entrées. Ce sont souvent des tâches de prédiction/classification. La façon dont les réseaux de neurones convolutionnels interprètent les données d’images se prête à la réutilisation d’aspects de modèles, car les couches convolutionnelles distinguent souvent des fonctionnalités très similaires. Un exemple de problème d’apprentissage par transfert courant est la tâche ImageNet 1000, un énorme jeu de données rempli de 1000 classes d’objets différents. Les entreprises qui développent des modèles qui obtiennent de hautes performances sur ce jeu de données rendent souvent leurs modèles disponibles sous des licences qui permettent à d’autres de les réutiliser. Certains des modèles qui ont résulté de ce processus incluent le modèle ResNet de Microsoft, le modèle Inception de Google et le groupe de modèles VGG d’Oxford.












