Transfer Learning
Il transfer learning riutilizza un modello addestrato su un task come punto di partenza per un altro, riducendo notevolmente i dati etichettati e il tempo di addestramento necessari per il nuovo task.
Il transfer learning è una tecnica di apprendimento automatico che riutilizza un modello addestrato per un'attività come punto di partenza per un'attività correlata. Addestrare una rete neurale partendo da pesi inizializzati casualmente richiede grandi dataset etichettati e notevoli risorse di calcolo, mentre un modello preaddestrato su milioni di immagini ha già appreso le caratteristiche visive necessarie alla maggior parte delle nuove attività. Partendo da questi pesi del modello appresi, un nuovo modello raggiunge un'elevata accuratezza con molte meno immagini etichettate e in una frazione del tempo di addestramento; per questo il transfer learning è il metodo predefinito per creare modelli di visione artificiale per attività personalizzate.
Come funziona il transfer learning#
Il transfer learning funziona perché le reti profonde apprendono caratteristiche organizzate in una gerarchia. I primi strati di un backbone rispondono a bordi, colori e texture presenti in quasi tutte le immagini, mentre gli strati più profondi li combinano in parti di oggetti e concetti specifici dell'attività. Uno studio di Yosinski et al. ha misurato questa progressione nelle reti convoluzionali, scoprendo che le caratteristiche dei primi strati sono generali, che la trasferibilità diminuisce negli strati superiori man mano che le caratteristiche si specializzano nell'attività originale e che le caratteristiche trasferite migliorano la generalizzazione anche dopo il fine-tuning sul nuovo dataset.
Il processo si articola in due fasi:
- Pretraining: Un modello apprende rappresentazioni generali su un grande dataset di benchmark, come ImageNet, COCO o Objects365, producendo un insieme di pesi preaddestrati.
- Adattamento: Gli strati di output, come un classificatore o una testa di rilevamento, vengono sostituiti o ridimensionati per le nuove classi e addestrati sul dataset di destinazione. Nell'estrazione delle caratteristiche, gli strati preaddestrati restano congelati e solo i nuovi strati apprendono. Nel fine-tuning, vengono aggiornati anche alcuni o tutti gli strati preaddestrati, di solito con un tasso di apprendimento inferiore.
La quantità di rete da riaddestrare dipende da due fattori: quanti dati etichettati sono disponibili per la nuova attività e quanto questa assomiglia ai dati di pretraining. Gli appunti di CS231n di Stanford descrivono i quattro casi che ne derivano:
Transfer learning per la rilevazione di oggetti#
I modelli di rilevamento vengono quasi sempre addestrati con il transfer learning: i checkpoint ufficiali YOLO26 sono stati preaddestrati su Objects365 per 150 epoche prima del fine-tuning su COCO, come documenta la ricetta di addestramento YOLO26. Chiamando train() su un checkpoint caricato con un nuovo dataset, vengono trasferiti tutti i pesi compatibili; se cambia il numero di classi, le righe di output specifiche per classe vengono reimpostate, mantenendo quelle delle classi con lo stesso nome. È inoltre possibile passare un argomento freeze che mantiene fissi i primi livelli: una strategia particolarmente utile con dataset piccoli.
from ultralytics import YOLO
# Carica i pesi YOLO26n preaddestrati sulle 80 classi di COCO
model = YOLO("yolo26n.pt")
# Adatta il modello a un nuovo dataset con una sola classe; freeze=10 mantiene fissi i primi 10 strati
results = model.train(data="medical-pills.yaml", epochs=20, freeze=10)Il backbone preaddestrato rileva già forme, bordi e texture: durante l'addestramento basta quindi imparare l'aspetto di una pillola a partire dalle 92 immagini di training etichettate del dataset Medical Pills.
Transfer learning e termini correlati#
- Fine-tuning: Un modo per applicare il transfer learning, in cui i pesi preaddestrati continuano ad aggiornarsi sui nuovi dati. L'estrazione delle caratteristiche con un backbone congelato è l'altro metodo principale.
- Adattamento di dominio: Una forma di transfer learning in cui l'attività rimane la stessa, ma cambia la distribuzione dei dati, ad esempio passando da immagini diurne a immagini notturne, spesso con poche o nessuna etichetta di destinazione.
- Apprendimento zero-shot e apprendimento few-shot: Gestiscono nuove classi senza esempi etichettati o con solo pochi esempi, sfruttando le conoscenze generali di un modello preaddestrato invece di una fase completa di adattamento.
- Fine-tuning efficiente in termini di parametri (PEFT): Adatta modelli preaddestrati di grandi dimensioni addestrando un piccolo insieme di parametri aggiunti o selezionati, come le matrici LoRA, mentre i pesi originali restano congelati.
- Oblio catastrofico: La perdita delle capacità relative all'attività originale quando un modello viene sottoposto a fine-tuning su nuovi dati. Includere nel nuovo insieme di training alcune immagini delle classi originali, oppure congelare più strati, limita il fenomeno.










