Les domaines d’application du Transfer Learning sont nombreux. Principalement, les méthodes de transfert de connaissance sont très souvent utilisées pour la reconnaissance d’image ainsi que le traitement automatique du langage. Ces deux domaines d’apprentissage sont très complexes et chronophages. C’est pour cela que le Transfer Learning apporte un souffle nouveau pour tenter d’optimiser ces traitements en exploitant au maximum des modèles déjà entraînés. Nous allons voir ici plusieurs méthodes de Transfert Learning.
Tout d’abord, il existe plusieurs branches du Transfer Learning en fonction de la problématique qui se pose à nous. La principale dichotomie est la même que pour celle du Machine Learning : la labellisation des données. Si ces dernières sont labellisées concernant le domaine cible alors nous sommes dans la branche Inductive Transfer Learning, sinon, c’est du Unsupervised Transfer Learning.
Classification d’image
Dans le cas d’un modèle de classification d’image, il existe déjà des Framework pré-entraînés que nous pouvons réutiliser pour l’appliquer à notre cas. C’est le cas de VGG16. Ce modèle est un Réseaux Neuronal Convolutif entraîné sur 1,2 millions d’images de 1000 catégories différentes. Il fonctionne avec un système imbriqué de 3*3 couches convolutives empilées les unes sur les autres. Chacune de ces couches se centrent sur un élément graphique à identifier, du plus général au plus particulier. Des poids seront définis pour chacune, permettant ainsi de hiérarchiser les combinaisons qui vont repérer la forme globale la plus approchante du sujet à trouver. S’en suit deux couches connectées contenant chacune 4096 nœuds. Appelée fully connected, elles ont comme sorties les scores des 1000 catégories sur la base de données ImageNet. Enfin, une couche qui applique la méthode de softmax est en bout de chaîne. Cette méthode aussi appelée fonction exponentielle normalisée associe à chaque possibilité de sortie un score transformé alors en probabilité.
Fixed feature extractor
Une première méthode de Transfer Learning appliquant ce modèle consiste à utiliser le réseau de neurones comme une variable fixe d’extraction et l’appliquer telle quelle à notre dataset. Voici les étapes :
- On enlève la dernière couche, i.e. fully connected, du réseau,
- On « gèle » les poids du modèle et nous les utilisons comme une variable fixe d’extrait,
- On extrait alors les 4096 dimensionnels codes grâce à la variable fixée pour toutes les images,
- On entraîne une classification linéaire pour le nouveau dataset (e.g. SVM linéaire ou Softmax).
Fine-tuning
La seconde méthode consiste à utiliser la première méthode en améliorant cette fois les poids du réseau pré-entrainé. Pour cela, la méthode de backpropagation sera maintenue. En fonction de notre problématique, on peut aussi décider de garder et donc figer une partie des poids des premières couches du réseau pré-entraîné car les premières couches contiennent des variables très génériques (e.g. détection des angles ou des couleurs) et donc pertinentes pour de nombreuses tâches différentes. Plus on avance dans les couches du réseau et plus ces dernières sont spécifiques aux détails des classes contenues dans le dataset.
Modèles pré-entraînés
Il est possible maintenant de trouver des réseaux de neurones disponibles sur internet entraînés par d’autres personnes. Ainsi la librairie Caffe permet à des utilisateurs de partager les poids de leurs réseaux de neurones qui permettront à d’autres personnes de gagner du temps en réutilisant ces mêmes poids dans leur modèle.
Traitement du langage naturel (NLP)
Word2Vec
Le transfert de connaissance est également très intéressant dans le traitement du langage naturel. En effet, le langage est très complexe tant dans sa variété que dans sa prononciation. Il est donc très difficile pour une machine de maîtriser le langage comme un être humain. Dès que nous tentons de le faire, nous voyons très nettement que la machine atteint rapidement ses limites. Si le contexte est différent de celui qu’il a appris par exemple alors il ne sera pas capable de s’adapter et donnera du contenu insensé. De même, lors de la prononciation, les accents sont différents alors que cela concerne le même langage, la machine peut ne pas comprendre. Il faudrait alors créer un modèle pour chaque cas différent ce qui n’est absolument pas envisageable. Le Transfer Learning intervient dans ce contexte.
Le Transfer Learning dans l’apprentissage d’une représentation de mots (word embedding) a montré ses preuves. Cette technique représente chaque mot d’un dictionnaire par un vecteur de nombres réels. Cela permet de faciliter l’analyse sémantique des mots. Ici, nous allons voir le modèle Word2Vec et comment l’utiliser dans un contexte de transfert de connaissance.
Créé par Google, il est très largement utilisé par l’ensemble de la communauté scientifique. Il utilise un réseau de neurones qui apprend comment les mots sont utilisés dans un corpus de texte spécifique. Pour cela il transforme chaque mot en vecteur et garde une description numérique de comment ce mot est utilisé dans le contexte. Les mots qui sont utilisés de façon similaire auront des vecteurs proches.
Des recherches récentes ont tenté de créer des vecteurs de mots contextualisés. Cela consiste à initialiser seulement les couches les plus basses de notre réseau de neurones avec des vecteurs de mots pré entraînés avec le modèle Word2Vec. L’information transférée est donc sous forme de vecteurs de mots qui a prouvé l’amélioration des performances. Nous allons voir un exemple avec les traducteurs.
Machine Translation
Les modèles qui permettent de traduire des mots dans une autre langue sont de plus en plus utilisés mais requiert d’un apprentissage fastidieux. Dans la même façon que pour la classification d’image, on concentre dans un premier temps notre attention sur l’apprentissage d’un encoder. Cet encoder sera ensuite transféré à d’autre tâche d’automatisation du langage. Pour qu’une machine puisse traduire une phrase dans une autre langue elle a besoin d’un modèle pour encoder les mots dans leur contexte puis décoder ces mots dans une autre langue.
Ce premier modèle entraîné va servir de contexte dans un autre cas du traitement du langage. Pour cela, nous transférons ce qui a été appris par l’encoder à notre prochain modèle qui se trouve dans la phase d’apprentissage. Nous concaténons les sorties de l’encoder, appelés alors vecteurs de contexte, aux vecteurs de mots utilisés habituellement en input pour l’apprentissage.
Cette méthode a fait ses preuves en montrant une amélioration nette des résultats de l’apprentissage du modèle.
Conclusion
Entraîner des modèles pour qu’ils aient des capacités semblables à celle de l’homme requiert énormément de ressources en termes de données et de temps. Pour optimiser cet apprentissage, il faut mutualiser les connaissances d’un modèle à l’autre en pratiquant le Transfer Learning. Principalement, dans les cas de traitement d’image, on réutilise les couches d’un modèle qui a déjà appris que l’on fixe, les dernières couches quant à elle se modifieront en fonction des données d’apprentissage et s’affineront en fonction des données en input. Dans l’apprentissage automatique du langage, nous réutilisons les résultats d’un premier modèle qui serviront de contexte pour le deuxième. Ces « nouveaux » modèles pourront ainsi traiter un nouveau contexte sans qu’il y eu besoin de repasser par toutes les étapes d’apprentissage.
Vos commentaires
Merci pour cet article. Il est vraiment synthétique mais reste très bon.
Il y a une faute à « Les mots qui sont utilisé de façon similaire auront des vecteurs proches. »
Merci !