Few-Shot Learning explicado de forma sencilla (con diagramas y código real)

Few Shot Learning: lo esencial en un artículo — código real, diagramas y pasos concretos, extractos de un curso de 35 lecciones.

Few-Shot Learning explicado de forma sencilla (con diagramas y código real)

Una guía que va al grano: Few Shot Learning diseccionado con diagramas, ejemplos concretos y comandos probados. Todo proviene de un curso estructurado de 11 capítulos — aquí lo mejor.

tl;dr
  • Introducción e Instalación
  • Por qué el few-shot
  • Fundamentos del meta-learning
  • Métricas y benchmarks
  • Siamese Networks
~$ cat ./parcours.md # Few Shot Learning — 10 capítulos
01
Introducción e Instalación
→ Presentación del curso→ Instalar PyTorch y el entorno+ 1 más lecciones
02
Por qué el few-shot
→ Los límites del deep learning clásico→ Casos de uso reales del few-shot+ 1 más lecciones
03
Fundamentos del meta-learning
→ Aprender a aprender→ Episodios, support set y query set+ 1 más lecciones
04
Métricas y benchmarks
→ Omniglot, el « MNIST del few-shot »→ miniImageNet+ 1 más lecciones
05
Siamese Networks
→ Arquitectura Siamese→ Contrastive loss y Triplet loss+ 1 más lecciones
06
Prototypical Networks
→ La idea de los prototipos→ Distancia euclidiana y clasificación+ 1 más lecciones
07
Matching Networks
→ La atención para el few-shot→ Arquitectura de los Matching Networks+ 1 más lecciones
08
MAML y meta-learning por gradiente
→ Model-Agnostic Meta-Learning→ Inner loop vs outer loop+ 1 más lecciones
🏁
Proyecto final (+ 2 capítulos en el camino)
→ Te vas con un proyecto concreto y demostrable

La atención para el few-shot

NOTEObjetivo — Introducir el mecanismo de atención aplicado al few-shot. Comprender la idea de los Matching Networks (Vinyals et al. 2016): en lugar de tomar la clase más cercana, se calcula una combinación ponderada de todos los ejemplos del soporte.

Objetivos pedagógicos

TIPAl finalizar este módulo — Sabrás explicar qué es la atención en deep learning y por qué se aplica perfectamente al problema del few-shot.

La intuición de la atención

La atención, en deep learning, es la idea de que un modelo puede asignar un peso diferente a cada elemento de un conjunto según el contexto. Cuando lees una frase, tu cerebro no presta la misma atención a cada palabra; se concentra en las palabras importantes.

NOTEPara el few-shot — En lugar de comparar la query con una sola referencia (Siamese) o con el prototipo (ProtoNet), se compara la query con todos los ejemplos del soporte al mismo tiempo, con pesos aprendidos.

La analogía de la clase

Imagina una clase escolar donde cada alumno da su opinión sobre la respuesta a una pregunta. En lugar de tomar la opinión del mejor (Siamese), o el promedio de todos (ProtoNet), se pondera: un alumno que parece «cercano» al tema tiene más voz.

Siamese

Se toma el ejemplo más cercano, se ignora el resto. 1 voto, 0 abstenciones.

ProtoNet

Se hace el promedio uniforme de los ejemplos de una clase. Voto equitativo, sin matices.

Matching Net

Se da a cada ejemplo un peso según su similitud con la query. Voto ponderado.

Fórmula de la predicción

Para una query q y un soporte {(x_i, y_i)}:

El modelo predice entonces una distribución de probabilidades, suma de todas las contribuciones ponderadas de cada ejemplo del soporte.

Atención suave vs dura

TipoComportamientoUso few-shot
Dura (hard)Elige UN ejemplo (argmax)Equivalente a Siamese
Suave (soft)Pondera todos los ejemplosMatching Networks
TIPPor qué la suave gana — La atención suave es diferenciable, lo que permite optimizar el modelo completo de extremo a extremo mediante retropropagación. La atención dura (con argmax) no es diferenciable.

El contexto: la influencia de los demás ejemplos

Un matiz importante de Matching Networks: el codificador puede tener en cuenta el contexto completo del soporte (y no cada imagen de forma aislada). Es la idea del Full Context Embedding (FCE).

Comparación con ProtoNet

AspectoMatching NetProtoNet
Representación de una claseMantiene todos los ejemplosUn solo prototipo
MecanismoAtención ponderadaDistancia al prototipo
ContextoSí (FCE opcional)No
Rendimiento K=1 (Omniglot)~98%~98%
Rendimiento K=5 (Omniglot)~99%~99.5%
Complejidad del códigoMás elevadaMuy simple
NOTEVeredicto moderno — ProtoNet es globalmente preferido hoy por su simplicidad. Pero las ideas de Matching Networks (atención, FCE) han inspirado numerosas mejoras (FEAT, ATNet, etc.).

El artículo fundador

Casos de uso reales del few-shot

NOTEObjetivo — Poner rostros concretos al few-shot learning: para cada dominio, se analiza el problema, las restricciones, lo que aporta el few-shot y un ejemplo cuantificado. Al final, sabrás convencer a cualquiera de que el tema es útil.

Objetivos pedagógicos

TIPAl finalizar este módulo — Tendrás en mente al menos cinco casos de uso reales (médico, biodiversidad, industria, NLP, finanzas), con su problema y la solución few-shot asociada.

Caso 1 — Medicina: enfermedades raras

Una enfermedad se considera rara en Europa cuando afecta a menos de 1 persona de cada 2 000. Hay más de 7 000 enfermedades raras catalogadas, pero cada una suele contar con solo unas decenas de casos documentados por imagen médica.

Problema concreto

Un radiólogo ve pasar una lesión que solo ha visto 3 veces en su carrera. Le gustaría que su IA de asistencia compare esta imagen con todas las lesiones similares ya anotadas en el mundo.

Aportación del few-shot

Un modelo que aprende un espacio de embeddings sobre imágenes comunes y luego recupera los casos más cercanos en una base de lesiones raras. Incluso 5 ejemplos bastan para activar una clase.

WARNINGRestricciones empresariales — El RGPD obliga a no almacenar las imágenes del paciente. Por tanto se utilizan embeddings anonimizados. La explicabilidad (mostrar las imágenes de referencia) también es crucial para el médico.

Caso 2 — Biodiversidad: especies raras

La aplicación iNaturalist cataloga cientos de miles de especies, pero muchas de ellas solo tienen entre 5 y 20 fotos en toda la base mundial (una mariposa descubierta recientemente, un milpiés endémico de un solo bosque…).

NOTEEjemplo real — Para los caribúes de los bosques de Quebec, algunas manadas solo tienen 12 individuos fotografiados. Un modelo few-shot puede aprender a identificar individualmente cada caribú (re-ID) con tan pocos ejemplos.

Caso 3 — Industria: control de calidad en defectos raros

Imaginemos una cadena de producción de tarjetas electrónicas. La gran mayoría de las tarjetas están sanas; los defectos que pasan por control visual son 2 tarjetas de cada 100 000. En 6 meses se tienen 4 fotos de una «soldadura fría» y 1 foto de un «pad arrancado».

EnfoqueResultadoProblema
CNN clásico multiclase~30% f1 en defectos rarosDemasiados pocos ejemplos
Detección de anomalíasDetecta ruido adicionalDemasiado sensible a variaciones
Few-shot (ProtoNet)~88% f1 con 5 ej.Por ahora, lo mejor

Caso 4 — NLP: intenciones de clientes de nicho

Un chatbot de asistencia bancaria debe comprender intenciones muy específicas («cierre de cuenta antes de 30 días», «levantamiento parcial de hipoteca») que a veces tienen menos de 50 ejemplos en los logs.

output
# Few-shot con LLM para clasificar una intención
prompt = """
Eres un clasificador de intenciones bancarias.
Aquí tienes 5 ejemplos:

"Quiero cerrar mi cuenta este mes" -> CLOTURE_RAPIDE
"Deseo reducir mi préstamo hipotecario parcialmente" -> MAINLEVEE_PARTIELLE
"¿Está en curso mi expediente de crédito?" -> SUIVI_CREDIT
"Quiero cerrar mis cuentas rápido" -> CLOTURE_RAPIDE
"Quiero liberar parte de mi hipoteca" -> MAINLEVEE_PARTIELLE

Pregunta: "¿Cómo cerrar con urgencia?"
Respuesta:"""
# → el LLM responde CLOTURE_RAPIDE, sin entrenamiento
TIPTruco — El few-shot con LLM se ha convertido en la herramienta de elección cuando una intención NLP tiene menos de 100 ejemplos: es gratis en tiempo de desarrollo y se actualiza modificando el prompt.

Caso 5 — Finanzas: nuevos tipos de fraude

Los estafadores inventan constantemente nuevos esquemas. Cuando un banco detecta un nuevo patrón de fraude, suele tener solo 10 a 30 transacciones etiquetadas antes de que el patrón desaparezca o cambie.

Problema

Es imposible reentrenar un modelo clásico para cada nuevo esquema: sería demasiado lento y el esquema ya habría cambiado.

Solución few-shot

Un modelo de embeddings de transacciones compara en tiempo real la nueva transacción con las 10 fraudes conocidas del esquema actual.

In-context learning con GPT

NOTEObjetivo — Descubrir el in-context learning: la forma moderna y revolucionaria de hacer few-shot con los grandes modelos de lenguaje (GPT-4, Claude, Gemini). Se proporcionan ejemplos en el prompt y el modelo «aprende» sin una sola actualización de pesos.

Objetivos pedagógicos

TIPAl finalizar este módulo — Sabrás explicar qué es el in-context learning, el origen del concepto (GPT-3 / Brown 2020) y reconocer cuándo usarlo en lugar de los métodos clásicos.

La idea revolucionaria de GPT-3

Antes de 2020, hacer few-shot requería entrenar un modelo específico (ProtoNet, MAML, etc.). En 2020, OpenAI publica GPT-3 y demuestra que un gran modelo de lenguaje preentrenado puede hacer few-shot sin entrenamiento adicional. Basta con poner los ejemplos en el prompt.

NOTEDefinición — El in-context learning es la capacidad de un gran modelo de lenguaje para aprender una tarea a partir de ejemplos colocados en su prompt, sin ninguna actualización de sus pesos.

Un ejemplo concreto

output
prompt = """
Traduce del francés al inglés.

Francés: Le chat dort sur le canapé.
Inglés : The cat is sleeping on the sofa.

Francés: Je vais au marché.
Inglés : I am going to the market.

Francés: Il fait beau aujourd'hui.
Inglés :"""

# Respuesta esperada de GPT-4:
# « It is sunny today. »

Sin ninguna fase de fine-tuning, solo con dos ejemplos en el prompt, GPT-4 ha comprendido la tarea de traducción y produce la respuesta correcta.

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

ModoContenido del promptEjemplo
Zero-shotSolo instrucción« Traduce: Bonjour »
One-shotInstrucción + 1 ejemplo« Traduce. ‘Merci’ -> ‘Thank you’. ‘Bonjour’ -> »
Few-shotInstrucción + 3 a 10 ejemplos(Como arriba con más ejemplos)

El artículo que lo cambió todo: Brown 2020

NOTETom Brown et al. 2020« Language Models are Few-Shot Learners » (NeurIPS 2020). Es el artículo de GPT-3 (175B parámetros). Muestra que la precisión aumenta enormemente al pasar de 0 a 1, luego a 3, 5, 10 ejemplos en el prompt. En muchas tareas, GPT-3 few-shot igualaba o superaba a los modelos específicos fine-tuned.

¿Por qué funciona?

Nadie tiene una respuesta completa. Varias teorías se complementan:

1. Reconocimiento de patrones

El modelo ha visto millones de listas «Q: ... Respuesta: ...» durante el preentrenamiento y reconoce el formato.

2. Meta-learning implícito

Durante el preentrenamiento, el modelo aprendió a aprender nuevas tareas a medida que consume texto.

3. Induction heads

El análisis de los Transformers revela circuitos internos («induction heads») especializados en copiar patrones vistos previamente.

¿Cuándo usar in-context learning?

TIPCaso ideal — Tienes algunos ejemplos de una tarea, quieres un prototipo rápido sin entrenamiento y estás dispuesto a pagar una API LLM. El in-context learning te da un modelo utilizable en 5 minutos.

SituaciónRecomendación
Muy pocos datos (1-30 ejemplos)In-context learning con LLM
Muchos datos (1000+ ejemplos)Fine-tuning clásico
Sin internet / on-premiseProtoNet o MAML local
Latencia crítica (< 10 ms)Modelo local entrenado
Costo de API demasiado altoFine-tuning o ProtoNet

Código Python: llamar a la API de OpenAI en few-shot

output
from openai import OpenAI

client = OpenAI()

few_shot_examples = [
    {"role": "system", "content": "Eres un clasificador de sentimiento."},
    {"role": "user",   "content": "¡Me encanta esta película!"},
    {"role": "assistant", "content": "POSITIVO"},
    {"role": "user",   "content": "Fue aburrido."},
    {"role": "assistant", "content": "NEGATIVO"},
    {"role": "user",   "content": "Meh, sin más."},
    {"role": "assistant", "content": "NEUTRO"},
]

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("¡La historia es cautivadora!"))  # → POSITIVO
va-plus-loin

Este artículo cubre los extractos más útiles — el curso completo Few Shot Learning (11 capítulos, 35 lecciones, ejercicios corregidos y proyecto final) te lleva hasta el final.

./acceder-al-curso-completo curso gratuito: Ingeniería de prompts

FAQ

¿Cuánto tiempo se necesita para aprender Few Shot Learning?
Con una progresión estructurada (11 capítulos, 35 lecciones cortas y prácticas), se alcanza un nivel operativo en unas semanas dedicando 30 a 60 minutos al día. Lo importante es practicar cada concepto de inmediato.
¿Se necesitan requisitos previos?
Basta con nociones básicas de informática. Si sabes usar un terminal y leer código sencillo, estás listo.
¿Por dónde empezar concretamente?
Reproduce los comandos de este artículo y luego sigue el curso completo Few Shot Learning: encadena las 35 lecciones en orden, con ejercicios y proyecto final.

📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero palabrería.