Few-Shot Learning
L'apprendimento few-shot (FSL) riconosce nuove classi a partire da pochi esempi etichettati, tramite apprendimento metrico, meta-apprendimento, fine-tuning o prompting.
L'apprendimento few-shot (FSL) consiste nell'apprendere un nuovo compito, il più delle volte riconoscere nuove classi, partendo da pochi esempi etichettati per classe, in genere da 1 a 10. L'apprendimento supervisionato standard richiede centinaia o migliaia di immagini etichettate per classe, che sono costose o impossibili da raccogliere per difetti rari, malattie rare o un prodotto lanciato il giorno prima. I metodi few-shot colmano il divario sfruttando le conoscenze pregresse: un modello preaddestrato su una grande quantità di dati correlati produce già caratteristiche che distinguono bene le nuove classi, perciò bastano pochi esempi per definirle. La stessa idea si ritrova nei modelli linguistici, in cui alcuni esempi svolti nel prompt indirizzano il modello verso un nuovo compito senza alcun addestramento.
Compiti N-way K-shot#
I problemi few-shot sono descritti come N-way K-shot: N nuove classi, ciascuna con K esempi etichettati. Questi esempi etichettati formano il set di supporto e il modello viene valutato in base alla sua capacità di etichettare un set di query separato, contenente esempi delle stesse N classi. Un compito 5-way 1-shot fornisce quindi al modello un esempio ciascuno di cinque classi mai viste prima e gli chiede di classificare nuove immagini. L'apprendimento one-shot è il caso K = 1, mentre l'apprendimento zero-shot è il caso K = 0, in cui le classi vengono descritte tramite testo o attributi anziché con esempi. I benchmark di ricerca valutano il modello su classi escluse dall'addestramento, come Omniglot, con 1.623 caratteri scritti a mano provenienti da 50 alfabeti, e miniImageNet, con 100 classi di ImageNet di 600 immagini ciascuna.
Approcci all'apprendimento few-shot#
I metodi di apprendimento metrico addestrano una rete a mappare le immagini in embedding in cui gli esempi della stessa classe sono vicini tra loro, così una query riceve l'etichetta degli esempi di supporto più simili. Le reti prototipiche fanno la media degli embedding di supporto di ciascuna classe per ottenere un prototipo e assegnano la query al prototipo più vicino, senza bisogno di un nuovo addestramento quando arriva una nuova classe.
Altri approcci adattano i pesi del modello o il suo input:
- Meta-apprendimento: addestra il modello su migliaia di piccoli compiti simulati, tratti da classi di base, in modo che impari ad adattarsi. Il meta-apprendimento agnostico al modello (MAML) apprende un'inizializzazione da cui bastano pochi passaggi di gradiente sul set di supporto di un nuovo compito per ottenere pesi efficaci.
- Trasferimento e fine-tuning: preaddestra un backbone su un dataset ampio, poi addestra solo una nuova head di classificazione, oppure l'intera rete con un tasso di apprendimento basso, sul set di supporto. Questa semplice baseline è competitiva con i metodi di meta-apprendimento dedicati nei benchmark few-shot standard, e il sondaggio lineare dei grandi modelli preaddestrati resta una solida baseline few-shot.
- Prompting dei modelli fondazionali: i grandi modelli linguistici svolgono nuovi compiti usando pochi esempi inseriti nel prompt, senza aggiornare i pesi; GPT-3 ha dimostrato questa capacità su oltre due dozzine di benchmark linguistici. I modelli di visione utilizzano allo stesso modo prompt visivi, come riquadri di esempio.
Rilevamento di oggetti few-shot con prompt visivi#
Il rilevamento aggiunge la localizzazione al problema few-shot: il modello deve trovare ogni istanza di una classe su cui non è stato addestrato. YOLO26 è anche alla base di YOLOE-26, una variante a vocabolario aperto il cui encoder di prompt visivi trasforma i riquadri di esempio in un embedding di classe, poi rileva e segmenta gli oggetti corrispondenti nelle nuove immagini senza alcun addestramento. I riquadri che condividono un ID di classe vengono uniti in un unico prompt, quindi due esempi di una classe costituiscono un set di supporto 2-shot. Questo esempio usa due persone in un'immagine come set di supporto e le cerca in un'altra immagine:
import numpy as np
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor
# Checkpoint YOLOE-26 che accetta prompt visivi
model = YOLOE("yoloe-26s-seg.pt")
# Set di supporto: due riquadri di esempio di una classe (persone) nell'immagine di riferimento
boxes = np.array([[221.52, 405.8, 344.98, 857.54], [669.47, 392.19, 809.72, 877.04]])
support = {"bboxes": boxes, "cls": np.array([0, 0])}
# Query: trova gli oggetti simili agli esempi in un'altra immagine, senza addestramento
results = model.predict(
"https://ultralytics.com/images/zidane.jpg",
refer_image="https://ultralytics.com/images/bus.jpg",
visual_prompts=support,
predictor=YOLOEVPSegPredictor,
)
result = results[0]
result.save(filename="few_shot_result.jpg")I prompt visivi raggruppano gli esempi senza assegnare loro un nome, quindi le corrispondenze nei risultati sono etichettate object0, object1 e così via, un nome per ogni ID di classe.
Applicazioni nel mondo reale#
- Ispezione manifatturiera: un nuovo tipo di difetto, come una crepa in un componente appena introdotto, può comparire solo poche volte prima che gli ispettori vogliano segnalarlo; il rilevamento few-shot o il rilevamento di anomalie consentono di aggiungerlo senza un nuovo dataset di grandi dimensioni.
- Imaging medico: le patologie rare dispongono di poche scansioni annotate, quindi i modelli di analisi di immagini mediche adattano caratteristiche preaddestrate a nuovi reperti a partire da un piccolo insieme di casi etichettati da esperti.
- Commercio al dettaglio e robotica: i negozi aggiungono continuamente nuovi prodotti e i robot incontrano costantemente nuovi oggetti; bastano poche foto di riferimento perché un sistema riconosca ciascun oggetto sullo scaffale o nella pinza.
Apprendimento few-shot a confronto con concetti correlati#
- Apprendimento per trasferimento: la pratica più ampia di riutilizzare le conoscenze acquisite in un compito per svolgerne un altro. L'apprendimento few-shot è il caso estremo con pochi dati, e il trasferimento è lo strumento più comune per affrontarlo.
- Meta-apprendimento: una strategia di addestramento, ovvero imparare a imparare, e uno dei vari modi per risolvere problemi few-shot. L'apprendimento few-shot indica il contesto del problema in sé.
- Prompting few-shot: adatta un modello congelato tramite esempi nel suo input al momento dell'inferenza, mentre il fine-tuning few-shot modifica i pesi del modello usando gli stessi pochi esempi.










