Il Transfer Learning non è una malattia
Ha un nome terribile, ma rende possibile costruire applicazioni anche quanto ci sono pochi dati. A patto che qualcuno si sia messo a costruire un modello in un dominio equivalente con molti dati simili ai tuoi. Ma andiamo con ordine.
Il transfer learning, o apprendimento per trasferimento, è una tecnica di machine learning che utilizza modelli pre-addestrati in un dominio per migliorare le prestazioni in un dominio equivalente. In pratica, si trasferiscono le conoscenze acquisite da un modello in un determinato contesto per applicarle efficacemente in un nuovo scenario sufficientemente simile.
Un modello pre-addestrato, come ci dice il nome, ha avuto modo di imparare in precedenza da tanti dati – molti di più di quelli che potresti avere tu a disposizione. In questo modo, ha avuto tempo e modo di imparare la generalità dei pattern nei dati. Immaginatelo un po’ come quando un neo-ingegnere inizia la sua carriera in progettazione: magari non è preparato sulle specificità dei pezzi su cui lavorerà, ma avendo già studiato a memoria tutte le formule di scambio termico e di massa, ci metterà molto poco a capire come fare un lavoro di qualità. Comunque molto meno di uno che ha studiato un dominio diverso e viene messo a progettare scambiatori di calore de botto, così, senza senso.
Pro e contro del transfer learning
Il transfer learning è una figata per i motivi che potete già intuire. Prima di tutto, costruire un modello con la tecnica del transfer learning riduce moltissimo i costi computazionali: riutilizzando modelli pre-addestrati, il tempo e le risorse necessarie per l’addestramento più specifico sono sensibilmente ridotti. Quindi, meno costi cloud per allenare un modello, meno dati necessari, meno sbatti. E tutto con una performance di previsione comunque ottima – a meno di non incorrere in quello che si chiama catastrophic forgetting.
Inoltre, grazie al transfer learning, scalare un modello madre calandolo negli specifici assetti diventa molto più facile. Se allenare un modello intero in edge a partire dai dati in real time è impensabile, affinare un modello in edge con tecniche di transfer learning diventa ragionevole per determinate applicazioni.
Però, come sempre, anche questa tecnica si porta dietro delle attenzioni da garantire:
- L’ipotesi di base è che i dati del dominio di partenza su cui è allenato il modello originale siano simili ai dati utilizzati per l’affinamento tramite transfer learning. Questo, soprattutto in industria, non è semplice da garantire.
- Pur essendo più rapido, il fine tuning a partire da modelli particolarmente grandi – come ad esempio LLM – può essere comunque computazionalmente intensivo.
- Nel caso in cui i dati di allenamento originali contengano dati personali, potrebbero emergere problemi di privacy da gestire.
- Il modello madre sottoposto a transfer learning potrebbe dimenticare cose importanti imparate precedentemente concentrandosi troppo sui nuovi dati. Questo si chiama catastrophic forgetting, e brucia il potenziale della tecnica.

Quando è utile?
Il transfer learning è utile perché rende possibile costruire modelli utilizzando relativamente pochi dati, partendo da un modello che ha già imparato i pattern tipici di quel task. Ad esempio, le tecniche di transfer learning sono utilizzatissime nei task di image vision, in cui modelli che hanno già imparato a vedere vengono affinati per per riconoscere alcuni dettagli specifici. Oppure, nei compiti di natural language processing, in cui modelli che hanno già imparato la generalità della grammatica e della lingua specifica vengono specializzati per un’interazione specifica. Questi campi sono stati rivoluzionati dall’avvento di modelli pre-allenati: la ricerca infatti sempre più spesso parte da modelli fondazionali o pre-esistenti invece che occuparsi di tutto l’allenamento da cima a fondo.

Da bibliografia, si legge che i data scientist possono beneficiare del transfer learning per questi motivi, che ormai abbiamo intuito anche noi nell’arco dell’articolo:
- Higher start. Il modello già dalle prime iterazioni di training registra performance migliori rispetto ad un modello con iperparametri casuali – ci mancherebbe.
- Higher slope. L’allenamento del modello converge molto più velocemente.
- Higher asymptote. La performance finale del modello affinato è più alta rispetto a quanto potrebbe raggiungere un modello con allenamento senza transfer learning.
Quindi, questa meravigliosa tecnica è utile quando c’è poco tempo, pochi dati, ma un caso d’uso abbastanza simile a qualcosa già esistente. Oppure, quando ho un modello che ho già allenato precedentemente in un dominio, che voglio adattare ad un sotto dominio più specifico, o a un dominio simile di cui ho alcuni dati.
Come si fa
I modelli pre-esistenti contengono nella loro struttura iniziale la generalizzazione del comportamento dei dati nel dominio di riferimento. E’ possibile quindi specializzare la previsione in tre modi:
- Transfer learning vero e proprio: al modello iniziale vengono aggiunti layer finali che vengono allenati sui nuovi dati
- Fine tuning: tutti i parametri del modello vengono modificati a partire dai valori iniziali.
- Feature exctraction: il modello iniziale viene usato per estrarre dati utili da sottoporre ad un modello dedicato
Tecnicamente, solo il primo è chiamato transfer learning, ma anche il fine tuning è interessante ai fini della scalabilità.


La chiave del transfer learning è trovare un modello che sia stato pre-addestrato in un task simile, perché i pattern che ha imparato possano essere affinati con pochi nuovi dati. In alcuni casi, questo è molto facile, in altri casi invece potrebbe essere difficile trovare casi d’uso simili da cui ereditare la conoscenza iniziale.
In particolare, i casi d’uso migliori sono quelli in cui ci sono pattern generali e comuni a situazioni simili, con una minima specializzazione. I due di cui abbiamo parlato prima – NLP e riconoscimento di immagini – sono il perfetto esempio. Infatti grammatica e lingua, o il riconoscimento di forme e relazioni, sono comuni a tutti i task di riconoscimento e linguaggio, e la specializzazione si può considerare un sotto insieme del task più ampio di saper vedere e saper parlare.
Ma ci sono use cases utili per l’industria?
Transfer learning e industria
In industria il transfer learning può essere molto utile per gestire la vita del modello nel tempo. Infatti, in caso di evoluzione della situazione nel mondo fisico, è possibile utilizzare il transfer learning per accelerare il riallenamento con un numero limitato di dati.

Inoltre, la tecnica può essere usata per ampliare l’applicabilità di un modello originale su use case variati della stessa famiglia. Partendo dai dati che rappresentano una casistica specifica, si può affinare il modello fornendogli man mano più dati in modo che il modello sfrutti quanto imparato nel primo caso – che sia valido negli altri – per spiegare altri fenomeni con un volume più basso di informazioni.

Il transfer learning è molto utile per scalare soluzioni. Fonte
Proviamo ad esplorare qualche esempio più specifico:
- Manutenzione predittiva: Immaginiamo di avere un’ampia famiglia di componenti simili. Possiamo immaginare di allenare un modello su un volume sufficiente di dati, in modo che impari i meccanismi generali in cui questi componenti lavorano, e poi affinare un modello per ogni specifico componente o modo di guasto in modo che sia più preciso nella gestione della casistica di dettaglio
- Controllo qualità: Essendo un task di riconoscimento di immagini, è possibile partire da un modello generale e specializzare la soluzione su poche immagini – ad esempio difetti superficiali, oppure immagini di pezzi di scarto o buoni – in modo da orientare sistemi automatici o team di manutenzione.
- Forecast energetico: Possiamo utilizzare un modello allenato su dati energetici di un edificio o un’industria su un edificio o industria simile allenando la nuova versione con la tecnica del transfer learning e pochi nuovi dati.
- Generazione di reportistica: Nei task di linguaggio naturale, è possibile sfruttare la capacità di modelli generalisti per imparare il vocabolario di un dominio specifico in modo da essere in grado di generare report automatici.
Conclusione
Il transfer learning è una tecnica interessante quando si ha un task abbastanza generalizzabile ma pochi dati per il training. Con tempi per l’allenamento ridotti e performance più alte, apre molte potenzialità e ha trasformato il modo in cui oggi i modelli di riconoscimento di immagini e di linguaggio sono costruiti. Nel campo industriale possono essere molto utili per la gestione del ciclo vita del modello e lo scale up di un modello esistente su altri casi simili. Anche se il primo training deve essere gestito con metodi tradizionali, quello che segue può essere gestito con pochi dati e sfruttando la conoscenza pregressa.
Beh, fico.