Il transfer learning è un approccio di Deep Learning in cui un modello addestrato per un’attività viene utilizzato come punto di partenza per un modello che esegue un’attività simile. Aggiornare e riaddestrare una rete con il transfer learning è più facile e veloce rispetto a dover addestrare una rete partendo da zero. Il transfer learning viene utilizzato per la classificazione delle immagini, il rilevamento oggetti, il riconoscimento vocale e altre applicazioni.
Perché il transfer learning è importante?
Il transfer learning consente di sfruttare le conoscenze della community del Deep Learning. I modelli pre-addestrati più utilizzati costituiscono un’architettura robusta e permettono di non dover partire da zero. Il transfer learning è una tecnica molto utilizzata per l’apprendimento con supervisione perché:
- Consente di addestrare modelli con meno dati etichettati riutilizzando i modelli più popolari già addestrati su grandi set di dati.
- Può ridurre i tempi di addestramento e le risorse di calcolo necessarie. Con il transfer learning, i pesi delle reti neurali non vengono appresi da zero in quanto il modello pre-addestrato ha già appreso i pesi in base alle fasi di apprendimento precedenti.
- È possibile usare le architetture dei modelli sviluppate dalla community che si occupa di ricerca nel campo del Deep Learning, comprese le architetture più note come GoogLeNet e YOLO.
Addestramento a partire da zero o transfer learning?
Per creare un modello di Deep Learning, è possibile addestrare un modello a partire da zero oppure eseguire il transfer learning usando un modello pre-addestrato.
Lo sviluppo e l’addestramento di un modello a partire da zero è più efficace per attività estremamente specifiche per le quali è impossibile usare modelli preesistenti. Lo svantaggio di questo approccio è che in genere, per produrre risultati accurati, occorre una grande quantità di dati. Anche la creazione di un modello da zero può essere efficace nei casi in cui è possibile raggiungere il livello di precisione desiderato con reti più piccole. Ad esempio, le reti neurali ricorrenti (RNN) e le reti Long Short-Term Memory (LSTM) sono particolarmente efficaci con i dati sequenziali che variano in termini di lunghezza e risolvono problemi quali la classificazione dei segnali e la previsione delle serie storiche.
Il transfer learning è utile per quelle attività per cui esistono vari modelli pre-addestrati. Ad esempio, molte delle reti neurali convoluzionali (CNN) tra le più diffuse sono pre-addestrate sul set di dati ImageNet, che contiene oltre 14 milioni di immagini e mille classi di immagini. Se si desidera classificare le immagini dei fiori del proprio giardino (o qualsiasi immagine non inclusa nel set di dati ImageNet) e si ha un numero limitato di immagini di fiori a disposizione, è possibile trasferire i livelli e i relativi pesi da una rete SqueezeNet, sostituire i layer finali e riaddestrare il modello con le proprie immagini.
Questo approccio può contribuire al raggiungimento di un livello di precisione del modello più elevato in tempi più brevi grazie al transfer learning.
Applicazioni del transfer learning
Il transfer learning è utilizzato in molte applicazioni di Deep Learning, come:
Visione artificiale
Le applicazioni di visione artificiale includono il riconoscimento immagini, il rilevamento oggetti, la segmentazione di immagini e l’elaborazione di nuvole di punti LIDAR. Guarda l’esempio MATLAB Classificazione di tumori nelle immagini bloccate multirisoluzione con il transfer learning.
Elaborazione di segnali vocali e audio
Guarda l’esempio MATLAB Transfer learning con reti audio pre-addestrate in Deep Network Designer.
Analisi testuale
Guarda l’esempio MATLAB GitHub Regolazione di un modello BERT per testi giapponesi.
Modelli pre-addestrati per il transfer learning
Al centro del transfer learning c’è il modello di Deep Learning pre-addestrato, costruito dai ricercatori che operano nel campo del Deep Learning, addestrato con migliaia o milioni di punti di dati di esempio.
I modelli pre-addestrati disponibili sono molti e ciascuno presenta aspetti positivi e negativi che occorre prendere in considerazione:
- Velocità delle previsioni: In che tempi il modello è in grado di prevedere nuovi input? Oltre a variare in base a fattori quali dimensioni di batch e hardware, la velocità di previsione varia anche in base all’architettura e alle dimensioni del modello.
- Dimensioni: Qual è il footprint di memoria desiderato per il modello? L’importanza delle dimensioni del modello varia a seconda di dove e come si ha intenzione di distribuirlo. Dovrà essere eseguito su un hardware embedded o su desktop? Se il modello sarà distribuito su un target a risorse limitate, è importante considerare anche le dimensioni della rete.
- Precisione: Come si possono definire le prestazioni del modello prima del riaddestramento? Un modello con buone prestazioni con il set di dati ImageNet probabilmente funzionerà bene anche con attività simili nuove. Tuttavia, un basso livello di precisione con ImageNet non significa necessariamente che le prestazioni del modello saranno scarse con tutte le attività.
Qual è il modello migliore per il tuo workflow di transfer learning?
Poiché i modelli di transfer learning tra cui scegliere sono numerosi, è importante tenere a mente i tradeoff previsti e gli obiettivi generali del proprio progetto specifico. Un buon approccio da adottare consiste nel provare modelli diversi in modo tale da trovare quello che si adatta al meglio alla propria applicazione.
Inizia con modelli semplici, come GoogLeNet, VGG-16 e VGG-19, che consentono di fare iterazioni rapide e di sperimentare diverse fasi di pre-elaborazione dei dati e opzioni di addestramento. Una volta individuate le impostazioni più efficaci, fai un tentativo con una rete più precisa per vedere se i risultati migliorano.
Modelli leggeri ed efficienti dal punto di vista computazionale, come SqueezeNet, MobileNet-v2 e ShuffleNet, sono delle buone opzioni quando l’ambiente di distribuzione limita le dimensioni del modello.
Come si fa a ottenere modelli pre-addestrati in MATLAB?
Esplora l’hub per i modelli di Deep Learning di MATLAB per accedere ai modelli più recenti suddivisi per categoria e ricevere consigli sulla scelta del modello. È possibile caricare gran parte dei modelli con un’unica funzione MATLAB, come la funzione darknet19.
È inoltre possibile utilizzare reti pre-addestrate di piattaforme esterne. È possibile convertire un modello da TensorFlow™, PyTorch® o ONNX™ in un modello MATLAB usando una funzione di importazione, come la funzione importNetworkFromTensorFlow.
Il transfer learning applicato alla progettazione di soft-sensor
Leggi come Poclain Hydraulics ha utilizzato le reti pre-addestrate in MATLAB per velocizzare la progettazione di soft-sensor.
Transfer learning con MATLAB
L'uso di MATLAB con Deep Learning Toolbox™ consente di accedere a centinaia di modelli pre-addestrati e di eseguire il transfer learning con funzioni integrate o app interattive. Per diverse applicazioni di transfer learning, potrebbe essere necessario utilizzare anche altri toolbox come Computer Vision Toolbox™, Audio Toolbox™, Lidar Toolbox™ o Text Analytics Toolbox™.
Il workflow del transfer learning
Nonostante esistano diverse architetture e applicazioni del transfer learning, i workflow di transfer learning si compongono in gran parte di una serie di fasi comuni. L’illustrazione che segue mostra il workflow del transfer learning per la classificazione di immagini. Il transfer learning viene svolto su un modello GoogLeNet pre-addestrato, una rete molto utilizzata con 22 layer addestrata per classificare 1000 categorie di oggetti.
- Seleziona un modello pre-addestrato. Per iniziare, può essere utile selezionare un modello semplice.
- Sostituisci i layer finali. Per riaddestrare la rete per classificare un nuovo set di immagini e classi, occorre sostituire l’ultimo livello apprendibile e il livello di classificazione finale del modello GoogLeNet. Il layer finale completamente connesso (ultimo livello apprendibile) viene modificato in modo da contenere un numero di nodi uguale al numero di nuove classi. Il nuovo livello di classificazione produrrà un output sulla base delle probabilità calcolate dal layer softmax.
Una volta modificati i layer, il layer finale completamente connesso specificherà il nuovo numero di classi che la rete apprenderà e il livello di classificazione determinerà gli output delle nuove categorie di output disponibili. Ad esempio, l’addestramento di GoogLeNet era stato inizialmente effettuato su 1000 categorie ma, con la sostituzione dei layer finali, è possibile rieseguire l’addestramento per classificare solo le cinque (o qualsiasi altro numero) categorie di oggetti che interessano.
- In via opzionale, “congela” i pesi. È possibile “congelare” i pesi dei layer precedenti nella rete impostando una velocità di apprendimento su quei livelli pari a zero. Durante l’addestramento, i parametri dei layer congelati non vengono aggiornati, il che può velocizzare notevolmente l’addestramento della rete. Se il nuovo set di dati è piccolo, il congelamento dei pesi può anche impedire l’overfitting della rete sul nuovo set di dati.
- Riaddestra il modello. Con il riaddestramento la rete viene aggiornata in modo da apprendere e identificare le feature associate alle nuove immagini e categorie. Nella gran parte dei casi, il riaddestramento necessita di un numero inferiore di dati rispetto all’addestramento di un modello partendo da zero.
- Prevedi e valuta la precisione della rete. Dopo aver riaddestrato il modello, è possibile classificare nuove immagini e valutare le prestazioni della rete.
Un approccio interattivo al transfer learning
Usando l’app Deep Network Designer, è possibile completare in modo interattivo l’intero workflow di transfer learning, comprese le fasi di selezione o importazione (da MATLAB, TensorFlow o PyTorch) di un modello pre-addestrato, di modifica dei layer finali e di riaddestramento della rete con dati nuovi, senza codice o con pochissimo codice.
Ulteriori informazioni sul transfer learning
Guarda questi video per imparare a usare il transfer learning dalla riga di comando o con l’app Deep Network Designer.
Argomenti correlati
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia-Pacifico
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)