Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Adam Optimizer

Adam combina el momento con tamaños de paso por parámetro, escalados según la magnitud reciente de los gradientes. Incluye la regla de actualización, los valores predeterminados, AdamW y la comparación entre Adam y SGD.

El optimizador Adam, abreviatura de estimación adaptativa de momentos, es un algoritmo de optimización para entrenar redes neuronales que asigna a cada parámetro un tamaño de paso adaptativo propio. Kingma y Ba lo presentaron en Adam: un método para la optimización estocástica; amplía el descenso de gradiente estocástico (SGD) con promedios móviles de los gradientes anteriores y de sus cuadrados. Su rápido progreso inicial y sus valores predeterminados tolerantes hicieron de Adam el optimizador de partida más habitual en el aprendizaje profundo, y su variante AdamW es la opción estándar para entrenar transformadores y modelos de lenguaje grandes.

Cómo funciona Adam#

El entrenamiento minimiza una función de pérdida actualizando repetidamente cada peso en función de su gradiente. El SGD normal multiplica todos los gradientes por la misma tasa de aprendizaje. Adam mantiene dos valores adicionales por parámetro y los actualiza en cada paso t a partir del gradiente actual g:

  1. Primer momento (momento): m = β1·m + (1 − β1)·g, un promedio de gradientes con decaimiento exponencial que mantiene la actualización avanzando en una dirección coherente.
  2. Segundo momento: v = β2·v + (1 − β2)·g², un promedio decreciente de los gradientes al cuadrado que registra el tamaño habitual de los gradientes de cada parámetro.
  3. Corrección del sesgo: m̂ = m / (1 − β1^t) y v̂ = v / (1 − β2^t), que compensan el hecho de que ambos promedios empiezan en cero.
  4. Actualización: θ = θ − lr · m̂ / (√v̂ + ε).

Los valores predeterminados del artículo, que también utiliza torch.optim.Adam de PyTorch, son lr = 0.001, β1 = 0.9, β2 = 0.999 y ε = 1e-8. Dividir entre √v̂ normaliza cada paso según el tamaño típico del gradiente del parámetro, de modo que los pasos se mantienen cerca de la tasa de aprendizaje tanto si los gradientes son minúsculos como enormes, y se reducen en las direcciones ruidosas donde los gradientes positivos y negativos se cancelan dentro de m̂. El siguiente fragmento compara el primer paso de SGD y Adam en dos parámetros cuyos gradientes tienen una diferencia de escala de 1000x:

import torch

# Two parameters whose gradients differ in scale by 1,000x
scale = torch.tensor([1000.0, 1.0])

for name, optimizer_cls in [("SGD", torch.optim.SGD), ("Adam", torch.optim.Adam)]:
    w = torch.zeros(2, requires_grad=True)
    optimizer = optimizer_cls([w], lr=0.001)

    loss = (scale * w).sum()  # gradient is [1000, 1]
    loss.backward()
    optimizer.step()
    print(f"{name} first step: {[round(v, 4) for v in w.tolist()]}")

SGD desplaza el primer parámetro a -1.0 y el segundo a -0.001, una diferencia de 1000x que sigue la escala de los gradientes. Adam desplaza ambos exactamente lo mismo que la tasa de aprendizaje, -0.001, porque su paso normalizado depende de la dirección y la coherencia del gradiente, no de su tamaño bruto.

Adam y AdamW#

Adam, tal como se implementa habitualmente, aplica una disminución de pesos, una forma de regularización, como penalización L2 añadida al gradiente; después, esa penalización se divide también entre √v̂, junto con todo lo demás, por lo que apenas se regularizan los pesos con gradientes grandes. La disminución de pesos desacoplada de Loshchilov y Hutter soluciona este problema reduciendo directamente los pesos en cada paso, de forma independiente de la actualización adaptativa. En los experimentos del artículo, el AdamW resultante mejoró la generalización de Adam en la clasificación de imágenes y está disponible como torch.optim.AdamW.

Adam frente a SGD#

El SGD con momento utiliza una tasa de aprendizaje global y almacena un búfer por parámetro, mientras que Adam almacena dos: 8 bytes por parámetro en precisión de 32 bits, lo que supone 56 GB de estado del optimizador para un modelo de 7000 millones de parámetros. Adam suele avanzar más rápido al principio, es menos sensible a la tasa de aprendizaje y entrena transformadores de forma mucho más fiable que SGD. Un SGD bien ajustado suele alcanzar una exactitud final igual o superior en modelos convolucionales de imagen, y Wilson et al. observaron que los métodos adaptativos a menudo generalizaban peor que SGD en las tareas de clasificación de imágenes y de lenguaje que evaluaron.

El entrenamiento de Ultralytics YOLO refleja esta compensación: el valor predeterminado optimizer="auto" selecciona AdamW, con una tasa de aprendizaje inicial ajustada al número de clases, para ejecuciones de hasta 10 000 iteraciones, y cambia a MuSGD, una combinación de SGD y Muon, para planificaciones más largas. Si configuras el optimizador explícitamente, también tienes que definir la tasa de aprendizaje, ya que el valor predeterminado lr0=0.01 está pensado para SGD y es diez veces superior a la tasa habitual de Adam.

from ultralytics import YOLO

# Carga un modelo YOLO26n preentrenado
model = YOLO("yolo26n.pt")

# Entrena con AdamW y una tasa de aprendizaje inicial adecuada para Adam
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW", lr0=0.001)

Cuando YOLO26 entrena con un optimizador de la familia Adam, el argumento momentum (valor predeterminado: 0.937) establece β1, mientras que β2 permanece fijo en 0.999.

  • AdaGrad: Divide cada paso por la raíz de la suma de todos los gradientes al cuadrado anteriores, por lo que el tamaño de los pasos solo disminuye; esto resulta adecuado para características dispersas, pero ralentiza los entrenamientos largos.
  • RMSProp: Sustituye la suma acumulada de AdaGrad por un promedio de los gradientes al cuadrado con decaimiento exponencial. Adam es, básicamente, RMSProp más momento y corrección del sesgo.
  • Muon: Optimizador para las matrices de pesos 2D de las capas ocultas que ortogonaliza cada actualización del momento mediante iteraciones de Newton–Schulz y mantiene un único búfer de estado por parámetro, la mitad del estado del optimizador de Adam.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático