Entrevistas de Deep Learning
Os 50 conceitos de redes neurais que mais caem em entrevistas de estágio e emprego, do perceptron à difusão: o que estudar, como estudar e como responder. Com respostas curtas ligadas à seção da aula que ensina cada uma, um quiz, um checklist do seu progresso e referências para ir além.
A curva que sobe na época 8
Uma cena que vai acontecer com você.
Terça-feira, 10h. Segunda etapa da entrevista para a vaga de estágio em visão computacional que você mais queria. O entrevistador compartilha a tela: dois gráficos de um classificador de imagens que alguém do time treinou. A perda de treino cai do começo ao fim. A perda de validação cai até a época 8, para e começa a subir; na época 30 ela está acima de onde começou. Ele pergunta:
"O que você faria?"
Ele não quer uma palavra. Quer ver como você pensa.
Existe uma resposta fraca ("é overfitting, coloca dropout") e uma resposta forte, que começa com uma pergunta de volta: "a validação foi medida com model.eval()? Quantas imagens há em cada conjunto e a divisão separa bem as duas?". Uma curva de validação errada por dropout ligado ou por vazamento entre os conjuntos leva a um diagnóstico errado, por mais certo que pareça.
A diferença entre as duas respostas não é decorar mais nomes de camadas. É saber conectar o que você estudou: as duas curvas, viés e variância, early stopping, os regularizadores do mais barato ao mais caro e a regra de ouro da divisão. Esta página organiza esse caminho. No final voltamos à época 8 com a resposta completa.
Como é uma entrevista de deep learning
Três tipos de pergunta, três habilidades e a mesma lógica: raciocinar em voz alta com formatos, curvas e números.
"Por que dividir por √dk?"
Avalia se você explica com as próprias palavras, dá a intuição e sabe onde a ideia falha. Quase sempre há uma conta pequena por trás: uma variância, um formato, uma contagem de parâmetros.
"A perda virou NaN"
Avalia diagnóstico e próximos passos. Não existe resposta única: existe um raciocínio que descarta primeiro as causas baratas e propõe um experimento para cada hipótese.
"Escreva o loop de treino"
Avalia se você escreve um loop em PyTorch sem os bugs clássicos: zero_grad, model.eval(), torch.no_grad(), softmax duplicado, formatos que não batem.
Para uma vaga de entrada, quase ninguém espera que você conheça a arquitetura da semana. O que derruba candidatos são as armadilhas básicas: não saber o formato dos tensores, confundir a perda de treino com a de validação, avaliar com dropout ligado, escolher hiperparâmetros olhando o teste e reportar acurácia num problema desbalanceado. Quem evita essas cinco já está à frente da maioria.
O que o entrevistador avalia
| Aspecto | Conceitual | De caso | De código |
|---|---|---|---|
| Resposta certa | Uma explicação, com a conta por trás | Várias respostas válidas | Código que roda e treina de verdade |
| Foco | Intuição e onde ela falha | Diagnóstico e trade-offs | Formatos e o ciclo forward–backward–passo |
| Duração típica | 1–3 min por pergunta | 10–20 min | 15–30 min |
| Erro mais comum | Recitar a definição sem a armadilha | Trocar de arquitetura antes de olhar os dados e as curvas | Esquecer zero_grad ou model.eval() |
| Onde treinar | Conceitos-chave | Pergunta de caso | O loop de treino |
Como responder: 8 princípios
Valem para as três modalidades e são o que transforma uma resposta certa numa resposta boa.
CrossEntropyLoss entra duas vezes; uma validação perfeita é quase sempre um vazamento. É aqui que o entrevistador vê profundidade. Dica prática: use transições explícitas. Ao passar do diagnóstico para a solução, diga em voz alta: "então o problema parece ser variância; vou propor três formas de reduzi-la, da mais barata para a mais cara". O entrevistador acompanha a sua estrutura e você não se perde.
O loop de treino de cabeça
A pergunta de código mais comum é também a mais curta: "escreva o treino de uma rede em PyTorch". Saiba escrever isto sem consultar e dizer o que cada linha faz.
model = nn.Sequential(nn.Linear(d, 64), nn.ReLU(), nn.Linear(64, n_classes))
opt = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-2)
loss_fn = nn.CrossEntropyLoss() # recebe logits crus: sem softmax no modelo
for epoch in range(epochs):
model.train() # dropout e BatchNorm em modo de treino
for xb, yb in train_loader: # xb: (B, d) · yb: (B,) com índices de classe
opt.zero_grad() # sem isto os gradientes se acumulam
loss = loss_fn(model(xb), yb) # logits: (B, n_classes)
loss.backward()
opt.step()
model.eval() # desliga o dropout, usa as estatísticas da BatchNorm
with torch.no_grad(): # sem grafo: mais rápido e sem memória extra
val_loss = sum(loss_fn(model(xb), yb).item() * len(yb)
for xb, yb in val_loader) / len(val_loader.dataset)
Cinco linhas que valem a vaga
Esquecer zero_grad (os gradientes somam entre os passos); avaliar sem model.eval() (dropout ligado na validação); aplicar softmax antes da CrossEntropyLoss; usar MSE no índice da classe; misturar as dimensões, como passar (B, 1) onde a perda espera (B,).
Escreva o formato de cada tensor
Uma nn.Linear(d, 64) recebe (B, d) e devolve (B, 64) com uma matriz de pesos (64, d). Uma nn.Conv2d(3, 16, 3) leva (B, 3, 32, 32) a (B, 16, 30, 30). A atenção leva (B, n, d) a scores (B, h, n, n). Quem sabe os formatos resolve metade dos bugs olhando.
Pergunta de caso, passo a passo
"Como você treinaria uma rede para…": a pergunta aberta mais comum. A resposta é o fluxo de qualquer projeto com redes neurais.
Sempre pergunte: "preciso mesmo de uma rede, ou de uma rede treinada do zero?" Em tabelas pequenas, gradient boosting costuma ganhar. Em imagens e texto, partir de um modelo pré-treinado quase sempre ganha de treinar do zero. Dizer isso antes de desenhar a arquitetura mostra que você pensa no problema, não na ferramenta.
Diagnóstico rápido
Os sintomas que aparecem em perguntas de caso, o que eles costumam indicar e o que fazer.
Em perguntas de caso, o entrevistador descreve um sintoma e espera um diagnóstico com o próximo passo. Antes de propor outra arquitetura, descarte as causas baratas: um bug no pipeline de dados, a taxa de aprendizado, o modo de avaliação, um vazamento entre os conjuntos.
| Sintoma | Diagnóstico provável | Próximo passo |
|---|---|---|
| Perda vira NaN ou inf | Taxa de aprendizado acima do limite de estabilidade, gradiente explodindo, log(0) na perda | Dividir a taxa por 10, gradient clipping, usar a perda com logits |
| Perda parada desde o passo 0 | Taxa pequena demais, ReLUs mortas, dados ou rótulos quebrados | Taxa ×10; conferir se a rede decora 10 exemplos; olhar um batch na mão |
| Perda inicial longe de ln C | Inicialização ou escala de entrada erradas, softmax duplicado | Conferir a escala das entradas, a inicialização e a perda |
| Treino cai, validação sobe | Overfitting (variância) | Early stopping, weight decay, dropout, augmentation, mais dados |
| Treino e validação altos e próximos | Underfitting (viés) | Mais capacidade, treinar mais, menos regularização |
| Validação melhor que o treino | Dropout ou augmentation só no treino, ou vazamento entre conjuntos | Conferir model.eval() e como a divisão foi feita |
| Rede funda com sigmoide não aprende | Gradiente que some: cada camada multiplica por no máximo 0,25 | ReLU, inicialização de He, conexões residuais, normalização |
| Muitas unidades sempre em zero | ReLUs mortas por taxa alta ou bias negativo | Taxa menor, LeakyReLU ou GELU, conferir a inicialização |
| Perda oscila muito | Batch pequeno demais ou taxa alta | Batch maior, momentum, agendamento da taxa |
| Boa no começo, diverge na época k | Taxa alta demais para a região mais íngreme que o treino alcançou | Agendamento da taxa e warmup |
| Validação perfeita | Vazamento. Quase sempre vazamento | Auditar a divisão e as features |
"A perda virou NaN na época 3"
Pergunte: que otimizador e que taxa? Há log ou divisão na perda? Precisão mista?
Descarte o barato: algum NaN nos dados de entrada? A perda usa BCEWithLogitsLoss ou aplica sigmoide e log separados?
Diagnostique: se a norma do gradiente dispara antes do NaN, é instabilidade numérica do passo.
Proponha, do mais barato ao mais caro: taxa ÷10; gradient clipping; warmup; conferir a inicialização e a escala das entradas.
O que usar em cada caso
As duas curvas de perda: viés, variância e a melhor época.
Decorar um batch pequeno: separa bug de falta de capacidade.
Norma do gradiente por camada: gradiente que some ou explode.
Histograma das ativações: unidades mortas ou saturadas.
Varredura da taxa em potências de 10: a busca de hiperparâmetro que sempre vale a pena.
Os 50 conceitos-chave
Os 50 tópicos em oito temas. Tente responder em voz alta antes de abrir cada tema. Os números identificam cada tópico no checklist; o link no fim de cada resposta leva à seção da aula que o ensina.
BCEWithLogitsLoss). Multiclasse: um logit por classe e entropia cruzada com softmax (CrossEntropyLoss). Armadilha: as perdas do PyTorch já incluem sigmoide ou softmax; aplicá-los antes é um bug silencioso. ↗ MLPmodel.eval() deixa o dropout ligado na avaliação. ↗ Regularizaçãomodel.eval(). ↗ Regularizaçãopos_weight ou focal loss) se os negativos dominam o gradiente, batches balanceados se faltam positivos nos batches e, sempre que der, mais positivos. Armadilha: reamostrar e pesar a perda descalibram as probabilidades. ↗ DesbalanceamentoConv2d(3, 16, 3) tem 448. Armadilha: a maioria dos bugs de CNN é de formato, quase sempre na primeira Linear depois do Flatten: imprima o formato em vez de chutar. ↗ CNNsQuiz
Vinte e quatro questões no estilo de entrevista, três por tema. Filtre por tema para revisar só o que precisa.
Plano de estudo
Como estudar e um plano para as duas semanas antes de uma entrevista.
Em voz alta, para alguém
Se você não consegue explicar a retropropagação para um colega que faltou à aula, ainda não aprendeu. Estudar em dupla, um entrevistando o outro com as perguntas de caso, é o melhor treino que existe.
O loop e os formatos de cabeça
Escreva sem consultar o loop de treino, uma MLP, uma CNN pequena e uma cabeça de atenção, anotando o formato de cada tensor. Rode, quebre de propósito (sem zero_grad, sem eval) e veja o que muda.
Um dia, uma semana, um mês
Rever espaçado no tempo fixa muito mais do que estudar tudo na véspera. As cartas de estudo fazem isso por você: as que você erra voltam primeiro.
O checklist é seu termômetro
Marque um item só quando conseguir explicá-lo sem olhar nada, com a armadilha incluída. Um checklist cheio de itens marcados por otimismo não ajuda na entrevista.
| Dias | O que fazer |
|---|---|
| 1–2 | Fundamentos: perceptron, MLP e retropropagação à mão numa rede de 2 camadas; os formatos de cada tensor |
| 3–4 | Otimização e profundidade: taxa de aprendizado, Adam, inicialização e residuais; brinque no playground até ver o gradiente sumir e voltar |
| 5–6 | Regularização e avaliação: as duas curvas, dropout, BatchNorm, divisão, vazamento e as métricas à mão |
| 7–8 | CNNs e atenção: as contas de formato e de parâmetros; uma cabeça de atenção à mão |
| 9–10 | Transformers, transfer learning, LLMs e generativos: uma frase e uma armadilha para cada conceito |
| 11–12 | Perguntas de caso em dupla, cronometradas, com o diagnóstico rápido; o loop de treino escrito de cabeça |
| 13–14 | Quiz completo e uma rodada final do checklist inteiro, em voz alta |
Para revisar no formato da disciplina: as cartas de estudo, com um modo de desafio por situação; a folha de consulta, com as fórmulas de cada aula; e o playground, para ver na prática o que as perguntas de caso descrevem.
Checklist
Os 50 conceitos e os hábitos de entrevista. O progresso fica salvo neste navegador.
De volta à época 8
A resposta completa para "o que você faria?"
model.eval()? Há imagens do mesmo objeto ou da mesma pessoa no treino e na validação?" Uma curva errada leva a um diagnóstico errado. Princípio 1, itens [18], [24].Quatro passos, um minuto e nove dos 50 conceitos usados numa resposta só. É isso que o entrevistador queria ver: não o que você decorou, mas como você conecta.
Referências
Para aprofundar, organizadas por tipo.
Livros gratuitos
Recursos online gratuitos
Dataset e DataLoader, salvar e carregar modelos: o vocabulário que aparece nas perguntas de código.