Ir para o conteúdo

Preparação para entrevistas Redes neurais Deep learning

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.

Conceitual

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

De caso

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

De código

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

O que separa os candidatos

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

Formatos e contas Ler curvas de treino Diagnosticar um treino Escolher a arquitetura Avaliar sem vazar Comunicar limites
AspectoConceitualDe casoDe código
Resposta certaUma explicação, com a conta por trásVárias respostas válidasCódigo que roda e treina de verdade
FocoIntuição e onde ela falhaDiagnóstico e trade-offsFormatos e o ciclo forward–backward–passo
Duração típica1–3 min por pergunta10–20 min15–30 min
Erro mais comumRecitar a definição sem a armadilhaTrocar de arquitetura antes de olhar os dados e as curvasEsquecer zero_grad ou model.eval()
Onde treinarConceitos-chavePergunta de casoO 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.

1
Pergunte o contexto antes de responder Quantos exemplos? Que tipo de dado (tabela, imagem, texto)? Qual métrica e quanto custa cada erro? Como a validação foi medida? Uma pergunta bem feita mostra mais maturidade do que uma definição perfeita. Foi o que salvou a resposta da época 8.
2
Explique em uma frase, com as suas palavras "Dropout desliga unidades ao acaso no treino para a rede não depender de nenhuma delas." Curto, sem jargão desnecessário. Se você precisa de três frases para a ideia central, ainda não a domina.
3
Desenhe As duas curvas de perda, uma rede com o formato de cada tensor, a matriz de atenção com a máscara, o caminho do gradiente por uma conexão residual. Um desenho de dez segundos organiza o seu raciocínio e o de quem escuta.
4
Dê um exemplo concreto De preferência um que você mesmo viu: "numa MLP de 30 camadas ReLU com inicialização Xavier, o sinal chega à última camada cerca de 10⁻⁹ vezes menor; com He ele fica perto de 1". Exemplos vividos são a prova de que você não decorou.
5
Diga a armadilha Toda boa resposta termina com "…mas cuidado: …". A BatchNorm calcula diferente no treino e na inferência; o softmax antes da CrossEntropyLoss entra duas vezes; uma validação perfeita é quase sempre um vazamento. É aqui que o entrevistador vê profundidade.
6
Fale em números "448 parâmetros", "saída de 28×28", "perda inicial perto de ln 10 ≈ 2,30 com dez classes", "a matriz de scores cresce 4× quando a sequência dobra". Números tornam o raciocínio verificável e mostram que você pensa como quem já mediu.
7
Compare sempre com algo Um número sozinho não diz nada. Compare com um baseline (a classe majoritária, uma regressão logística, um modelo pré-treinado congelado), com a rede menor, com a variação entre sementes. "0,81 contra 0,74 da logística" é uma resposta; "0,81" não é.
8
Conduza: proponha o próximo passo Não espere a próxima pergunta. "O próximo passo seria conferir se a rede decora um batch de 10 exemplos" ou "eu dividiria a taxa de aprendizado por 10 e olharia a norma do gradiente". Mostra que você sabe o que fazer depois, não só o que é.

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)
Os bugs que o entrevistador procura

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,).

Perguntas de formato

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.

1
Formule o problema e meça um baseline O que é uma entrada e o que é o alvo? Classificação ou regressão? Qual métrica reflete o custo dos erros? Antes da rede, meça o que um modelo trivial (a classe majoritária, a média) e um modelo simples (logística, gradient boosting em tabela, um pré-treinado congelado em imagem) já conseguem. Material de apoio →
2
Divida os dados e tranque o teste Treino, validação e teste antes de qualquer decisão, separando por paciente, usuário ou tempo quando os exemplos não são independentes. Escala e encoding ajustados só no treino. Material de apoio →
3
Comece pela menor rede que pode funcionar MLP em tabela, CNN pequena ou um pré-treinado em imagem, Transformer pré-treinado em texto. Confira a perda inicial (perto de ln C com C classes) e se a rede consegue decorar um batch pequeno: se não consegue, o problema é um bug, não falta de capacidade. Material de apoio →
4
Treine olhando as duas curvas Adam com taxa 1e-3 como primeira tentativa; ajuste a taxa de aprendizado antes de qualquer outro hiperparâmetro. Acompanhe a perda de treino e a de validação, guarde os pesos da melhor época. Material de apoio →
5
Regularize, ajuste na validação, teste uma vez Se a validação descola do treino: weight decay, dropout, augmentation, early stopping, mais dados. Toda escolha na validação. Só no fim, uma medição no teste, com a análise dos erros por subgrupo e o que o modelo não sustenta. Material de apoio →
Pergunta-chave de escopo

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.

SintomaDiagnóstico provávelPróximo passo
Perda vira NaN ou infTaxa de aprendizado acima do limite de estabilidade, gradiente explodindo, log(0) na perdaDividir a taxa por 10, gradient clipping, usar a perda com logits
Perda parada desde o passo 0Taxa pequena demais, ReLUs mortas, dados ou rótulos quebradosTaxa ×10; conferir se a rede decora 10 exemplos; olhar um batch na mão
Perda inicial longe de ln CInicialização ou escala de entrada erradas, softmax duplicadoConferir a escala das entradas, a inicialização e a perda
Treino cai, validação sobeOverfitting (variância)Early stopping, weight decay, dropout, augmentation, mais dados
Treino e validação altos e próximosUnderfitting (viés)Mais capacidade, treinar mais, menos regularização
Validação melhor que o treinoDropout ou augmentation só no treino, ou vazamento entre conjuntosConferir model.eval() e como a divisão foi feita
Rede funda com sigmoide não aprendeGradiente que some: cada camada multiplica por no máximo 0,25ReLU, inicialização de He, conexões residuais, normalização
Muitas unidades sempre em zeroReLUs mortas por taxa alta ou bias negativoTaxa menor, LeakyReLU ou GELU, conferir a inicialização
Perda oscila muitoBatch pequeno demais ou taxa altaBatch maior, momentum, agendamento da taxa
Boa no começo, diverge na época kTaxa alta demais para a região mais íngreme que o treino alcançouAgendamento da taxa e warmup
Validação perfeitaVazamento. Quase sempre vazamentoAuditar a divisão e as features
Exemplo completo

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

Ferramentas por sintoma

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.

[1]O que um perceptron não consegue aprender?
Um perceptron traça um hiperplano: \(\hat y = \text{sign}(w \cdot x + b)\). Ele converge quando as classes são linearmente separáveis e nunca converge quando não são, como no XOR. Armadilha: o limite é da reta, não do treino: uma camada oculta ou a feature \(x_1 x_2\) resolve. ↗ Perceptron
[2]Por que a rede precisa de ativações não lineares?
Sem elas, empilhar camadas lineares dá um mapa linear só: \(W_2(W_1x) = (W_2W_1)x\). A ReLU é o padrão por ser barata e não saturar para entradas positivas. Armadilha: uma ReLU que recebe só entradas negativas tem gradiente zero e para de aprender (ReLU morta); sigmoide e tanh saturam nas pontas. ↗ MLP
[3]O que uma camada oculta já consegue?
Com unidades suficientes, aproximar qualquer função contínua num domínio limitado (o teorema da aproximação universal). Armadilha: o teorema diz que a rede existe, não que o treino a encontra nem quantas unidades ela pede; redes fundas representam a mesma função com muito menos unidades. ↗ MLP
[4]Explique a retropropagação.
É a regra da cadeia aplicada da perda para trás, camada por camada, reaproveitando o que o forward guardou: o erro de uma camada vem do erro da seguinte multiplicado pelos pesos transpostos e pela derivada da ativação. Custa da ordem de um forward. Armadilha: retropropagação calcula gradientes; quem atualiza os pesos é o otimizador. ↗ MLP
[5]Que saída e que perda para cada tarefa?
Regressão: uma unidade linear e MSE (ou MAE/Huber). Binária: um logit e entropia cruzada binária (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. ↗ MLP
[6]Qual o formato de cada tensor numa MLP?
Com um batch de B exemplos de d features, a entrada é \((B, d)\); uma camada com h unidades tem pesos \((h, d)\), bias \((h)\) e devolve \((B, h)\). Parâmetros por camada: \(h \cdot d + h\). Armadilha: o batch é a primeira dimensão em quase todo o PyTorch; trocar a ordem dá erro de formato ou, pior, um broadcast que roda sem avisar. ↗ MLP
[7]O que a taxa de aprendizado faz?
Escala o passo na direção oposta ao gradiente: \(w \leftarrow w - \eta \nabla L\). Pequena demais, o treino se arrasta; grande demais, oscila ou diverge. É o hiperparâmetro que mais importa. Armadilha: ajuste-a antes de qualquer outro, varrendo potências de 10. ↗ Otimização
[8]Batch, estocástico ou mini-batch?
Batch usa todos os exemplos por passo (gradiente exato, caro); estocástico usa um (barato, ruidoso); mini-batch usa dezenas a centenas e é o padrão: aproveita a GPU e o ruído ainda ajuda a sair de regiões ruins. Armadilha: mudar o tamanho do batch pede mudar a taxa de aprendizado junto. ↗ Otimização
[9]O que é momentum?
Uma média móvel dos gradientes passados entra no passo, como uma bolinha que ganha massa: acelera nas direções consistentes e amortece as que oscilam de sinal, como num vale estreito. Armadilha: com momentum 0,9 o passo efetivo é cerca de 10× a taxa; ao ligar o momentum, a taxa que funcionava pode ficar grande demais. ↗ Otimização
[10]Como o Adam funciona? E o AdamW?
O Adam guarda duas médias móveis: a do gradiente (momentum) e a do gradiente ao quadrado, que dá a cada parâmetro a sua própria escala de passo, com correção de viés no começo. O AdamW aplica o weight decay direto nos pesos, fora dessa escala. Armadilha: no Adam, a penalidade L2 passa pela divisão adaptativa e quase não regulariza os parâmetros de gradiente grande; por isso o AdamW. ↗ Otimização
[11]Por que agendar a taxa de aprendizado? E o warmup?
Uma taxa alta no começo avança rápido; uma taxa menor no fim assenta no fundo do vale. Cosseno e degraus são os agendamentos comuns. O warmup começa com uma taxa pequena e a sobe por alguns passos, enquanto as estatísticas do Adam ainda são ruins. Armadilha: sem warmup, Transformers costumam divergir nos primeiros passos. ↗ Otimização
[12]Por que a inicialização importa? Xavier ou He?
Cada camada multiplica a variância do sinal por \(n\,\sigma^2\) (com n entradas); a inicialização escolhe \(\sigma^2\) para esse fator ficar perto de 1. Xavier usa \(1/n\) (ativações simétricas, como tanh); He usa \(2/n\), porque a ReLU zera metade da variância. Armadilha: com Xavier, 30 camadas ReLU levam o sinal a cerca de 10⁻⁹; com pesos N(0, 1), a 10³⁹. ↗ Redes profundas
[13]O que são gradientes que somem e explodem?
O gradiente que chega à primeira camada é um produto de L fatores, um por camada; um produto de muitos números vai para zero ou para o infinito. A sigmoide tem derivada de no máximo 0,25, então 20 camadas sigmoides encolhem o gradiente por um fator astronômico. Armadilha: isso é decidido antes do primeiro passo, pela ativação e pela inicialização, não pelo otimizador. ↗ Redes profundas
[14]Por que as conexões residuais funcionam?
Com \(a \leftarrow a + f(a)\), a derivada de cada bloco é \(1 + \partial f/\partial a\): existe um caminho de identidade por onde o gradiente volta sem encolher. Foi o que deixou treinar redes de centenas de camadas. Armadilha: sozinha, a soma faz o sinal crescer a cada bloco; residual sempre vem com normalização (pré-LN nos Transformers). ↗ Redes profundas
[15]Seu treino não aprende. Por onde começa?
Pelo barato: a perda inicial está perto de \(\ln C\)? A rede consegue decorar 10 exemplos? Se não decora, é bug (dados, rótulos, perda, formatos), não capacidade. Depois, taxa ×10 e ÷10. Armadilha: trocar a arquitetura antes desses testes esconde o bug em vez de achá-lo. ↗ Otimização
[16]Viés e variância numa rede neural?
Viés alto: treino e validação ruins e próximos (a rede não representa o padrão). Variância alta: treino bom e validação ruim, com a distância crescendo (a rede decora o ruído). Lê-se nas duas curvas de perda. Armadilha: redes grandes com bastante dado e regularização costumam generalizar melhor que redes pequenas; "menos parâmetros" não é o primeiro remédio. ↗ Regularização
[17]L1 ou L2?
A L2 soma \(\lambda \sum w^2\) e encolhe todos os pesos proporcionalmente; a L1 soma \(\lambda \sum |w|\) e empurra muitos pesos para exatamente zero, porque o seu gradiente não diminui perto de zero. Armadilha: em redes, "weight decay" é o nome da L2 e, com Adam, só é equivalente no AdamW. ↗ Regularização
[18]Como o dropout funciona?
No treino, cada unidade é zerada com probabilidade p e as sobreviventes são multiplicadas por \(1/(1-p)\), para a ativação esperada não mudar; na inferência nada é zerado. Impede que unidades dependam umas das outras. Armadilha: esquecer o model.eval() deixa o dropout ligado na avaliação. ↗ Regularização
[19]BatchNorm no treino e na inferência?
No treino, normaliza cada canal com a média e a variância do batch atual e atualiza médias móveis; na inferência, usa essas médias móveis, para a saída de um exemplo não depender dos outros. Armadilha: batches muito pequenos dão estatísticas ruidosas e a diferença entre os dois modos vira bug quando se esquece o model.eval(). ↗ Regularização
[20]Por que os Transformers usam LayerNorm?
A LayerNorm normaliza cada exemplo (cada token) pelas suas próprias features: não depende do batch, calcula igual no treino e na inferência e funciona com sequências de comprimentos diferentes. Armadilha: a BatchNorm misturaria estatísticas de tokens de frases diferentes e de posições de padding. ↗ Regularização
[21]O que é early stopping?
Acompanhar a perda de validação e parar quando ela deixa de melhorar por algumas épocas (a paciência), guardando os pesos da melhor época. É o regularizador mais barato. Armadilha: a época escolhida é um hiperparâmetro ajustado na validação; o desempenho honesto continua sendo o do teste. ↗ Regularização
[22]O que é data augmentation?
Fabricar exemplos novos com transformações que não mudam o rótulo: recortes, espelhamentos e variações de cor em imagens, por exemplo. Ensina à rede as invariâncias que você sabe que valem. Armadilha: a transformação tem de preservar o rótulo (espelhar um "6" pode não preservar) e só se aplica no treino. ↗ Regularização
[23]Treino, validação e teste: para que cada um?
O treino ajusta os pesos; a validação escolhe tudo o que não é peso (arquitetura, taxa, época, limiar); o teste mede uma vez, no fim. Armadilha: cada decisão tomada olhando o teste o transforma em validação e a nota reportada fica otimista. ↗ Divisão
[24]O que é vazamento de dados?
Informação que não estaria disponível na hora da previsão entra no treino ou na avaliação: uma coluna que é consequência do alvo, o mesmo paciente nos dois lados, o futuro no treino, um scaler ajustado antes da divisão. Armadilha: um resultado bom demais para ser verdade quase sempre é vazamento. ↗ Vazamento
[25]Por que escalar as entradas de uma rede?
Features em escalas muito diferentes deformam a superfície da perda: a taxa de aprendizado boa para uma é ruim para outra e o treino fica lento ou instável. Padronizar (média 0, desvio 1) é o padrão. Armadilha: as estatísticas vêm só do treino; ajustar o scaler com o teste é vazamento. ↗ Escala
[26]Quando a acurácia engana?
Com classes desbalanceadas: com 1% de fraudes, prever sempre "não é fraude" acerta 99% sem aprender nada. Reporte a prevalência, precisão, recall e a curva PR. Armadilha: a ROC-AUC também pode parecer ótima num problema raro com precisão baixa. ↗ Métricas de classificação
[27]Precisão, recall e o limiar?
Precisão: dos marcados como positivos, quantos eram. Recall: dos positivos reais, quantos foram achados. Baixar o limiar aumenta o recall e baixa a precisão. Armadilha: 0,5 não é sagrado; o limiar sai do custo de cada tipo de erro e é escolhido na validação. ↗ Métricas de classificação
[28]Como tratar desbalanceamento numa rede?
Na ordem: a métrica certa, o limiar pelos custos, peso na perda (pos_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. ↗ Desbalanceamento
[29]MAE, RMSE ou R²?
MAE: erro médio na unidade do alvo, robusto a outliers. RMSE: mesma unidade, pune erros grandes (sempre ≥ MAE). R²: compara com prever a média; pode ser negativo fora do treino. Armadilha: a perda que você treina (MSE ou MAE) decide se a rede mira a média ou a mediana. ↗ Métricas de regressão
[30]O que a convolução compra em relação a uma camada densa?
Localidade e compartilhamento de pesos: um kernel 3×3 tem 9 pesos aplicados em todas as posições, contra milhares da camada densa equivalente, que ainda teria de reaprender o mesmo detector em cada posição. Armadilha: é uma restrição (um viés indutivo); com dados de sobra, arquiteturas com prior mais fraco, como o ViT, alcançam. ↗ CNNs
[31]Calcule a saída e os parâmetros de uma conv.
\(H_{out} = \lfloor (H_{in} + 2p - k)/s \rfloor + 1\). Parâmetros: \(C_{out}(C_{in} k^2 + 1)\), que não dependem do tamanho da imagem. Conv2d(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. ↗ CNNs
[32]O que é o campo receptivo?
A região da entrada que influencia uma unidade. Cada conv 3×3 com stride 1 o aumenta em 2 pixels; strides e pooling o fazem crescer muito mais rápido. Uma rede só reconhece um objeto se o campo receptivo das últimas camadas o cobre. Armadilha: o campo receptivo efetivo é bem menor que o teórico: o centro pesa muito mais que a borda. ↗ CNNs
[33]Equivariância, invariância e pooling?
A convolução é equivariante à translação: deslocar a entrada desloca o mapa de features. O que a classificação quer é invariância: a mesma classe em qualquer posição, obtida aos poucos com pooling, strides e o pooling global no fim. Armadilha: o stride quebra a equivariância exata; deslocar a imagem um pixel pode mudar a previsão. ↗ CNNs
[34]O que são Q, K e V?
Três projeções lineares de cada token. A query pergunta, as keys respondem quanto combinam (o produto escalar vira peso pelo softmax) e os values são o que se soma com esses pesos: \(\text{softmax}(QK^\top/\sqrt{d_k})\,V\). É um dicionário com consulta suave. Armadilha: os pesos dependem da entrada, ao contrário de uma camada densa. ↗ Q, K, V
[35]Por que dividir por √dk?
Com entradas de variância 1, o produto \(q \cdot k\) tem variância \(d_k\); scores grandes deixam o softmax quase one-hot e o gradiente dele some. Dividir por \(\sqrt{d_k}\) volta a variância para 1. Armadilha: não é para os pesos somarem 1; isso o softmax já faz. ↗ Q, K, V
[36]Máscara causal e multi-head?
A máscara causal põe \(-\infty\) nos scores das posições futuras antes do softmax, para o token i só ver os anteriores no treino em paralelo. Multi-head divide \(d\) em h cabeças com projeções próprias, cada uma livre para olhar uma relação diferente. Armadilha: a máscara de padding é outra e as duas costumam ser combinadas. ↗ Máscaras e cabeças
[37]De onde vem a posição dos tokens?
A atenção sozinha não vê ordem: embaralhar os tokens só embaralha as saídas. A posição entra por embeddings posicionais somados (senoidais ou aprendidos) ou, nos modelos atuais, pela RoPE, que gira q e k conforme a posição. Armadilha: posições aprendidas não extrapolam para sequências mais longas que as do treino. ↗ Embeddings
[38]Qual o custo da atenção? O que é o cache de KV?
A matriz de scores é \(n \times n\): memória e conta em \(O(n^2)\). Na geração, as keys e values dos tokens anteriores não mudam; o cache de KV os guarda para cada token novo calcular só a própria linha. Armadilha: o cache troca conta por memória e é ele, não os pesos, que limita o contexto longo no serviço. ↗ Custo da atenção
[39]Pré-LN ou pós-LN?
O Transformer de 2017 normalizava depois da soma residual (pós-LN); os modelos atuais normalizam dentro do ramo (\(a + f(\text{Norm}(a))\)) e deixam o caminho de identidade limpo para o gradiente. Treinam fundo sem warmup cuidadoso. Armadilha: no pré-LN o fluxo residual cresce com a profundidade, por isso há uma normalização final antes da saída. ↗ O que mudou desde 2017
[40]Como funciona a tokenização BPE?
Começa nos bytes e funde repetidamente o par mais frequente do corpus num token novo, até o tamanho de vocabulário escolhido. Palavras comuns viram um token; palavras raras, vários pedaços. Armadilha: o custo e o limite de contexto são em tokens e o português gasta mais tokens que o inglês para o mesmo texto. ↗ Tokens
[41]ViT ou CNN?
O ViT corta a imagem em patches e os trata como tokens; tem menos viés indutivo que a CNN (nada de localidade embutida), então precisa de mais dados ou de pré-treino para ganhar dela. Armadilha: em poucos dados e sem pré-treino, a CNN costuma ganhar; com pré-treino grande, o ViT escala melhor. ↗ Vision Transformers
[42]Quando não fazer fine-tuning?
Antes de ajustar pesos, tente o que é mais barato: um prompt melhor, exemplos no prompt, busca de contexto (RAG) ou um classificador simples sobre os embeddings de um modelo congelado. Fine-tuning vale quando você precisa de um formato, um estilo ou um domínio que esses caminhos não alcançam. Armadilha: fine-tuning ensina comportamento melhor do que ensina fatos novos. ↗ Transfer learning
[43]O que é LoRA?
Os pesos W ficam congelados e treina-se uma atualização de posto baixo, \(W + BA\), com \(B \in \mathbb{R}^{d \times r}\), \(A \in \mathbb{R}^{r \times k}\) e r pequeno: uma fração mínima dos parâmetros e da memória do otimizador. QLoRA faz o mesmo sobre o modelo quantizado em 4 bits. Armadilha: depois do treino, BA pode ser somada a W e a inferência não fica mais lenta. ↗ Transfer learning
[44]Pré-treino e pós-treino de um LLM?
O pré-treino prevê o próximo token num corpus enorme, sem rótulos humanos; o resultado continua texto. O pós-treino (ajuste supervisionado com instruções, depois preferências e aprendizado por reforço) o transforma num assistente que segue instruções. Armadilha: quase todo o conhecimento vem do pré-treino; o pós-treino muda sobretudo o comportamento. ↗ LLMs
[45]Temperatura, top-k e top-p?
O modelo devolve uma distribuição sobre o vocabulário. A temperatura divide os logits antes do softmax: baixa afia (perto de 0 vira greedy), alta achata. Top-k fica com os k tokens mais prováveis; top-p, com o menor conjunto cuja probabilidade soma p. Armadilha: temperatura 0 não garante a mesma resposta sempre num serviço real. ↗ Geração
[46]O que o VAE acrescenta a um autoencoder?
O autoencoder leva cada entrada a um ponto do espaço latente; entre os pontos há buracos e decodificar um ponto ao acaso dá lixo. O VAE codifica uma distribuição \(\mathcal N(\mu, \sigma^2)\) e um termo de KL a puxa para \(\mathcal N(0, I)\): o espaço fica contínuo e dá para amostrar. Armadilha: as amostras saem borradas; hoje o VAE serve sobretudo como compressor da difusão latente. ↗ VAE
[47]O ELBO e o truque da reparametrização?
O ELBO tem dois termos: a reconstrução (o decoder refaz x a partir de z) menos a KL entre \(q(z|x)\) e a priori. Sortear z não é diferenciável; escrevendo \(z = \mu + \sigma \odot \varepsilon\), com \(\varepsilon \sim \mathcal N(0, I)\), o acaso vira entrada e o gradiente passa por μ e σ. Armadilha: o β na frente da KL troca nitidez por um espaço latente mais organizado. ↗ VAE
[48]Como uma GAN treina e como falha?
Um gerador transforma ruído em amostras e um discriminador tenta separá-las das reais; os dois treinam em alternância, num jogo de soma zero. Falhas: colapso de modo (poucas saídas diferentes), gradiente que some quando o discriminador vence fácil e oscilação sem convergir. Armadilha: a perda do gerador não diz se as amostras melhoraram; é preciso olhar as amostras ou medir com FID. ↗ GANs
[49]Como a difusão treina? O que é o CFG?
Sorteia-se um passo t e um ruído ε, monta-se \(x_t\) a partir de \(x_0\) em forma fechada e a rede aprende a prever ε com MSE. A geração parte do ruído puro e remove ruído passo a passo. O classifier-free guidance combina a previsão com e sem o prompt e empurra na direção do prompt. Armadilha: guidance alto obedece mais e perde diversidade e naturalidade. ↗ Stable Diffusion
[50]Como o CLIP treina? O que é zero-shot?
Um encoder de imagem e um de texto levam pares a um espaço comum; num batch de N pares, a perda contrastiva puxa os N pares certos para cosseno alto e afasta os \(N^2 - N\) errados, com uma temperatura aprendida. Zero-shot: escreve-se uma frase por classe ("uma foto de um gato") e escolhe-se a de maior cosseno. Armadilha: zero-shot depende de as classes e o estilo das imagens terem aparecido no pré-treino. ↗ CLIP

Quiz

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.

Explique

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.

Mostre em código

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.

Repita com intervalos

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.

Marque com honestidade

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.

DiasO que fazer
1–2Fundamentos: perceptron, MLP e retropropagação à mão numa rede de 2 camadas; os formatos de cada tensor
3–4Otimização e profundidade: taxa de aprendizado, Adam, inicialização e residuais; brinque no playground até ver o gradiente sumir e voltar
5–6Regularização e avaliação: as duas curvas, dropout, BatchNorm, divisão, vazamento e as métricas à mão
7–8CNNs e atenção: as contas de formato e de parâmetros; uma cabeça de atenção à mão
9–10Transformers, transfer learning, LLMs e generativos: uma frase e uma armadilha para cada conceito
11–12Perguntas de caso em dupla, cronometradas, com o diagnóstico rápido; o loop de treino escrito de cabeça
13–14Quiz 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?"

1
Pergunte como a curva foi medida"A validação foi calculada em 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].
2
Dê o diagnóstico com o número"Até a época 8 a rede aprendeu o padrão; dali em diante, a distância entre as curvas cresce: ela está decorando o ruído do treino. É variância, não viés." Itens [16], [21].
3
Proponha, do mais barato ao mais caro"Primeiro, early stopping: guardo os pesos da época 8. Depois, weight decay e data augmentation, que nessas imagens preservam o rótulo; dropout na cabeça densa; mais dados, se for possível coletar. Se o conjunto for pequeno, partir de uma rede pré-treinada costuma valer mais que tudo isso." Itens [17], [22], [18], [42].
4
Diga como vai saber que funcionou"Comparo as variantes na validação, com mais de uma semente, contra o modelo da época 8 e um baseline; só no fim meço uma vez no teste." Itens [23], [26].

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

Preparação para entrevistas de deep learning Material de apoio · uso educacional