Deep Learning

 

Deep Learning

3 cose da sapere

Il deep learning è una tecnica di apprendimento automatico che insegna ai computer a svolgere un’attività naturale per l’uomo: imparare con l’esempio. Il deep learning è una tecnologia fondamentale alla base delle automobili a guida autonoma, poiché consente loro di riconoscere un segnale di stop o di distinguere un pedone da un lampione. È il fattore chiave del controllo vocale in dispositivi quali telefoni cellulari, tablet, TV e altoparlanti vivavoce. Non è un caso se ultimamente il deep learning è sempre più al centro dell’attenzione. Questa tecnica sta ottenendo risultati che prima non sembravano possibili.

Nel deep learning, un modello computerizzato impara a svolgere attività di classificazione direttamente da immagini, testo o suoni. I modelli di deep learning possono raggiungere una precisione allo stato dell’arte, superando talvolta le prestazioni ottenute dall’uomo. L’addestramento dei modelli viene eseguito utilizzando un grande set di dati etichettati e architetture di reti neurali contenenti più layer.

Perché il deep learning è così importante

In che modo il deep learning riesce ad ottenere risultati così sorprendenti?

In una parola, precisione. Il deep learning raggiunge una precisione di riconoscimento mai vista prima. Ciò consente all’elettronica di consumo di soddisfare le aspettative degli utenti ed è fondamentale per le applicazioni essenziali per la sicurezza, come le automobili a guida autonoma. Gli sviluppi recenti hanno consentito al deep learning di progredire a tal punto da superare l’uomo in alcune attività, come la classificazione degli oggetti nelle immagini.

Il deep learning è stato teorizzato per la prima volta negli anni ‘80, ma è diventato utile soltanto di recente per due ragioni principali:

  1. Il deep learning richiede una grande quantità di dati etichettati. Per esempio, per lo sviluppo delle automobili senza conducente sono necessari milioni di immagini e migliaia di ore di video.
  2. Il deep learning richiede una notevole potenza elaborativa. Le GPU ad alte prestazioni sono dotate di un’architettura parallela molto efficiente per il deep learning. In combinazione con i cluster o il cloud computing, i team di sviluppo sono in grado di ridurre i tempi di addestramento per una rete di deep learning da diverse settimane a poche ore.

Esempi di applicazioni del deep learning

Le applicazioni di deep learning vengono utilizzate in diversi settori, dalla guida autonoma ai dispositivi medici.

Guida autonoma: I ricercatori del settore automobilistico utilizzano il deep learning per il rilevamento automatico di oggetti, per esempio segnali di stop e semafori. Inoltre, il deep learning viene utilizzato per rilevare la presenza di pedoni, contribuendo a ridurre il rischio di incidenti.

Aerospazio e difesa: Il deep learning viene utilizzato per identificare dai satelliti gli oggetti che consentono di localizzare le aree di interesse e individuare le zone sicure o insicure per le truppe.

Ricerca medica: La ricerca sul cancro si serve del deep learning per rilevare automaticamente le cellule tumorali. Alcuni team presso la UCLA hanno costruito un microscopio avanzato che produce un set di dati di grandi dimensioni utilizzato per l’addestramento di un’applicazione di deep learning in grado di identificare con precisione le cellule tumorali.

Automazione industriale: Il deep learning contribuisce a migliorare la sicurezza dei lavoratori nell’utilizzo di macchinari pesanti rilevando automaticamente la presenza di persone e oggetti quando si trovano ad una distanza non sicura dalle macchine.

Elettronica: Il deep learning viene utilizzato nella traduzione uditiva e vocale automatica. Per esempio, i dispositivi di assistenza domestica dotati di riconoscimento vocale e in grado di conoscere le preferenze dell’utente sono supportati dalle applicazioni di deep learning.

Come funziona il deep learning

La maggior parte dei metodi di deep learning utilizza le architetture di reti neurali, motivo per cui i modelli di deep learning sono spesso denominati reti neurali profonde.

Il termine “profondo” si riferisce solitamente al numero di layer nascosti nella rete neurale. Le reti neurali tradizionali contengono solo 2-3 layer nascosti, mentre le reti profonde possono contenerne fino a 150.

L’addestramento dei modelli di deep learning viene eseguito utilizzando grandi set di dati etichettati e architetture di reti neurali in grado di apprendere le feature direttamente dai dati senza la necessità di estrarle manualmente.

Figura 1: Reti neurali, organizzate in layer che consistono in un set di nodi interconnessi. Le reti possono contenere decine o centinaia di layer nascosti.

Una delle tipologie più comuni di reti neurali è nota come rete neurale convoluzionale (CNN o ConvNet). Una CNN convolve le caratteristiche apprese con i dati in ingresso e utilizza i layer convoluzionali in 2D, che rendono questa architettura adatta all’elaborazione di dati in 2D, come le immagini.

Le CNN eliminano la necessità di estrazione manuale delle feature, in modo che l’utente non debba identificare le feature utilizzate per la classificazione delle immagini. Il funzionamento delle CNN si basa sull’estrazione delle feature direttamente dalle immagini. Le feature significative non vengono pre-addestrate; vengono acquisite quando la rete addestra una raccolta di immagini. L’estrazione automatica delle feature consente un’elevata precisione dei modelli di deep learning destinati alle attività di visione artificiale, come la classificazione degli oggetti.

Figura 2: Esempio di una rete con molti layer convoluzionali. A ciascuna immagine, in diverse risoluzioni, vengono applicati dei filtri e l’output di ogni immagine convolta serve da input per il layer successivo.

Le CNN imparano a rilevare le diverse feature di un’immagine utilizzando decine o centinaia di layer nascosti. Ciascun layer nascosto aumenta la complessità delle feature dell’immagine apprese. Per esempio, il primo layer nascosto potrebbe imparare a rilevare i bordi, mentre l’ultimo impara a rilevare forme più complesse, specifiche per la forma dell’oggetto che si cerca di riconoscere.

Qual è la differenza tra machine learning e deep learning?

Il deep learning è una forma specifica di machine learning. Un flusso di lavoro di machine learning inizia con l’estrazione manuale delle feature significative dalle immagini. Le feature vengono quindi utilizzate per creare un modello che categorizza gli oggetti nell’immagine. Con un flusso di lavoro di deep learning, le feature significative vengono estratte automaticamente dalle immagini. Inoltre, il deep learning esegue un “apprendimento end-to-end”, in cui una rete apprende automaticamente come elaborare dati grezzi e svolgere un’attività, per esempio una classificazione.

Un’altra differenza fondamentale è che gli algoritmi di deep learning scalano con dati, mentre l’apprendimento superficiale utilizza la convergenza. Per apprendimento superficiale si intendono i metodi di machine learning che non consentono ulteriori sviluppi una volta raggiunto un certo livello di performance, quando si aggiungono esempi e dati di training alla rete.

Un vantaggio fondamentale delle reti di deep learning è la possibilità di migliorare le prestazioni con l’aumentare del formato dei dati.

Figura 3. Confronto tra un approccio di machine learning (a sinistra) e deep learning (a destra) nella categorizzazione di veicoli.

Il machine learning prevede la selezione manuale delle feature e di un classificatore per l’ordinamento delle immagini. Con il deep learning, l’estrazione delle feature e la procedura di modellazione sono automatiche.

Come scegliere tra machine learning e deep learning

Il machine learning consente di scegliere tra una varietà di tecniche e modelli in base all’applicazione utilizzata, al formato dei dati da elaborare e al tipo di problema che si desidera risolvere. Un’applicazione di deep learning efficace richiede una grande quantità di dati (migliaia di immagini) per addestrare il modello e le GPU (Graphics Processing Units) per elaborare rapidamente i dati.

Al momento di scegliere tra machine learning e deep learning occorre considerare se di dispone di una GPU ad alte prestazioni e di una grande quantità di dati etichettati. In caso contrario, è più sensato utilizzare il machine learning anziché il deep learning. Il deep learning è generalmente più complesso, per cui è necessario disporre di almeno alcune migliaia di immagini per ottenere risultati affidabili. Con una GPU ad alte prestazioni, il modello impiega meno tempo ad analizzare tutte queste immagini.

Come creare e addestrare un modello di deep learning

I tre modi più comuni utilizzati per eseguire la classificazione di oggetti tramite deep learning sono:

Addestramento da zero

Per addestrare una rete profonda da zero, è necessario raccogliere un set di dati etichettati di grandi dimensioni e progettare un’architettura di rete in grado di apprendere le feature e il modello. Ciò è utile per le nuove applicazioni o per le applicazioni che dispongono di un grande numero di categorie di output. Si tratta di un approccio meno comune poiché, considerata la grande quantità di dati e la velocità di apprendimento, l’addestramento di queste reti richiede giorni o settimane.

Transfer Learning

La maggior parte delle applicazioni di deep learning utilizza l’approccio denominato transfer learning, un processo che consiste nell’affinamento di un modello precedentemente addestrato. Si parte da una rete esistente, come AlexNet o GoogLeNet, in cui si inseriscono nuovi dati contenenti classi precedentemente sconosciute. Una volta messa a punto la rete, è possibile svolgere una nuova attività, per esempio la semplice categorizzazione di cani o gatti anziché 1000 oggetti diversi. Questo approccio, inoltre, presenta il vantaggio di richiedere molti meno dati (vengono elaborate migliaia di immagini anziché milioni), quindi i tempi di calcolo si riducono a pochi minuti o ad alcune ore.

Il transfer learning richiede un’interfaccia interna alla rete pre-esistente, che consente di apportare modifiche estremamente precise e miglioramenti per la nuova attività. MATLAB® offre strumenti e funzioni progettati per assisterti nelle operazioni di transfer learning.

Estrazione delle feature

Un approccio di deep learning meno comune e più specializzato è l’utilizzo della rete come estrattore di feature. Poiché tutti i layer hanno il compito di apprendere determinate feature dalle immagini, è possibile estrarre queste feature dalla rete in qualsiasi momento durante il processo di addestramento. Tali feature possono quindi essere utilizzate come input per un modello di machine learning come le support vector machines (SVM).

Accelerazione di modelli di deep learning tramite GPU

L’addestramento di un modello di deep learning può richiedere molto tempo, da giorni a settimane. L’utilizzo dell’accelerazione GPU può velocizzare il processo in modo sostanziale. L’uso di MATLAB con una GPU riduce il tempo necessario all’addestramento di una rete e può ridurre il tempo per un problema di classificazione di immagini da alcuni giorni a poche ore. Nell’addestramento dei modelli di deep learning, MATLAB utilizza le GPU (se disponibili) evitando la necessità di comprendere esplicitamente come programmare le GPU.

Figura 4. Comandi di Neural Network Toolbox per l’addestramento della CNN da zero o l’uso di un modello pre-addestrato per il transfer learning.

Applicazioni di deep learning

È possibile utilizzare modelli di reti neurali profonde precedentemente addestrati per applicare rapidamente il deep learning ai problemi riscontrati eseguendo il transfer learning o l’estrazione di feature. Tra i modelli disponibili per gli utenti MATLAB figurano AlexNet, VGG-16, VGG-19 e i modelli Caffe (per esempio, da Caffe Model Zoo) importati tramite importCaffeNetwork.

Utilizzo di AlexNet per riconoscere gli oggetti con una webcam

Utilizza MATLAB, una semplice webcam e una rete neurale profonda per identificare gli oggetti nei dintorni.

Esempio: Rilevazione di oggetti tramite deep learning

Oltre al riconoscimento di oggetti, che identifica un oggetto specifico in un’immagine o un video, il deep learning può essere utilizzato anche per la rilevazione di oggetti. La rilevazione di oggetti consiste nel riconoscere e localizzare l’oggetto in una scena e consente di individuare più oggetti all’interno dell’immagine.

Deep Learning con MATLAB

Con MATLAB, il deep learning è più semplice. Oltre agli strumenti e alle funzioni per la gestione di grandi set di dati, MATLAB offre anche toolbox specifici per l’utilizzo del machine learning, delle reti neurali, della visione artificiale e della guida autonoma.

Con solo poche righe di codice, MATLAB consente anche ai meno esperti di utilizzare il deep learning. Impara rapidamente, crea e visualizza modelli e distribuiscili a server e dispositivi embedded.

I team traggono vantaggio dall’utilizzo di MATLAB per il deep learning perché consente di:

  1. Creare e visualizzare modelli con poche righe di codice.
  2. MATLAB consente di costruire modelli di deep learning con poche linee di codice. Con MATLAB, è possibile importare con rapidità modelli precedentemente addestrati, oltre a visualizzare ed eseguire il debug dei risultati intermedi in fase di regolazione dei parametri di addestramento.

  3. Eseguire il deep learning senza essere esperti.
  4. È possibile utilizzare MATLAB per apprendere e acquisire competenze nel settore del deep learning. La maggior parte di noi non ha mai seguito un corso di deep learning. Dobbiamo imparare in corso d’opera. Con MATLAB, l’apprendimento di queste tecniche è più pratico e accessibile. Inoltre, MATLAB consente agli esperti del settore di eseguire personalmente il deep learning anziché affidare il compito ai data scientist, che potrebbero non conoscere il loro settore o la loro applicazione.

  5. Eseguire automaticamente l’etichettatura sul campo di immagini e video.
  6. MATLAB consente agli utenti di etichettare interattivamente gli oggetti all’interno di immagini ed è in grado di automatizzare l’etichettatura sul campo all’interno di video per l’addestramento e il test di modelli di deep learning. Questo approccio interattivo e automatizzato consente di ottenere risultati migliori in meno tempo.

  7. Integrare il deep learning in un unico flusso di lavoro.

MATLAB è in grado di unificare più domini in un unico flusso di lavoro. MATLAB ti consente di progettare e programmare nel medesimo ambiente. Offre strumenti e funzioni per il deep learning e per una serie di domini che si servono degli algoritmi di deep learning, come l’elaborazione di segnali, la visione artificiale e l’analisi di dati.

Con MATLAB è possibile integrare i risultati nelle applicazioni esistenti. MATLAB consente di automatizzare la distribuzione dei modelli di deep learning in sistemi aziendali, cluster, cloud e dispositivi embedded.

Maggiori informazioni sul Deep Learning e su esempi di codice.

Per ulteriori informazioni sull’addestramento e sull’uso di modelli di deep learning, vedi MATLABComputer Vision System Toolbox™Statistics and Machine Learning Toolbox™Neural Network Toolbox™Automated Driving System Toolbox™.

Scopri di più sul deep learning

Scopri le nozioni base del deep learning in questo Tech Talk MATLAB®. Scoprirai perché il deep learning è diventato così popolare e approfondirai 3 concetti: cos’è il deep learning, come viene utilizzato nel mondo reale e come si impara a utilizzarlo.
Guarda una dimostrazione rapida sull’uso di MATLAB® con una semplice webcam e una rete neurale profonda per identificare gli oggetti nei dintorni. Questa demo utilizza AlexNet, una rete neurale convoluzionale precedentemente addestrata (CNN o ConvNet) su oltre un milione di immagini.
Scopri come utilizzare il Transfer Learning in MATLAB per ristabilire reti di apprendimento profonde create da esperti per i tuoi dati o attività.
Un sistema di imaging che combina la citometria a flusso, il Photonic Time Stretch e gli algoritmi di machine learning consente ai ricercatori della UCLA di classificare le cellule tumorali in campioni ematici senza l’utilizzo di biomarcatori.
Utilizza le tecniche di machine learning in MATLAB per il riconoscimento di scene in base alle caratteristiche distintive all’interno delle immagini.
Partendo da un semplice esempio di rilevazione e riconoscimento di oggetti, questo articolo dimostra quanto sia facile utilizzare MATLAB® per il deep learning, anche senza possedere una conoscenza approfondita degli algoritmi di visione artificiale avanzata o delle reti neurali.