Deep Learning

Che cos’è il Deep Learning?

Applicazione del Deep Learning alla progettazione di sistemi ingegneristici smart

Il Deep Learning è una branca del Machine Learning che usa le reti neurali per insegnare ai computer a fare ciò che all’uomo viene naturale fare, ovvero imparare da un esempio. Nel Deep Learning, un modello impara a eseguire attività di classificazione o regressione direttamente da dati quali immagini, testo o suono. I modelli di Deep Learning possono raggiungere altissimi livelli di precisione, spesso superiori a quelli umani.

Come funziona il Deep Learning?

I modelli di Deep Learning si basano su architetture di reti neurali. Ispirata al cervello umano, una rete neurale è costituita da nodi interconnessi o neuroni in una struttura stratificata che mette in relazione gli input agli output desiderati. I neuroni tra i livelli di input e di output di una rete neurale sono definiti layer nascosti. Il termine “deep”, ovvero “profondo”, in genere si riferisce al numero di layer nascosti nella rete neurale. I modelli di Deep Learning possono avere centinaia o addirittura migliaia di layer nascosti.

Le reti di Deep Learning sono organizzate in layer, o livelli, costituiti da un gruppo di neuroni interconnessi.

Vista di una tipica architettura di rete neurale.

I modelli di Deep Learning vengono addestrati usando grandi set di dati etichettati e spesso sono in grado di apprendere feature direttamente dai dati, senza dover ricorrere all’estrazione manuale delle feature stesse. Sebbene la prima rete neurale artificiale sia stata teorizzata nel 1958, il Deep Learning richiede un potere computazionale molto alto che è divenuto disponibile a partire dagli anni 2000. Oggi i ricercatori possono accedere a risorse computazionali che consentono loro di creare e addestrare reti con centinaia di connessioni e neuroni.

Le GPU ad alte prestazioni hanno un’architettura parallela efficiente per il Deep Learning. L’abbinamento ai cluster o al Cloud computing consente ai team di sviluppo di ridurre i tempi di addestramento di una rete di Deep Learning da settimane a qualche ora, se non meno.

Tipi di modelli di Deep Learning

Esistono tre tipi di modelli di Deep Learning, ovvero le reti neurali convoluzionali (CNN), le reti neurali ricorrenti (RNN) e i modelli di trasformatori.

CNN: una CNN convolve le feature apprese con i dati di input e usa i layer convoluzionali 2D, rendendo questa architettura adatta all’elaborazione di dati 2D, come le immagini. La CNN opera estraendo le feature direttamente dalle immagini. Le feature rilevanti vengono apprese mentre la rete esegue l’addestramento su una raccolta di immagini. Questa estrazione delle feature automatica rende i modelli di Deep Learning altamente accurati per le attività di classificazione immagini. Le CNN possono essere utilizzate anche per classificare altri tipi di dati, come le serie storiche e il testo.

Una rete neurale convoluzionale per il Deep Learning apprende le feature dalle immagini di input in modo automatico e calcola la probabilità per ciascuna classe.

Visualizzazione di un esempio di rete neurale convoluzionale.

RNN: una rete neurale ricorrente (RNN) è un’architettura di rete per il Deep Learning in grado di prevedere dati di serie storiche o sequenziali. Le RNN sono particolarmente efficaci per lavorare con dati sequenziali che variano in termini di lunghezza e per risolvere problemi come la classificazione di segnali naturali, l’elaborazione del linguaggio e l’analisi di video. La rete Long Short-Term Memory (LSTM) è un tipo particolare di RNN in grado di apprendere meglio le dipendenze a più lungo termine rispetto alle RNN semplici.

Trasformatori: i trasformatori sono progettati per monitorare i rapporti nei dati sequenziali. Si basano su un meccanismo Self-Attention mediante il quale vengono acquisite le dipendenze globali tra input e output. Spesso vengono utilizzate per l’elaborazione del linguaggio naturale e sono alla base di modelli linguistici di ampie dimensioni (LLM), come BERT e ChatGPT™.

Come creare modelli di Deep Learning

È possibile creare un modello di Deep Learning da zero oppure partire da un modello di Deep Learning pre-addestrato, che può essere applicato o adattato alla propria attività.

Addestramento a partire da zero: per addestrare un modello di Deep Learning da zero, occorre raccogliere un set di dati etichettati di grandi dimensioni e progettare un’architettura di rete che apprenderà le feature e creerà il modello. Questo è un buon approccio per applicazioni nuove o specifiche o, più in generale, per applicazioni per le quali non sono disponibili modelli preesistenti. Il principale svantaggio di questo approccio consiste nel fatto che necessita di un set di dati di grandi dimensioni (con verità di base annotata) e che i tempi di addestramento possono andare da qualche ora a qualche settimana, a seconda dell’attività e delle risorse computazionali.

Transfer Learning: nelle applicazioni di Deep Learning come la classificazione immagini, la visione artificiale, l’elaborazione audio e l’elaborazione del linguaggio naturale, in genere viene adottato un approccio basato sul Transfer Learning . Prevede l’ottimizzazione di un modello di Deep Learning pre-addestrato. Si inizia con un modello esistente, come SqueezeNet o GoogLeNet per la classificazione delle immagini, e lo si alimenta con dati nuovi che contengono classi mai viste prima. Dopo aver messo a punto la rete, è possibile eseguire una nuova attività, come categorizzare solo cani o gatti al posto di 1000 oggetti diversi. Un altro vantaggio consiste nel fatto che sono necessari meno dati, per cui i tempi di addestramento si accorciano notevolmente.

Un modello di Deep Learning pre-addestrato può anche essere utilizzato come sistema di estrazione delle feature. Le attivazioni dei layer possono essere usate come feature per addestrare un altro modello di Machine Learning, come una macchina a vettori di supporto (SVM). In alternativa, è possibile usare il modello pre-addestrato come blocco costitutivo di un altro modello di Deep Learning. Ad esempio, è possibile usare una CNN per la classificazione di immagini come sistema di estrazione delle feature per un rilevatore di oggetti.

Deep Learning e Machine Learning a confronto

Il Deep Learning è una forma specializzata di Machine Learning, ed entrambi rientrano nel campo dell’intelligenza artificiale (IA). Il Machine Learning mette a disposizione svariate tecniche e modelli tra cui scegliere in base alla propria applicazione, alla dimensione dei dati da elaborare e al tipo di problema che si deve risolvere.

Illustrazione che mostra le definizioni di intelligenza artificiale, Machine Learning e Deep Learning.

La scelta tra algoritmi di Deep Learning o di Machine Learning per la propria applicazione di intelligenza artificiale dipende dagli obiettivi e dai requisiti del sistema.

Perché scegliere il Deep Learning rispetto al Machine Learning? In una parola sola: precisione. Il Deep Learning in genere garantisce livelli di precisione più alti e offre una maggiore automazione del workflow esteso rispetto al Machine Learning. Le principali problematiche poste dei modelli di Deep Learning sono la maggiore complessità e il fatto che necessitano di set di dati di addestramento più grandi e, di conseguenza, di tempi di addestramento più lunghi. Esistono dei metodi per correggere, o almeno diminuire, l’effetto di questi aspetti.

Ingegneria delle feature Automazione

Un workflow di Machine Learning inizia con l’estrazione manuale delle feature rilevanti dai dati. Successivamente, le feature vengono usate per creare un modello in grado di fare previsione in base a nuovi dati. Con un workflow di Deep Learning, in applicazioni quali il riconoscimento immagini e la visione artificiale, le feature rilevanti vengono estratte in automatico dai dati immagine. Quando si lavora con segnali o dati testuali, il Deep Learning consente di ridurre la pre-elaborazione dei dati necessaria.

Confronto tra un approccio basato sul Machine Learning (sinistra) e uno basato sul Deep Learning (destra) per categorizzare veicoli.

Tempi e dati di addestramento

La precisione del Deep Learning è direttamente proporzionale ai dati. Vale a dire che le prestazioni del Deep Learning migliorano man mano che aumentano le dimensioni dei dati di addestramento. In genere, il Deep Learning richiede una grandissima quantità di dati (ad esempio, migliaia di immagini per la classificazione di immagini) per addestrare il modello. L’accesso a GPU ad alte prestazioni consente di ridurre notevolmente i tempi di addestramento. In alternativa, la modifica e il riaddestramento di una rete pre-addestrata con il Transfer Learning è generalmente più veloce e richiede meno dati etichettati rispetto all’addestramento di una rete partendo da zero.

Se non sono disponibili dati di addestramento sufficienti, è possibile integrare i propri dati esistenti con dati sintetici. I dati sintetici possono essere generati usando reti generative avversarie (GAN) oppure creando e simulando un modello del sistema fisico.

Dimensioni e complessità dei modelli

I modelli di Deep Learning, rispetto a quelli di Machine Learning, sono molto più complessi e più grandi in quanto sono realizzati con centinaia di layer interconnessi. Man mano che la tecnologia del Deep Learning fa progressi, la complessità delle architetture delle reti di Deep Learning aumenta. Complessità e dimensioni contribuiscono al livello di precisione che il Deep Learning è in grado di raggiungere.

Per questa loro complessità, i modelli di Deep Learning sono spesso considerati delle “scatole nere” a cui manca interpretabilità. Un settore emergente, noto come IA esplicabile, offre tecniche volte a spiegare il comportamento dei modelli di Deep Learning in termini umani. Ad esempio, è possibile usare Grad-CAM e LIME per spiegare le previsioni mediante i modelli di Deep Learning per attività di classificazione immagini.

I modelli di Deep Learning non si limitano più esclusivamente al desktop. La distribuzione di modelli di Deep Learning sempre più grandi e complessi su dispositivi con risorse limitate è una sfida crescente che molti di coloro che si occupano di Deep Learning si trovano ad affrontare. Esistono numerose tecniche per comprimere i modelli di Deep Learning, utilizzabili per ridurre le dimensioni dei modelli d Deep Learning su disco, la memoria di runtime e i tempi di inferenza, conservando al contempo alti livelli di precisione.

Compressione di un layer completamente connesso mediante proiezione. L’operazione del layer è scritta sotto la figura.

Proiezione di un layer completamente connesso. La proiezione è un metodo per comprimere le reti.

Perché il Deep Learning è importante

Il Deep Learning è una tecnologia chiave alla base delle automobili senza conducente, che consente loro di riconoscere un segnale di stop o di distinguere un pedone da un lampione. È fondamentale per il controllo vocale dei dispositivi di consumo, come i telefoni, i tablet, le TV e gli altoparlanti portatili. Ultimamente il Deep Learning è oggetto di grande attenzione, e per un buon motivo. Con il Deep Learning, computer e sistemi possono svolgere attività complesse con un livello di precisione e automazione sempre più alto.

Applicazioni di Deep Learning

Il Deep Learning viene applicato alla visione artificiale, all’elaborazione immagini, alla guida autonoma, all’elaborazione di segnali e a molti altri settori. Ogni area di applicazione del Deep Learning comprende più aree secondarie. Ad esempio, la classificazione immagini, il rilevamento oggetti e la segmentazione semantica sono applicazioni secondarie della visione artificiale. Con lo sviluppo di nuove tecnologie e di nuovi metodi di Deep Learning, le applicazioni del Deep Learning continueranno ad aumentare e si scopriranno nuove applicazioni secondarie la cui precisione può essere migliorata grazie al Deep Learning.

Esempi pratici di Deep Learning

L’ispezione visiva è l’ispezione di componenti basata su immagini in cui una videocamera analizza il componente in questione per individuare guasti e difetti qualitativi. Usando tecniche di Deep Learning e di visione artificiale, l’ispezione visiva può essere automatizzata per rilevare difetti di fabbricazione in molti settori quali la biotecnologia, il settore automotive e i semiconduttori.

I segnali di elettroencefalografia (EEG) sono i segnali cerebrali più accessibili e, non a caso, i più studiati. Il Deep Learning può essere utilizzato per diagnosticare automaticamente l’epilessia e per prevedere crisi epilettiche nei segnali EEG.

È possibile utilizzare dei sensori virtuali in qualsiasi tipo di sistema che richieda controllo e monitoraggio in tempo reale e dove l’uso di sensori fisici potrebbe essere impraticabile o costoso. Il Deep Learning può essere abbinato alla progettazione Model-Based per progettare sensori virtuali.

Il Deep Learning applicato alla ricerca sul cancro

Scopri come il Moffit Cancer Center ha usato il Deep Learning per accelerare la scoperta scientifica e personalizzare i piani terapeutici.

MATLAB® ha fornito tutti gli strumenti necessari per applicare con successo l’IA all’imaging e alla radiomica. MATLAB è stato utilizzato per attività quali la pre-elaborazione dei dati, la riduzione del rumore e la segmentazione delle immagini.

Deep Learning con MATLAB

Usare MATLAB con Deep Learning Toolbox™ consente di progettare, analizzare e simulare reti di Deep Learning. I workflow di Deep Learning possono essere estesi a molte applicazioni (come la visione artificiale, l’elaborazione di segnali e l’elaborazione del linguaggio naturale) usando dei toolbox aggiuntivi (come Computer Vision Toolbox™, Signal Processing Toolbox™ e Text Analytics Toolbox™).

Il workflow di Deep Learning comprende la pre-elaborazione e l’etichettatura dei dati, la costruzione di un modello di IA, la visualizzazione della decisione del modello, la simulazione del sistema di IA e la distribuzione su target.

Visualizzazione di un workflow di Deep Learning dalla preparazione dei dati alla distribuzione.

Dati per il Deep Learning

Il Deep Learning necessita di grandi quantità di dati di buona qualità. È possibile utilizzare dei datastore per gestire comodamente le raccolte di dati troppo grandi per essere inserite contemporaneamente in memoria. È possibile utilizzare applicazioni low-code e funzioni integrate per migliorare la qualità dei dati ed etichettare automaticamente la verità di base (ground truth).

Progettazione di modelli di Deep Learning

 

Reti a partire da zero

  • Con sole poche righe di codice, è possibile creare delle reti di Deep Learning, come le CNN, le LSTM, le GAN e i trasformatori.
  • Accelera l’addestramento grazie all’uso di più GPU, del Cloud o dei cluster. Nell’addestramento dei modelli di Deep Learning, MATLAB usa le GPU (se disponibili) senza la necessità di programmare esplicitamente le GPU.
Con sole poche righe di codice MATLAB, sarà possibile creare una rete di Deep Learning LSTM.

Creazione programmatica di una rete LSTM.

Reti pre-addestrate

  • Applica un modello pre-addestrato direttamente alla tua attività, adattalo mediante Transfer Learning o utilizzalo come estrattore di feature.
  • Esplora l’hub per i modelli di Deep Learning di MATLAB per accedere ai modelli più recenti suddivisi per categoria, quindi carica i modelli pre-addestrati nella riga di comando.
  • Converti i modelli TensorFlow™, PyTorch® e ONNX™ in reti MATLAB utilizzando una funzione di importazione. Esporta le reti addestrate e non da Deep Learning Toolbox in TensorFlow e ONNX.
  • Procedi facilmente al Transfer Learning con funzioni integrate per sostituire i layer e regolare la velocità di apprendimento per il riaddestramento.

Uso di modelli pre-addestrati da adattare alla propria attività di Deep Learning.

Applicazioni low-code

  • Con l’app Deep Network Designer è possibile progettare, analizzare e modificare le reti in modo interattivo. È anche possibile importare reti pre-addestrate da Deep Learning Toolbox, TensorFlow e PyTorch.
  • L’app Experiment Manager aiuta a gestire più esperimenti di Deep Learning, a tenere traccia dei parametri di addestramento, ad analizzare i risultati e a confrontare il codice di diversi esperimenti.
Screenshot dell’app Deep Network Designer che mostra i layer di una rete di Deep Learning CNN.

Progettazione, analisi e modifica di reti di Deep Learning in modalità grafica con Deep Network Designer.

Deep Learning per ingegneri

Deep Learning robusto ed esplicabile

Con MATLAB, è possibile visualizzare e verificare i modelli di Deep Learning e le relative previsioni.

  • Monitora i progressi dell’addestramento dei modelli di Deep Learning e rappresenta graficamente le metriche prestazionali.
  • Visualizza gli output dei modelli di Deep Learning impiegando tecniche di spiegabilità, come Grad-CAM, la sensibilità all’occlusione, LIME e Deep Dream. Ciò è utile per comprendere in che modo i modelli di Deep Learning fanno le previsioni.
  • Addestra dei modelli di Deep Learning robusti e verificane la robustezza. È possibile verificare le proprietà di robustezza di una rete, calcolare i limiti di output di una rete, trovare esempi avversari, rilevare dati OOD (Out Of Distribution) e verificare la conformità rispetto agli standard industriali.

Simulazione a livello di sistema

Usa i blocchi di Deep Learning Toolbox per integrare reti addestrate con i sistemi Simulink®. Ciò consente di testare l’integrazione dei modelli di Deep Learning con altre parti del sistema.

Distribuzione su target

È possibile distribuire i modelli di Deep Learning su dispositivi edge, sistemi embedded o nel Cloud. Prima della distribuzione, è possibile comprimere i propri modelli tramite quantizzazione, proiezione o pruning.