Optimization Algorithm
Un algoritmo de optimización ajusta los pesos del modelo para minimizar la pérdida durante el entrenamiento. Explica cómo funcionan SGD, Adam y otros optimizadores, sus usos y su código.
Un algoritmo de optimización es el motor computacional central que impulsa el entrenamiento de los modelos de aprendizaje automático (ML) y aprendizaje profundo (DL). Su principal responsabilidad es ajustar iterativamente los pesos del modelo y los sesgos internos para minimizar el error entre los resultados predichos y los objetivos reales. Puedes visualizar este proceso como un excursionista que intenta bajar una montaña envuelta en niebla hasta llegar al punto más bajo del valle. El algoritmo de optimización actúa como guía y determina la dirección y la longitud del paso que debe dar el excursionista para llegar al fondo, que corresponde al estado en que se minimiza la función de pérdida y se maximiza la precisión predictiva del modelo.
Cómo funcionan los algoritmos de optimización#
El entrenamiento de una red neuronal implica un ciclo repetitivo de predicción, cálculo del error y actualización de parámetros. El algoritmo de optimización controla la fase de «actualización» de este bucle. Una vez procesado un lote de datos de entrenamiento, el sistema calcula un gradiente —un vector que apunta en la dirección del mayor aumento del error— mediante un método llamado retropropagación.
A continuación, el optimizador actualiza los parámetros del modelo en la dirección opuesta al gradiente para reducir el error. La magnitud de esta actualización se rige por un hiperparámetro fundamental conocido como tasa de aprendizaje. Si el paso es demasiado grande, el modelo podría sobrepasar el mínimo global; si es demasiado pequeño, el entrenamiento podría volverse prohibitivamente lento o quedarse atascado en un mínimo local. El proceso fundamental de todo optimizador basado en gradientes consiste en calcular el gradiente repetidamente y descender por el paisaje de pérdida.
Tipos habituales de algoritmos de optimización#
Cada problema requiere estrategias distintas. Aunque existen muchas variantes, algunos algoritmos clave predominan en el desarrollo moderno de la IA:
- Descenso de gradiente estocástico (SGD): Método clásico que actualiza los parámetros utilizando un solo ejemplo o un lote pequeño en lugar de todo el conjunto de datos. Es un método eficiente desde el punto de vista computacional y se utiliza ampliamente en bibliotecas como Scikit-learn.
- Optimizador Adam: Adam, cuyo nombre corresponde a Adaptive Moment Estimation, ajusta individualmente la tasa de aprendizaje de cada parámetro. Se describe en el artículo de investigación fundamental de Kingma y Ba sobre Adam y suele ser la opción predeterminada para el entrenamiento de propósito general por su velocidad y sus propiedades de convergencia.
- AdamW: Variante de Adam que desacopla la caída de pesos de la actualización del gradiente, lo que mejora la generalización. Suele ser el optimizador preferido para entrenar arquitecturas de vanguardia como los Transformers. Ultralytics YOLO26 selecciona AdamW automáticamente para entrenamientos cortos y MuSGD, una combinación de SGD y el optimizador Muon, para los más largos.
Aplicaciones en el mundo real#
Los algoritmos de optimización funcionan discretamente entre bastidores en casi todas las soluciones de IA exitosas y convierten los datos en información práctica.
-
Vehículos autónomos: En la tecnología de conducción autónoma, los sistemas de detección de objetos deben reconocer al instante a peatones, semáforos y otros coches. Durante el entrenamiento de estos sistemas para la IA en automoción, un algoritmo de optimización procesa millones de imágenes de carreteras y ajusta la red para minimizar los errores de detección. Así se garantiza que el coche se detenga de forma fiable cuando vea a una persona y se eviten accidentes.
-
Análisis de imágenes médicas: En aplicaciones de IA aplicada a la sanidad, como la identificación de tumores en resonancias magnéticas, la precisión es innegociable. Los optimizadores guían el entrenamiento de las redes neuronales convolucionales (CNNs) para que distingan tejido maligno de tejido sano con una gran sensibilidad, lo que reduce el riesgo de falsos negativos en diagnósticos críticos.
Diferenciación de conceptos relacionados#
Para entender bien el flujo de trabajo, es importante diferenciar el algoritmo de optimización de otros componentes del proceso de aprendizaje.
- Algoritmo de optimización frente a función de pérdida: La función de pérdida actúa como un «marcador»: calcula un valor numérico, como el error cuadrático medio, que representa cuánto se equivocan las predicciones del modelo. El algoritmo de optimización es el «estratega» que utiliza esa puntuación para ajustar los pesos y mejorar el rendimiento en la siguiente ronda.
- Algoritmo de optimización frente a ajuste de hiperparámetros: El algoritmo de optimización aprende los parámetros internos (pesos) durante los ciclos de entrenamiento. El ajuste de hiperparámetros consiste en elegir los mejores parámetros externos —como el propio optimizador, el tamaño del lote o la tasa de aprendizaje inicial— antes de que empiece el entrenamiento. A menudo se utilizan herramientas automatizadas como Ray Tune para encontrar la combinación óptima de estos parámetros externos.
Implementación de la optimización en Python#
En los frameworks modernos, seleccionar un algoritmo de optimización suele hacerse con un solo argumento. El siguiente ejemplo muestra cómo entrenar un modelo YOLO26 con el optimizador AdamW dentro del paquete ultralytics. Los usuarios también pueden aprovechar Ultralytics Platform para gestionar estas sesiones de entrenamiento sin código.
from ultralytics import YOLO
# Carga el modelo YOLO26 más reciente (recomendado para proyectos nuevos)
model = YOLO("yolo26n.pt")
# Entrenar el modelo con el algoritmo de optimización 'AdamW'
# El optimizador actualiza iterativamente los pesos para minimizar la pérdida en el conjunto de datos
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")Si te interesan los mecanismos de bajo nivel, marcos como PyTorch Optimizers y TensorFlow Keras Optimizers ofrecen documentación detallada sobre cómo implementar y personalizar estos algoritmos para arquitecturas de investigación propias.










