Few Shot Learning expliqué simplement (avec schémas et vrai code)

Few Shot Learning : l'essentiel en un article — vrai code, schémas et étapes concrètes, extraits d'un cours de 35 leçons.

Few Shot Learning expliqué simplement (avec schémas et vrai code)

Un guide qui va droit au but : Few Shot Learning décortiqué avec des schémas, des exemples concrets et des commandes testées. Tout vient d'un cours structuré de 11 chapitres — en voici le meilleur.

tl;dr
  • Introduction et Installation
  • Pourquoi le few-shot
  • Fondamentaux meta-learning
  • Metriques et benchmarks
  • Siamese Networks
~$ cat ./parcours.md # Few Shot Learning — 10 chapitres
01
Introduction et Installation
→ Présentation du cours→ Installer PyTorch et l’environnement+ 1 autres leçons
02
Pourquoi le few-shot
→ Les limites du deep learning classique→ Cas d’usage réels du few-shot+ 1 autres leçons
03
Fondamentaux meta-learning
→ Apprendre à apprendre→ Épisodes, support set et query set+ 1 autres leçons
04
Métriques et benchmarks
→ Omniglot, le « MNIST du few-shot »→ miniImageNet+ 1 autres leçons
05
Siamese Networks
→ Architecture Siamese→ Contrastive loss et Triplet loss+ 1 autres leçons
06
Prototypical Networks
→ L’idée des prototypes→ Distance euclidienne et classification+ 1 autres leçons
07
Matching Networks
→ L’attention pour le few-shot→ Architecture des Matching Networks+ 1 autres leçons
08
MAML et meta-learning gradient
→ Model-Agnostic Meta-Learning→ Inner loop vs outer loop+ 1 autres leçons
🏁
Projet final (+ 2 chapitres en chemin)
→ Tu repars avec un projet concret et démontrable

L’attention pour le few-shot

NOTEObjectif — Introduire le mécanisme d’attention appliqué au few-shot. Comprendre l’idée des Matching Networks (Vinyals et al. 2016) : au lieu de prendre la classe la plus proche, on calcule une combinaison pondérée de tous les exemples du support.

Objectifs pédagogiques

TIPÀ l’issue de ce module — Vous saurez expliquer ce qu’est l’attention en deep learning, et pourquoi elle s’applique parfaitement au problème du few-shot.

L’intuition de l’attention

L’attention, en deep learning, c’est l’idée qu’un modèle peut accorder un poids différent à chaque élément d’un ensemble selon le contexte. Quand vous lisez une phrase, votre cerveau ne porte pas la même attention à chaque mot ; il se concentre sur les mots importants.

NOTEPour le few-shot — Au lieu de comparer le query à une seule référence (Siamese) ou au prototype (ProtoNet), on compare le query à tous les exemples du support en même temps, avec des poids appris.

L’analogie de la classe

Imaginez une classe d’école où chaque élève donne un avis sur la réponse à une question. Plutôt que de prendre l’avis du meilleur (Siamese), ou la moyenne de tous (ProtoNet), on pondère : un élève qui semble « proche » du sujet a plus de voix.

Siamese

On prend l’exemple le plus proche, on ignore le reste. 1 vote, 0 abstention.

ProtoNet

On fait la moyenne uniforme des exemples d’une classe. Vote équitable, sans nuance.

Matching Net

On donne à chaque exemple un poids selon sa similarité au query. Vote pondéré.

Formule de la prédiction

Pour un query q et un support {(x_i, y_i)} :

Le modèle prédit donc une distribution de probabilités, somme de toutes les contributions pondérées de chaque exemple support.

Attention douce vs dure

TypeComportementUtilisation few-shot
Dure (hard)Choisit UN exemple (argmax)Équivalent à Siamese
Douce (soft)Pondère tous les exemplesMatching Networks
TIPPourquoi la douce gagne — L’attention douce est différentiable, ce qui permet d’optimiser le modèle entier en bout-en-bout par rétropropagation. L’attention dure (avec argmax) n’est pas différentiable.

Le contexte : l’influence des autres exemples

Une nuance importante de Matching Networks : l’encodeur peut prendre en compte le contexte entier du support (et non chaque image isolément). C’est l’idée du Full Context Embedding (FCE).

Comparaison avec ProtoNet

AspectMatching NetProtoNet
Représentation d’une classeGarde tous les exemplesUn seul prototype
MécanismeAttention pondéréeDistance au prototype
ContexteOui (FCE optionnel)Non
Performance K=1 (Omniglot)~98%~98%
Performance K=5 (Omniglot)~99%~99.5%
Complexité codePlus élevéeTrès simple
NOTEVerdict moderne — ProtoNet est globalement préféré aujourd’hui pour sa simplicité. Mais les idées de Matching Networks (attention, FCE) ont inspiré de nombreuses améliorations (FEAT, ATNet, etc.).

Le papier fondateur

Cas d’usage réels du few-shot

NOTEObjectif — Mettre des visages concrets sur le few-shot learning : pour chaque domaine, on regarde le problème, les contraintes, ce que le few-shot apporte, et un exemple chiffré. À la fin, vous saurez convaincre n’importe qui que le sujet est utile.

Objectifs pédagogiques

TIPÀ l’issue de ce module — Vous aurez en tête au moins cinq cas d’usage réels (médical, biodiversité, industrie, NLP, finance), avec leur problème et la solution few-shot associée.

Cas 1 — Médecine : maladies rares

Une maladie est dite rare en Europe quand elle touche moins de 1 personne sur 2 000. Il y a plus de 7 000 maladies rares répertoriées, mais chacune dispose souvent de quelques dizaines de cas documentés par image médicale.

Problème concret

Un radiologue voit passer une lésion qu’il n’a vue que 3 fois dans sa carrière. Il aimerait que son IA d’assistance compare cette image à toutes les lésions similaires déjà annotées au monde.

Apport du few-shot

Un modèle qui apprend un espace d’embeddings sur des images banales puis récupère les cas les plus proches dans une base de lésions rares. Même 5 exemples suffisent pour activer une classe.

WARNINGContraintes métier — La RGPD impose de ne pas stocker les images patient. On utilise donc plutôt des embeddings anonymisés. L’explicabilité (montrer les images de référence) est aussi cruciale pour le médecin.

Cas 2 — Biodiversité : espèces rares

L’application iNaturalist recense des centaines de milliers d’espèces, mais beaucoup d’entre elles n’ont que 5 à 20 photos dans toute la base mondiale (un papillon découvert récemment, un mille-pattes endemique d’une seule forêt…).

NOTEExemple réel — Pour les caribous des bois du Québec, certaines hardes n’ont que 12 individus photographiés. Un modèle few-shot peut apprendre à identifier individuellement chaque caribou (re-ID) avec si peu d’exemples.

Cas 3 — Industrie : contrôle qualité sur défauts rares

Imaginons une chaîne de production de cartes électroniques. La grande majorité des cartes est saine ; les défauts qui passent en contrôle visuel sont 2 cartes sur 100 000. Sur 6 mois, on a 4 photos d’une « soudure froide » et 1 photo d’un « pad arraché ».

ApprocheRésultatProblème
CNN classique multi-classes~30% f1 sur défauts raresTrop peu d’exemples
Détection d’anomaliesDétecte du bruit en plusTrop sensible aux variations
Few-shot (ProtoNet)~88% f1 avec 5 ex.Pour l’instant, le top

Cas 4 — NLP : intentions clients de niche

Un chatbot d’assistance bancaire doit comprendre des intentions très spécifiques (« clôture compte avant 30 jours », « mainlevée hypothécaire partielle ») qui ont parfois moins de 50 exemples dans les logs.

output
# Few-shot avec LLM pour classer une intention
prompt = """
Tu es un classifieur d'intentions bancaires.
Voici 5 exemples :

"Je veux fermer mon compte ce mois-ci" -> CLOTURE_RAPIDE
"Je souhaite réduire mon prêt immo partiellement" -> MAINLEVEE_PARTIELLE
"Mon dossier de crédit est-il en cours ?" -> SUIVI_CREDIT
"Je veux fermer mes comptes vite" -> CLOTURE_RAPIDE
"Je veux liberer une partie de mon hypothèque" -> MAINLEVEE_PARTIELLE

Question : "Comment clôturer en urgence ?"
Réponse :"""
# → le LLM répond CLOTURE_RAPIDE, sans entraînement
TIPTruc — Le few-shot par LLM est devenu l’outil de choix dès qu’une intention NLP a moins de 100 exemples : c’est gratuit en temps de dev, et ça se met à jour en modifiant le prompt.

Cas 5 — Finance : nouveaux types de fraude

Les fraudeurs inventent en permanence de nouveaux schémas. Quand une banque détecte un nouveau patron de fraude, elle n’a souvent que 10 à 30 transactions étiquetées avant que le schéma ne disparaisse ou ne change.

Problème

Impossible de réentraîner un modèle classique sur chaque nouveau schéma : ce serait trop lent et le schéma aurait déjà changé.

Solution few-shot

Un modèle d’embeddings de transactions compare en temps réel la nouvelle transaction aux 10 fraudes connues du schéma actuel.

In-context learning avec GPT

NOTEObjectif — Découvrir l’in-context learning : la façon moderne et révolutionnaire de faire du few-shot avec les grands modèles de langage (GPT-4, Claude, Gemini). On donne des exemples dans le prompt, le modèle « apprend » sans une seule mise à jour de poids.

Objectifs pédagogiques

TIPÀ l’issue de ce module — Vous saurez expliquer ce qu’est l’in-context learning, l’origine du concept (GPT-3 / Brown 2020), et reconnaitre quand l’utiliser plutôt que les méthodes classiques.

L’idée révolutionnaire de GPT-3

Avant 2020, faire du few-shot demandait d’entraîner un modèle spécifique (ProtoNet, MAML, etc.). En 2020, OpenAI publie GPT-3 et montre qu’un grand modèle de langage pré-entraîné sait faire du few-shot sans entraînement supplémentaire. Il suffit de mettre les exemples dans le prompt.

NOTEDéfinition — L’in-context learning, c’est la capacité d’un grand modèle de langage à apprendre une tâche à partir d’exemples placés dans son prompt, sans aucune mise à jour de ses poids.

Un exemple concret

output
prompt = """
Traduis du français vers l'anglais.

Français : Le chat dort sur le canapé.
Anglais  : The cat is sleeping on the sofa.

Français : Je vais au marché.
Anglais  : I am going to the market.

Français : Il fait beau aujourd'hui.
Anglais  :"""

# Réponse attendue de GPT-4 :
# « It is sunny today. »

Sans aucune phase de fine-tuning, juste avec deux exemples dans le prompt, GPT-4 a compris la tâche de traduction et produit la bonne réponse.

Zero-shot vs One-shot vs Few-shot prompting

ModeContenu du promptExemple
Zero-shotInstruction seule« Traduis : Bonjour »
One-shotInstruction + 1 exemple« Traduis. ‘Merci’ -> ‘Thank you’. ‘Bonjour’ -> »
Few-shotInstruction + 3 à 10 exemples(Comme ci-dessus avec plus d’exemples)

Le papier qui a tout changé : Brown 2020

NOTETom Brown et al. 2020« Language Models are Few-Shot Learners » (NeurIPS 2020). C’est le papier de GPT-3 (175B paramètres). Il montre que la précision augmente massivement quand on passe de 0 à 1 puis 3, 5, 10 exemples dans le prompt. Sur de nombreuses tâches, GPT-3 few-shot égalait ou battait les modèles spécifiques fine-tunés.

Pourquoi ça marche ?

Personne n’a une réponse complète. Plusieurs théories se complètent :

1. Reconnaissance de patterns

Le modèle a vu des millions de listes « Q : ... Réponse : ... » pendant le pré-entraînement et reconnaît le format.

2. Meta-learning implicite

Pendant le pré-entraînement, le modèle a appris à apprendre de nouvelles tâches au fil du texte qu’il consomme.

3. Induction heads

L’analyse des Transformers montre des circuits internes (« induction heads ») spécialisés dans la copie de patterns vus précédemment.

Quand utiliser l’in-context learning ?

TIPCas idéal — Vous avez quelques exemples d’une tâche, vous voulez un prototype rapide sans entraînement, et vous êtes prêt à payer une API LLM. L’in-context learning vous donne un modèle utilisable en 5 minutes.

SituationRecommandation
Très peu de données (1-30 exemples)In-context learning avec LLM
Beaucoup de données (1000+ exemples)Fine-tuning classique
Pas d’internet / on-premiseProtoNet ou MAML local
Latence critique (< 10 ms)Modèle local entraîné
Coût API trop élevéFine-tuning ou ProtoNet

Code Python : appeler l’API OpenAI en few-shot

output
from openai import OpenAI

client = OpenAI()

few_shot_examples = [
    {"role": "system", "content": "Tu es un classifieur de sentiment."},
    {"role": "user",   "content": "J'adore ce film !"},
    {"role": "assistant", "content": "POSITIF"},
    {"role": "user",   "content": "C'était ennuyeux."},
    {"role": "assistant", "content": "NEGATIF"},
    {"role": "user",   "content": "Bof, sans plus."},
    {"role": "assistant", "content": "NEUTRE"},
]

def classify(text):
    msgs = few_shot_examples + [{"role": "user", "content": text}]
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=msgs,
        temperature=0,
    )
    return resp.choices[0].message.content

print(classify("L'histoire est captivante !"))  # → POSITIF
va-plus-loin

Cet article couvre les extraits les plus utiles — le cours complet Few Shot Learning (11 chapitres, 35 leçons, exercices corrigés et projet final) t'emmène jusqu'au bout.

./acceder-au-cours-complet cours gratuit : Ingénierie de prompts

FAQ

Combien de temps pour apprendre Few Shot Learning ?
Avec une progression structurée (11 chapitres, 35 leçons courtes et pratiques), on atteint un niveau opérationnel en quelques semaines à raison de 30 à 60 minutes par jour. L'important est de pratiquer chaque notion immédiatement.
Faut-il des prérequis ?
Des bases en informatique suffisent. Si tu sais utiliser un terminal et lire du code simple, tu es prêt.
Par où commencer concrètement ?
Reproduis les commandes de cet article, puis suis le cours complet Few Shot Learning : il enchaîne les 35 leçons dans l'ordre, avec exercices et projet final.

📬 Tu veux recevoir ce type de guide chaque semaine ? Abonne-toi gratuitement — code réel, zéro blabla.