Learning Rate
La tasa de aprendizaje escala cada actualización de los pesos durante el entrenamiento. Por qué los valores demasiado altos provocan divergencia y los demasiado bajos lo estancan, además del calentamiento, los programas de decaimiento y el ajuste.
La tasa de aprendizaje es el hiperparámetro que determina cuánto cambian los pesos de un modelo en cada paso de entrenamiento. El descenso del gradiente calcula el gradiente de la función de pérdida, que señala la dirección en la que la pérdida aumenta más deprisa, y actualiza cada peso según w ← w − η × gradiente, donde η (eta) es la tasa de aprendizaje. «Tamaño del paso» es un sinónimo, y el código suele llamarla lr. Una tasa bien elegida permite que una red neuronal converja rápidamente a una buena solución; una mal elegida hace que el entrenamiento diverja o avance a paso de tortuga, por lo que el artículo de Leslie Smith sobre tasas de aprendizaje cíclicas la califica como el hiperparámetro más importante que ajustar para las redes profundas.
Demasiado alta, demasiado baja o en su punto#
La tasa de aprendizaje equilibra la velocidad y la estabilidad:
- Demasiado alta: Cada paso sobrepasa el mínimo. La pérdida oscila, da saltos o aumenta hasta convertirse en NaN, y el entrenamiento diverge.
- Demasiado baja: Cada paso apenas mueve los pesos. La pérdida disminuye despacio, el entrenamiento necesita muchas más épocas para converger y una ejecución con un presupuesto fijo acaba con infraajuste.
- Bien elegida: La pérdida disminuye de forma constante y se estabiliza cerca de un mínimo.
El siguiente script de PyTorch minimiza la pérdida w² desde el mismo punto de partida con cuatro tasas de aprendizaje:
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}")Con 0.01, el peso apenas pasa de 5 a 3.338 en 20 pasos, y con 0.1 llega a 0.058. Con 0.9, cambia de signo en cada paso (−4.0, 3.2, −2.56), pero aun así converge a 0.058; con 1.1, cada paso se pasa más y el peso crece hasta 191.688. El descenso del gradiente en una función cuadrática solo es estable mientras la tasa de aprendizaje sea menor que 2 dividido por la curvatura de la pérdida, es decir, su segunda derivada. La curvatura de w² es 2, así que el límite es exactamente 1.0, y una tasa de 0.5 alcanza el mínimo en un solo paso. En una red real, la dirección más pronunciada de la pérdida establece un límite similar, por lo que una tasa que funciona con un modelo o tamaño de lote puede hacer que otro diverja.
Programaciones de la tasa de aprendizaje#
Rara vez se mantiene la misma tasa durante todo el entrenamiento. Una programación la modifica con el tiempo:
- Calentamiento: Empieza con una tasa baja y la aumenta gradualmente durante las primeras épocas o iteraciones, lo que evita que los gradientes grandes e irregulares de las primeras iteraciones desestabilicen el entrenamiento.
- Reducción escalonada: Divide la tasa por un factor fijo, a menudo 10, en determinadas épocas o cuando la pérdida de validación se estanca.
- Reducción lineal y cosenoidal: Reduce la tasa gradualmente hacia un valor final bajo. El recocido cosenoidal sigue media onda cosenoidal, y su variante con reinicios en caliente vuelve a la tasa alta al comienzo de cada ciclo nuevo.
- Políticas cíclicas y de un ciclo: Durante el entrenamiento, mueve la tasa entre un límite inferior y uno superior.
Los pasos grandes al principio acercan rápidamente los pesos a una buena región, y los pasos pequeños al final permiten que se estabilicen en un mínimo en lugar de rebotar a su alrededor. YOLO26 el entrenamiento en Ultralytics empieza en lr0, realiza un calentamiento durante warmup_epochs (3 de forma predeterminada) y desciende linealmente hasta lr0 * lrf, o siguiendo una curva coseno con cos_lr=True. Con el valor predeterminado optimizer="auto", el entrenador elige por sí mismo tanto el optimizador como su tasa inicial: MuSGD a 0.01 para ejecuciones de más de 10,000 iteraciones y, en caso contrario, AdamW con una tasa ajustada al número de clases, por lo que lr0 solo se aplica cuando se configura explícitamente el optimizador:
from ultralytics import YOLO
# Carga un modelo nano YOLO26 preentrenado
model = YOLO("yolo26n.pt")
# Un optimizador explícito hace que se aplique lr0; la tasa desciende hasta lr0 * lrf siguiendo una curva coseno
results = model.train(data="coco8.yaml", epochs=10, optimizer="SGD", lr0=0.01, lrf=0.01, cos_lr=True)Elegir un valor inicial#
Los valores iniciales habituales son de 0.01 a 0.1 para el descenso del gradiente estocástico (SGD) con momentum y 0.001 para el optimizador Adam, el valor predeterminado propuesto en el artículo sobre Adam. El ajuste fino de un modelo preentrenado utiliza una tasa menor que el entrenamiento desde cero, porque los pasos grandes sobrescribirían las características que permiten el aprendizaje por transferencia.
La prueba del rango de tasas de aprendizaje del mismo artículo sobre tasas de aprendizaje cíclicas, incorporada en fastai como su buscador de tasas de aprendizaje, encuentra un valor adecuado en una ejecución breve. Aumenta la tasa después de cada minibatch mientras registra la pérdida, y el rango útil es aquel en el que la pérdida disminuye más rápido, antes de que empiece a dispararse.
Tasa de aprendizaje y términos relacionados#
- Algoritmo de optimización: La regla de actualización que utiliza la tasa de aprendizaje. Los optimizadores adaptativos, como Adam, escalan el paso de cada peso según su propio historial de gradientes, pero siguen multiplicando cada paso por una tasa de aprendizaje global.
- Momentum: Un hiperparámetro independiente que suma una fracción de la actualización anterior a la actual, suaviza la trayectoria y aumenta el tamaño efectivo del paso en direcciones coherentes.
- Decaimiento de pesos: Término de regularización que acerca los propios pesos a cero en cada paso, mientras que el decaimiento de la tasa de aprendizaje reduce el tamaño del paso con el tiempo.
- Tamaño del lote: Número de ejemplos cuya media se calcula para cada gradiente. Los lotes más grandes producen gradientes menos ruidosos y admiten tasas mayores; la regla de escalado lineal multiplica la tasa de aprendizaje por k cuando el tamaño del lote aumenta por k.










