Few-Shot Learning explicado de forma simples (com diagramas e código real)

Few Shot Learning: o essencial em um artigo — código real, diagramas e etapas concretas, extratos de um curso de 35 lições.

Few-Shot Learning explicado de forma simples (com diagramas e código real)

Um guia que vai direto ao ponto: Few Shot Learning dissecado com diagramas, exemplos concretos e comandos testados. Tudo vem de um curso estruturado de 11 capítulos — aqui está o melhor dele.

tl;dr
  • Introdução e Instalação
  • Por que o few-shot
  • Fundamentos de meta-learning
  • Métricas e benchmarks
  • Siamese Networks
~$ cat ./parcours.md # Few Shot Learning — 10 capítulos
01
Introdução e Instalação
→ Apresentação do curso→ Instalar PyTorch e o ambiente+ 1 mais lições
02
Por que o few-shot
→ Os limites do deep learning clássico→ Casos de uso reais do few-shot+ 1 mais lições
03
Fundamentos de meta-learning
→ Aprender a aprender→ Episódios, support set e query set+ 1 mais lições
04
Métricas e benchmarks
→ Omniglot, o « MNIST do few-shot »→ miniImageNet+ 1 mais lições
05
Siamese Networks
→ Arquitetura Siamese→ Contrastive loss e Triplet loss+ 1 mais lições
06
Prototypical Networks
→ A ideia dos protótipos→ Distância euclidiana e classificação+ 1 mais lições
07
Matching Networks
→ A atenção para o few-shot→ Arquitetura das Matching Networks+ 1 mais lições
08
MAML e meta-learning por gradiente
→ Model-Agnostic Meta-Learning→ Inner loop vs outer loop+ 1 mais lições
🏁
Projeto final (+ 2 capítulos no caminho)
→ Você sai com um projeto concreto e demonstrável

A atenção para o few-shot

NOTEObjetivo — Introduzir o mecanismo de atenção aplicado ao few-shot. Compreender a ideia das Matching Networks (Vinyals et al. 2016): em vez de pegar a classe mais próxima, calcula-se uma combinação ponderada de todos os exemplos do suporte.

Objetivos pedagógicos

TIPAo final deste módulo — Você saberá explicar o que é atenção em deep learning e por que ela se aplica perfeitamente ao problema do few-shot.

A intuição da atenção

A atenção, em deep learning, é a ideia de que um modelo pode atribuir pesos diferentes a cada elemento de um conjunto conforme o contexto. Quando você lê uma frase, seu cérebro não dá a mesma atenção a cada palavra; ele se concentra nas palavras importantes.

NOTEPara o few-shot — Em vez de comparar a query a uma única referência (Siamese) ou ao protótipo (ProtoNet), compara-se a query a todos os exemplos do suporte ao mesmo tempo, com pesos aprendidos.

A analogia da sala de aula

Imagine uma sala de aula onde cada aluno dá uma opinião sobre a resposta a uma pergunta. Em vez de pegar a opinião do melhor (Siamese), ou a média de todos (ProtoNet), pondera-se: um aluno que parece «próximo» do assunto tem mais voz.

Siamese

Pega-se o exemplo mais próximo e ignora-se o resto. 1 voto, 0 abstenção.

ProtoNet

Faz-se a média uniforme dos exemplos de uma classe. Voto igualitário, sem nuance.

Matching Net

Dá-se a cada exemplo um peso conforme sua similaridade com a query. Voto ponderado.

Fórmula da predição

Para uma query q e um suporte {(x_i, y_i)}:

O modelo prevê então uma distribuição de probabilidades, soma de todas as contribuições ponderadas de cada exemplo do suporte.

Atenção suave vs dura

TipoComportamentoUso no few-shot
Dura (hard)Escolhe UM exemplo (argmax)Equivalente a Siamese
Suave (soft)Pondera todos os exemplosMatching Networks
TIPPor que a suave vence — A atenção suave é diferenciável, o que permite otimizar o modelo inteiro de ponta a ponta por retropropagação. A atenção dura (com argmax) não é diferenciável.

O contexto: a influência dos outros exemplos

Uma nuance importante das Matching Networks: o codificador pode levar em conta o contexto inteiro do suporte (e não cada imagem isoladamente). É a ideia do Full Context Embedding (FCE).

Comparação com ProtoNet

AspectoMatching NetProtoNet
Representação de uma classeMantém todos os exemplosUm único protótipo
MecanismoAtenção ponderadaDistância ao protótipo
ContextoSim (FCE opcional)Não
Desempenho K=1 (Omniglot)~98%~98%
Desempenho K=5 (Omniglot)~99%~99.5%
Complexidade do códigoMais elevadaMuito simples
NOTEVeredito moderno — ProtoNet é globalmente preferido hoje por sua simplicidade. Mas as ideias das Matching Networks (atenção, FCE) inspiraram inúmeras melhorias (FEAT, ATNet, etc.).

O artigo fundador

Casos de uso reais do few-shot

NOTEObjetivo — Dar rostos concretos ao few-shot learning: para cada domínio, analisa-se o problema, as restrições, o que o few-shot traz e um exemplo numérico. Ao final, você saberá convencer qualquer pessoa de que o tema é útil.

Objetivos pedagógicos

TIPAo final deste módulo — Você terá em mente pelo menos cinco casos de uso reais (médico, biodiversidade, indústria, NLP, finanças), com seu problema e a solução few-shot associada.

Caso 1 — Medicina: doenças raras

Uma doença é considerada rara na Europa quando afeta menos de 1 pessoa em 2 000. Existem mais de 7 000 doenças raras catalogadas, mas cada uma dispõe frequentemente de apenas algumas dezenas de casos documentados por imagem médica.

Problema concreto

Um radiologista vê uma lesão que encontrou apenas 3 vezes em sua carreira. Ele gostaria que sua IA de assistência comparasse essa imagem com todas as lesões semelhantes já anotadas no mundo.

Contribuição do few-shot

Um modelo que aprende um espaço de embeddings em imagens comuns e depois recupera os casos mais próximos em uma base de lesões raras. Apenas 5 exemplos bastam para ativar uma classe.

WARNINGRestrições do negócio — O RGPD exige não armazenar as imagens do paciente. Portanto, usam-se embeddings anonimizados. A explicabilidade (mostrar as imagens de referência) também é crucial para o médico.

Caso 2 — Biodiversidade: espécies raras

O aplicativo iNaturalist cataloga centenas de milhares de espécies, mas muitas delas têm apenas 5 a 20 fotos em toda a base mundial (uma borboleta descoberta recentemente, um milípede endêmico de uma única floresta…).

NOTEExemplo real — Para os caribus-da-floresta de Quebec, alguns grupos têm apenas 12 indivíduos fotografados. Um modelo few-shot pode aprender a identificar individualmente cada caribu (re-ID) com tão poucos exemplos.

Caso 3 — Indústria: controle de qualidade em defeitos raros

Imagine uma linha de produção de placas eletrônicas. A grande maioria das placas é saudável; os defeitos que passam pelo controle visual são 2 placas em 100 000. Em 6 meses, há 4 fotos de uma «solda fria» e 1 foto de um «pad arrancado».

AbordagemResultadoProblema
CNN clássico multi-classes~30% f1 em defeitos rarosMuito poucos exemplos
Detecção de anomaliasDetecta ruído extraMuito sensível a variações
Few-shot (ProtoNet)~88% f1 com 5 ex.Por enquanto, o melhor

Caso 4 — NLP: intenções de clientes de nicho

Um chatbot de suporte bancário precisa entender intenções muito específicas («encerrar conta antes de 30 dias», «liberação parcial de hipoteca») que às vezes têm menos de 50 exemplos nos logs.

output
# Few-shot com LLM para classificar uma intenção
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
TIPDica — O few-shot por LLM tornou-se a ferramenta de escolha sempre que uma intenção NLP tem menos de 100 exemplos: é gratuito em tempo de desenvolvimento e atualiza-se modificando o prompt.

Caso 5 — Finanças: novos tipos de fraude

Os fraudadores inventam constantemente novos esquemas. Quando um banco detecta um novo padrão de fraude, geralmente tem apenas 10 a 30 transações rotuladas antes que o padrão desapareça ou mude.

Problema

É impossível retreinar um modelo clássico para cada novo padrão: seria muito lento e o padrão já teria mudado.

Solução few-shot

Um modelo de embeddings de transações compara em tempo real a nova transação com as 10 fraudes conhecidas do padrão atual.

In-context learning com GPT

NOTEObjetivo — Descobrir o in-context learning: a forma moderna e revolucionária de fazer few-shot com grandes modelos de linguagem (GPT-4, Claude, Gemini). Colocam-se exemplos no prompt e o modelo «aprende» sem uma única atualização de pesos.

Objetivos pedagógicos

TIPAo final deste módulo — Você saberá explicar o que é in-context learning, a origem do conceito (GPT-3 / Brown 2020) e reconhecer quando usá-lo em vez dos métodos clássicos.

A ideia revolucionária do GPT-3

Antes de 2020, fazer few-shot exigia treinar um modelo específico (ProtoNet, MAML, etc.). Em 2020, a OpenAI publica GPT-3 e mostra que um grande modelo de linguagem pré-treinado sabe fazer few-shot sem treinamento adicional. Basta colocar os exemplos no prompt.

NOTEDefinição — O in-context learning é a capacidade de um grande modelo de linguagem de aprender uma tarefa a partir de exemplos colocados em seu prompt, sem nenhuma atualização de seus pesos.

Um exemplo concreto

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. »

Sem nenhuma fase de fine-tuning, apenas com dois exemplos no prompt, o GPT-4 entendeu a tarefa de tradução e produziu a resposta correta.

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

ModoConteúdo do promptExemplo
Zero-shotApenas instrução«Traduza: Olá»
One-shotInstrução + 1 exemplo«Traduza. ‘Obrigado’ -> ‘Thank you’. ‘Olá’ ->»
Few-shotInstrução + 3 a 10 exemplos(Como acima com mais exemplos)

O artigo que mudou tudo: Brown 2020

NOTETom Brown et al. 2020«Language Models are Few-Shot Learners» (NeurIPS 2020). É o artigo do GPT-3 (175B parâmetros). Mostra que a precisão aumenta massivamente ao passar de 0 para 1, depois 3, 5, 10 exemplos no prompt. Em muitas tarefas, o GPT-3 few-shot igualava ou superava os modelos específicos fine-tuned.

Por que funciona?

Ninguém tem uma resposta completa. Várias teorias se complementam:

1. Reconhecimento de padrões

O modelo viu milhões de listas «Q: ... Resposta: ...» durante o pré-treinamento e reconhece o formato.

2. Meta-learning implícito

Durante o pré-treinamento, o modelo aprendeu a aprender novas tarefas ao longo do texto que consome.

3. Induction heads

A análise dos Transformers revela circuitos internos («induction heads») especializados em copiar padrões vistos anteriormente.

Quando usar in-context learning?

TIPCaso ideal — Você tem alguns exemplos de uma tarefa, quer um protótipo rápido sem treinamento e está disposto a pagar uma API LLM. O in-context learning oferece um modelo utilizável em 5 minutos.

SituaçãoRecomendação
Muito poucos dados (1-30 exemplos)In-context learning com LLM
Muitos dados (1000+ exemplos)Fine-tuning clássico
Sem internet / on-premiseProtoNet ou MAML local
Latência crítica (< 10 ms)Modelo local treinado
Custo de API muito altoFine-tuning ou ProtoNet

Código Python: chamar a API OpenAI em 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

Este artigo cobre os trechos mais úteis — o curso completo Few Shot Learning (11 capítulos, 35 lições, exercícios corrigidos e projeto final) leva você até o fim.

./acceder-au-cours-complet curso gratuito: Engenharia de prompts

FAQ

Quanto tempo para aprender Few Shot Learning?
Com uma progressão estruturada (11 capítulos, 35 lições curtas e práticas), atinge-se um nível operacional em algumas semanas dedicando 30 a 60 minutos por dia. O importante é praticar cada conceito imediatamente.
É preciso pré-requisitos?
Básicos de informática bastam. Se você sabe usar um terminal e ler código simples, está pronto.
Por onde começar concretamente?
Reproduza os comandos deste artigo e depois siga o curso completo Few Shot Learning: ele encadeia as 35 lições em ordem, com exercícios e projeto final.

📬 Quer receber este tipo de guia toda semana? Inscreva-se gratuitamente — código real, zero enrolação.