Fondamenti di IA
Che cos’è il Transfer Learning?
Che cos’è il Transfer Learning?
Quando si pratica il machine learning, addestrare un modello può richiedere molto tempo. Creare un’architettura del modello da zero, addestrare il modello e poi ottimizzarlo è un’enorme quantità di tempo e sforzo. Un modo molto più efficiente per addestrare un modello di machine learning è utilizzare un’architettura che è già stata definita, potenzialmente con pesi che sono già stati calcolati. Questa è l’idea principale dietro il transfer learning, prendere un modello che è già stato utilizzato e riutilizzarlo per un nuovo compito.
Prima di addentrarsi nei diversi modi in cui il transfer learning può essere utilizzato, prendiamo un momento per capire perché il transfer learning è una tecnica così potente e utile.
Risolvere un problema di Deep Learning
Quando si tenta di risolvere un problema di deep learning, come costruire un classificatore di immagini, è necessario creare un’architettura del modello e poi addestrare il modello sui propri dati. L’addestramento del classificatore del modello comporta l’aggiustamento dei pesi della rete, un processo che può richiedere ore o addirittura giorni a seconda della complessità sia del modello che del set di dati. Il tempo di addestramento sarà proporzionale alle dimensioni del set di dati e alla complessità dell’architettura del modello.
Se il modello non raggiunge il tipo di accuratezza necessario per il compito, è probabile che sia necessario ottimizzare il modello e poi riaddestrarlo. Ciò significa altre ore di addestramento fino a quando non si trova un’architettura ottimale, una lunghezza di addestramento e una partizione del set di dati. Quando si considera quante variabili devono essere allineate tra loro affinché un classificatore sia utile, ha senso che gli ingegneri di machine learning siano sempre alla ricerca di modi più facili e più efficienti per addestrare e implementare i modelli. Per questo motivo, la tecnica del transfer learning è stata creata.
Dopo aver progettato e testato un modello, se il modello si è rivelato utile, può essere salvato e riutilizzato in seguito per problemi simili.
Tipi di Transfer Learning
In generale, ci sono due tipi diversi di transfer learning: sviluppare un modello da zero e utilizzare un modello pre-addestrato.
Quando si sviluppa un modello da zero, è necessario creare un’architettura del modello in grado di interpretare i propri dati di addestramento e di estrarre modelli da essi. Dopo che il modello è stato addestrato per la prima volta, è probabile che sia necessario apportare modifiche ad esso per ottenere le prestazioni ottimali dal modello. È quindi possibile salvare l’architettura del modello e utilizzarla come punto di partenza per un modello che verrà utilizzato per un compito simile.
Nella seconda condizione – l’utilizzo di un modello pre-addestrato – è sufficiente selezionare un modello pre-addestrato da utilizzare. Molte università e team di ricerca rendono disponibili le specifiche del loro modello per un uso generale. L’architettura del modello può essere scaricata insieme ai pesi.
Quando si esegue il transfer learning, è possibile utilizzare l’intera architettura del modello e i pesi per il compito in questione, o solo alcune parti/strati del modello. Utilizzare solo alcune parti del modello pre-addestrato e addestrare il resto del modello è denominato fine-tuning.
Ottimizzazione di una rete
L’ottimizzazione di una rete descrive il processo di addestramento di alcuni strati della rete. Se un nuovo set di dati di addestramento è molto simile al set di dati utilizzato per addestrare il modello originale, molti dei pesi possono essere riutilizzati.
Il numero di strati della rete che dovrebbero essere sbloccati e riaddestrati dovrebbe essere proporzionale alle dimensioni del nuovo set di dati. Se il set di dati che si sta addestrando è piccolo, è una buona pratica mantenere la maggior parte degli strati come sono e addestrare solo gli ultimi strati. Ciò serve a evitare che la rete si sovraccarichi. In alternativa, gli ultimi strati della rete pre-addestrata possono essere rimossi e aggiunti nuovi strati, che vengono quindi addestrati. Al contrario, se il set di dati è un set di dati grande, potenzialmente più grande del set di dati originale, l’intera rete dovrebbe essere riaddestrata. Per utilizzare la rete come estrazione di caratteristiche fisse, la maggior parte della rete può essere utilizzata per estrarre le caratteristiche mentre solo l’ultimo strato della rete può essere sbloccato e addestrato.
Quando si ottimizza una rete, si ricordi che gli strati iniziali della rete ConvNet sono quelli che contengono le informazioni che rappresentano le caratteristiche più generiche delle immagini. Queste sono caratteristiche come bordi e colori. Al contrario, gli strati successivi della rete ConvNet contengono i dettagli più specifici delle classi individuali presenti nel set di dati sul quale il modello è stato inizialmente addestrato. Se si sta addestrando un modello su un set di dati che è molto diverso dal set di dati originale, probabilmente si vorrà utilizzare gli strati iniziali del modello per estrarre le caratteristiche e riaddestrare solo il resto del modello.
Esempi di Transfer Learning
Le applicazioni più comuni del transfer learning sono probabilmente quelle che utilizzano dati di immagini come input. Questi sono spesso compiti di previsione/classificazione. Il modo in cui le Convolutional Neural Networks interpretano i dati delle immagini si presta al riutilizzo di aspetti dei modelli, poiché gli strati convoluzionali distinguono spesso caratteristiche molto simili. Un esempio di un comune problema di transfer learning è il compito ImageNet 1000, un enorme set di dati pieno di 1000 classi diverse di oggetti. Le aziende che sviluppano modelli che raggiungono prestazioni elevate su questo set di dati spesso rilasciano i loro modelli con licenze che consentono ad altri di riutilizzarli. Alcuni dei modelli che sono stati prodotti da questo processo includono il modello Microsoft ResNet , il modello Google (GOOGL ) Inception e il gruppo di modelli Oxford VGG.












