Zubnet AIAprenderWiki › Otimizador Adam
Treinamento

Otimizador Adam

Também conhecido como: Adam, AdamW
O algoritmo de otimização mais amplamente usado para treinar redes neurais. Adam (Adaptive Moment Estimation) combina momentum (usando uma média móvel de gradientes passados) com taxas de aprendizado adaptativas (escalando atualizações pelo inverso das magnitudes de gradientes passados). AdamW adiciona weight decay desacoplado para melhor regularização. Quase todo LLM moderno é treinado com AdamW.

Por que isso importa

Adam funciona bem em uma ampla variedade de tarefas e hiperparâmetros, tornando-o o otimizador padrão. Entendê-lo explica por que o treinamento "simplesmente funciona" na maioria das vezes (Adam adapta por parâmetro) e por que às vezes não funciona (os requisitos de memória do Adam são 2x os parâmetros do modelo, o que importa para modelos grandes). Também é a resposta para "qual otimizador devo usar?" em 90% dos casos.

Em profundidade

Adam mantém duas médias móveis por parâmetro: o primeiro momento (média dos gradientes — momentum) e o segundo momento (média dos gradientes ao quadrado — escalonamento adaptativo). A regra de atualização: parâmetro -= lr × m̂ / (√v̂ + ε), onde m̂ e v̂ são momentos com correção de viés. Parâmetros com gradientes consistentemente grandes recebem atualizações menores (já estão bem calibrados). Parâmetros com gradientes pequenos e ruidosos recebem atualizações maiores (precisam de movimento mais agressivo).

AdamW: A Correção

O Adam original aplicava weight decay adicionando-o ao gradiente antes de calcular os momentos, o que fazia o decay ser escalonado pela taxa de aprendizado adaptativa — não é o que se deseja. AdamW (Loshchilov & Hutter, 2017) desacopla o weight decay da atualização de gradiente, aplicando-o diretamente aos parâmetros. Isso parece uma correção menor mas melhora significativamente a generalização. Todo treinamento moderno de LLM usa AdamW.

Custo de Memória

Adam armazena dois valores adicionais por parâmetro (primeiro e segundo momentos), triplicando a memória necessária para o estado do otimizador: um modelo de 70B precisa de ~140 GB para pesos (FP16) mais ~280 GB para estados Adam (FP32), totalizando ~420 GB. É por isso que o particionamento de estado do otimizador (DeepSpeed ZeRO, FSDP) é essencial para treinamento de modelos grandes. Alguns otimizadores mais novos (Adafactor, CAME, Lion) reduzem esse overhead de memória com algum custo em estabilidade.

← Todos os termos
ESC