Online Learning
El aprendizaje en línea actualiza un modelo con un ejemplo o un minilote cada vez que llegan datos, de modo que sigue aprendiendo y se adapta a la deriva conceptual sin necesidad de volver a entrenarlo.
El aprendizaje en línea es un enfoque de aprendizaje automático en el que un modelo aprende de datos que llegan en secuencia y se actualiza tras cada ejemplo o pequeño lote, en lugar de entrenarse una sola vez con un conjunto de datos fijo. En cada paso, el modelo realiza una predicción, recibe el resultado real, calcula su pérdida y ajusta sus parámetros antes de que llegue el siguiente ejemplo. Este enfoque es adecuado para datos que llegan en forma de flujo, como clics, transacciones o lecturas de sensores; para datos demasiado voluminosos para almacenarlos; y para relaciones que cambian con el tiempo. El aprendizaje por lotes o sin conexión es lo contrario: el modelo se entrena con todos sus datos de entrenamiento a la vez y permanece fijo hasta que vuelve a entrenarse.
Cómo funciona el aprendizaje en línea#
El perceptrón de Frank Rosenblatt de 1958 era un modelo de aprendizaje en línea: ajustaba sus pesos tras cada ejemplo mal clasificado, y el descenso de gradiente estocástico (SGD) aplica la misma actualización por ejemplo o por lote a casi cualquier modelo diferenciable. Otros algoritmos están diseñados para flujos: los árboles de Hoeffding, presentados por Pedro Domingos y Geoff Hulten en 2000, construyen un árbol de decisión a partir de un flujo y procesan cada ejemplo una sola vez; bibliotecas como River implementan versiones en flujo de modelos comunes. En scikit-learn, los estimadores con un método partial_fit aprenden de forma incremental.
Los modelos de aprendizaje en línea suelen evaluarse de forma prequential, término acuñado por el estadístico Philip Dawid: cada nuevo ejemplo se utiliza primero para probar el modelo y después para entrenarlo, de modo que la puntuación acumulada se calcula con datos que el modelo aún no había visto. La teoría mide el arrepentimiento de un modelo de aprendizaje en línea: la diferencia entre su pérdida acumulada y la del mejor modelo fijo elegido a posteriori. En 2003, Martin Zinkevich demostró que el descenso de gradiente en línea limita el crecimiento del arrepentimiento a la raíz cuadrada del número de pasos, por lo que la diferencia media por paso tiende a cero.
Este ejemplo introduce 400 minilotes en un modelo de regresión logística entrenado con SGD. A mitad del proceso cambia la regla que asigna las etiquetas, y una copia congelada en ese momento representa un modelo que ha dejado de aprender:
import copy
import numpy as np
from sklearn.linear_model import SGDClassifier
rng = np.random.default_rng(0)
online = SGDClassifier(loss="log_loss", random_state=0)
scores = {"frozen": [], "online": []}
for step in range(400): # 400 mini-batches of 20 examples arrive one at a time
X = rng.normal(size=(20, 2))
w = [1.0, 1.0] if step < 200 else [1.0, -1.0] # the labeling rule changes at step 200
y = (X @ np.array(w) > 0).astype(int)
if step == 200:
frozen = copy.deepcopy(online) # a copy that stops learning when the rule changes
if step >= 200: # test on each new batch before learning from it
scores["frozen"].append(frozen.score(X, y))
scores["online"].append(online.score(X, y))
online.partial_fit(X, y, classes=[0, 1])
for name, acc in scores.items():
print(f"{name}: {np.mean(acc):.2f} accuracy after the change")Tras el cambio, el modelo congelado obtiene una puntuación de 0,47, apenas mejor que el azar, mientras que el modelo en línea alcanza una media de 0,98. El modelo en línea obtiene 0,35 en el primer lote con la nueva regla y 0,80 en el segundo; después se recupera en unos pocos lotes más.
Deriva conceptual y olvido#
El principal motivo para aprender en línea es la deriva conceptual, un cambio en la relación entre las entradas y las etiquetas, a menudo acompañado de deriva de datos en las propias entradas. La deriva puede ser repentina, como en el ejemplo, o desarrollarse gradualmente o repetirse según las estaciones y la hora del día. Detectores como ADWIN, de Albert Bifet y Ricard Gavaldà, observan el flujo de errores y avisan cuando cambia su promedio, lo que puede activar actualizaciones más rápidas o un reinicio.
Adaptarse rápidamente tiene un coste. Una tasa de aprendizaje alta sigue la deriva con rapidez, pero también sigue el ruido; además, una red que solo ve datos recientes sobrescribe lo que aprendió antes, un fallo llamado olvido catastrófico. Los búferes de repetición, que mezclan ejemplos antiguos almacenados en cada actualización, son una solución habitual.
Aprendizaje en línea en la práctica#
El aprendizaje en línea es habitual cuando las etiquetas llegan en cuestión de segundos. La predicción de clics en anuncios es el caso clásico: en 2013, Google describió cómo sus modelos de clics entrenan continuamente con datos en flujo mediante el algoritmo FTRL-Proximal; los sistemas de recomendación y la puntuación de fraude suelen actualizarse del mismo modo. Los modelos de visión desplegados suelen actualizarse por lotes, ya que las etiquetas llegan tarde y una actualización corrupta puede degradar todas las predicciones posteriores. Por eso, los equipos combinan la supervisión de modelos con el ajuste fino periódico usando datos recientes y reproducidos, como en los flujos de trabajo de mantenimiento de modelos.
Los sistemas de visión sí realizan actualizaciones en línea más pequeñas. En el modo de seguimiento de Ultralytics YOLO26, habilitar la reidentificación con with_reid: True hace que el seguidor predeterminado TrackTrack mantenga una incrustación de apariencia para cada seguimiento y la actualice tras cada detección asociada mediante un promedio móvil. La nueva incrustación recibe un peso equivalente al 5 % de la confianza de la detección, por lo que la apariencia de cada seguimiento sigue los cambios graduales de pose e iluminación mientras la red ReID permanece fija.
El aprendizaje continuo se solapa con el aprendizaje en línea, pero se centra en conservar las tareas anteriores a medida que llegan otras nuevas, mientras que el aprendizaje en línea describe la frecuencia de las actualizaciones. El aprendizaje activo elige qué ejemplos etiquetar, y el aprendizaje por refuerzo también aprende de un flujo de interacciones, pero a partir de recompensas por sus propias acciones en lugar de ejemplos etiquetados.










