Nonna, ti spiego come funziona una rete neurale

Teoria

È da tempo che penso di scrivere articoli nella forma “Nonna, ti spiego come” e devo dire che la cosa mi ispira davvero tanto. Riuscire a spiegare un concetto complesso ad una figura completamente ignorante in materia è un’attività difficilissima, se non impossibile. Però, anche come tributo a mia nonna, che si metteva al mio fianco quando usavo il PC e mi faceva sempre una sola domanda (“Cosa sei dietro a fare?”, italianizzato dalla sua lingua ufficiale: il dialetto piacentino), devo provarci!

Ho deciso di partire con un tema che ho personalmente approfondito negli ultimi giorni, per piacere personale: le reti neurali.

Nonna, ora ti spiego cosa sono le reti neurali.

Immagina di avere questo problema: hai una pila di fotografie contenenti indumenti e vuoi dividerle in base al capo che è rappresentato. Per fare ciò che hai in mente, cosa faresti? Faresti tante scatolette, una per ogni capo che vuoi riconoscere (es. una scatoletta per le fotografie che contengono le scarpe, una scatoletta per le fotografie che contengono le gonne e una scatoletta per le fotografie che contengono le tue bellissime giacche) e, man mano che guardi le foto, le metti nelle scatole giuste. Corretto, non è vero?

Benissimo, immagina ora che questo compito lo faccia un computer al posto tuo. Per poterlo fare, hai bisogno di rendere il computer in grado di riconoscere cosa c’è dentro una fotografia: se c’è una gonna, una scarpa o una sciarpa.

Questo problema appartiene alla classe dei problemi che, in gergo tecnico, si definiscono di “visione artificiale“. I problemi di visione artificiale non sono semplici, perché i computer, a differenza tua e mia, non vedono come vediamo noi. Però a differenza tua e mia, i computer sono bravissimi e velocissimi a fare operazioni matematiche. Occorre quindi capire come risolvere il problema di visione artificiale cercando di ridurlo ad un problema matematico, in modo tale che il computer possa veramente pensare di poterlo risolvere.

No, nonna mi spiace. I computer non sono in grado di capire cosa c’è dentro una foto semplicemente “guardandola”. Non guardano come guardiamo tu ed io, per cui, basta non interrompermi più e lasciami andare avanti. Lo so che per te la matematica è una roba complessa, ma non preoccuparti: tu continuerai a guardare e a dividere le foto a mano, il computer lo farà a modo suo.

Le immagini

Credo, nonna, che tu sappia che le immagini sul computer sono divise in tanti tassellini, come se fossero un mosaico. Questi tassellini si chiamano pixel. Quando senti parlare di “megapixel”, ad esempio relativamente alla fotocamera del cellulare che hanno cercato di venderti al centro commerciale, significa proprio che quella fotocamera è in grado di fare fotografie con quel grandissimo numero di tassellini.

Per farti capire ti faccio vedere una mia foto, con un numero molto basso di pixel. Ovviamente le fotografie digitali ne hanno un numero maggiore e, quindi, tu non sei in grado di vederli, ma è solo per farti capire bene il concetto.

Io, con pochi pixel, mentre suono il trombone (e faccio lo stupido)

Ogni pixel corrisponde a tre numeri: uno per il rosso, uno per il verde e uno per il blu. Il computer compone i colori così. Per non complicare troppo il ragionamento, però, facciamo finta che al computer non interessino i colori. In tal caso, a ogni pixel corrisponderebbe un solo numero. Questo numero potrebbe essere compreso fra 0 (nero) e 255 (bianco). In mezzo, tutti gli altri 254 valori, sono grigi diversi, dal più scuro (1) al più vicino al bianco (254).

Un computer, per “memorizzare” un numero compreso tra 0 e 255 (ovvero 256 valori) ha bisogno di 8 bit, ovvero 1 byte. Ma questa un’altra storia, magari te la spiego un’altra volta.

Mi basta, per ora, che tu abbia capito che:

  • una immagine = tanti pixel
  • un pixel = un numero
  • una immagine = tanti numeri

Hai visto, stiamo cercando di far utilizzare una immagine ad un computer come se fosse un grandissimo insieme di numeri. Siamo geniali!

Le reti neurali

Nonna, se sei stanca dimmelo. Magari ci prendiamo un attimo di pausa. No? Sei curiosa? Va bene, andiamo avanti.

A questo punto devi sapere che quei diavoli che studiano queste cose si sono inventati le “reti neurali”: è una soluzione matematica a questo genere di problema che si ispira al funzionamento del nostro cervello. Le reti neurali sono state inventate tanti anni fa, ma sono state usate raramente perché richiedono tanta potenza per essere utilizzate.

Da pochi anni abbiamo dei computer abbastanza potenti, noi poveracci, per poterle utilizzare. Le reti neurali hanno come compito quello di prendere una fotografia e “buttarla” in una delle scatolette che hai preparato. Te le ricordi, vero? Una scatoletta per le fotografie con le scarpe, una per quelle con le gonne…

Infine le reti neurali hanno come input i pixel dell’immagine che vuoi che il computer riconosca. In altre parole, così come tu guardi l’immagine, il computer la “guarda” ricevendo i pixel che la compongono.

Ti faccio vedere uno schemino, così capisci meglio.

Il computer fa così:

  1. prende tutti i numeri corrispondenti ai pixel dell’immagine e li mette in linea. Lo so che rovina la fotografia, ma per lui è più facile così. Ogni tesserina (pixel) è uno dei cerchietti che vedi in “Input” in rosa.
  2. quelli che vedi in blu (“hidden”), sono la vera magia. Sappi che lì dentro il computer fa dei calcoli. Come vedi fa dei calcoli “mescolando” valori di pixel diversi fra loro.
  3. indipendentemente da quello che succede al punto prima, i pixel “miscelati” al livello prima vengono “miscelati” ancora, andando a determinare un valore per ognuna delle scatolette che hai scelto

Quel numero finale, uno per ogni scatoletta, determina quanto è probabile, per il computer, che quell’elenco di numeri (pixel) che gli abbiamo dato all’inizio, corrisponda effettivamente alla scatoletta.

In altre parole per una determinata foto, i bollini verdi potrebbero avere questi valori:

  • bollino verde “scarpe”: 0.05 , significa che per il computer è una scarpa al 5%
  • bollino verde “gonna”: 0.9, significa che è una gonna al 90%
  • bollino verde “maglia”: 0.03, significa che è una maglia al 3%
  • bollino verde “giacca”: 0.02, significa che è una giacca al 2%

La somma di tutti i numeri dentro i bollini fa sempre 1, ovvero 100%.

Nell’esempio che ti ho fatto, quindi, per il computer è molto probabile che l’immagine che gli abbiamo dato sia una gonna.

L’apprendimento

Sei stupita? Sì, ora ti spiego come fa il computer a indovinare. Il computer, per poter indovinare, deve imparare. Per poter imparare ha bisogno di avere tante immagini da “guardare” e qualcuno che gli dica cosa c’è dentro. È un po’ come se tu ti mettessi vicino a lui e gli dicessi: “Questa che ti do ora, è una gonna, questa che ti do ora è una giacca e questa un’altra gonna”.

Il computer guarda i numeri delle foto che gli dai e l’indicazione (in gergo si chiama “etichetta”) di ciò che c’è dentro. Sulla base di queste informazioni, adatta i calcoli che fa nel livello “hidden” (guarda l’immagine di prima) in modo tale che il suo errore nel riconoscimento, man mano che gli fai vedere le fotografie, diventi sempre più piccolo.

Per farti l’esempio, è come se lui, mentre tu gli dici “Questa è una giacca”, lui cercasse di indovinare e, qualora non ci riuscisse, cercasse di adeguarsi al fine di riuscire a riconoscere meglio altre giacche la prossima volta. Questo passaggio è davvero molto complicato ed è proprio quello che richiede tanta potenza. Però, mica devi diventare una ricercatrice, ora!

Sì sì, lo so! È magia! Infatti molti non sono neanche in grado di spiegare perché esattamente, funzionino. Però credimi, funzionano bene, molto bene! Pensa che oggi, in casi abbastanza peculiari, si riesce ad addestrare il computer in pochi minuti. Pensa quanto tempo ti risparmierà il non dover selezionare a mano le foto, una per una!

Però, se mi hai seguito fin qui, dovresti aver capito che per mettere in piedi una rete neurale, ti servono:

  • tante immagini
  • tante etichette, una per ogni immagine
  • tanta potenza per poter imparare

Concludendo

Per oggi, direi che possiamo terminare. Spero che finalmente ti siano chiare le reti neurali. Preparati, però: molto presto ti romperò le scatole nuovamente!

Non lamentarti però, sei tu che ti sei avvicinata. Io stavo usando il computer per i fatti miei. Se sei curiosa come una scimmia, non è mica colpa mia.

Ciao nonna, ci vediamo, se vuoi. Io ti ho avvertita.

Please follow and like us:
No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Teoria
I 5 algoritmi di Machine Learning più utilizzati

Prendendo spunto da un recente articolo, elenco in rassegna i 5 algoritmi più utilizzati nell’ambito del machine learning, secondo l’autore. È importante conoscere e “sporcarsi le mani” con questi algoritmi, poiché si presume che nel prossimo futuro, oltre il 25% degli attuali lavori sarà soppiantato da algoritmi di machine learning. Eccoli, riassunti …

Teoria
Un po’ di gergo del Machine Learning

Proprio oggi mi sono imbattuto in un interessantissimo articolo su Linkedin Pulse che aveva come argomento il gergo che viene solitamente utilizzato nell’ambito del machine learning. Trovo necessario che, chiunque decida di avvicinarsi a questa branca interessantissima della matematica/informatica, debba necessariamente avere padronanza del linguaggio tecnico per poter comprendere a fondo …

Teoria
Reti neurali: cosa sono?

Abbiamo visto come alcuni problemi di machine learning non siano tanto volti a trovare come soluzione una funzione (es. stima del prezzo di una casa), ma ad associare una fra un insieme di classi. Questi problemi vengono genericamente detti problemi di classificazione. Supponiamo, ad esempio, di voler scrivere un software in grado di …

Social media & sharing icons powered by UltimatelySocial