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.
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.
- Introdução e Instalação
- Por que o few-shot
- Fundamentos de meta-learning
- Métricas e benchmarks
- Siamese Networks
A atenção para o few-shot
Objetivos pedagógicos
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.
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
| Tipo | Comportamento | Uso no few-shot |
|---|---|---|
| Dura (hard) | Escolhe UM exemplo (argmax) | Equivalente a Siamese |
| Suave (soft) | Pondera todos os exemplos | Matching Networks |
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
| Aspecto | Matching Net | ProtoNet |
|---|---|---|
| Representação de uma classe | Mantém todos os exemplos | Um único protótipo |
| Mecanismo | Atenção ponderada | Distância ao protótipo |
| Contexto | Sim (FCE opcional) | Não |
| Desempenho K=1 (Omniglot) | ~98% | ~98% |
| Desempenho K=5 (Omniglot) | ~99% | ~99.5% |
| Complexidade do código | Mais elevada | Muito simples |
O artigo fundador
Casos de uso reais do few-shot
Objetivos pedagógicos
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.
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…).
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».
| Abordagem | Resultado | Problema |
|---|---|---|
| CNN clássico multi-classes | ~30% f1 em defeitos raros | Muito poucos exemplos |
| Detecção de anomalias | Detecta ruído extra | Muito 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.
# 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
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
Objetivos pedagógicos
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.
Um exemplo concreto
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
| Modo | Conteúdo do prompt | Exemplo |
|---|---|---|
| Zero-shot | Apenas instrução | «Traduza: Olá» |
| One-shot | Instrução + 1 exemplo | «Traduza. ‘Obrigado’ -> ‘Thank you’. ‘Olá’ ->» |
| Few-shot | Instrução + 3 a 10 exemplos | (Como acima com mais exemplos) |
O artigo que mudou tudo: Brown 2020
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?
| Situação | Recomendação |
|---|---|
| Muito poucos dados (1-30 exemplos) | In-context learning com LLM |
| Muitos dados (1000+ exemplos) | Fine-tuning clássico |
| Sem internet / on-premise | ProtoNet ou MAML local |
| Latência crítica (< 10 ms) | Modelo local treinado |
| Custo de API muito alto | Fine-tuning ou ProtoNet |
Código Python: chamar a API OpenAI em few-shot
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
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 promptsFAQ
Quanto tempo para aprender Few Shot Learning?
É preciso pré-requisitos?
Por onde começar concretamente?
📬 Quer receber este tipo de guia toda semana? Inscreva-se gratuitamente — código real, zero enrolação.