Le transfer learning a vu sa cote de popularité exploser dans le domaine du machine learning. L’une des principales raisons de son succès, c’est le fait de pouvoir utiliser les connaissances obtenues en effectuant une tâche afin de résoudre un problème différent, mais qui présente des similitudes.
Dans cet article, nous présenterons ce qu’est le transfer learning, des exemples classiques de transfer learning et comment utiliser cette méthode dans vos projets de machine learning.
Qu’est-ce que le transfer learning ?
Le transfer learning ou apprentissage par transfert est un problème de machine learning qui se concentre sur la conservation des connaissances acquises en résolvant un problème et en les appliquant à un problème différent mais connexe. Par exemple, les connaissances acquises en apprenant à reconnaître des voitures pourraient s’appliquer en essayant de reconnaître des camions.
En effet, l’une des grandes motivations de l’apprentissage par transfert c’est qu’il faut une grande quantité de données pour avoir des modèles robustes (plus spécialement en deep learning). Alors, si l’on peut transférer certaines connaissances acquises lors de la création d’un modèle X, on pourra utiliser moins de données pour la création d’un modèle Y.
Quelques exemples d’application du transfer learning
Les exemples les plus connus d’apprentissage par transfert sont dans les domaines du traitement du langage naturel (NLP) et de la vision par ordinateur (computer vision).
L’Apprentissage par transfert en Computer Vision
La vision par ordinateur a vraiment bénéficié des différents avantages de l’apprentissage par transfert. Et pourquoi ?
En fait, entrainer des modèles de computer vision requiert une puissance de calcul conséquente, ou même l’accès à certains composants matériels (GPU, TPU). En effet, il est assez fastidieux d’entrainer un modèle sur jeu de données comportant des millions d’images.
Alors, il est courant de ré-utiliser un modèle de machine learning déjà entrainé (sur une grande quantité d’images/vidéos).
Ces modèles peuvent être téléchargés et incorporés directement dans la création de nouveaux modèles qui utilisent des images en entrée.
Voici trois exemples de modèles de ce type :
L’Apprentissage par transfert en NLP
Le transfer learning est aussi de plus en plus présent en NLP (traitement du langage naturel).
Il existe plusieurs approches, la première est l’utilisation d’Embeddings. En effet, cette technique permet de représenter chaque mot d’un dictionnaire par un vecteur de nombres réels. L’idée sera alors d’entrainer un modèle sur un vaste corpus de textes afin d’avoir une représentation vectorielle de la sémantique réelle des mots. On pourra alors utiliser ces modèles pour de l’analyse de sentiments, la classification de texte… Comme exemple populaire nous avons Word2vec et FastText.
En outre, une nouvelle approche est née avec des modèles plus récents tels que les Transformers, ELMO, BERT, …
Ces nouvelles approches présentent certainement une myriade de possibilités (Question Answering, Détection de contenu toxique et de fakeNews).
Quand et Comment utiliser le transfer learning ?
Quand utiliser l’apprentissage par transfert ?
L’un des grands avantages du transfer learning est de pouvoir gagner du temps ou obtenir de meilleures performances. En général, il n’est pas évident qu’il y aura un avantage à utiliser l’apprentissage par transfert dans le domaine jusqu’à ce que le modèle ait été développé et évalué. Cependant dans certains cas spécifiques (pas assez de données d’entrainement, puissance de calcul limitée, …), il sera préférable de se tourner vers le transfer learning. Aussi, il faudrait s’assurer qu’il est possible de transférer les connaissances voulues.
Comment utiliser le transfer learning ?
On peut dire qu’il y a deux approches à ce niveau.
- Création d’un modèle qu’on pourra généraliser
La première approche consiste à entrainer un modèle avec une grande quantité de données où il existe une relation entre les données d’entrée, les données de sortie (entrainer un modèle afin de classifier des œuvres d’art par exemple). Ensuite, lorsque ce modèle est opérationnel et robuste vous pouvez l’utiliser comme point de départ pour un modèle sur la deuxième tâche d’intérêt. Cela peut impliquer l’utilisation de tout ou une partie du modèle, selon la technique de modélisation utilisée. Cependant, il arrive que vous aurez besoin d’ajuster ce deuxième modèle sur un jeu de données spécifique à la tâche : on parle de fine-tuning. - Utilisation d’un modèle pré-entrainé
La seconde approche (qui est la plus répandue en deep learning) est d’utiliser des modèles déjà entrainés sur de grands corpus de données. Ces modèles sont le plus souvent open source et offerts par les grands acteurs du domaine (Google, Facebook, Microsoft, …), des universités et quelques fois par des particuliers. En effet, c’est la seule différence avec la première approche. Pour ma part, je suis plutôt partant pour cette seconde approche car les modèles de bases ont pu être évalués selon l’état de l’art. Attention à ne pas négliger l’étape de fine-tuning !
Ressources Complémentaires
The State of Transfer Learning in NLP
Conclusion
Dans cet article, nous avons introduit l’apprentissage par transfert, qui consiste à réutiliser les connaissances obtenues en effectuant une tâche afin de résoudre un problème différent, mais qui présente des similitudes. Ce que l’on peut retenir c’est qu’avant de commencer un modèle « from scratch » (désolé pour l’anglicisme), il faudrait regarder s’il n’est pas possible d’utiliser l’apprentissage par transfert afin d’accélérer la création de notre système d’apprentissage.