Choose Colour style

deep learning - machine learning

Machine Learning & Deep Learning.

Negli scorsi articoli abbiamo tirato fuori più volte questi due termini, che hanno un certo peso nel mondo dell’Intelligenza Artificiale.

Ci siamo fatti un giro su Internet per scoprire se le persone hanno capito il significato di questi due termini…

Ma ci siamo accorti che non ci sono guide in italiano che permettano ai ‘profani’ di assimilare il concetto in poco tempo.

Anzi, alcune guide richiedono ore ed ore di studio…

Altre costano decine (se non centinaia) di euro e richiedono un livello di conoscenza pari a quello di un ingegnere…

Gli articoli gratuiti in genere sono molto tecnici e fanno riferimento spesso a realtà come Netflix, YouTube o Amazon, che sono imparagonabili alle aziende italiane.

Quindi, oggi cercheremo di compiere un’impresa titanica e spiegheremo nella maniera più semplice possibile che cosa siano il Machine Learning e il Deep Learning.

Come hai imparato a giocare a dama?

Che cos’è il Machine Learning?

Partiamo da un presupposto.

L’Intelligenza Artificiale è la capacità di una macchina di risolvere un problema, così come farebbe la mente umana.

E l’Intelligenza Artificiale include in sé il Machine Learning, che a sua volta include in sé il Deep Learning (come una matrioska).

Partiamo dal Machine Learning.

Il Machine Learning è un sottoinsieme dell’Intelligenza Artificiale che si occupa di creare sistemi che apprendono in base ai dati che gli vengono forniti.

È quello che storicamente è venuto prima, infatti è costituito da una serie di algoritmi più “semplici” rispetto al Deep Learning.

Amazon e Netflix sono i classici esempi di Machine Learning messo in pratica.

Ti sarà capitato almeno una volta di fare un acquisto su Amazon o di aver guardato un film su Netflix.

In entrambi i casi, il sistema ti suggerisce dei prodotti o dei film che più probabilmente ti interessano, perché ha imparato a riconoscere i tuoi gusti o i tuoi interessi in base alle tue interazioni.

La peculiarità del Machine Learning è che più dati il sistema riceve, più questo apprende e migliora la qualità del risultato.

In pratica, più acquisti fai e interazioni hai su Amazon e su Netflix, più i consigli sono azzeccati.

La domanda quindi è: “Come fa la macchina ad imparare?”.

La macchina impara in maniera molto simile agli umani.

Volendo fare un esempio banale, è come quando abbiamo imparato a giocare a dama o a scacchi.

Molto probabilmente siamo partiti da qualcuno che ci ha spiegato le regole del gioco.

Dopodiché, a furia di giocare, abbiamo ‘appreso’ determinati schemi di gioco e poi abbiamo migliorato le nostre capacità.

Abbiamo vinto, abbiamo perso, abbiamo capito quali erano i nostri errori, li abbiamo corretti, finché non siamo diventati abbastanza bravi.

Tornando a parlare di termini un po’ più tecnici, il processo di apprendimento parte da un insieme di dati strutturati (detto “dataset“) – che è molto simile all’insieme di regole della dama.

“Strutturato”, per capirsi, significa sotto forma di numeri o matrici a più dimensioni – i famosi “tensori” da cui deriva il nostro nome, BlueTensor.

Il processo di apprendimento avviene poi in due passaggi.

Il primo passaggio detto di “Training” o “Addestramento”.

In questo primo passaggio il sistema riceve in ingresso tutta una serie di dati che servono ad addestrare il modello.

Riprendendo l’esempio della dama, l’algoritmo impara le regole del gioco.

Il secondo passaggio è detto di “Test“.

Il modello è addestrato e viene validato con un altro sottoinsieme di dati che avevo all’inizio.

In questo caso, l’algoritmo deve ‘dimostrare’ di aver imparato a giocare.

Se il risultato darà un esito positivo, significa che il modello è pronto per essere messo in produzione.

A questo punto può ricevere altri dati di ingresso che il sistema non ha mai visto per produrre degli output.

Quindi, alla fine, l’algoritmo ha imparato a giocare bene ed è pronto a sfidare un avversario.

Dove vediamo più frequentemente dei sistemi di Machine Learning?

Esistono diversi algoritmi di Machine Learning che permettono di elaborare soluzioni concrete in diversi ambiti.

Per esempio, da anni esistono i famosi filtri antispam.

In questo caso, l’algoritmo è in grado di esaminare il testo di un’e-mail basandosi sullo storico delle e-mail e sulle e-mail contrassegnate come spam, per poi “classificarle” correttamente.

Se l’algoritmo funziona bene, riuscirà a riconoscere le e-mail di spam e a metterle nella cartella apposita.

Passando al mondo dell’industria, il Machine Learning permette di trovare correlazioni su enormi serie di dati, enormi insiemi di variabili che sarebbero difficili da elaborare manualmente.

Questo ci permette di creare anche dei sistemi predittivi che possono essere applicati in tanti ambiti come il marketing, per esempio.

Si può prevedere quali sono i contenuti più interessanti, si possono dare suggerimenti di vendita…

Magari all’interno di un sito web si possono far apparire i contenuti che più probabilmente piacciono all’utente… 

Nei casi in cui ci sono dei compiti un po’ più complessi, dove non ci sono dati strutturati o categorizzati in anticipo, si utilizza invece il Deep Learning.

Che cos’è invece il Deep Learning?

Nel Machine Learning l’apprendimento parte dai dati.

Quindi abbiamo i dati, creiamo l’algoritmo e poi lo si mette in fase di apprendimento.

Il Deep Learning, invece, è un sottoinsieme del Machine Learning, più complesso.

Alla base del Deep Learning c’è l’idea di creare una struttura che assomiglia al cervello umano.

Quindi ci sono un numero di neuroni detti “nodi” che compiono delle azioni, separati in gruppi gerarchici detti “layer”.

Prima c’è un layer di ingresso, seguito da un certo numero di layer “nascosti”, e per finire un layer di uscita.

Ogni layer ha un compito specifico, può essere formato da un numero di nodi specifico e riceve come input le informazioni elaborate dal layer precedente.

Questo concetto di differenziare l’analisi delle informazioni in modo gerarchico è ciò che distingue il Deep Learning dal Machine Learning.

Partiamo da un esempio per capirci, partiamo dalla Computer Vision.

I nodi del layer più in basso riusciranno a riconoscere i bordi di un’immagine.

Poi questo layer dà in output una sintesi di ciò che ha riconosciuto – la sua ‘valutazione’ – come input del layer successivo.

I nodi del layer appena più in alto – con le valutazioni ricevute – riusciranno a riconoscere se si tratta di un triangolo o un rettangolo.

Quindi, ogni gruppo di nodi valuta il risultato del gruppo precedente fino a racchiudere l’oggetto che stiamo cercando.

I layer, infatti, salgono fino all’ultimo, quello in uscita, che riconosce la forma definitiva dell’immagine con un output definitivo.

Mettiamo che all’inizio io abbia un’immagine molto grande con un gatto all’interno.

Questa viene divisa in sezioni sempre più piccole che vengono ‘assegnate’ a specifici nodi.

Ogni nodo dà una valutazione della propria sezione.

Quindi saranno i layer dell’ultimo livello, una volta raccolte tutte le valutazioni, a dare la percezione di cosa stiamo cercando nell’immagine.

Cioè, riusciranno a riconoscere il gatto all’interno dell’immagine.

Man mano che le informazioni salgono verso l’alto vengono ridotte in modo che gli ultimi nodi non siano influenzati da informazioni inutili che sono state già lavorate dai primi nodi.

Naturalmente, nel momento in cui l’informazione ha raggiunto l’ultimo livello, abbiamo tutti i nostri sistemi per saggiarne l’affidabilità e possiamo migliorare il passaggio di informazioni tra un layer e l’altro.

Semplificando al massimo, per migliorare il passaggio, si calcola quante informazioni vengono ‘perse’ da un layer all’altro.

L’obiettivo è minimizzare questa perdita o “errori” per affinare sempre di più il modello.

Piccola precisazione: un errore molto basso non è sempre percepito come un buon risultato..

Avere un errore molto basso, anche vicino allo zero, porterebbe il modello ad essere troppo “allenato sui dati di input” ovvero a individuare esattamente solo gli oggetti presentati come input.

Se io presento la foto di un gatto e porto la perdita di informazioni vicinissima allo zero, lui riconoscerà SOLO quel gatto e non gatti simili.

E questo spesso non è l’obiettivo, perché noi vogliamo che la macchina riconosca il ‘concetto’ di gatto in un gatto nero, in un gatto grigio o in uno arancione.

Se dovessimo fare un controllo qualità con una perdita di informazioni pari a zero, la macchina riconoscerebbe uno specifico tipo di ammaccatura su una scatola, ma non tutte le altre ammaccature.

Il rischio sarebbe di avere prodotti difettosi, perché la macchina era impostata in modo da non riconoscerli. 

Quali sono i limiti del Machine Learning e le potenzialità del Deep Learning?

Prendiamo una domanda.

“Ho l’immagine di un gatto e la metto davanti ad una videocamera collegata ad un macchina su cui è stato installato un algoritmo di Machine Learning. L’algoritmo riuscirebbe a riconoscerne la razza? E cosa farebbe invece un algoritmo di Deep Learning?”

Dal punto di vista del Machine Learning puro, prima bisogna fare un lavoro di ‘feature extraction‘, il che significa:

Segmentare o estrarre il gatto dal resto delle immagini, addestrando l’algoritmo a riconoscere una serie di caratteristiche distintive di un gatto (il colore, le dimensioni, il peso…).

Una volta estratte tutte queste caratteristiche, bisogna addestrare il modello dandogli in ingresso tante immagini di gatti con un dato ‘in più’ come, per esempio, la razza del gatto.

Quindi, se avessi a disposizione migliaia di immagini di gatti ‘etichettate’ con la razza di ognuno, c’è una buona probabilità di generare un modello che, in una fase successiva, riconoscerà la razza del gatto. 

Quindi, con il Machine Learning si può arrivare a riconoscere anche la razza del gatto partendo però da dei dati strutturati ed “etichettati” in ingresso.

Il Deep Learning ha un approccio differente, non ha bisogno di dati strutturati ma riceve in ingresso le singole immagini e attraverso elaborazioni successive permette di andare “in profondità” fino a dare la risposta che stavamo cercando.

In questo caso riconosce la razza ma anche ‘quel’ gatto, proprio perché riesce ad andare più in profondità mettendo insieme informazioni che prima non poteva prendere in considerazione.

Cerchiamo di capirci meglio…

Il Machine Learning riconoscerà l’immagine di un gatto in base a quello che già gli è stato detto e con cui è stato addestrato.

Quindi potrà riconoscere la razza SOLO se gli è stata detta la razza ed è stato addestrato a farlo.

Mentre il Deep Learning può arrivare a capire – pur non sapendo che i gatti hanno una razza – saprebbe dirti che c’è “qualcosa” di diverso da un gatto ad un altro, anche se nessuno gliel’ha mai insegnato.

Un algoritmo di Machine Learning non saprebbe riconoscere un gatto siamese, a meno che non sia stato addestrato a tale scopo.

Un algoritmo di Deep Learning, invece, riuscirebbe a capirlo e ad ‘etichettarlo’, anche senza dare un nome alla razza.

Il Deep Learning è di fatto più sensibile ai dati non etichettati, quindi in grado di apprendere meglio anche in maniera non supervisionata, cioè senza aver già visto una determinata caratteristica.

Il Deep Learning è infatti in grado di apprendere anche in maniera “automatica”, senza bisogno delle info continue dell’utente, mentre il Machine Learning ha bisogno comunque di supervisione per dare risultati di qualità.

Morale della favola…

Il Machine Learning va bene dove ci sono serie di dati storiche, ad esempio dati di produzione di una macchina, dati di accesso a un sito, profili degli utenti con delle caratteristiche specifiche (lingua, luogo di contatto, età, titolo di studio).

Il Deep Learning supera un po’ i limiti del Machine Learning lavorando bene anche con dati che non sono strutturati.

In quali ambiti è meglio utilizzare un algoritmo di Machine Learning o uno di Deep Learning?

In alcuni ambiti il Deep Learning è migliore, però richiede un tempo di elaborazione di qualche ora.

Di conseguenza, se hai bisogno risultati in tempo reale, il Deep Learning è inutile.

In questi casi è molto meglio il Machine Learning che magari ti dà un risultato con un’affidabilità non molto alta, però in tempo reale (che è meglio di niente).

Il Machine Learning si applica bene, come detto prima, dove ci sono dati strutturati, cioè rappresentati da numeri.

Ad esempio, se stai progettando un sistema che dia dei suggerimenti per un e-commerce, puoi avere dati puntuali di utenti profilati in base all’età, a dove contattano, da dove sono connessi, e altro.

In questo caso il Machine Learning è in grado di elaborare questi dati e creare un modello anche molto velocemente.

Il Deep Learning invece lo puoi applicare anche dove ci sono dati non strutturati, come ad esempio le immagini o i testi.

In questo caso il Deep Learning, per funzionare, ha bisogno di più risorse.

Un esempio potrebbe essere, ancora, la Computer Vision.

L’elaborazione dell’immagine richiede comunque la creazione di un modello che riesca ad individuare ciò che stiamo cercando o classificando su quell’immagine.

In questo caso il Deep Learning diventa fondamentale perché non abbiamo dei dati strutturati.

Quindi, sicuramente i vantaggi rispetto al Machine Learning sono ben visibili.

Il Deep Learning si utilizza anche nel Natural Language Processing.

Cioè dal suono o dal testo dobbiamo recuperare i concetti chiave.

Fino a qualche anno fa la potenza di calcolo disponibile era limitata, perché di fatto l’impiego del Machine Learning era preponderante.

Oggi non c’è più il problema della potenza di calcolo, per cui si tende a utilizzare in primis il Deep Learning, che permette di avere risultati tendenzialmente più accurati.

Un’esperienza con il Machine Learning e il Deep Learning

Abbiamo creato un algoritmo di Machine Learning di supporto alla vendita applicato ad un sito e-commerce, dove il sistema, sulla base dello storico delle esperienze d’acquisto, migliora la presentazione degli articoli all’utente.

Un altro esempio viene da un sistema di supporto alle decisioni basato su una strategia a decision tree applicato in ambito industriale, dove l’output sono delle segnalazioni di warning mostrate su un’interfaccia molto semplice.

In questo modo l’operatore riesce ad avere una previsione di quello che succederà e quindi opererà meglio e gestirà al meglio la manutenzione e l’operatività dell’impianto.

Un esempio di Deep Learning sul quale abbiamo lavorato ultimamente riguarda il Coronavirus.

È un progetto importante che abbiamo svolto in collaborazione con l’Università di Trento (https://www.disi.unitn.it/iclus).

L’obiettivo del progetto è creare un sistema automatico per diagnosi, monitoraggio e refertazione di pazienti affetti da coronavirus analizzando i video acquisiti da sonde a ultrasuoni (ecografie).

Nell’ambito di questo progetto ci siamo occupati dell’ingegnerizzazione della soluzione e sviluppo di una parte di intelligenza artificiale.

Il sistema permette di dare in tempi rapidi un’indicazione sullo “stato di salute dei polmoni”, dato molto importante per valutare la diagnosi e tenere monitorato il coronavirus.

Si parte dai video acquisiti tramite una sonda a ultrasuoni.

I video vengono dati in input a successive “intelligenze artificiali” con il risultato di avere uno “score” che indica lo stato di salute del paziente e l’indicazione sul polmone di dove si presenta la criticità.

Un consiglio per gli imprenditori

Innanzitutto, se sei riuscito a leggere fin qua, complimenti!

L’argomento non era dei più semplici…

Il consiglio è: cerca di informarti e sii consapevole di queste due tecnologie che stanno alla base dell’Intelligenza Artificiale.

L’AI sarà una delle tecnologie che avrà un impatto notevole sul mondo del business.

È molto meglio conoscerle, se si vuole dominare la tecnologia.

Poi, inizia a pensare come implementare e quali sono le aree all’interno del tuo business che possono essere automatizzate per far crescere i tuoi volumi di vendita, ottimizzare i costi, far produrre di più e quant’altro.

Per il Deep Learning: non averne paura, perché le potenzialità sono sicuramente molte e vale la pena di scoprirle anche per integrarle poi nel business che può diventare importante.

***

Dove puoi trovarci?

Puoi prenotare una consulenza gratuita con noi cliccando QUI.

Oppure puoi telefonarci al numero verde 800 270 021, e noi saremo disponibili a dare informazioni su come implementare un sistema di computer vision.

A presto!