AdaDelta é um algoritmo de otimização de taxa de aprendizado adaptativa projetado para o treinamento de redes neurais. Foi introduzido em 2012 por Matthew D. Zeiler no artigo "ADADELTA: An Adaptive Learning Rate Method". O método baseia-se no RMSProp ao eliminar a necessidade de uma taxa de aprendizado inicial especificada pelo usuário, derivando em vez disso tamanhos de passo por parâmetro a partir de uma janela de gradientes e atualizações de parâmetros passados. Isso o torna particularmente útil em cenários onde ajustar uma taxa de aprendizado global é difícil ou onde a paisagem da função de perda varia significativamente entre os parâmetros.
A inovação central do AdaDelta reside no uso de duas médias exponencialmente decrescentes: uma para os gradientes ao quadrado e outra para as atualizações de parâmetros ao quadrado. Ao contrário das variantes de descida do gradiente estocástica que dependem de uma taxa de aprendizado fixa ou agendada, o AdaDelta calcula o tamanho do passo como a razão entre a raiz quadrada média das atualizações recentes e a raiz quadrada média dos gradientes recentes. Essa razão é adimensional e se adapta automaticamente à escala dos gradientes, o que permite que o algoritmo mantenha um comportamento consistente em diferentes camadas de uma rede profunda sem intervenção manual.
Contexto Histórico e Motivação
O AdaDelta surgiu durante um período de rápido avanço nas técnicas de otimização de aprendizado profundo. No início dos anos 2010, treinar redes profundas era notoriamente desafiador devido a problemas como gradientes que desaparecem ou explodem e a sensibilidade dos agendamentos de taxa de aprendizado. Métodos como momentum e recorte de gradiente forneciam soluções parciais, mas ainda exigiam ajuste cuidadoso de hiperparâmetros. O RMSProp, introduzido por Geoffrey Hinton em suas notas de aula por volta de 2012, abordou o problema da escala dos gradientes ao normalizar as atualizações com uma média móvel dos gradientes ao quadrado, mas ainda exigia uma taxa de aprendizado.
Zeiler, então no Google (embora o trabalho tenha sido feito de forma independente), buscou criar um otimizador que fosse robusto à escolha da taxa de aprendizado. A motivação era prática: em experimentos de grande escala, encontrar uma taxa de aprendizado apropriada frequentemente consumia tempo e recursos computacionais significativos. O design do AdaDelta visava tornar o otimizador autoajustável, reduzindo o fardo sobre os praticantes e permitindo resultados mais reproduzíveis em diferentes problemas.
O artigo foi publicado no arXiv em junho de 2012 e rapidamente ganhou atenção dentro da comunidade de aprendizado de máquina. Foi um dos primeiros métodos a propor uma taxa de aprendizado totalmente adaptativa por dimensão, sem nenhum hiperparâmetro global para o tamanho do passo, um conceito que mais tarde influenciaria outros otimizadores como o Adam (que ainda requer uma taxa de aprendizado, mas com padrão de 0,001).
Formulação Matemática
O AdaDelta mantém duas variáveis de estado para cada parâmetro θ: uma média móvel exponencial dos gradientes ao quadrado, denotada E[g²]_t, e uma média móvel exponencial das atualizações de parâmetros ao quadrado, denotada E[Δθ²]_t. Em cada passo de tempo t, o algoritmo calcula o gradiente g_t da perda em relação a θ.
A primeira média é atualizada como:
E[g²]_t = ρ E[g²]_{t-1} + (1 - ρ) g_t²
onde ρ é uma constante de decaimento, tipicamente definida como 0,95. Isso é idêntico à atualização no RMSProp.
A segunda média rastreia as atualizações ao quadrado, mas é atualizada usando a mudança de parâmetro do passo atual. A raiz quadrada média (RMS) das atualizações de parâmetros é calculada como:
RMS[Δθ]_{t-1} = sqrt(E[Δθ²]_{t-1} + ε)
onde ε é uma constante pequena (frequentemente 1e-6) para evitar divisão por zero. A atualização de parâmetro é então:
Δθ_t = - (RMS[Δθ]_{t-1} / RMS[g]_t) * g_t
onde RMS[g]_t = sqrt(E[g²]_t + ε). Após aplicar a atualização, o algoritmo atualiza E[Δθ²]_t usando o Δθ_t recém-calculado:
E[Δθ²]_t = ρ E[Δθ²]_{t-1} + (1 - ρ) Δθ_t²
Esta formulação garante que o tamanho do passo seja a razão entre a raiz quadrada média das atualizações recentes e a raiz quadrada média dos gradientes recentes. Como tanto o numerador quanto o denominador têm as mesmas unidades (valores de parâmetros ao quadrado), o tamanho do passo resultante é adimensional, razão pela qual o método não requer uma taxa de aprendizado. A constante de decaimento ρ controla o tamanho da janela das médias móveis, com valores maiores dando mais peso ao histórico passado.
Comparação com RMSProp e Adam
O AdaDelta é frequentemente descrito como uma extensão do RMSProp porque usa o mesmo mecanismo de escala de gradiente. A diferença chave é que o RMSProp divide o gradiente pela raiz quadrada média dos gradientes e depois multiplica por uma taxa de aprendizado fixa η. Em contraste, o AdaDelta substitui esse η fixo pela raiz quadrada média das atualizações de parâmetros passadas. Essa substituição torna o tamanho do passo adaptativo não apenas à magnitude do gradiente, mas também à curvatura da função de perda, conforme refletido nas atualizações reais tomadas.
Comparado ao Adam, que foi introduzido em 2015 por Diederik Kingma e Jimmy Ba, o AdaDelta compartilha a ideia de usar momentos de segunda ordem dos gradientes. No entanto, o Adam também incorpora momentum por meio de uma estimativa de primeiro momento e usa correção de viés para os passos de tempo iniciais. O Adam ainda requer uma taxa de aprendizado, embora seu valor padrão de 0,001 funcione bem em muitas aplicações. O AdaDelta, por outro lado, não tem hiperparâmetro de taxa de aprendizado, o que pode ser uma vantagem quando a taxa de aprendizado ótima é desconhecida ou varia entre tarefas.
Estudos empíricos mostraram que o AdaDelta frequentemente tem desempenho comparável ao Adam em muitos benchmarks padrão, mas pode ser mais estável em situações onde as magnitudes dos gradientes mudam drasticamente ao longo do tempo. No entanto, o termo de momentum do Adam pode ajudar a escapar de mínimos locais de forma mais eficaz em alguns problemas não convexos. Em meados da década de 2020, o Adam e suas variantes (como AdamW) são mais amplamente usados na prática, particularmente no treinamento de transformadores e grandes modelos de linguagem, mas o AdaDelta permanece uma linha de base relevante e ainda é usado em certos domínios onde suas propriedades são benéficas.
Detalhes de Implementação e Variantes
Na prática, implementar o AdaDelta requer armazenar dois vetores adicionais por parâmetro, o que dobra o uso de memória em comparação com o SGD simples. Isso é semelhante aos requisitos de memória do Adam. A constante de decaimento ρ é tipicamente definida como 0,95, e o épsilon ε é definido como um valor pequeno como 1e-6 para garantir estabilidade numérica. Algumas implementações usam um posicionamento ligeiramente diferente do épsilon, adicionando-o dentro da raiz quadrada em vez de fora, mas o efeito é insignificante.
Uma variante comum é combinar o AdaDelta com esquemas de inicialização de pesos e normalização em lote para estabilizar ainda mais o treinamento. O método também é compatível com estratégias de aumento de dados e aprendizado curricular. Em configurações de treinamento distribuído, o AdaDelta pode ser usado com atualizações síncronas ou assíncronas, embora as médias móveis devam ser sincronizadas entre os trabalhadores para evitar divergência.
Vários frameworks de aprendizado profundo, incluindo TensorFlow, PyTorch e JAX, fornecem implementações integradas do AdaDelta. Por exemplo, o torch.optim.Adadelta do PyTorch permite que os usuários especifiquem os parâmetros rho e eps, com padrões de 0,9 e 1e-6 respectivamente (note que o rho padrão no PyTorch é 0,9, diferente do 0,95 do artigo original). Essa discrepância pode levar a comportamentos diferentes, então os praticantes devem estar cientes dos padrões específicos em seu framework escolhido.
Aplicações e Casos de Uso
O AdaDelta foi aplicado a uma ampla gama de tarefas de aprendizado de máquina, incluindo classificação de imagens, reconhecimento de fala e processamento de linguagem natural. No início dos anos 2010, foi usado para treinar redes convolucionais profundas em conjuntos de dados como CIFAR-10 e ImageNet, alcançando resultados competitivos com menos ajuste de hiperparâmetros do que o SGD com momentum. Também encontrou uso em redes neurais recorrentes para modelagem de sequências, onde as magnitudes dos gradientes podem variar significativamente entre os passos de tempo.
Uma vantagem notável do AdaDelta é sua robustez à escolha dos parâmetros iniciais. Como não requer uma taxa de aprendizado, é frequentemente usado como otimizador padrão em pipelines de aprendizado de máquina automatizado ou ao avaliar novas arquiteturas. Por exemplo, pesquisadores na Universidade de Toronto e no Stanford AI Lab usaram o AdaDelta em estudos comparando algoritmos de otimização, embora seja menos comum em modelos de IA generativa de ponta, que tipicamente favorecem o Adam.
Em aprendizado por reforço, o AdaDelta foi usado para treinar políticas para tarefas de controle contínuo, onde o sinal de recompensa pode ser ruidoso e a escala do gradiente varia. Seu tamanho de passo adaptativo ajuda a manter atualizações estáveis sem agendamento manual. No entanto, nos últimos anos, otimizadores mais avançados como Adam e LAMB se tornaram mais populares em treinamento em larga escala, em parte devido à sua compatibilidade com técnicas de aquecimento de taxa de aprendizado e recorte de gradiente.
Propriedades Teóricas e Limitações
De uma perspectiva teórica, o AdaDelta pode ser visto como um método de descida de gradiente com pré-condicionamento diagonal, onde o pré-condicionador é atualizado online com base no histórico de gradientes e atualizações. Isso é semelhante aos métodos de gradiente natural, mas com uma aproximação mais simples. O método garante que o tamanho do passo seja sempre positivo e limitado, assumindo que os gradientes são limitados, o que ajuda na convergência em configurações convexas. No entanto, provas formais de convergência para objetivos não convexos são limitadas, como é comum para métodos adaptativos.
Uma limitação do AdaDelta é que ele pode ser sensível à escolha de ρ. Se ρ for muito pequeno, as médias móveis esquecem informações passadas rapidamente, levando a atualizações erráticas; se for muito grande, o algoritmo pode responder lentamente a mudanças na paisagem da função de perda. A falta de uma taxa de aprendizado também significa que o usuário tem menos controle sobre o tamanho geral do passo, o que pode ser uma desvantagem quando um tamanho de passo específico é conhecido por funcionar bem.
Outro problema é que a regra de atualização do AdaDelta pode às vezes levar a tamanhos de passo muito pequenos nos estágios iniciais do treinamento, porque o E[Δθ²] inicial é zero. Isso é mitigado pelo termo épsilon, mas pode desacelerar a convergência inicialmente. Algumas implementações inicializam E[Δθ²] com um pequeno valor positivo para evitar isso, mas isso introduz um hiperparâmetro adicional.
Legado e Influência
A introdução do AdaDelta contribuiu para a tendência mais ampla de métodos de otimização adaptativa no aprendizado profundo. Demonstrou que uma taxa de aprendizado poderia ser completamente eliminada, o que inspirou pesquisas subsequentes em otimizadores sem hiperparâmetros. Embora não tenha alcançado a adoção generalizada do Adam, permanece uma parte importante do kit de ferramentas de otimização e é frequentemente citado em livros-texto e artigos de revisão sobre técnicas de aprendizado profundo.
O método também é notável por sua exposição clara e concisa no artigo original, que incluía derivações detalhadas e experimentos em várias tarefas de benchmark. O trabalho de Zeiler influenciou desenvolvimentos posteriores como Adam e AMSGrad, que abordaram algumas das deficiências teóricas dos métodos adaptativos. A partir da década de 2020, o AdaDelta ainda está incluído nas principais bibliotecas de aprendizado profundo e é ocasionalmente usado em pesquisa quando um otimizador sem taxa de aprendizado é desejado, embora seu uso prático tenha diminuído em relação a alternativas mais modernas.
Em resumo, o AdaDelta representa um passo significativo na evolução dos algoritmos de otimização para redes neurais, oferecendo uma maneira fundamentada de adaptar tamanhos de passo sem ajuste manual. Seu legado persiste no design de otimizadores subsequentes e na busca contínua por procedimentos de treinamento robustos e autoajustáveis.