Deep Learning in MATLAB
Che cos’è il Deep Learning?
Il Deep Learning è una disciplina del Machine Learning che insegna ai computer a fare ciò che risulta naturale per gli esseri umani, ossia apprendere dall’esperienza. Il Deep Learning utilizza le reti neurali per apprendere utili rappresentazioni delle feature direttamente dai dati. Le reti neurali combinano diversi livelli di elaborazione non lineari, utilizzando elementi semplici che operano in parallelo e che sono ispirati dai sistemi nervosi biologici. I modelli di Deep Learning possono raggiungere una precisione all’avanguardia nella classificazione di oggetti, superando talvolta la performance a livello umano.
Deep Learning Toolbox™ fornisce semplici comandi di MATLAB® per la creazione e interconnessione dei livelli di una rete neurale profonda. Gli esempi e le reti preaddestrate rendono semplice l'utilizzo di MATLAB per il Deep Learning, anche se non si possiedono conoscenze sugli algoritmi avanzati di computer vision o sulle reti neurali.
Per un’introduzione concreta ai metodi pratici di Deep Learning, vedere Deep Learning Onramp. Per iniziare rapidamente con il Deep Learning, vedere Prova il Deep Learning in 10 righe di codice MATLAB.
Avvio rapido del Deep Learning utilizzando il transfer learning
Il transfer learning è ampiamente utilizzato nelle applicazioni di Deep Learning. Si può prendere una rete preaddestrata e utilizzarla come punto di partenza per l’apprendimento di una nuova attività. Il fine-tuning di una rete tramite il transfer learning è molto più rapido e semplice dell’addestramento da zero. È possibile far apprendere rapidamente alla rete una nuova attività utilizzando un numero inferiore di immagini di addestramento. Il vantaggio del transfer learning è che la rete preaddestrata ha già appreso un ampio set di feature che possono essere applicate a una vasta gamma di attività simili. Per un esempio interattivo, vedere Transfer Learning con Deep Network Designer. Per un esempio programmatico, vedere Addestramento della rete di Deep Learning per classificare nuove immagini.
Per valutare se utilizzare una rete preaddestrata o creare una nuova rete profonda, si considerino gli scenari riportati in questa tabella.
Utilizzo di una rete preaddestrata per il transfer learning | Creazione di una nuova rete profonda | |
---|---|---|
Dati di addestramento | Centinaia o migliaia di dati etichettati (piccoli) | Migliaia o milioni di dati etichettati |
Calcolo | Calcolo moderato (GPU opzionale) | Calcolo intensivo (necessita della GPU per la velocità) |
Tempo di addestramento | Da secondi a minuti | Da giorni a settimane per problemi reali |
Precisione del modello | Buono, dipendente dal modello preaddestrato | Elevato, ma può sovraadattare piccoli set di dati |
Per scoprire una selezione di reti preaddestrate, utilizzare Deep Network Designer.
Workflow del Deep Learning
Per saperne di più sulle aree di applicazione del Deep Learning, vedere Applications.
Dominio | Workflow di esempio | Per saperne di più | |
---|---|---|---|
Classificazione, regressione e elaborazione di immagini |
| Utilizzare il Deep Learning per attività sui dati delle immagini. Ad esempio, utilizzare il Deep Learning per la classificazione e la regressione di immagini. | Come iniziare a utilizzare il transfer learning Reti neurali profonde preaddestrate Creazione di una rete neurale semplice di Deep Learning per la classificazione |
Sequenze e serie temporali |
| Utilizzare il Deep Learning per attività di sequenza e serie temporale. Ad esempio, utilizzare il Deep Learning per la previsione della classificazione delle sequenze e delle serie temporali. | |
Computer vision |
| Utilizzare il Deep Learning per le applicazioni di computer vision. Ad esempio, utilizzare il Deep Learning per la segmentazione semantica e il rilevamento di oggetti. | Getting Started with Semantic Segmentation Using Deep Learning (Computer Vision Toolbox) Recognition, Object Detection, and Semantic Segmentation (Computer Vision Toolbox) |
Elaborazione audio |
| Utilizzare il Deep Learning per le applicazioni di elaborazione di audio e parlato. Ad esempio, utilizzare il Deep Learning per l’identificazione dell’oratore, il riconoscimento dei comandi vocali e il riconoscimento acustico della scena. | Deep Learning for Audio Applications (Audio Toolbox) |
Guida automatizzata |
| Utilizzare il Deep Learning per le applicazione di guida automatizzata. Ad esempio, utilizzare il Deep Learning per il rilevamento dei veicoli e la segmentazione semantica. | |
Elaborazione dei segnali |
| Utilizzare il Deep Learning per le applicazioni di elaborazione dei segnali. Ad esempio, utilizzare il Deep Learning per la segmentazione delle forme d’onda, la classificazione dei segnali e la riduzione del rumore nei segnali vocali. | Classify Time Series Using Wavelet Analysis and Deep Learning |
Comunicazioni wireless |
| Utilizzare il Deep Learning per i sistemi di comunicazione wireless. Ad esempio, utilizzare il Deep Learning per il posizionamento, il rilevamento dello spettro, la progettazione di autoencoder e la predistorsione digitale (DPD). | Spectrum Sensing with Deep Learning to Identify 5G and LTE Signals Three-Dimensional Indoor Positioning with 802.11az Fingerprinting and Deep Learning (WLAN Toolbox) |
Apprendimento di rinforzo |
| Addestrare gli agenti delle reti neurali profonde interagendo con un ambiente dinamico sconosciuto. Ad esempio, utilizzare l’apprendimento di rinforzo per addestrare le politiche di implementazione di controller e algoritmi decisionali per applicazioni complesse, come l’assegnazione delle risorse, la robotica e i sistemi autonomi. | |
Finanza computazionale |
| Utilizzare il Deep Learning per i workflow finanziari. Ad esempio, utilizzare il Deep Learning per applicazioni quali gli strumenti di pricing, il trading e la gestione del rischio. | Compare Deep Learning Networks for Credit Default Prediction |
Elaborazione lidar |
| Utilizzare gli algoritmi di Deep Learning per l’elaborazione di dati di nuvole di punti lidar. Ad esempio, utilizzare il Deep Learning per la segmentazione semantica, il rilevamento di oggetti basati su dati tridimensionali organizzati a nuvola di punti. | Aerial Lidar Semantic Segmentation Using PointNet++ Deep Learning |
Analisi del testo |
| Utilizzare gli algoritmi di Deep Learning per le applicazioni di analisi del testo. Ad esempio, utilizzare il Deep Learning per la classificazione dei testi, la traduzione linguistica e la generazione di testi. | |
Manutenzione predittiva |
| Utilizzare il Deep Learning per le applicazioni di manutenzione predittiva. Ad esempio, utilizzare il Deep Learning per il rilevamento dei guasti e la stima della vita utile residua. |
Applicazioni di Deep Learning
Elaborare i dati, visualizzare e addestrare le reti, monitorare gli esperimenti e quantificare le reti in modo interattivo utilizzando le applicazioni.
È possibile elaborare i dati prima dell'addestramento utilizzando le applicazioni per etichettare i dati di verità. Per ulteriori informazioni sulla scelta di un’applicazione per l’etichettatura, vedere Choose an App to Label Ground Truth Data.
Nome | Descrizione | Per saperne di più | |
---|---|---|---|
Deep Network Designer | | Costruire, visualizzare, modificare e addestrare reti di Deep Learning. | Transfer Learning con Deep Network Designer Train Network for Time Series Forecasting Using Deep Network Designer |
Experiment Manager | | Creare esperimenti di Deep Learning per addestrare le reti in diverse condizioni iniziali e confrontare i risultati. | |
Deep Network Quantizer | | Ridurre il fabbisogno di memoria di una rete neurale profonda quantizzando i pesi, i bias e le attivazioni dei livelli convoluzionali in tipi di dati interi scalati a 8 bit. | |
Reinforcement Learning Designer (Reinforcement Learning Toolbox) | | Progettare, addestrare e simulare agenti di apprendimento di rinforzo. | Design and Train Agent Using Reinforcement Learning Designer (Reinforcement Learning Toolbox) |
Image Labeler (Computer Vision Toolbox) | | Etichettare i dati di verità di base in una raccolta di immagini. | Get Started with the Image Labeler (Computer Vision Toolbox) |
Video Labeler (Computer Vision Toolbox) | | Etichettare i dati di verità di base in un video, in una sequenza di immagini o da un lettore sorgente di dati personalizzato. | Get Started with the Video Labeler (Computer Vision Toolbox) |
Ground Truth Labeler (Automated Driving Toolbox) | | Etichettare i dati di verità di base in più video, sequenze di immagini o nuvole di punti lidar. | Get Started with Ground Truth Labelling (Automated Driving Toolbox) |
Lidar Labeler (Lidar Toolbox) | | Etichettare gli oggetti in una nuvola di punti o in una sequenza di nuvole di punti. L'applicazione legge i dati delle nuvole di punti dai file PLY, PCAP, LAS, LAZ, ROS e PCD. | Get Started with the Lidar Labeler (Lidar Toolbox) |
Signal Labeler (Signal Processing Toolbox) | | Etichettare i segnali per l'analisi o per l'utilizzo in applicazioni di Machine Learning e Deep Learning. | Using Signal Labeler App (Signal Processing Toolbox) |
Addestramento dei classificatori utilizzando le feature estratte dalle reti preaddestrate
L'estrazione di feature consente di utilizzare la potenza delle reti preaddestrate senza investire tempo e fatica nell’addestramento. L'estrazione di feature può essere il modo più veloce per utilizzare il Deep Learning. Si estraggono le feature apprese da una rete preaddestrata e le si utilizzano per addestrare un classificatore; ad esempio, una macchina a vettori di supporto (SVM richiede Statistics and Machine Learning Toolbox™). Ad esempio, se una SVM addestrata utilizzando alexnet
può ottenere una precisione superiore al 90% sul set di addestramento e di convalida, il perfezionamento tramite il transfer learning potrebbe risultare inutile per l’ottenimento di una maggiore precisione. Inoltre, se il perfezionamento viene eseguito su un set di dati di piccole dimensioni, si rischia anche il sovraadattamento. Se l’SVM non riesce a raggiungere una precisione sufficiente per l’applicazione, conviene eseguire un perfezionamento atto a ottenere un'accuratezza maggiore.
Per un esempio, vedere Extract Image Features Using Pretrained Network.
Deep Learning con Big Data su CPU, GPU, in parallelo e nel cloud
L'addestramento delle reti profonde è impegnativo dal punto di vista computazionale e può richiedere molte ore; tuttavia, le reti neurali sono costituite da algoritmi intrinsecamente paralleli. È possibile utilizzare Parallel Computing Toolbox™ per sfruttare questo parallelismo eseguendo in parallelo GPU e cluster di computer ad alte prestazioni. Per saperne di più sul Deep Learning in parallelo, nel cloud o utilizzando una GPU, vedere Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
I datastore in MATLAB® sono un modo conveniente per lavorare e rappresentare raccolte di dati troppo grandi per essere inserite nella memoria in una sola volta. Per saperne di più sul Deep Learning con grandi set di dati, vedere Deep Learning with Big Data.
Deep Learning utilizzando Simulink
Implementare la funzionalità di Deep Learning nei modelli di Simulink® utilizzando i blocchi della libreria di blocchi Deep Neural Networks, inclusa nella Deep Learning Toolbox™, o utilizzando il blocco Deep Learning Object Detector della libreria di blocchi Analysis & Enhancement inclusa nella Computer Vision Toolbox™.
Per ulteriori informazioni, vedere Deep Learning with Simulink.
Blocco | Descrizione |
---|---|
Classifica i dati utilizzando una rete neurale addestrata di Deep Learning | |
Prevede le risposte utilizzando una rete neurale addestrata di Deep Learning | |
Classifica i dati utilizzando una rete neurale ricorrente addestrata di Deep Learning | |
Prevede le risposte utilizzando una rete neurale ricorrente addestrata | |
Deep Learning Object Detector (Computer Vision Toolbox) | Rileva gli oggetti utilizzando un rilevatore di oggetti addestrato per il Deep Learning |
Interpretabilità del Deep Learning
Le reti di Deep Learning sono spesso descritte come "scatole nere" in quanto il motivo per cui una rete prende una certa decisione non sempre è evidente. È possibile utilizzare tecniche di interpretabilità per tradurre il comportamento della rete in un output interpretabile da una persona. Questo output interpretabile può rispondere a domande sulle previsioni di una rete.
La Deep Learning Toolbox fornisce diversi metodi di visualizzazione del Deep Learning che consentono di studiare e comprendere il comportamento della rete. Ad esempio, gradCAM
, occlusionSensitivity
e imageLIME
. Per ulteriori informazioni, vedere Deep Learning Visualization Methods.
Personalizzazione del Deep Learning
È possibile addestrare e personalizzare un modello di Deep Learning in vari modi. Ad esempio, è possibile costruire una rete utilizzando i livelli integrati o definendo dei livelli personalizzati. È quindi possibile addestrare la rete utilizzando la funzione di addestramento integrata trainNetwork
o definire un modello di Deep Learning come una funzione e utilizzare un loop di addestramento personalizzato. Per decidere quale metodo sia meglio utilizzare, consultare la seguente tabella.
Metodo | Casi d’uso | Per saperne di più |
---|---|---|
Addestramento e livelli integrati | Adatto alla maggior parte delle attività di Deep Learning. |
|
Livelli personalizzati | Se Deep Learning Toolbox non fornisce il livello necessario per l’attività, è possibile creare un livello personalizzato. | |
Personalizzazione del loop di addestramento | Se si desidera un'ulteriore personalizzazione, è possibile costruire e addestrare la rete utilizzando un loop di addestramento personalizzato. |
Per ulteriori informazioni, vedere Train Deep Learning Model in MATLAB.
Importazione ed esportazione di Deep Learning
È possibile importare reti neurali e grafici di livello da TensorFlow™ 2, TensorFlow-Keras, PyTorch® e dal formato di modello ONNX™ (Open Neural Network Exchange). È inoltre possibile esportare le reti neurali e i grafici di livello Deep Learning Toolbox su TensorFlow 2 e nel formato di modello ONNX.
Funzioni di importazione
Piattaforma esterna di Deep Learning e formato di modello | Importazione del modello come rete neurale | Importazione del modello come grafico di livello |
---|---|---|
Rete neurale TensorFlow in formato SavedModel | importTensorFlowNetwork | importTensorFlowLayers |
Rete neurale TensorFlow-Keras in formato HDF5 o JSON | importKerasNetwork | importKerasLayers |
Modello PyTorch tracciato in un file .pt | importNetworkFromPyTorch | Non applicabile |
Rete neurale in formato di modello ONNX | importONNXNetwork | importONNXLayers |
Le funzioni importTensorFlowNetwork
e importTensorFlowLayers
sono consigliate rispetto alle funzioni importKerasNetwork
e importKerasLayers
. Per ulteriori informazioni, vedere .
Le funzioni importTensorFlowNetwork
, importTensorFlowLayers
, importNetworkFromPyTorch
, importONNXNetwork
e importONNXLayers
creano livelli personalizzati generati automaticamente quando si importa un modello con i livelli TensorFlow, PyTorch o con gli operatori ONNX che le funzioni non possono convertire in livelli MATLAB integrati. Le funzioni salvano i livelli personalizzati generati automaticamente in un pacchetto nella cartella corrente. Per ulteriori informazioni, vedere Autogenerated Custom Layers.
Funzioni di esportazione
Esportazione della rete neurale o di un grafico di livello | Piattaforma esterna di Deep Learning e formato di modello |
---|---|
exportNetworkToTensorFlow | Modello TensorFlow 2 nel pacchetto Python® |
exportONNXNetwork | Formato di modello ONNX |
La funzione exportNetworkToTensorFlow
salva una rete neurale o un grafico di livello Deep Learning Toolbox come un modello TensorFlow in un pacchetto Python. Per ulteriori informazioni su come caricare il modello esportato e salvarlo in un formato TensorFlow standard, vedere Load Exported TensorFlow Model e Save Exported TensorFlow Model in Standard Format.
Utilizzando ONNX come un formato intermedio, è possibile interoperare con altri framework di Deep Learning che supportano l’esportazione o l’importazione del modello ONNX.