17 Novembre 2016 - Tempo di lettura: 11 minuti
Deep Learning è avanguardia e anche un argomento molto dibattutto ultimamente. L’unica confusione che si crea sul Deep Learning è che per capire al 100% come funziona, vi è l’obbligo di conoscere un sacco di matematica complessa e calcolo dato che alcuni modelli coinvolgono ad alto livello la matematica e il calcolo. Ma questo non è vero.
Ci sono così tante librerie e API per realizzare tutti questi processi coinvolti nel fare un modello di apprendimento automatico, che se è possibile capire le idee fondamentali è possibile anche applicarle per risolvere quasi tutti i problemi.
No, o almeno no nell’imminente. Gran parte delle capacità di apprendimento automatico sono immerse nel mistero. Infatti Deep Learning è l’applicazione di modelli matematici (come abbiamo fatto per decenni) con più potenza di elaborazione, più dati e più precisione. Il fatto è che questi modelli sono potenti ma non nel senso che conquisteranno il mondo. La maggior parte dei modelli di apprendimento automatico sono solo medio-buoni in un particolare compito che sono addestrati a svolgere come per esempio trovare un oggetto in un’immagine.
Una rete neurale è il modello reale di deep learning. Si basa sull’idea dei neuroni del cervello umano. Questi neuroni inviano segnali ad altri neuroni e hanno ingressi e uscite.
In realtà questi neuroni sono nodi che sono collegati da pesi in un grafico. Sono un modello molto semplicistico e corrispondono al modello di neuroni del cervello umano su un livello molto elementare.
Sembra opportuno cominciare da una citazione del co-fondatore di Google Brain e capo di AI su Baidu, Andrew Ng:
Deep learning algorithms are very good at one thing today: learning input and mapping it to an output. X to Y.
Proprio come dice Andrew, che quasi tutti gli usi di Deep Learning sono il risultato della mappatura X a Y, questo significa prendere una foto e mappare l’immagine di un uccello al significato “uccello” o mappare una domanda per una risposta in un chatbot.
La mappatura degli ingressi verso le uscite richiede dati per poter addestrare la rete neurale. Questi dati devono essere rappresentativi di ciò che si desidera creare, per questa mappatura di immagini di uccelli e devono avere un’etichetta di uccello associata ad essi in modo che la rete possa imparare come associare le immagini di uccelli come gli uccelli nel mondo reale.
Questa parte del processo utilizza una funzione di costo per determinare quanto sia lontano se mostriamo alla rete un cane e si ottiene in uscita orso. Dobbiamo poi cercare di ridurre al minimo i nostri costi e modificare i pesi (importanza) dei neuroni nella nostra rete per abbinare la nostra uscita giusta desiderata del cane. Col passare del tempo e dopo l’allenamento, i pesi vengono ottimizzati in modo da poter rilevare gli oggetti nelle immagini.
La quantità di dati necessari per formare una rete neurale artificiale varia a seconda del problema. Una buona metrica di determinazione prevede di usare “Big Data”.
Per esempio, se si sta cercando di prevedere il costo delle case e l’unico dato che si possiede è la dimensione della casa, senza il luogo o qualsiasi informazione in più, se si utilizzano molti dati questo non aiuterà il vostro modello a diventare migliore (più preciso), pensa che se diamo a un essere umano il dato di una tonnellata come dimensione della casa e senza nessun’altra informazione, è possibile tranquillamente prevedere il prezzo della casa? No, certo che no.
Ma in altri casi in cui si sta cercando di prevedere il prezzo della casa e si dispone di informazioni di localizzazione, il numero di camere da letto, bagni, ecc molti dati renderebbero il vostro modello molto più preciso.
Deep Learning ha una moltitudine di applicazioni che possono essere sfruttate usando diverse librerie. Molte grandi aziende di tecnologia hanno delle proprie librerie per Deep Learning. Ecco alcuni esempi:
Su Spcnet.it abbiamo intenzione di creare una nuova categoria di articoli, una vera e propria sezione, dedicata esclusivamente a AI, Deep Learning e Machine Learning. Se sei interessato a questi argomenti, continua a seguirci e presto troverai piccoli tutorial che introdurranno la materia per un utilizzo semplice di queste tecnologie di sviluppo.