Descida do Gradiente Estocástica
A descida do gradiente estocástica (SGD) é um método de otimização iterativo que aproxima a descida do gradiente usando um subconjunto de dados selecionado aleatoriamente para estimar o gradiente. Variantes da SGD foram desenvolvidas para superar suas limitações, como convergência lenta e sensibilidade à taxa de aprendizado. Essas variantes incluem momentum, gradiente acelerado de Nesterov, AdaGrad, RMSProp e métodos adaptativos modernos como Adam, amplamente utilizados em Machine learning e Deep learning para treinar modelos de forma eficiente.
A ideia central da SGD remonta ao algoritmo de Robbins–Monro da década de 1950, que introduziu a aproximação estocástica para encontrar raízes. No aprendizado de máquina, a SGD minimiza uma função objetivo que geralmente é a soma de funções de perda por exemplo. A regra de atualização básica é \( w := w - \eta \nabla Q_i(w) \), onde \( \eta \) é a taxa de aprendizado e \( Q_i \) é a perda para o \( i \)-ésimo exemplo. Embora simples, essa atualização pode ser lenta para convergir e pode oscilar, especialmente em regiões de ravina da superfície de perda. As variantes abordam esses problemas modificando a direção da atualização, a taxa de aprendizado ou ambos.
Momentum
Momentum é uma técnica que acelera a SGD acumulando um vetor de velocidade na direção dos gradientes persistentes. Introduzido por Boris Polyak em 1964, o momentum imita a inércia física: a atualização no passo \( t \) é \( v_t = \mu v_{t-1} - \eta \nabla Q_i(w_t) \) e \( w_{t+1} = w_t + v_t \), onde \( \mu \) é o coeficiente de momentum (frequentemente 0,9). Isso ajuda o otimizador a se mover mais rápido ao longo de direções consistentes e a amortecer oscilações em regiões de alta curvatura. O momentum é particularmente eficaz no treinamento de redes profundas, pois suaviza as estimativas ruidosas do gradiente.
Gradiente Acelerado de Nesterov
O gradiente acelerado de Nesterov (NAG) é uma variante que adiciona um passo de antecipação. Proposto por Yurii Nesterov em 1983, o NAG calcula o gradiente na posição projetada \( w_t + \mu v_{t-1} \) em vez da posição atual. A atualização torna-se \( v_t = \mu v_{t-1} - \eta \nabla Q_i(w_t + \mu v_{t-1}) \) e \( w_{t+1} = w_t + v_t \). Essa correção reduz o overshooting e fornece uma estimativa mais precisa do gradiente futuro, levando a uma convergência mais rápida em problemas convexos. O NAG é frequentemente usado no treinamento de redes neurais e foi incorporado a muitas bibliotecas.
AdaGrad
AdaGrad, introduzido por John Duchi, Elad Hazan e Yoram Singer em 2011, adapta a taxa de aprendizado para cada parâmetro com base na soma histórica dos gradientes ao quadrado. Para cada parâmetro \( w_j \), a atualização é \( w_j := w_j - \frac{\eta}{\sqrt{G_{j,j} + \epsilon}} \nabla Q_i(w_j) \), onde \( G_{j,j} \) acumula os gradientes ao quadrado e \( \epsilon \) é uma pequena constante para estabilidade numérica. AdaGrad funciona bem com dados esparsos, pois dá atualizações maiores para características pouco frequentes. No entanto, o acúmulo dos gradientes ao quadrado faz com que a taxa de aprendizado diminua ao longo do tempo, o que pode interromper o treinamento prematuramente.
RMSProp
RMSProp, proposto por Geoffrey Hinton em suas notas de aula de 2012, aborda o problema da diminuição da taxa de aprendizado do AdaGrad usando uma média móvel exponencial dos gradientes ao quadrado. A atualização mantém uma média móvel \( E[g^2]_t = \rho E[g^2]_{t-1} + (1-\rho) g_t^2 \), onde \( \rho \) é a taxa de decaimento (tipicamente 0,9). A atualização do parâmetro é \( w := w - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} g_t \). O RMSProp é eficaz em problemas não convexos e tem sido amplamente utilizado no treinamento de redes recorrentes e modelos de aprendizado profundo.
Adam
Adam (Adaptive Moment Estimation), introduzido por Diederik Kingma e Jimmy Ba em 2015, combina momentum e RMSProp. Ele mantém tanto o primeiro momento (média) quanto o segundo momento (variância) dos gradientes, com correção de viés para os primeiros passos. As atualizações são \( m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \), \( v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \), e as versões corrigidas são \( \hat{m}_t = m_t / (1-\beta_1^t) \) e \( \hat{v}_t = v_t / (1-\beta_2^t) \). A atualização do parâmetro é \( w := w - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \). Adam tornou-se um otimizador padrão para muitas tarefas de Deep learning devido à sua robustez e rápida convergência. Variantes como AdamW, que desacopla a decaimento de peso, e AMSGrad, que aborda questões de convergência, também foram desenvolvidas.
Métodos Adaptativos Modernos
Além do Adam, vários métodos adaptativos foram propostos. AdaBelief (2020) ajusta o tamanho do passo com base na crença no gradiente atual. RAdam (Rectified Adam) introduz um retificador para estabilizar as fases iniciais do treinamento. Lion (Evolved Sign Momentum), descoberto pelo Google Brain em 2023, usa operações de sinal para reduzir o uso de memória e mostrou desempenho competitivo. Esses métodos são frequentemente usados no treinamento de modelos de linguagem de grande porte e outros sistemas em larga escala, onde eficiência e estabilidade são cruciais.
Considerações Práticas
A escolha da variante da SGD depende do problema. Para problemas convexos, o NAG frequentemente oferece garantias teóricas. Para redes profundas, Adam ou RMSProp são pontos de partida comuns. O agendamento da taxa de aprendizado, como warmup e decaimento, é frequentemente combinado com esses otimizadores. O tamanho do mini-lote também afeta o desempenho; lotes maiores fornecem gradientes mais suaves, mas exigem mais memória. No treinamento distribuído, variantes como LARS (Layer-wise Adaptive Rate Scaling) e LAMB (Layer-wise Adaptive Moments) são usadas para escalar o treinamento para grandes lotes, como visto em sistemas como AWS Trainium e Google Cloud.
Impacto no Aprendizado de Máquina
As variantes da SGD foram fundamentais para o sucesso da inteligência artificial moderna. Elas permitem o treinamento de redes profundas com milhões de parâmetros em conjuntos de dados massivos, como feito por organizações como OpenAI, Google DeepMind e Anthropic. A escolha do otimizador pode afetar significativamente a precisão do modelo e a velocidade de treinamento. A pesquisa continua a refinar esses métodos, com novas variantes surgindo regularmente. Compreender suas propriedades é essencial para profissionais em Machine learning e áreas relacionadas.
Ver Também
- Descida do gradiente
- Retropropagação
- Taxa de aprendizado
- Otimização