Machine Learning · Insper
Redes Neurais
Abordagem avançada
Até onde dá para confiar no treino e quando uma rede vale a pena
O caminho desta parte
- Conferir o gradientediferenças finitas; uma passagem de volta
- Treinar um modelo não convexopontos de partida, solvers, regularização
- Profundidade e dadosaproximação universal; redes contra boosting
Cada etapa responde a uma pergunta: a retropropagação é mesmo a derivada e por que calculá-la assim? → o que muda quando a perda não é convexa? → por que ir fundo e quando uma rede é a ferramenta certa?
Etapa 1 · a retropropagação é mesmo a derivada?
Confira pelo caminho lento: diferenças finitas
A rede 2-2-1 da parte fundamental: \(x = (0{,}5;\ 0{,}8)\), alvo \(y = 0\), perda quadrática \(L\). Ponha os 9 parâmetros num vetor \(p\); seja \(e_i\) o vetor com 1 na posição \(i\) e 0 no resto. Empurre um parâmetro por vez em \(\varepsilon = 10^{-6}\):
\[ \frac{\partial L}{\partial p_i} \approx \frac{L(p + \varepsilon e_i) - L(p - \varepsilon e_i)}{2\varepsilon} \]
retropropagação × diferenças finitas
1,3 × 10−10
maior diferença entre os 9 gradientes: erro de arredondamento
um passo, \(\eta = 0{,}5\)
0,5249 → 0,4405
a perda neste exemplo, antes e depois de atualizar os 9 parâmetros
A retropropagação não é uma aproximação: é a derivada exata, calculada de forma eficiente.
Por que a retropropagação: o custo
diferenças finitas
2 passagens diretas extras por parâmetro: 18 para os 9 parâmetros; 4.820 para os 2.410 parâmetros de uma rede de dígitos 64-32-10
retropropagação
uma passagem de volta para todos os gradientes, mais ou menos o custo da passagem direta
Nas redes modernas, com bilhões de parâmetros, essa razão é o que torna o treino possível.
Com a perda de entropia cruzada no lugar da quadrática, os passos 1 e 2 viram um só, \(\delta_y = \hat y - y\) (aqui 0,725): o mesmo "previsão menos alvo" da regressão logística. Os passos 3 a 6 não mudam.
Etapa 2 · o que muda quando a perda não é convexa?
Não convexo: o ponto de partida importa
Preveja. A regressão logística chega ao mesmo mínimo de qualquer ponto de partida. A mesma rede com 2 unidades ocultas, a partir de 10 inícios aleatórios: todos terminam com a mesma acurácia? E com 8 unidades?
O XOR com ruído, 10 inícios aleatórios (random_state 0–9), acurácia de treino:
| unidades ocultas | sementes 0–9 |
| 2 | 0,76 0,66 0,74 0,94 0,94 0,94 0,94 0,94 0,74 0,66 |
| 8 | 0,98 0,98 0,97 0,98 0,98 0,96 0,99 0,99 0,97 0,95 |
Com 2 unidades, metade dos inícios fica presa num mínimo local pior (0,66 a 0,76 contra 0,94). Unidades extras dão ao gradiente mais caminhos, um dos motivos de as redes serem mais largas que o mínimo. Confira as conclusões em algumas sementes.
Otimizadores e regularização
adam
o padrão: mini-lotes de 200 linhas com momento e um tamanho de passo por parâmetro
sgd
gradiente descendente em mini-lotes, momento opcional
lbfgs
o treino inteiro a cada passo e uma aproximação da curvatura; o melhor em conjuntos pequenos
alpha: weight decay (decaimento de pesos), a penalidade L2 do Ridge em todo peso de toda camada.
early_stopping=True: separa 10% das linhas de treino e para depois de 10 épocas sem melhora nelas.
- dropout: desliga unidades sorteadas a cada passo; existe nas bibliotecas de deep learning, não no scikit-learn.
Etapa 3 · por que ir fundo e quando uma rede é a ferramenta certa?
Profundidade
- Uma camada oculta já é um aproximador universal: com unidades suficientes, ela aproxima qualquer função contínua numa região limitada tão bem quanto se queira (Cybenko, 1989; Hornik, 1991).
- O teorema garante existência: não que o treino encontre os pesos nem que o número de unidades seja razoável.
- Redes profundas chegam à mesma acurácia com muito menos unidades, porque cada camada constrói sobre a anterior: em imagens, bordas → texturas e partes → objetos.
Essa hierarquia é o motivo de o deep learning ter tomado a percepção (imagens, áudio, texto) a partir de 2012, quando dados e GPUs (graphics processing units, unidades de processamento gráfico) ficaram abundantes.
Dados tabulares: uma comparação honesta
Spambase, os mesmos 5 folds, quatro modelos. Preveja. Qual vence e por quanto?
| logística | MLP | MLP com parada antecipada | boosting | boosting − MLP |
| fold 0 | 0,921 | 0,951 | 0,946 | 0,954 | 0,003 |
| fold 1 | 0,928 | 0,953 | 0,950 | 0,955 | 0,002 |
| fold 2 | 0,926 | 0,946 | 0,937 | 0,966 | 0,021 |
| fold 3 | 0,934 | 0,949 | 0,942 | 0,965 | 0,016 |
| fold 4 | 0,913 | 0,941 | 0,935 | 0,939 | −0,002 |
| média | 0,924 | 0,948 | 0,942 | 0,956 | |
O boosting vence 4 dos 5 folds, por pouco: uma vantagem, não um nocaute. Mas ele chegou lá com os padrões e sem pré-processamento; a rede precisou de um escalonador, de uma arquitetura, de alpha e de um solver.
Quando uma rede é a primeira escolha?
| dados | primeira escolha |
| tabelas de colunas heterogêneas | gradient boosting ou uma random forest |
| imagens, áudio, vídeo | redes convolucionais, vision transformers |
| texto | transformers ou embeddings + um modelo linear |
| poucas linhas | modelos lineares, k-NN (k nearest neighbors, k vizinhos mais próximos), SVM (support vector machine, máquina de vetores de suporte) |
Benchmarks grandes concordam (Shwartz-Ziv & Armon, 2022; Grinsztajn et al., 2022): árvores dividem por um atributo de cada vez, então ignoram escala e colunas inúteis e seguem relações em degraus; uma rede precisa aprender tudo isso a partir de funções suaves.
Para onde ir: o curso de Deep Learning
- Esta aula para no perceptron multicamadas, no scikit-learn.
- Artificial Neural Networks and Deep Learning continua exatamente daqui: a retropropagação na forma matricial e depois o treino de redes profundas (inicialização, normalização, dropout).
- Depois, redes convolucionais e recorrentes, transformers e modelos generativos, em PyTorch.
O lab termina no motivo de as redes convolucionais existirem: um MLP não sabe quais pixels são vizinhos.
Lab avançado · cerca de 30 min, em duplas
Parada antecipada, uma comparação justa e o teste, passos 6 a 8
- Mesmo notebook, mesma sessão: os passos usam
X_train, y_train, cv, cv_summary, models e grid.
- Ler a curva de perda e testar a parada antecipada; comparar o MLP com a regressão logística e a floresta fold a fold; tocar o teste uma única vez.
- Simulações: outro ponto de partida (passo 6) e mova os dígitos um pixel (passo 8).
Ritmo: passo 6 e a primeira simulação em 12 min; passo 7 em 8 min; passo 8 e a segunda simulação em 10 min.