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

  1. Conferir o gradientediferenças finitas; uma passagem de volta
  2. Treinar um modelo não convexopontos de partida, solvers, regularização
  3. 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 ocultassementes 0–9
20,76 0,66 0,74 0,94 0,94 0,94 0,94 0,94 0,74 0,66
80,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ísticaMLPMLP com parada antecipadaboostingboosting − MLP
fold 00,9210,9510,9460,9540,003
fold 10,9280,9530,9500,9550,002
fold 20,9260,9460,9370,9660,021
fold 30,9340,9490,9420,9650,016
fold 40,9130,9410,9350,939−0,002
média0,9240,9480,9420,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?

dadosprimeira escolha
tabelas de colunas heterogêneasgradient boosting ou uma random forest
imagens, áudio, vídeoredes convolucionais, vision transformers
textotransformers ou embeddings + um modelo linear
poucas linhasmodelos 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.