Deep Learning, cos’è l’apprendimento profondo, come funziona e quali sono i casi di applicazione

La traduzione letterale è apprendimento profondo ma il Deep Learning, sotto categoria del Machine Learning e del più ampio mondo dell’Intelligenza Artificiale, sottende a qualcosa di molto più ampio del “semplice” apprendimento su più livelli delle macchine. Cerchiamo allora di capire cos’è il Deep Learning, come funziona e che tipo di applicazioni può avere. [...]
Deep Learning
  1. Home
  2. Intelligenza Artificiale
  3. Deep Learning
  4. Deep Learning, cos’è l’apprendimento profondo, come funziona e quali sono i casi di applicazione

La traduzione letterale è apprendimento profondo ma il Deep learning, sottocategoria del Machine learning e del più ampio mondo dell’intelligenza artificiale, sottende a qualcosa di molto più ampio del “semplice” apprendimento su più livelli delle macchine. Cerchiamo allora di capire cos’è il Deep Learning, come funziona e che tipo di applicazioni può avere.

Cos’è il Deep Learning

Il Deep Learning, la cui traduzione letterale significa apprendimento profondo, è una sottocategoria del Machine Learning (che letteralmente viene tradotto come apprendimento automatico) e indica quella branca dell’intelligenza artificiale che fa riferimento agli algoritmi ispirati alla struttura e alla funzione del cervello, chiamati reti neurali artificiali.

Da un punto di vista scientifico, potremmo dire che il Deep learning è l’apprendimento da parte delle “macchine” attraverso dati appresi grazie all’utilizzo di algoritmi (prevalentemente di calcolo statistico).

Il Deep learning (noto anche come apprendimento strutturato profondo o apprendimento gerarchico), infatti, fa parte di una più ampia famiglia di metodi di Machine learning basati sull’assimilazione di rappresentazioni di dati, al contrario degli algoritmi per l’esecuzione di task specifici.

Nuova call-to-action

Le architetture di Deep learning (con le quali oggi si riporta all’attenzione anche del grande pubblico il concetto di rete neurale artificiale) sono per esempio state applicate nella computer vision, nel riconoscimento automatico della lingua parlata, nell’elaborazione del linguaggio naturale, nel riconoscimento audio e nella bioinformatica, ovvero l’utilizzo di strumenti informatici per descrivere dal punto di vista numerico e statistico determinati fenomeni biologici  come le sequenze di geni, la composizione e la struttura delle proteine, i processi biochimici nelle cellule.

Abbiamo raccolto le diverse interpretazioni di alcuni tra i più noti ricercatori e scienziati nel campo dell’apprendimento profondo: Andrew Yan-Tak Ng, docente associato all’università di Stanford e già fondatore di Google Brain e Chief Scientist di Baidu; Ian J. Goodfellow, ricercatore al DeepMind e inventore delle reti GAN; Yoshua Bengio, autorità nel campo del Deep Learning; Ilya Sutskever, Co-founder e Chief Scientist di OpenAI; Geoffrey Everest Hinton, una delle figure chiave del Deep Learning e dell’Intelligenza artificiale, primo ricercatore ad aver dimostrato l’uso di un algoritmo di backpropagation generalizzato per l’addestramento di reti neurali multistrato.

Possiamo quindi definire il Deep Learning come un sistema che sfrutta una classe di algoritmi di apprendimento automatico che:

1) usano vari livelli di unità non lineari a cascata per svolgere compiti di estrazione di caratteristiche e di trasformazione. Ciascun livello successivo utilizza l’uscita del livello precedente come input. Gli algoritmi possono essere sia di tipo supervisionato sia non supervisionato e le applicazioni includono l’analisi di pattern (apprendimento non supervisionato) e classificazione (apprendimento supervisionato);

2) sono basati sull’apprendimento non supervisionato di livelli gerarchici multipli di caratteristiche (e di rappresentazioni) dei dati. Le caratteristiche di più alto livello vengono derivate da quelle di livello più basso per creare una rappresentazione gerarchica;

3) fanno parte della più ampia classe di algoritmi di apprendimento della rappresentazione dei dati all’interno dell’apprendimento automatico (Machine Learning);

4) apprendono multipli livelli di rappresentazione che corrispondono a differenti livelli di astrazione; questi livelli formano una gerarchia di concetti.

Deep Learning - Artificial Neural Network

Applicando il Deep learning, avremo quindi una “macchina” che riesce autonomamente a classificare i dati e a strutturarli gerarchicamente, trovando quelli più rilevanti e utili alla risoluzione di un problema (esattamente come fa la mente umana), migliorando le proprie prestazioni con l’apprendimento continuo.

Le reti neurali artificiali, la base del Deep learning

Come accennato nel precedente paragrafo, l’apprendimento profondo o deep learning basa il proprio funzionamento sulla classificazione e “selezione” dei dati più rilevanti per giungere ad una conclusione, esattamente come fa il nostro cervello biologico che per formulare una risposta ad un quesito, dedurre un’ipotesi logica, arrivare alla risoluzione di un problema, mette in moto i propri neuroni biologici e le connessioni neurali. Infatti, neuroni biologici interconnessi formano le nostre reti neurali cerebrali, che permettono a ciascun individuo di ragionare, fare calcoli in parallelo, riconoscere suoni, immagini, volti, imparare e agire.

Il Deep Learning si comporta allo stesso modo e sfrutta le reti neurali artificiali, modelli di calcolo matematico-informatici basati sul funzionamento delle reti neurali biologiche, ossia modelli costituiti da interconnessioni di informazioni.

Una rete neurale di fatto si presenta come un sistema “adattivo” in grado di modificare la sua struttura (i nodi e le interconnessioni) basandosi sia su dati esterni sia su informazioni interne che si connettono e passano attraverso la rete neurale durante la fase di apprendimento e ragionamento.

PER APPROFONDIMENTI SULLE RETI NEURALI RIMANDIAMO A: “Reti neurali: cosa sono e a cosa servono”

Come funziona il Deep learning

Con il Deep learning vengono simulati i processi di apprendimento del cervello biologico attraverso sistemi artificiali (le reti neurali artificiali, appunto) per insegnare alle macchine non solo ad apprendere autonomamente ma a farlo in modo più “profondo” come sa fare il cervello umano dove profondo significa “su più livelli” (vale a dire sul numero di layer nascosti nella rete neurale – chiamati hidden layer: quelle “tradizionali” contengono 2-3 layer, mentre le reti neurali profonde possono contenerne oltre 150).

L’immagine di seguito (tratta dall’eBook disponibile online gratuitamenteNeural Networks and Deep learning“) può aiutare a comprendere meglio la “struttura” delle reti neurali profonde.

WHITEPAPER
La RPA in 9 step: da dove si comincia?
Intelligenza Artificiale
Realtà virtuale

Le reti neurali profonde sfruttano un numero maggiore di strati intermedi (hidden layer) per costruire più livelli di astrazione, proprio come si fa nei circuiti booleani, i modelli matematici di computazione usati nello studio della teoria della complessità computazionale che, in informatica, studia le risorse minime necessarie – principalmente tempo di calcolo e memoria – per la risoluzione di un problema.

Proviamo a fare un esempio concreto di funzionamento di una rete neurale profonda con il riconoscimento visivo dei pattern:  i neuroni del primo strato potrebbero imparare a riconoscere i bordi, i neuroni nel secondo strato potrebbero imparare a riconoscere forme più complesse, ad esempio triangoli o rettangoli, create dai bordi. Il terzo strato riconoscerebbe forme ancora più complesse, il quarto ulteriori dettagli e così via… i molteplici livelli di astrazione possano dare alle reti neurali profonde un vantaggio enorme nell’imparare a risolvere complessi problemi di riconoscimento di schemi, proprio perché a ogni livello intermedio aggiungono informazioni e analisi utili a fornire un output affidabile.

È abbastanza facile intuire che quanti più livelli intermedi ci sono in una rete neurale profonda (quindi quanto più è grande la rete neurale stessa) tanto più efficace è il risultato. Di contro, la scalabilità della rete neurale è strettamente correlata ai dataset, ai modelli matematici e alle risorse computazionali.

Anche se la richiesta di capacità computazionali enormi può rappresentare un limite, la scalabilità del Deep Learning grazie all’aumento dei dati disponibili e degli algoritmi è ciò che lo differenzia dal Machine Learning: i sistemi di Deep Learning, infatti, migliorano le proprie prestazioni all’aumentare dei dati mentre le applicazioni di Machine Learning (o meglio, i cosiddetti sistemi di apprendimento superficiale) una volta raggiunto un certo livello di performance non sono più scalabili nemmeno aggiungendo esempi e dati di training alla rete neurale.

Questo perché nei sistemi di Machine Learning le caratteristiche di un determinato oggetto (nel caso di sistemi di riconoscimento visivo) vengono estratte e selezionate manualmente e servono per creare un modello in grado di categorizzare gli oggetti (in base alla classificazione e al riconoscimento di quelle caratteristiche); nei sistemi di Deep Learning, invece, l’estrazione delle caratteristiche avviene in modo automatico: la rete neurale apprende in modo autonomo come analizzare dati grezzi e come svolgere un compito (per esempio classificare un oggetto riconoscendone, autonomamente, le caratteristiche).

Se dal punto di vista delle potenzialità il Deep Learning può sembrare più “affascinante” e utile del Machine Learning, va precisato che il calcolo computazionale richiesto per il loro funzionamento è davvero impattante, anche dal punto di vista economico: le CPU più avanzate e le GPU top di gamma utili a “reggere” i workload di un sistema di Deep Learning costano ancora migliaia di dollari; il ricorso a capacità computazionali via Cloud attenuano solo in parte il problema perché la formazione di una rete neurale profonda richiede spesso l’elaborazione di grandi quantità di dati utilizzando cluster di GPU di fascia alta per molte, molte ore (non è detto quindi che acquistare “as a service” la capacità di calcolo necessaria risulti economico).

Come si addestra un sistema di Deep Learning

Un semplicissimo quanto efficace esempio per capire il reale funzionamento di un sistema di Machine Learning (e la differenza con un sistema di Deep Learning) ci viene fornito da Tech Target:

«Mentre gli algoritmi di apprendimento automatico tradizionali sono lineari, gli algoritmi di apprendimento profondo sono impilati in una gerarchia di crescente complessità e astrazione. Per capire l’apprendimento profondo, immaginiamo un bambino la cui prima parola è “cane”. Il bambino impara cos’è un cane (e cosa non lo è) indicando oggetti e dicendo la parola cane. Il genitore dice “Sì, quello è un cane” o “No, non è un cane”. Mentre il bambino continua a puntare agli oggetti, diventa più consapevole delle caratteristiche che tutti i cani possiedono. Ciò che il bambino fa, senza saperlo, è chiarire un’astrazione complessa (il concetto di cane) costruendo una gerarchia in cui ogni livello di astrazione viene creato con la conoscenza che è stata acquisita dallo strato precedente della gerarchia».

A differenza del bambino, che impiegherà settimane o addirittura mesi per comprendere il concetto di “cane” e lo farà con l’aiuto del genitore (quello che viene definito apprendimento supervisionato), una applicazione che utilizza algoritmi di Deep Learning può mostrare e ordinare milioni di immagini, identificando con precisione quali immagini contengono i set di dati, in pochi minuti pur non avendo avuto alcun tipo di indirizzamento sulla correttezza o meno dell’identificazione di determinate immagini nel corso del training.

Solitamente, nei sistemi di Deep Learning, l’unica accortezza degli scienziati è “etichettare” i dati (con i meta tag), per esempio inserendo il meta tag “cane” all’interno delle immagini che contengono un cane ma senza spiegare al sistema come riconoscerlo: è il sistema stesso, attraverso livelli gerarchici multipli, che intuisce cosa caratterizza un cane (le zampe, la cosa, il pelo, ecc.) e quindi come riconoscerlo.

Questi sistemi si basano, in sostanza, su un processo di apprendimento “trial-and-error” ma perché l’output finale sia affidabile sono necessarie enormi quantità di dati. Pensare subito ai Big Data e alla facilità con cui oggi si producono e distribuiscono dati di qualsiasi forma e da qualsiasi fonte come facile risoluzione sarebbe però un errore: l’accuratezza dell’output richiede, almeno nella prima fase di addestramento, l’utilizzo di dati “etichettati” (contenenti dei meta tag) che significa che l’utilizzo di dati non strutturati potrebbero rappresentare un problema. I dati non strutturati possono essere analizzati da un modello di apprendimento profondo una volta formato e raggiunto un livello accettabile di accuratezza, ma non per la fase di training del sistema.

Non solo, i sistemi basati su Deep Learning sono difficili da addestrare a causa del numero stesso di strati nella rete neurale. Il numero di strati e collegamenti tra i neuroni nella rete è tale che può diventare difficile calcolare le “regolazioni” che devono essere apportate in ogni fase del processo di addestramento (un problema indicato come problema della scomparsa del gradiente); questo perché per il training comunemente si usano i cosiddetti algoritmi di retropropagazione dell’errore (backpropagation) attraverso il quale si rivedono i pesi della rete neurale (le connessioni tra i neuroni) in caso di errori (la rete propaga all’indietro l’errore in modo che i pesi delle connessioni vengano aggiornati in modo più appropriato). Un processo che continua in modo iterativo finché il gradiente (l’elemento che dà la direzione verso cui l’algoritmo deve muoversi) è nullo.

Deep Learning Framework:  da TensorFlow a PyTorch

Uno dei framework specifici per il Deep Learning più in uso tra ricercatori, sviluppatori e data scientist è TensorFlow, nota libreria software open source (progetto supportato da Google) per l’apprendimento automatico che fornisce moduli testati e ottimizzati per la realizzazione di algoritmi da impiegare in diversi tipi di software e con diversi tipi di linguaggi di programmazione, da Python, C/C++, Java, Go, RUST, R, … (in particolare per “compiti percettivi” e per la comprensione del linguaggio naturale).

Dal 2019 si è fatto strada PyTorch, un progetto open source sviluppato da Facebook e oggi parte della galassia Linux.

Inizialmente (e per diversi anni) gli sviluppatori di Meta hanno utilizzato un framework noto come Caffe2, che è stato adottato anche da molte università e ricercatori. Nel 2018 però Facebook aveva annunciato che stava lavorando ad un altro tipo di framework accessibile alla comunità open source, che combinasse il meglio di Caffe2 e ONNX in un nuovo framework (PyTorch). ONNX sta per Open Neural Network Exchange ed è un  framework interoperabile cui anche Microsoft e AWS contribuiscono attivamente fornendo supporto per Microsoft CNTK e Apache MXNet. PyTorch 1.0, di fatto, combina il meglio di Caffe2 e ONNX (è uno dei primi framework con supporto nativo per i modelli ONNX).

Ciò su cui si sono concentrati gli sviluppatori di Meta (ma non solo) è stata la creazione di un framework molto più semplice ed accessibile rispetto a TensorFlow. PyTorch, per esempio, utilizza una tecnica nota come calcolo dinamico che semplifica l’addestramento delle reti neurali. Non solo, il modello di esecuzione di PyTorch imita il modello di programmazione convenzionale noto a uno sviluppatore medio di Python. Offre inoltre formazione distribuita, profonda integrazione in Python e un vivace ecosistema di strumenti e librerie (come Keras).

Da settembre 2022, Meta ha annunciato la nascita della PyTorch Foundation, un’organizzazione indipendente all’interno della Linux Foundation.

I casi d’uso e i tipi di applicazioni del Deep learning

Nonostante le problematiche che abbiamo illustrato, i sistemi di Deep learning hanno compiuto enormi passi evolutivi e sono migliorati moltissimo negli ultimi anni, soprattutto per la grandissima quantità di dati a disposizione ma soprattutto per la disponibilità di infrastrutture ultra performanti (CPU e GPU in particolare).

Nell’ambito della ricerca sull’artificial intelligence, l’apprendimento automatico ha riscosso un notevole successo negli ultimi anni, consentendo ai computer di superare o avvicinarsi alle prestazioni umane corrispondenti in aree che vanno dal riconoscimento facciale al quello vocale e linguistico. L’apprendimento profondo invece consente ai computer di fare un passo in avanti, in particolare di risolvere una serie di problemi complessi.

Da semplici cittadini non esperti di tecnologia, è possibile notare diversi casi d’uso ed ambiti di applicazione:

  • la computer vision per le auto senza conducente,
  • i robot droni impiegati per la consegna di pacchi o l’assistenza in emergenza (per esempio per la consegna di cibo o per trasfusioni in zone di crisi);
  • il riconoscimento e la sintesi vocale e linguistica per chatbot e robot di servizio;
  • il riconoscimento facciale per sorveglianza in paesi come la Cina;
  • il riconoscimento immagini radiologiche o l’individuazione di sequenze genetiche o di molecole farmaceutiche;
  • sistemi di analisi per la manutenzione predittiva su una infrastruttura o un impianto analizzando i dati dei sensori dell’IoT.

I compiti che una macchina può svolgere grazie al Deep Learning più maturi ad oggi sono:

1) colorazione automatica delle immagini in bianco e nero (per la rete neurale significa riconoscere bordi, sfondi, dettagli e conoscere i colori tipici di una farfalla, per esempio, sapendo esattamente dove collocare il colore corretto);

2) aggiunta automatica di suoni a filmati silenziosi (per il sistema di Deep Learning significa sintetizzare suoni e collocarli correttamente all’interno di una situazione particolare riconoscendo immagini ed azioni, per esempio inserendo il suono del martello pneumatico, della rottura dell’asfalto e i sottofondi di una strada cittadina trafficata in un video in cui si vedono dei lavoratori che stanno rompendo l’asfalto con il martello pneumatico);

3) traduzione simultanea (per il sistema di Deep Learning significa ascoltare e riconoscere il linguaggio naturale, riconoscere la lingua parlata e tradurre il significato in un’altra lingua);

4) classificazione degli oggetti all’interno di una fotografia (il sistema in questo caso è in grado di riconoscere e classificare tutto ciò che vede in un’immagine, anche molto complessa dove per esempio c’è un paesaggio di sfondo, per esempio delle montagne, persone che camminano lungo un sentieri, degli animali al pascolo, ecc.);

5) generazione automatica della grafia (ci sono già oggi sistemi di Deep Learning capaci di utilizzare la grafia umana per scrivere addirittura apprendendo gli stimi della scrittura a mano degli esseri umani ed imitandola);

6) generazione automatica di testo (sono sistemi che hanno imparato a scrivere correttamente in una determinata lingua rispettando ortografia, punteggiatura, grammatica e persino imparando ad usare stili di scrittura differenti a seconda dell’output da produrre, per esempio un articolo giornalistico o una novella);

7) generazione automatica di didascalie (in questo caso il riconoscimelo delle immagini, l’analisi del contesto e la capacità di scrittura consentono ad un sistema di scrivere in automatico le didascalie di una immagine descrivendone perfettamente la scena);

8) gioco automatico (abbiamo imparato a capire le potenzialità di un sistema in grado di imparare autonomamente come giocare a un determinato gioco grazie a DeepMind – oggi parte di Google – che ha sviluppato un sistema di Deep Learning – AlphaGo – che non solo ha imparato a giocare al complessissimo gioco Go ma è riuscito anche a battere il campione mondiale, umano).

Di seguito, le diverse applicazioni:

Driverless car

Traffic Sign Detection (TDS) è una funzione presente su molte auto di nuova fabbricazione che permette di riconoscere i segnali stradali. Si tratta di una applicazione di machine learning che utilizza le reti neurali convoluzionali e framework come Tensorflow.

Cinema

All’inizio del 2021 è stata presentata una nuova metodologia di AI applicabile nella produzione cinematografica. Il nuovo approccio si avvale di diversi strumenti di deep learning in parallelo e in serie (VGG16, MLP, transfer learning) e adopera differenti tipologie di dataset (immagini con feature diverse messe in risalto) al fine di poter classificare in modo accurato le inquadrature cinematografiche e permetterne così un utilizzo professionale e operativo nel processo di film making o nell’attività di indicizzazione dei contenuti streaming. Parliamo di AI applicata all’image processing.

Quantum Intelligence

Sul quantum computing si concentrano grandi aspettative. Un paradigma di elaborazione che richiede nuovo hardware, nuovi algoritmi e nuove soluzioni. La caratteristica principale è la capacità di semplificare molto la soluzione di alcuni problemi, riducendone la complessità esponenziale. Un esempio: la determinazione dei fattori di un numero, alla base di tanti problemi di crittografia e su cui si fondano moltissime applicazioni di sicurezza informatica.

Ologrammi

Uno studio condotto sugli ologrammi nel 2021 dai ricercatori del Massachussets Institute of Technology (MIT) ha provato come, grazie a una nuova tecnica di deep learning denominata “olografia tensoriale”, è possibile generare un video olografico in modo istantaneo, sfruttando la capacità computazionale presente su un semplice computer. La peculiarità è quella di essere composta da tensori addestrabili, che possono apprendere come elaborare le informazioni visive e di profondità in modo simile a quanto fa il cervello umano.

 

New call-to-action

dIGITAL TALK
Droni, AI, Machine Leraning: l'esperienza di Terna sulla transizione energetica

FacebookTwitterLinkedIn