L’apprentissage automatique et plus particulièrement l’apprentissage profond obtiennent aujourd’hui des performances spectaculaires, inespérées il y a quelques années, dans certaines domaines comme la vision et le traitement du langage naturel.

Le « deep learning« , l’apprentissage profond à l’aide de réseaux de neurones, n’atteint ces prouesses que parce que le volume de données utilisé pour l’apprentissage est très élevé et parce que la puissance de calcul requise est désormais disponible grâce aux GPU (Graphics Processing Units) et TPU (TensorFlow Processing Units)

Les réseaux de neurones ont souvent plusieurs dizaines de couches, des centaines de milliers de paramètres et utilisent jusqu’à plusieurs centaines de milliers, voire des millions de données d’apprentissage.

Par exemple, pour entraîner un réseau de neurones qui servira à la reconnaissance des visages, il faut disposer de plus de 1 million d’images et effectuer des calculs durant plusieurs journées.

On pourrait légitiment penser que ces contraintes (volume de données & temps de calcul requis) annihilent toute possibilité de profiter de ces technologies des réseaux de neurones lorsque le volume de données est faible. Or il n’en est rien. Grâce au Transfer Learning.

L’apprentissage par transfert

L’apprentissage par transfert est ce que nous faisons tous les jours, c’est profiter d’un apprentissage acquis précédemment, pour, par analogie, résoudre un problème similaire mais différent.

Par exemple, il est plus facile d’apprendre à piloter une moto si on sait déjà faire du vélo.

Le transfer learning des réseaux de neurones s’appuie sur le même principe. Si on a entraîné un réseau de neurones à différencier des chiens , des chats, à partir de photos, alors on pourra s’appuyer sur ce réseau pour deviner à quelle race appartient un chien. Et même encore mieux, on pourra utiliser notre réseau pour catégoriser des grenouilles !

Ceci est possible parce les réseaux de neurones sont empilés en couches, chacune apprenant de la précédente. C’est ainsi qu’un CNN (réseau de neurones par convolution) aura ses premières couches spécialisées dans la reconnaissance de formes simples (lignes horizontales, lignes verticales, diagonales, …), ses couches suivantes dédiées à la reconnaissance de formes un peu plus complexes (cercle, carré, triangle, …), ses couches suivantes orientées vers, par exemple la reconnaissance de visages, la reconnaissance de parties du corps, …. et les dernières couches se consacreront à ce qui fait l’objet de l’apprentissage de ce réseau (par exemple chiens ou chats).

Au cours de la phase d’apprentissage, le réseau de de neurones modifie ses poids. Les poids (qui sont des nombres) et l’architecture du réseau suffisent à le caractériser (hormis quelques paramètres non décrits ici). Il est donc très facile de bénéficier d’un réseau de neurones existant, sans avoir à recalculer ce qui lui a permis d’atteindre sa configuration optimale, calculée pour le jeu de données et le problème pour lequel il a été conçu.

Exemple

ImageNet est une base de données d’images, librement accessibles (sous conditions) sur Internet. Cette base de données contient 14 millions d’images, réparties en 1000 catégories.

Il existe depuis 2010 une compétition de machine learning, qui consiste à évaluer les meilleurs algorithmes de traitement d’images sur ce jeu de données ImageNet. Le nom de ce challenge est ILSVRC.

Depuis 2012, année du premier réseau de neurones profond à convolution (AlexNet) tous les vainqueurs utilisent le Deep Learning.

Il est d’usage de tester les nouvelles architectures de réseaux de neurones sur le jeu de données ImageNet. C’est ce qu’on fait Kaiming He & al. de Microsoft avec leur architecture dénommée ResNet.

Les réseaux ResNet obtiennent de très bonnes performances sur ImageNet (>93%) . Il existe plusieurs variations de ResNet(s) selon leur profondeur. Les équipes qui ont créé ResNet ont mis à la disposition générale leurs travaux et leurs résultats ! Ce qui nous permet d’en bénéficier pour faire du transfer learning.

Il est donc permis à chacun, sans avoir des millions d’images et sans avoir à effectuer des jours de calcul, de s’appuyer sur ResNet pour classer ses propres images.

Il vous suffit (pour simplifier) de remplacer la ou les dernières couches du réseau ResNet par une couche dédiée à votre problème et d’entraîner le réseau sur vos données, tout en gardant (en partie) les poids calculés par ResNet.

ResNet n’est pas la seule architecture dont on peu bénéficier. Keras en propose beaucoup d’autres, comme Xception, VGG16, VGG19, … DenseNet, NASNet tous entraînés sur ImageNet.

Résumé

Le transfer learning est une méthode qui permet de faciliter un apprentissage à partir d’un d’un apprentissage précédent, à condition qu’il y ait une cohérence entre les deux apprentissages.

Il va de soi qu’on ne pourra pas bénéficier de ResNet pour de la traduction automatique.

Le cas typique d’utilisation du transfer learning est celui où vous avez peu de données (par exemple un millier de photos de champignons) et où vous apprenez d’un réseau de neurones qui a appris à reconnaître des milliers d’images (dont éventuellement des champignons) pour catégoriser vos espèces de champignons.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *