Otimização e Álgebra Linear para Machine Learning
2026-10-22
Considere o tempo para dar um único passo de descida em diferentes escalas (assumindo hardware que processa \(10^6\) gradientes/s):
| Dataset | Tamanho \(N\) | Tempo por Passo no BGD | Atualizações em 1 Hora |
|---|---|---|---|
| California Housing | \(16.640\) | \(\approx 16\text{ ms}\) | \(216.000\) |
| ImageNet | \(1{,}28 \times 10^6\) | \(\approx 1{,}3\text{ s}\) | \(2.800\) |
| Criteo Click Log | \(4 \times 10^9\) | \(\approx 67\text{ min}\) | Menos de 1 |
| Llama 3 (Tokens) | \(15 \times 10^{12}\) | \(\approx 173\text{ dias}\) | 0 (Inviável) |
A Conclusão Inescapável
Em Big Data, o gargalo não é a precisão com que conhecemos o gradiente, mas a frequência com que atualizamos os parâmetros!
Certeza Lenta (BGD):
Agilidade Ruidosa (SGD):
O Paradigma Estocástico
Não precisamos de certeza absoluta para aprender. Uma estimativa barata e ruidosa, repetida milhares de vezes por segundo, converge ordens de grandeza mais rápido do que um cálculo exato demorado.
Pergunta Aberta
Considere um problema de aprendizado com \(N = 2 \times 10^7\) exemplos e dimensão \(d = 100\). Suponha que seu hardware processa \(10^6\) gradientes por segundo. Se o BGD requer 500 iterações para convergir e o SGD puro atinge a mesma qualidade preditiva após processar 2 épocas completas, qual é o tempo total de computação de cada método? O que esse resultado revela sobre a métrica de “número de iterações” versus “número de épocas”?
Batch vs. Estocástico
Julgue V ou F — a questão só conta se acertar os 4 itens:
Batch vs. Estocástico — Resposta
Voltando à pergunta: O BGD leva \(500 \times (2\cdot 10^7 / 10^6) = 10.000\text{ s} \approx 2\text{h } 46\text{min}\). O SGD consome 2 épocas (\(4\cdot 10^7\) gradientes), levando apenas \(40\text{ s}\) — uma aceleração de 250 vezes! A contagem de iterações é enganosa: 500 passos de BGD fizeram 500 atualizações; 2 épocas de SGD fizeram 40 milhões de atualizações consecutivas.
BGD (Visão Telescópica):
SGD (Bússola no Nevoeiro):
\[ \mathbf{w}_{k+1} = \mathbf{w}_k - \alpha_k \underbrace{\nabla F(\mathbf{w}_k)}_{\text{Força Direcional Determinística}} - \alpha_k \underbrace{\boldsymbol{\xi}_k}_{\text{Flutuação Térmica Browniana}} \]
Conexão com o Gradiente
Trataremos o gradiente de uma amostra aleatória \(\nabla f_{i_k}(\mathbf{w})\) como um vetor aleatório em \(\mathbb{R}^d\), cuja média deve ser o gradiente verdadeiro e cuja covariância governa a intensidade do ruído.
Regra de Atualização do SGD Puro
A cada iteração \(k\), sorteie \(i_k \sim \text{Uniforme}\{1, \dots, N\}\) e atualize: \[\mathbf{w}_{k+1} = \mathbf{w}_k - \alpha_k \nabla f_{i_k}(\mathbf{w}_k)\]
O Significado de 1 Época (\(N\) gradientes avaliados):
Na primeira época, o SGD ajusta os parâmetros \(N\) vezes, entrando rapidamente na bacia ótima muito antes de o BGD concluir suas primeiras iterações.
Trajetórias no espaço de parâmetros \((w_{\text{MedInc}}, w_{\text{HouseAge}})\) e evolução da perda por época:
Pergunta Aberta
Se o SGD puro (\(B = 1\)) executa \(N\) atualizações por época e atinge a bacia ótima muito mais rápido do que o BGD, por que não descartamos o BGD em definitivo na totalidade dos problemas práticos de otimização? Em quais cenários matemáticos ou de engenharia o BGD ainda é preferível ao SGD?
Custo e Dinâmica do SGD
Julgue V ou F — a questão só conta se acertar os 4 itens:
Custo e Dinâmica do SGD — Resposta
Voltando à pergunta: O BGD é preferível quando \(N\) cabe confortavelmente na memória e exigimos altíssima precisão analítica (\(\epsilon < 10^{-8}\)), em otimização de segunda ordem (métodos de Newton e quasi-Newton BFGS), ou quando a função de perda não possui estrutura de soma finita de dados i.i.d.
Demonstração do Não-Enviesamento: \[\mathbb{E}[\mathbf{g}_k(\mathbf{w}) \mid \mathbf{w}] = \sum_{i=1}^N \mathbb{P}(i_k = i) \nabla f_i(\mathbf{w}) = \frac{1}{N}\sum_{i=1}^N \nabla f_i(\mathbf{w}) = \nabla F(\mathbf{w})\]
Significado Estatístico
O gradiente estocástico não tem desvio angular sistemático: em média, aponta com perfeita exatidão na direção do gradiente verdadeiro \(\nabla F(\mathbf{w})\).
\[\mathbf{g}_k(\mathbf{w}_k) = \underbrace{\nabla F(\mathbf{w}_k)}_{\text{Sinal Verdadeiro}} + \underbrace{\boldsymbol{\xi}_k}_{\text{Ruído de Amostragem}}\]
com média condicional nula: \(\mathbb{E}[\boldsymbol{\xi}_k \mid \mathbf{w}_k] = \mathbf{0}\).
Matriz de Covariância do Ruído \(\Sigma(\mathbf{w})\): \[\Sigma(\mathbf{w}) = \mathbb{E}[\boldsymbol{\xi}_k \boldsymbol{\xi}_k^T] = \frac{1}{N}\sum_{i=1}^N \nabla f_i(\mathbf{w})\nabla f_i(\mathbf{w})^T - \nabla F(\mathbf{w})\nabla F(\mathbf{w})^T\]
Variância Escalar Total: \[\sigma^2(\mathbf{w}) = \mathbb{E}[\|\boldsymbol{\xi}_k\|^2] = \operatorname{tr}(\Sigma(\mathbf{w})) = \frac{1}{N}\sum_{i=1}^N \|\nabla f_i(\mathbf{w}) - \nabla F(\mathbf{w})\|^2\]
Batch GD no Ótimo \(\mathbf{w}^\star\):
SGD no Ótimo \(\mathbf{w}^\star\):
Consequência Inevitável
Com taxa de aprendizado constante \(\alpha\), o SGD nunca atinge um ponto fixo. Ele flutua permanentemente ao redor de \(\mathbf{w}^\star\).
Propriedades do Ruído
Julgue V ou F — a questão só conta se acertar os 4 itens:
Propriedades do Ruído — Resposta
Voltando à pergunta: \(F(w) = \frac{1}{2}w^2 - 3w + 5 \implies w^\star = 3\). No ótimo: \(f_1'(3) = 1\) e \(f_2'(3) = -1\). O gradiente médio é \(\frac{1}{2}(1 - 1) = 0\), mas a variância é \(\sigma^2(w^\star) = \frac{1}{2}(1^2 + (-1)^2) = 1 > 0\)! Se \((x_2, y_2) = (1, 2)\), teríamos \(w^\star = 2\), com \(f_1'(2) = 0\) e \(f_2'(2) = 0\), zerando a variância no ótimo.
Redução da Variância (Com Reposição): \[\operatorname{Var}(\mathbf{g}_{\mathcal{B}}(\mathbf{w})) = \frac{\sigma^2(\mathbf{w})}{B}\]
Amostragem Sem Reposição (Particionamento em Épocas): \[\operatorname{Var}(\mathbf{g}_{\mathcal{B}}(\mathbf{w})) = \underbrace{\left(\frac{N - B}{N - 1}\right)}_{\text{Fator de População Finita}} \frac{\sigma^2(\mathbf{w})}{B}\]
Se \(\mathbf{u}_i = \nabla f_i - \nabla F\), então \(\sum_{i=1}^N \mathbf{u}_i = \mathbf{0}\).
1. Produtos Cruzados Negativos: \[0 = \left\|\sum_{i=1}^N \mathbf{u}_i\right\|^2 = \sum_{i=1}^N \|\mathbf{u}_i\|^2 + \sum_{i \neq j}\langle \mathbf{u}_i, \mathbf{u}_j \rangle \implies \mathbb{E}_{i \neq j}[\langle \mathbf{u}_i, \mathbf{u}_j \rangle] = -\frac{\sigma^2}{N-1}\]
2. Variância da Média Amostral sem Reposição: \[\operatorname{Var}(\mathbf{g}_{\mathcal{B}}) = \frac{1}{B^2} \left[ B \sigma^2 + B(B-1)\left(-\frac{\sigma^2}{N-1}\right) \right] = \frac{\sigma^2}{B} \left(1 - \frac{B-1}{N-1}\right) = \left(\frac{N-B}{N-1}\right) \frac{\sigma^2}{B}\]
Intuição da Anti-Correlação
Em amostragem sem reposição, sortear um exemplo com desvio positivo aumenta a probabilidade de os próximos exemplos terem desvios negativos, cancelando parte do ruído!
Caso \(B = 1\) (SGD Puro):
Caso \(B \in [32, 256]\) (Mini-Batch):
O Ponto Doce (Sweet Spot)
O mini-batch (\(B \in [32, 256]\)) extrai \(100\%\) do paralelismo físico da GPU sem sacrificar a frequência de atualizações de pesos.
Validação empírica no California Housing comparada à curva teórica \(\sigma^2/B\):
Variância e Hardware
Julgue V ou F — a questão só conta se acertar os 4 itens:
Variância e Hardware — Resposta
Voltando à pergunta: Para \(B=1\), throughput \(= 1 / 0{,}0005\text{ s} = 2.000\text{ amostras/s}\). Para \(B=64\), throughput \(= 64 / 0{,}0008\text{ s} = 80.000\text{ amostras/s}\) (\(40\times\) maior!). Para \(B=512\), throughput \(= 512 / 0{,}004\text{ s} = 128.000\text{ amostras/s}\) (\(1{,}6\times\) maior). Com \(B=1\), a GPU ficava ociosa; com \(B=64\), os núcleos foram ocupados; com \(B=512\), o hardware já estava saturado.
\[\mathbf{w}_{k+1} = \mathbf{w}_k - \alpha (\nabla F(\mathbf{w}_k) + \boldsymbol{\xi}_k)\]
Tomando a esperança do erro quadrático em relação a \(\mathbf{w}^\star\): \[\mathbb{E}[\|\mathbf{w}_{k+1} - \mathbf{w}^\star\|^2] \le (1 - 2\alpha \mu)\mathbb{E}[\|\mathbf{w}_k - \mathbf{w}^\star\|^2] + \alpha^2 \sigma^2\]
No Limite Assintótico (\(k \to \infty\)): \[\lim_{k \to \infty} \mathbb{E}[\|\mathbf{w}_k - \mathbf{w}^\star\|^2] \le \frac{\alpha \sigma^2}{2\mu}\]
A Bola de Ruído (Noise Ball)
Para garantir convergência com probabilidade 1 (\(\mathbf{w}_k \xrightarrow{\text{q.c.}} \mathbf{w}^\star\)), a sequência \(\{\alpha_k\}\) deve satisfazer:
1. Capacidade de Exploração Infinita: \[\sum_{k=1}^\infty \alpha_k = \infty\] Garante que a distância percorrível é ilimitada; o algoritmo nunca congela prematuramente no caminho.
2. Supressão do Ruído Estocástico: \[\sum_{k=1}^\infty \alpha_k^2 < \infty\] Garante que a variância acumulada pelo ruído é estritamente finita, drenando a agitação browniana.
Exemplo canônico: \(\alpha_k = \frac{\alpha_0}{k}\) satisfaz ambas as condições (\(\sum \frac{1}{k} = \infty\) e \(\sum \frac{1}{k^2} = \frac{\pi^2}{6} < \infty\)).
Step Decay: \[\alpha_e = \alpha_0 \gamma^{\lfloor e/E \rfloor}\] - Degraus clássicos (ex: divide por 3 a cada \(2.500\) passos). - Encolhe a bola de ruído bruscamente em cada patamar.
Polinomial: \[\alpha_k = \frac{\alpha_0}{(1 + \gamma k)^p}\] - Decaimento suave e contínuo (em geral \(p = 0{,}5\)). - Muito comum em otimizadores adaptativos.
Cosine Annealing: \[\alpha_t \propto 1 + \cos\left(\frac{t}{T}\pi\right)\] - Curva sinusoidal suave até \(\alpha_{\min}\). - Padrão em Visão Computacional e LLMs.
Evolução do erro \(\|\mathbf{w}_k - \mathbf{w}^\star\|^2\) sob diferentes cronogramas de aprendizado:
Mínimos Estreitos (Sharp):
Mínimos Planos (Flat):
O Ruído como Regularizador Implícito
O ruído do SGD atua como um processo de recozimento estocástico (simulated annealing), empurrando os parâmetros para regiões amplas que generalizam muito melhor!
Pergunta Aberta
Analise o comportamento do SGD em uma paisagem de perda fortemente anisotrópica (como um desfiladeiro elíptico alongado com \(\kappa = \lambda_{\max}/\lambda_{\min} \gg 1\), típico do California Housing antes do escalonamento). Se a Hessiana possui autovalores muito discrepantes, o que ocorre com a trajetória do SGD? Como as flutuações estocásticas do ruído interagem com o mau condicionamento do terreno?
Convergência e Paisagem
Julgue V ou F — a questão só conta se acertar os 4 itens:
Convergência e Paisagem — Resposta
Voltando à pergunta: Em vales mal-condicionados (\(\kappa \gg 1\)), o gradiente aponta quase transversalmente às curvas de nível. O SGD sofre duplamente: o passo precisa ser minúsculo na direção íngreme para evitar explosão, mas o ruído estocástico induz ziguezagues frenéticos na direção suave, tornando o avanço lento e motivando métodos com inércia física (Momento da Aula 11).
| Característica | BGD | SGD Puro (\(B = 1\)) | Mini-Batch (\(B = 32\)) |
|---|---|---|---|
| Custo por Iteração | \(\mathcal{O}(Nd)\) | \(\mathcal{O}(d)\) | \(\mathcal{O}(Bd)\) |
| Atualizações por Época | 1 | \(N\) | \(N/B\) |
| Variância do Gradiente | \(0\) | \(\sigma^2\) | \(\sigma^2 / B\) |
| Aproveitamento de GPU | Latência de Lote | Péssimo | Ótimo (BLAS-3) |
| Com \(\alpha\) Constante | Para em \(\mathbf{w}^\star\) | Bola de Ruído | Bola Reduzida |
| Escape de Selas | Ruim | Excelente | Excelente |
| Generalização no Teste | Padrão | Mínimos Planos | Mínimos Planos |
O Que Vimos Hoje (Aula 10):
O Próximo Passo (Aula 11):
UNICAMP — Instituto de Computação