Personalizzare i modelli di machine learning: il modo più semplice

1. Introduzione

2a934d0e86f14118.png

Ultimo aggiornamento: 28/03/2022

Machine learning

Il machine learning è un campo che si evolve a una velocità di rottura del collo. Ogni giorno vengono rilasciate nuove ricerche e possibilità che offrono casi d'uso impensabili in precedenza.

Queste release di solito hanno come risultato un modello. I modelli possono essere intesi come equazioni matematiche molto lunghe che danno un input (ad es. immagine) produce un risultato (ad es. classificazione)

  • E se volessi utilizzare uno di questi nuovi modelli con i tuoi dati?
  • Come puoi trarre vantaggio da questi modelli all'avanguardia per il tuo caso d'uso o nella tua app?

Questo codelab ti guiderà attraverso il processo di personalizzazione semplice dei modelli di machine learning in base ai tuoi dati.

La creazione e l'addestramento di modelli di machine learning presenta molte sfide:

  • Richiede molto tempo.
  • Utilizza grandi quantità di dati.
  • È richiesta esperienza in campi come la matematica e la statistica.
  • Utilizzo intensivo di risorse: l'addestramento di alcuni modelli potrebbe richiedere giorni.

La creazione di nuove architetture di modelli richiede molto tempo e molti esperimenti e anni di esperienza. Ma cosa succederebbe se potessi sfruttare tutte queste conoscenze e utilizzarle con i tuoi dati semplicemente personalizzando la ricerca all'avanguardia per il tuo problema? Ciò è possibile utilizzando una tecnica chiamata Transfer Learning.

In questo codelab imparerai a eseguire il Transfer Learning, perché funziona e quando utilizzarlo.

Cosa imparerai a fare

  • Che cos'è Transfer Learning e quando utilizzarlo.
  • Come utilizzare Transfer Learning
  • Come ottimizzare i modelli.
  • Come utilizzare Model Maker di TensorFlow Lite Lite.
  • Come utilizzare TensorFlow Hub.

Che cosa ti serve

  • Tutto il codice viene eseguito utilizzando Google Colaboratory, quindi non dovrai installare nulla sulla tua macchina. Ti servono soltanto l'accesso a internet e un Account Google per accedere a Colab.
  • Conoscenza di base di TensorFlow e dell'API Keras.
  • Conoscenza di Python.

Se non hai una conoscenza di base di TensorFlow o del machine learning, puoi comunque approfondire il Transfer Learning. Leggi il passaggio successivo "Che cos'è Transfer Learning" sulla teoria alla base di questa tecnica e poi prosegui con "Transfer Learning with Model Maker". Se vuoi approfondire e vedere il processo in modo più dettagliato, lo scoprirai nelle sezioni su Transfer Learning con TensorFlow Hub.

2. Che cos'è Transfer Learning?

Un modello preaddestrato è una rete salvata che è stata precedentemente addestrata su un set di dati di grandi dimensioni, in genere su un'attività di classificazione delle immagini su larga scala. Puoi utilizzare il modello preaddestrato così com'è oppure utilizzare il Transfer Learning per personalizzare questo modello in base a una determinata attività.

L'intuizione alla base del Transfer Learning per la classificazione delle immagini è che se un modello viene addestrato su un set di dati sufficientemente ampio e generale, questo modello fungerà efficacemente da modello generico del mondo visivo. Puoi quindi sfruttare queste mappe delle caratteristiche apprese senza dover iniziare da zero addestrando un modello di grandi dimensioni su un set di dati di grandi dimensioni.

Ci sono due modi per personalizzare un modello di machine learning

  • Estrazione delle caratteristiche: utilizza le rappresentazioni apprese da una rete precedente per estrarre caratteristiche significative dai nuovi campioni. Basta aggiungere un nuovo classificatore, che viene addestrato da zero, al modello preaddestrato in modo da poter riutilizzare le mappe delle caratteristiche apprese in precedenza per il set di dati. Non è necessario (ri)addestrare l'intero modello. La rete convoluzionale di base contiene già caratteristiche che sono generalmente utili per la classificazione delle immagini. Tuttavia, la parte di classificazione finale del modello preaddestrato è specifica per l'attività di classificazione originale e, di conseguenza, specifica per l'insieme di classi su cui il modello è stato addestrato.
  • Ottimizzazione: sblocca alcuni livelli superiori di una base di un modello bloccato e addestra congiuntamente sia gli strati di classificazione appena aggiunti che gli ultimi strati del modello di base. Questo ci consente di "perfezionare" le rappresentazioni delle caratteristiche di ordine superiore nel modello di base, in modo da renderle più pertinenti per l'attività specifica.

L'estrazione delle caratteristiche è più veloce da addestrare, ma con il perfezionamento è possibile ottenere risultati migliori.

Proverai entrambe le caratteristiche (estrazione delle caratteristiche e ottimizzazione) utilizzando due diversi modi per eseguire il transfer learning:

  • La libreria Model Maker di TensorFlow esegue automaticamente la maggior parte della pipeline di dati e della creazione di modelli, semplificando il processo. Il modello risultante è inoltre facilmente esportabile per l'utilizzo su dispositivi mobili e browser.
  • I modelli TensorFlow Hub sfruttano il vasto repository di modelli di machine learning disponibile in TensorFlow Hub. I ricercatori e la community contribuiscono con questi modelli rendendo i modelli all'avanguardia disponibili molto più rapidamente e in una maggiore varietà.

3. Transfer Learning con Model Maker

Ora che conosci l'idea alla base di Transfer Learning, iniziamo a utilizzare la libreria di Model Maker TensorFlow,uno strumento che ti aiuta a farlo nel modo più semplice.

La libreria Model Maker di TensorFlow è una libreria open source che semplifica il processo di Transfer Learning e rende il processo molto più accessibile agli sviluppatori non ML, come gli sviluppatori web e mobile.

Il blocco note di Colab ti guida nei seguenti passaggi:

  • Carica i dati.
  • Suddividi i dati.
  • Crea e addestra il modello
  • Valutare il modello.
  • Esporta il modello.

Dopo questo passaggio, puoi iniziare a eseguire il Transfer Learning con i tuoi dati seguendo la stessa esatta procedura.

Colaboratory

Andiamo su Google Colab per addestrare il modello personalizzato.

Sono necessari circa 15 minuti per esaminare la spiegazione e comprendere le nozioni di base del blocco note.

Vantaggi:

  • Un modo semplice di personalizzare i modelli.
  • Nessuna necessità di comprendere TensorFlow o l'API Keras.
  • Strumento open source che può essere modificato se l'utente ha bisogno di qualcosa di specifico non ancora implementato.
  • Esporta il modello direttamente per l'esecuzione su dispositivo mobile o browser.

Svantaggi

  • Meno possibilità di configurazione rispetto alla creazione dell'intera pipeline e della creazione di modelli in autonomia, come con i due metodi precedenti
  • Non tutti i modelli possono essere utilizzati come base anche quando si sceglie il modello di base.
  • Non adatto per grandi quantità di dati in cui la pipeline di dati è più complessa.

4. Trova un modello su TensorFlow Hub

Al termine di questa sezione sarai in grado di:

  • Trova modelli di machine learning in TensorFlow Hub.
  • Informazioni sulle raccolte.
  • Capire i diversi tipi di modelli.

Per eseguire il Transfer Learning, devi iniziare con due aspetti:

  • Dati, ad esempio immagini dei soggetti che vuoi riconoscere.
  • Un modello di base che puoi personalizzare in base ai tuoi dati.

La parte dei dati di solito dipende dall'attività, ma il modo più semplice consiste nel scattare molte foto di ciò che vuoi riconoscere. E il modello di base? Dove puoi trovarne uno? TensorFlow Hub può essere d'aiuto.

TensorFlow Hub è il repository di modelli per le tue esigenze di modelli TensorFlow.

Puoi cercare e leggere la documentazione di migliaia di modelli, subito disponibili per l'uso, e molti di questi sono pronti per Transfer Learning e Ottimizzazione.

Ricerca di un modello

Iniziamo con una semplice ricerca dei modelli da utilizzare su TensorFlow Hub, che potrai usare in seguito nel tuo codice.

Passaggio 1: nel browser, apri il sito tfhub.dev.

immagine della pagina principale tfhub.dev

Per Transfer Learning sul dominio immagine, abbiamo bisogno dei vettori di caratteristiche. I vettori di caratteristiche sono come modelli di classificazione, ma senza la testa di classificazione.

I vettori di caratteristiche possono convertire le immagini in una rappresentazione numerica nello spazio ennesimo (dove N è il numero di dimensioni dello strato di output del modello).

Su TFHub puoi cercare in modo specifico i vettori di caratteristiche facendo clic su una scheda specifica.

Immagine della pagina tfhub.dev con un quadrato che evidenzia l'attività del vettore di caratteristiche

Puoi anche cercare il nome di un modello con il filtro a sinistra per visualizzare solo Image feature vectors.

Questa è un'immagine della pagina di ricerca da tfhub.dev dopo aver scelto un'attività di vettore di caratteristiche nella pagina principale

Le schede con le icone blu sono raccolte di modelli. Se fai clic su una raccolta di immagini potrai scegliere tra molti modelli simili. Scegli la raccolta di immagini.

Questa è la pagina di raccolta di immagini di tfhub.dev

Scorri verso il basso e seleziona MobileNet V3. Può essere utilizzato qualsiasi vettore di caratteristiche.

Questa è la pagina di raccolta di immagini di tfhub.dev un po' scorretta dalla pagina precedente

Nella pagina dei dettagli del modello puoi leggere tutta la documentazione relativa al modello, visualizzare snippet di codice per provare il modello o persino provarlo direttamente su un blocco note di Colab.

Pagina dei dettagli di un modello di vettore di funzionalità mobilenetV3

Per il momento, ti serve solo l'URL in alto. Questo è l'handle del modello e il modo in cui puoi accedere facilmente a un modello dalla libreria TensorFlow Hub.

5. Transfer Learning con TensorFlow Hub

Ora che hai scelto un modello da utilizzare, personalizziamolo caricandolo con il metodo KerasLayer dalla libreria TensorFlow Hub.

Questo metodo carica un modello in modo da poterlo utilizzare come livello sul modello, in modo da creare il modello sulla base di questo livello.

In precedenza, quando hai imparato a utilizzare Model Maker, tutti i componenti interni ti erano nascosti per renderli più comprensibili. No, vedrai cosa sta facendo Model Maker in background.

Colaboratory

Andiamo su Google Colab per addestrare il modello personalizzato.

Sono necessari circa 20 minuti per esaminare la spiegazione e comprendere le nozioni di base del blocco note.

Vantaggi:

  • Migliaia di modelli disponibili, realizzati da ricercatori e membri della community, addestrati su una varietà di set di dati.
  • Modelli per tutte le attività, come visione artificiale, testo e audio.
  • È facile sperimentare con diversi modelli simili. La modifica del modello di base potrebbe richiedere la modifica di una sola stringa.

Svantaggi

  • È necessario avere comunque esperienza con TensorFlow/Keras per utilizzare i modelli.

Se vuoi approfondire, puoi anche eseguire il Transfer Learning utilizzando l'applicazione Keras. È un processo molto simile a quello di TensorFlow Hub, ma con solo le API TensorFlow principali.

6. Complimenti

Complimenti, hai imparato cos'è Transfer Learning e come applicarlo ai tuoi dati.

In questo codelab hai imparato a personalizzare i modelli di machine learning in base ai tuoi dati utilizzando una tecnica chiamata Transfer Learning

Hai provato due forme di Transfer Learning:

  • Utilizzo di uno strumento come TensorFlow Lite Model Maker.
  • Utilizzo di un vettore di caratteristiche da TensorFlow Hub.

Entrambe le opzioni presentano vantaggi e svantaggi e offrono molte configurazioni possibili per le tue esigenze specifiche

Hai anche imparato che puoi spingerti oltre e perfezionare i modelli modificando leggermente i pesi per adattarli meglio ai tuoi dati.

Entrambe le opzioni consentono di perfezionare i modelli.

Transfer Learning e ottimizzazione non sono solo per i modelli correlati alle immagini. Poiché l'idea è utilizzare una rappresentazione appresa di un dominio per adattare il set di dati, può essere utilizzata anche per i domini Testo e Audio.

Passaggi successivi

  • Fai una prova con i tuoi dati.
  • Condividi con noi cosa crei e tagghi TensorFlow sui social media con i tuoi progetti.

Scopri di più

Hai delle domande?