Learning Rate
A taxa de aprendizagem determina a escala de cada atualização dos pesos durante o treino. Porque é que valores demasiado altos causam divergência e valores demasiado baixos bloqueiam o progresso, além de aquecimento, escalonamentos de decaimento e otimização.
A taxa de aprendizado é o hiperparâmetro que define o quanto os pesos do modelo mudam em cada etapa do treinamento. O gradiente descendente calcula o gradiente da função de perda, que aponta na direção em que a perda aumenta mais rapidamente, e atualiza cada peso como w ← w − η × gradiente, em que η (eta) é a taxa de aprendizado. Tamanho do passo é um sinônimo, e o código costuma chamá-la de lr. Uma taxa bem escolhida permite que uma rede neural convirja rapidamente para uma boa solução; uma taxa mal escolhida faz o treinamento divergir ou avançar lentamente. Por isso, o artigo de Leslie Smith sobre taxas de aprendizado cíclicas a chama de hiperparâmetro mais importante a ajustar para redes profundas.
Alta demais, baixa demais ou no ponto certo#
A taxa de aprendizado representa uma compensação entre velocidade e estabilidade:
- Alta demais: Cada etapa ultrapassa o mínimo. A perda oscila, dá saltos ou cresce até se tornar NaN, e o treinamento diverge.
- Baixa demais: Cada etapa mal altera os pesos. A perda diminui lentamente, o treinamento precisa de muito mais épocas para convergir e uma execução com orçamento fixo termina com subajuste.
- Bem escolhida: A perda diminui de forma constante e se estabiliza perto de um mínimo.
O script de PyTorch abaixo minimiza a perda w², partindo do mesmo ponto inicial, com quatro taxas de aprendizado:
import torch
# Minimize loss = w**2 (lowest at w = 0) from the same start with four learning rates
for lr in (0.01, 0.1, 0.9, 1.1):
w = torch.tensor(5.0, requires_grad=True)
optimizer = torch.optim.SGD([w], lr=lr)
path = []
for step in range(20):
optimizer.zero_grad()
loss = w**2
loss.backward()
optimizer.step() # w = w - lr * gradient
path.append(w.item())
print(f"lr={lr}: first steps {[round(v, 2) for v in path[:3]]}, after 20 steps w={path[-1]:.3f}")Com 0.01, o peso só avança lentamente de 5 para 3.338 em 20 etapas, e com 0.1 chega a 0.058. Com 0.9, ele troca de sinal a cada etapa (−4.0, 3.2, −2.56), mas ainda converge para 0.058; já com 1.1, cada etapa ultrapassa o valor anterior e o peso cresce para 191.688. O gradiente descendente em uma função quadrática permanece estável apenas enquanto a taxa de aprendizado for menor que 2 dividido pela curvatura da função de perda, sua segunda derivada. A curvatura de w² é 2, então o limite aqui é exatamente 1.0, e uma taxa de 0.5 chega ao mínimo em uma etapa. Em uma rede real, a direção mais íngreme da função de perda define um limite semelhante, por isso uma taxa que funciona para um modelo ou tamanho de lote pode fazer outro divergir.
Agendamentos da taxa de aprendizado#
Raramente o treinamento mantém uma única taxa do início ao fim. Um agendamento a altera ao longo do tempo:
- Aquecimento: Começa com uma taxa pequena e aumenta gradualmente durante as primeiras épocas ou iterações, evitando que os gradientes grandes e erráticos das primeiras iterações desestabilizem o treinamento.
- Decaimento em etapas: Divide a taxa por um fator fixo, geralmente 10, em épocas definidas ou quando a perda de validação atinge um platô.
- Decaimento linear e cossenoidal: Reduz suavemente a taxa em direção a um valor final pequeno. O resfriamento cossenoidal segue meia onda cossenoidal, e sua variante com reinicializações a quente retorna à taxa alta no início de cada novo ciclo.
- Políticas cíclicas e de ciclo único: varia a taxa entre um limite inferior e um superior durante o treinamento.
Passos grandes no início aproximam rapidamente os pesos de uma boa região, e passos pequenos no final permitem que eles se estabilizem num mínimo, em vez de ficarem oscilando em torno dele. O YOLO26 treinamento na Ultralytics começa em lr0, faz o aquecimento ao longo de warmup_epochs (3 por padrão) e decai linearmente até lr0 * lrf, ou segue uma curva cosseno com cos_lr=True. Com o optimizer="auto" padrão, o treinador escolhe o otimizador e sua taxa inicial automaticamente: MuSGD a 0.01 para execuções com mais de 10,000 iterações e, caso contrário, AdamW com uma taxa ajustada ao número de classes. Portanto, lr0 só se aplica quando o otimizador é definido explicitamente:
from ultralytics import YOLO
# Carrega um modelo nano YOLO26 pré-treinado
model = YOLO("yolo26n.pt")
# Um otimizador explícito faz com que lr0 se aplique; a taxa decai até lr0 * lrf ao longo de uma curva cosseno
results = model.train(data="coco8.yaml", epochs=10, optimizer="SGD", lr0=0.01, lrf=0.01, cos_lr=True)Escolher um valor inicial#
Os valores iniciais comuns variam de 0.01 a 0.1 para descida do gradiente estocástico (SGD) com momentum e são de 0.001 para o otimizador Adam, o padrão proposto no artigo sobre Adam. O ajuste fino de um modelo pré-treinado usa uma taxa menor do que o treinamento do zero, pois passos grandes sobrescreveriam as características que permitem o aprendizado por transferência.
O teste da faixa da taxa de aprendizado do mesmo artigo sobre taxas de aprendizado cíclicas, incluído no fastai como seu localizador de taxa de aprendizado, encontra um bom valor numa única execução curta. Ele aumenta a taxa após cada minib lote enquanto registra a perda, e a faixa útil é aquela em que a perda cai mais rapidamente, antes de começar a explodir.
Taxa de aprendizado e termos relacionados#
- Algoritmo de otimização: a regra de atualização que usa a taxa de aprendizado. Otimizadores adaptativos como Adam ajustam o passo de cada peso com base no histórico do próprio gradiente, mas ainda multiplicam cada passo por uma taxa de aprendizado global.
- Momentum: um hiperparâmetro separado que adiciona uma fração da atualização anterior à atual, suavizando o percurso e aumentando o tamanho efetivo do passo em direções consistentes.
- Decaimento de pesos: um termo de regularização que aproxima os próprios pesos de zero a cada passo, enquanto o decaimento da taxa de aprendizado reduz o tamanho do passo ao longo do tempo.
- Tamanho do lote: o número de exemplos usados no cálculo da média de cada gradiente. Lotes maiores produzem gradientes menos ruidosos e toleram taxas maiores, e a regra de escala linear multiplica a taxa de aprendizado por k quando o tamanho do lote aumenta por um fator k.










