L'in-context learning è la capacità degli LLM di imparare un nuovo compito guardando solo qualche esempio nel prompt, senza nessun aggiornamento dei pesi. Scoperta come fenomeno emergente in GPT-3 (2020).
Esempio: vuoi che il modello classifichi recensioni come positive o negative. Non lo addestri. Gli scrivi:
- "Recensione: Pessimo prodotto, non funziona. Sentiment: negativo"
- "Recensione: Ottimo, lo consiglio! Sentiment: positivo"
- "Recensione: Tutto rotto. Sentiment: ?"
Il modello continua il pattern e dà la risposta giusta. Non ha imparato nulla nel senso classico (i pesi sono fermi), ma usa il contesto come "training mini" al volo.
Tipi di in-context learning:
- Zero-shot: nessun esempio, solo istruzione. "Classifica questa recensione come positiva o negativa."
- One-shot: un esempio.
- Few-shot: 2-10 esempi. Sweet spot per molti task.
- Many-shot: decine o centinaia di esempi (con context window grandi tipo Gemini 1M, è fattibile).
Perché funziona? Mistero parziale. Le ipotesi:
- Il modello, durante il pretraining, ha visto talmente tanti pattern di "esempio → risposta" che ha imparato meta-pattern.
- L'attention simula in qualche modo un mini-gradient descent durante il forward pass (paper di Anthropic, 2023).
- Effetto emergente che appare oltre certe scale.
Limiti pratici:
- Contestuale: ogni richiesta deve includere gli esempi. Costa token.
- Sensibile all'ordine: ordine degli esempi cambia risultati. Variabilità fastidiosa.
- Limitato a task semplici: per compiti complessi, fine-tuning vero serve.
- Non sostituisce il fine-tuning: per task ricorrenti su dataset grandi, fine-tuning è meglio.
L'in-context learning è una delle ragioni per cui gli LLM moderni sono così utili in pratica. Non devi addestrare niente, scrivi prompt furbi e ottieni risposte. È quello che chiamiamo "prompt engineering".