Few shot learning : Généraliser à partir de peu d’exemple (Décryptage)

Généraliser-à-partir-de-peu-d’exemple-Décryptage-du-few-shot-learning

Bien souvent, quand on parle d'intelligence artificielle, on entend souvent machine learning, Deep-learning, Deep Q learning et très peu souvent, on entend parler du few-shot learning. Mais quoi de plus normal pour un type d'apprentissage qui est encore en stade expérimental et qui pour l'instant est toujours en labo, faute de pouvoir suffisamment répondre à des problèmes industriels complexes. 

Pour être sincère avec vous, en écrivant ces lignes, je me demande même si le few-shot learning a réellement un avenir. Car, pourquoi l'utiliser quand on peut utiliser le deep learning qui à l'heure actuelle est bien plus précis que ce dernier en plus d'être nettement plus connu et exploré. 

Mais bon bref, le few-shot learning est un peu l'ennemi naturel du deep learning car contrairement à ce dernier il se veut capable d'obtenir le plus de performance que possible en utilisant très peu de données. Idéalement, en classification, 1 à 5 exemples d'une classe. Et de préférence 1 exemple. Cet idéal est né de la capacité que nous être humain avons à pouvoir reconnaître un objet dans une série d'images dès le premier coup d'oeil sans avoir besoin d'un entraînement intensif. 

En clair, le few-shot learning est la poursuite de l'intelligence générale ! Yes I did it ! Après avoir écrit ces mots, je trouve que le few-shot learning est vraiment intéressant et contrairement à ce que je disais plus haut a énormément d'avenir.    

En effet, imaginons que l'on arrive à généraliser comme l'on essaie de le faire avec le few-shot learning. Avec  juste une image d'un objet, l'on arriverait à le retrouver dans des milliers de vidéos sans avoir à réentrainer un classifieur pendant des heures ou avoir a choisir le nombre de couches, de filtre idéal pour un réseau de neurones profond. 

Ce qui semble très prometteur ! Après ces mots encourageants, je ne vois qu'une chose à faire, plonger dans le topics profondément et passionnément. 






Dans cet article, je vous apprendrais : 

Ce qu'est le few-shot learning.

Pourquoi le few-shot learning a été inventé et quels sont les problèmes qu'il résout.

Les principes fondamentaux utilisés par les chercheurs dans la conception de leurs algorithmes de few-shot learning 

Quelles sont les applications pratiques du few-shot learning   

Les derniers algorithmes de few-shot learning, leurs performances, leurs dépôts et leurs publications.


J'espère que vous prendrez autant de plaisir à lire cet article que moi j'ai de plaisir à l'écrire ;-D.

C'est quoi le few-shot learning ?


Si l'on traduit littéralement, le terme  few-shot learning en français, l'on obtient apprentissage en peu de coups. Le terme shot, me fait énormément penser aux coups de fusil. Quand par exemple, on lit dans les news américaine "He shot someone"  qui signifie il a tirer sur quelqu'un. 

Mais en réalité, une traduction plus exacte du terme serait apprentissage avec peu d'exemples.

Il s'agit donc a priori d'une sorte  de machine learning, qui tente de résoudre des problèmes d'apprentissage machine avec vraiment très peu d'exemples, comme je le disais dans l'introduction 1 à 5 exemples et idéalement 1 exemple, c'est le must. 

Parenthèse ouvrante sur le terme One-Shot learning, lequel apparaît fréquemment quand on parle du few-shot learning. 

One-shot leaning signifie apprentissage en un coup. Autrement dit, c'est dégommer le problème en lui tirant dans la tête avec une seule balle (1 seul exemple).   

Parenthèse fermante.



Pourquoi le few-shot learning a été inventé ?

Si vous êtes data scientist vous pouvez sauter cette section comme elle contient beaucoup de matériel pour les non-initiés. 

Si vous commencez dans le machine learning, vous aurez globalement compris que de ce dernier consiste en grande partie à trouver des données discriminantes sur un problème, à construire un modèle pour transformer ces données si  elles ne sont pas exploitables à l'état brut et à balancer ces dernières après transformation à un algorithme d'apprentissage (classification, clustering ou encore régression).

L'on peut dans cette courte description remarquer la présence de trois éléments clés : les données, le modèle de transformations des données et le classifieur. Ces trois éléments sont les ingrédients clés du machine learning.  En jouant sur un de ces trois leviers, les résultats peuvent passer de décevants à exceptionnels.

C'est d'ailleurs ce que tend à faire le deep learning ces dernières années en créant littéralement grâce à des algorithmes d'optimisation bien peaufiner et des structures de réseau de neurones un peu cinglé, mais exceptionnellement bien pensé pour les problèmes qu'ils résolvent,  des  modèles de transformation de données exceptionnels. 

Seulement si l'on, joue sur un des leviers, il faut compenser sur les autres et en retirant l'ingénieur en machine learning du processus de construction du modèle de transformation de données, les algorithmes (réseau de neurones convolutif, GAN, Auto-encodeur, etc....) ont du compenser ce manque autre part et cela c'est répercuté sur la quantité de données nécessaire à l'entraînement qui à augmentée exponentiellement.     

C'est par ailleurs le fait que les GAFAM (Google, Amazon, Facebook, etc...) aient beaucoup de données qui a permis leurs essors dans le deep learning tels qu’on le connaît aujourd'hui.

D'ou également ce jargon, qui circule dans la communauté de data science :  ce n’est pas celui qui a le meilleur algorithme qui gagne, mais c’est celui qui a le plus de données.

Le few-shot learning tend à rattraper ce défaut en utilisant quelques théories et astuces algorithmiques plutôt intéressantes et un peu loufoques parfois.

Les différentes approches de few-shot learning

Vous l'aurez probablement compris en lisant le titre de cette section, il existe plusieurs manières de faire du few-shot learning.  


#1 Augmentation de données

Un premier moyen de faire du few-shot learning est d'augmenter artificiellement les données à notre disposition. Il existe de multiple manière de faire cela. 

La première méthode, la plus simple, est largement utilisée en reconnaissance d'image. Il s'agit de construire à la main des règles de transformation des données. Par exemple, en image, l'on utilisera la rotation, le redimensionnement , la translation, le découpage, etc... pour générer de nouvelles données. 

La seconde est similaire à l'a première, il s'agit de transformer les données à notre disposition sauf que cette fois-ci plutôt que d'utiliser des transformations fait à la main. On va utiliser des données et leurs transformations pour entraîner un modèle probablement de type Genarative Adversarial Network ou encore de type auto-encodeur afin de transformer les données à notre disposition et ainsi en obtenir de nouvelle. Malin, non?

La troisième méthode consiste à utiliser des jeux de données partiellement étiquetés et à les étiqueter de manière automatique. Si l'on prend le cas de la reconnaissance de mouvement, entre deux images d'un même mouvement, il n'y a pas de rupture franche contrairement à deux images de deux mouvements différents. Avec un peu d'effort et de code, il est possible de propager l’étiquetage des données.

La quatrième consiste à rajouter au jeu de données des données similaires. Si l'on prend l'exemple d'un jeu de données d'images de tigre, il est possible de rajouter des images de chats, car ces derniers se ressemblent.    

#2 Création d’un modèle approprié

Un modèle de machine learning sert à construire un espace d’hypothèses ℍ ={h(x1,θ),h(x2,θ), … h(xn,θ)} dont les paramètres θ maximiseront la probabilité de trouver l’hypothèse optimale ĥ permettant d’obtenir la sortie y correspondant à l'entrée x.

Actuellement, seuls les problèmes simples peuvent être résolus par le machine learning en utilisant peu d’exemples.

Cependant, dans la vie courante, la majorité des problèmes sont complexes. Ils requièrent l’utilisation de modèle ayant un grand nombre de paramètres et pouvant modéliser un grand nombre d’hypothèses.

Et il n’est possible d’entraîner ces derniers qu’avec un grand nombre d’exemples.

Dans les sections qui vont suivre, je vais vous présenter les différentes solutions de few-shot learning pour pallier à ce problème.


Apprentissage multi-tâches (Multi-task learning)


Cette approche consiste à apprendre simultanément différentes tâches (tâches sources) qui sont de près ou de loin liées à la tâche (tâche cible) que l’on souhaite effectuer.

Le but étant de tirer de cet entraînement des connaissances générique applicable à la tâche cible. Cela permet de présupposer son espace d’hypothèse.

Puis de l’affiner à partir du peu d’exemples disponibles pour la tâche cible.


Embedding Learning (Apprentissage par encodage)


L’embedding Learning ou apprentissage par encodage d’exemples (ma traduction personnelle du terme), consiste à encoder le jeu de données dans un espace plus petit et donc plus simple dans lequel les exemples seront facilement comparables entre eux.


Apprendre avec une mémoire extérieur (Learning with External Memory)




Modélisation Générative (Générative modéling)



#3 Création d’un  algorithme d'apprentissage approprié



Quelques applications du few-shot learning

Comme il s’agit quasiment d’une évolution du machine learning, le few-shot learning à un nombre infini d’applications. Je vais tenter de vous citer quelques-unes des plus prometteuses avec les publications qui y sont liées : ).


Le few shot drug discovery qui consiste à découvrir de nouveau médicament en utilisant le moins de données que possible (Publication : Low Data Drug Discovery with One-Shot Learning ) .

La recommandation personnalisée d’article (Publication : A Meta-Learning Perspective on Cold-Start).

La reconnaissance d’image (Publication : Siamese neural networks for one-shot image recognition).

La génération de caractère. (Publication : Human-level concept learning through probabilistic program induction).

La traduction de langue (Publication : Learning to remember rare events. )


siamese neural network

J’espère que toutes les applications que j’ai listées précédemment auront suffi à vous convaincre de l’utilité du few-shot learning. Dans la prochaine section, nous allons aborder un sujet croustillant, ça va devenir un peu plus technique, je vais vous révéler les trois approches sur lesquelles sont basés les algorithmes les plus populaires de few-shot learning.


Les derniers algorithmes de few-shot learning, leurs performances, leurs dépôts et leurs publications.



NomPublicationDépôt

Performance (MiniImageNet Dataset)

Prototypical NetworkPrototypical Networks for Few-shot Learning
lien

49.42 % - 1 shot 5 Way

68.20 %  - 5 shot 5 Way

Simple Neural AttentIve Learner (SNAIL)
A Simple Neural Attentive Meta-Learner.

55.71 % - 1 shot 5 Way

68.88 % - 5 shot 5 Way

Transductive Propagation Network

LEARNING TO PROPAGATE LABELS: TRANSDUCTIVE   

PROPAGATION NETWORK FOR FEW-SHOT LEARNING


55.51 % - 1 shot 5 Way

69.86 % - 5 shot 5 Way

TADAM

TADAM: Task dependent adaptive metric

for improved few-shot learning


58.7 % - 1 shot 5 Way

76.7 % - 5 shot 5 Way







Source :


(Source : Generalizing from a Few Examples: A Survey on Few-Shot Learning )


 

 

.