Machine Learning · Insper

Gradiente Descendente & Regularização

Abordagem avançada

Como fica o gradiente com muitos atributos, por que a escala decide se a descida funciona e por que o L1 zera onde o L2 encolhe

O caminho desta parte

  1. Qualquer número de parâmetrosuma fórmula por peso; a forma matricial
  2. Ler a paisagemvales estreitos, tigelas redondas e escala
  3. A complexidade é relativaparâmetros contra pontos de dados
  4. Por dentro das penalidadescírculo e losango; o caminho; atributos correlacionados
Cada etapa responde a uma pergunta: qual é o gradiente com \(d\) atributos? → por que a descida ziguezagueia e o que a conserta? → complexo demais comparado com o quê? → por que o lasso seleciona e o ridge espalha?
Etapa 1 · qual é o gradiente com \(d\) atributos?

Uma fórmula para todo parâmetro

Modelo \(\hat y_i = w_0 + w_1 x_{i1} + \dots + w_d x_{id}\), resíduo \(e_i = y_i - \hat y_i\), perda \(J = \frac{1}{n}\sum_i e_i^2\). Com a coluna de uns \(x_{i0} = 1\), o intercepto é só mais um peso e \(\partial e_i / \partial w_j = -x_{ij}\) para todo \(j\):

\[ \frac{\partial J}{\partial w_j} = -\frac{2}{n}\sum_{i=1}^{n} e_i\,x_{ij} \]
parâmetrocoluna de \(X\) correspondentederivada parcial
\(w_0\)a coluna de uns\(-\frac{2}{n}\sum_i e_i \cdot 1\)
\(w_1\)\(x_1\)\(-\frac{2}{n}\sum_i e_i x_{i1}\)
\(w_j\)\(x_j\)\(-\frac{2}{n}\sum_i e_i x_{ij}\)
Preveja. A entrada \(j\) é a coluna \(j\) de \(X\) multiplicada pelos resíduos. Que produto de matrizes calcula as \(d+1\) entradas de uma vez?

Empilhando tudo: a forma matricial

\[ \nabla_w J = -\frac{2}{n}X^\top e = -\frac{2}{n}X^\top(y - Xw) \]

A tabela do slide anterior, escrita de forma compacta: uma linha de numpy para um milhão de parâmetros.

primeira leitura

iguale a zero: \(X^\top(y - Xw) = 0\), as equações normais. A mesma afirmação por dois caminhos: resolver de uma vez ou caminhar até lá.

segunda leitura

uma soma ponderada pelos resíduos: pontos bem previstos quase não votam, pontos muito errados dominam o passo.

Mova cada peso na direção para onde os erros apontam, numa quantidade proporcional ao tamanho deles. Vale palavra por palavra numa rede de 100 camadas.
Etapa 2 · por que a descida ziguezagueia e o que a conserta?

A paisagem que você está descendo

  • Cada ponto do plano \((w_0, w_1)\) é uma reta candidata; a altura é o erro \(J\) dela.
  • Minimizar = achar o fundo do vale; \(-\nabla J\) é a direção de descida mais íngreme.
Preveja. Na tabela feita à mão com os pontos \((1,2), (2,4), (3,7)\), \(w_1\) sentiu os resíduos 2,4 vezes mais que \(w_0\). Que forma você espera que o vale tenha?

Simulador: a superfície de perda

Clique à esquerda para soltar um início e aperte Passo. Depois ligue centrar x e comece de novo a partir de um ponto parecido.

Por que escalonar vem antes de ajustar

sem centrar

um vale longo e estreito: inclinar uma reta cujos \(x\) estão longe de zero também a sobe ou desce, então \(w_0\) e \(w_1\) ficam acoplados. O gradiente aponta atravessado ao vale; o caminho ziguezagueia e se arrasta.

centrado

uma tigela redonda: os mesmos passos vão quase direto à resposta e um \(\eta\) maior é tolerado.

A forma fechada devolve a mesma reta nos dois casos. A rota iterativa liga muito: padronizar remodela a superfície que o otimizador atravessa. O lab mede quanto.
Etapa 3 · complexo demais comparado com o quê?

"Complexo demais" depende de quantos dados você tem

Um polinômio de grau 10 tem 11 parâmetros livres. Erro de treino como raiz do erro quadrático médio (RMSE, de root mean squared error):

pontos de treino5810111530
RMSE de treino3·10⁻¹⁵1·10⁻¹¹1·10⁻¹¹0,400,771,53
  • Até 11 pontos a curva atravessa todos: erro de treino zero é sinal de que não sobrou informação.
  • A partir do décimo primeiro ponto ele precisa escolher e o erro sai do chão.
O mesmo modelo de grau 10 é complexo demais para 10 pontos e razoável para 100.
Etapa 4 · por que o lasso seleciona e o ridge espalha?

Por que o L1 zera e o L2 não

Escreva a penalidade como um orçamento: minimizar o erro sujeito a \(\sum |w_j| \le t\) (lasso, L1) ou \(\sum w_j^2 \le t^2\) (ridge, L2). Todo \(\alpha\) tem um \(t\) correspondente.

  • As curvas de nível do erro são elipses centradas na solução de OLS (ordinary least squares, mínimos quadrados ordinários).
  • A solução é onde a elipse que cresce toca primeiro a região.
Preveja. A região do ridge é um círculo; a do lasso é um losango com pontas sobre os eixos. Qual das duas costuma ser tocada exatamente sobre um eixo?

Simulador: círculo contra losango

Arraste o ótimo do OLS e conte quantas vezes cada região é tocada sobre um eixo.

Acompanhando o caminho

Oito atributos: três com sinal real, três puro ruído, dois quase cópias (\(c_1, c_2\), ambos de verdade 2). Preveja. Quando \(\alpha\) cresce, quais coeficientes o lasso derruba primeiro?

O que o caminho mostra

αlasso: não nulosridge: não nulos
0,058 / 88 / 8
0,27 / 88 / 8
0,66 / 88 / 8
2,05 / 88 / 8

O lasso remove primeiro os atributos de ruído; o ridge mantém os oito, pequenos.

O par correlacionado em \(\alpha = 2\):

lasso (1,89; 0,98): começa a escolher um, quase ao acaso.

ridge (1,02; 0,97): divide o peso por igual.

É por isso que o ridge é a resposta padrão à multicolinearidade e o lasso não.

O ridge também conserta a parte numérica

duas colunas quase idênticas

número de condição de \(X^\top X\) (maior autovalor sobre o menor): \(7{,}2\times10^{7}\)

OLS: \((1{,}000; -0{,}000)\), uma divisão arbitrária

\(\alpha = 0{,}01\) na diagonal

número de condição: \(6\times10^{3}\)

resposta: \((0{,}500; 0{,}500)\), com a soma preservada

Coeficientes estáveis, matriz invertível, convergência mais rápida do gradiente: um só mecanismo, o \(\alpha I\) elevando todos os autovalores.

Perfil prático

decisãopadrãoquando mudar
forma fechada ou gradiente descendente?forma fechada até alguns milhares de atributosmuitos atributos, muitas linhas ou nenhuma forma fechada: gradiente descendente estocástico (SGDRegressor) em mini-batches
taxa de aprendizadoexperimentar \(10^{-3}\), \(10^{-2}\), \(10^{-1}\)a perda cresce: menor; quase não se mexe: maior, depois de padronizar
escalapadronizar, dentro de um Pipelinenunca pular antes do gradiente descendente ou de uma penalidade
ridge, lasso ou Elastic Net?ridge: mantém todos os atributoslasso para uma lista curta de atributos; Elastic Net para muitos correlacionados
\(\alpha\)validação cruzada (RidgeCV, LassoCV)nunca o erro de treino, que sempre prefere \(\alpha = 0\)
Lab avançado · cerca de 35 min, em duplas

Escala, muitos atributos e mini-batches, passos 4 a 6

  • Mesmo notebook, mesma sessão: os passos usam x, y, gradient e train dos passos 1 a 3.
  • Passo 4: a paisagem dos três pontos, com e sem centrar. Passo 5: o gradiente numa linha, em 20.640 quarteirões da Califórnia, brutos e padronizados. Passo 6: mini-batches.
  • Notebook no Colab, a partir da seção 4.
  • Simulações: onde fica o limite (passo 4) e o freio dentro do motor, o ridge por gradiente descendente (passo 5).

Ritmo: passo 4 e a primeira simulação em 12 min; passo 5 e a segunda em 15 min; passo 6 em 8 min.