Online Learning
L'apprendimento online aggiorna un modello un esempio o mini-batch alla volta man mano che arrivano i dati, così continua ad apprendere e segue la deriva dei concetti senza riaddestramento.
L'apprendimento online è un'impostazione di apprendimento automatico in cui un modello apprende dai dati che arrivano in sequenza, aggiornandosi dopo ogni esempio o piccolo batch anziché essere addestrato una sola volta su un dataset fisso. A ogni passaggio il modello fa una previsione, riceve l'esito effettivo, calcola la propria loss e modifica i parametri prima dell'arrivo dell'esempio successivo. Questo approccio è adatto ai dati che arrivano in flusso, come clic, transazioni o letture di sensori; ai dati troppo voluminosi da archiviare; e alle relazioni che cambiano nel tempo. L'apprendimento a batch, o offline, è l'opposto: il modello viene addestrato su tutti i dati di addestramento contemporaneamente e resta invariato finché non viene riaddestrato.
Come funziona l’apprendimento online#
Il percettrone di Frank Rosenblatt del 1958 era un modello di apprendimento online, che modificava i propri pesi dopo ogni esempio classificato erroneamente; la discesa stocastica del gradiente (SGD) applica lo stesso aggiornamento per esempio o per batch a quasi tutti i modelli differenziabili. Altri algoritmi sono progettati per i flussi: gli alberi di Hoeffding, introdotti da Pedro Domingos e Geoff Hulten nel 2000, costruiscono un albero decisionale a partire da un flusso, esaminando ogni esempio una sola volta; librerie come River implementano versioni per flussi dei modelli comuni. In scikit-learn, gli stimatori con un metodo partial_fit apprendono in modo incrementale.
I modelli di apprendimento online vengono solitamente valutati in modo presequenziale, termine coniato dallo statistico Philip Dawid: ogni nuovo esempio viene prima usato per testare il modello e poi per addestrarlo, quindi il punteggio progressivo viene calcolato su dati che il modello non aveva ancora visto. La teoria valuta un modello di apprendimento online in base al suo regret, ossia la differenza tra la loss cumulativa e quella del miglior modello fisso scelto a posteriori. Nel 2003 Martin Zinkevich ha dimostrato che la discesa online del gradiente limita la crescita del regret alla radice quadrata del numero di passaggi, quindi la differenza media per passaggio tende a zero.
Questo esempio invia 400 mini-batch in streaming a una regressione logistica addestrata con SGD. A metà del processo cambia la regola che assegna le etichette e una copia, congelata in quel momento, rappresenta un modello che ha smesso di apprendere:
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")Dopo il cambiamento, il modello congelato ottiene un punteggio di 0,47, non migliore di una previsione casuale, mentre il modello online raggiunge una media di 0,98. Con la nuova regola, il modello online ottiene 0,35 sul primo batch e 0,80 sul secondo, quindi recupera nell'arco di pochi altri batch.
Deriva dei concetti e oblio#
Il motivo principale per apprendere online è la deriva dei concetti, cioè un cambiamento nella relazione tra input ed etichette, spesso accompagnato dalla deriva dei dati negli input stessi. La deriva può essere improvvisa, come nell'esempio, oppure svilupparsi gradualmente o ripresentarsi con le stagioni e l'ora del giorno. Rilevatori come ADWIN, sviluppato da Albert Bifet e Ricard Gavaldà, monitorano il flusso degli errori e segnalano i cambiamenti della media, che possono attivare aggiornamenti più rapidi o un ripristino.
Adattarsi rapidamente ha un costo. Un tasso di apprendimento elevato segue rapidamente la deriva, ma anche il rumore; inoltre, una rete che vede solo i dati recenti sovrascrive ciò che aveva appreso prima, un problema chiamato oblio catastrofico. I buffer di replay, che includono esempi meno recenti memorizzati in ogni aggiornamento, sono una soluzione comune.
Apprendimento online nella pratica#
L'apprendimento online è comune quando le etichette arrivano nel giro di pochi secondi. La previsione dei clic sugli annunci è il caso classico: nel 2013 Google ha descritto come i suoi modelli di click-through vengono addestrati continuamente su dati in streaming con l'algoritmo FTRL-Proximal; anche i sistemi di raccomandazione e i modelli di valutazione delle frodi vengono spesso aggiornati allo stesso modo. I modelli di visione distribuiti vengono invece solitamente aggiornati a batch, perché le etichette arrivano in ritardo e un singolo aggiornamento corrotto può compromettere tutte le previsioni successive. Per questo i team combinano il monitoraggio dei modelli con il fine-tuning periodico su dati recenti e riprodotti, come nei flussi di lavoro di manutenzione dei modelli.
Nei sistemi di visione vengono comunque eseguiti aggiornamenti online più limitati. In modalità track di Ultralytics YOLO26, abilitando la re-identificazione con with_reid: True, il tracker TrackTrack predefinito conserva un embedding dell'aspetto per ogni traccia e lo aggiorna dopo ogni rilevamento associato come media mobile. Al nuovo embedding viene assegnato un peso pari al 5% della confidenza del rilevamento, così l'aspetto di ogni traccia segue i cambiamenti graduali di posa e illuminazione mentre la rete ReID resta fissa.
L'apprendimento continuo si sovrappone all'apprendimento online, ma si concentra sul mantenimento delle attività precedenti man mano che ne arrivano di nuove; l'apprendimento online descrive invece la frequenza degli aggiornamenti. L'apprendimento attivo sceglie quali esempi etichettare, mentre l'apprendimento per rinforzo apprende anch'esso da un flusso di interazioni, ma dai premi per le proprie azioni anziché da esempi etichettati.










