Cosa sono le reti neurali?
Le reti neurali, note anche come reti neurali artificiali (ANN) o reti neurali simulate (SNN), sono un sottoinsieme dell’apprendimento automatico e sono il cuore degli algoritmi di apprendimento profondo. Il loro nome e la loro struttura si ispirano al cervello umano, imitando il modo in cui i neuroni biologici segnalano l’uno all’altro.
Le reti neurali artificiali (ANN) sono composte da uno strato di nodi, contenente uno strato di input, uno o più strati nascosti e uno strato di output. Ogni nodo, o neurone artificiale, si collega ad un altro e ha un peso e una soglia associati. Se l’uscita di ogni singolo nodo è al di sopra del valore di soglia specificato, quel nodo viene attivato, inviando dati allo strato successivo della rete. Altrimenti, nessun dato viene passato allo strato successivo della rete.
Le reti neurali si basano sui dati di allenamento per imparare e migliorare la loro precisione nel tempo. Tuttavia, una volta che questi algoritmi di apprendimento sono messi a punto per la precisione, sono strumenti potenti nell’informatica e nell’intelligenza artificiale, che ci permettono di classificare e raggruppare i dati ad alta velocità. Compiti nel riconoscimento del parlato o delle immagini possono richiedere minuti contro ore se paragonati all’identificazione manuale da parte di esperti umani. Una delle reti neurali più conosciute è l’algoritmo di ricerca di Google.
Come funzionano le reti neurali?
Pensate ad ogni singolo nodo come al proprio modello di regressione lineare, composto da dati di input, pesi, un bias (o soglia) e un output. La formula sarebbe qualcosa del genere:
Una volta determinato uno strato di ingresso, vengono assegnati dei pesi. Questi pesi aiutano a determinare l’importanza di una data variabile, con quelle più grandi che contribuiscono più significativamente all’output rispetto agli altri input. Tutti gli input sono poi moltiplicati per i loro rispettivi pesi e poi sommati. In seguito, l’output viene passato attraverso una funzione di attivazione, che determina l’uscita. Se l’output supera una data soglia, “spara” (o attiva) il nodo, passando i dati allo strato successivo della rete. Il risultato è che l’output di un nodo diventa l’input del nodo successivo. Questo processo di passaggio dei dati da uno strato a quello successivo definisce questa rete neurale come una rete feedforward.
Sottolineiamo come potrebbe essere un singolo nodo usando valori binari. Possiamo applicare questo concetto ad un esempio più tangibile, come se si debba andare a fare surf (Sì: 1, No: 0). La decisione di andare o non andare è il nostro risultato previsto, o y-hat. Supponiamo che ci siano tre fattori che influenzano il vostro processo decisionale:
- Le onde sono buone? (Sì: 1, No: 0)
- La line-up è vuota? (Sì: 1, No: 0)
- C’è stato un recente attacco di squali? (Sì: 0, No: 1)
Allora, assumiamo quanto segue, dandoci i seguenti input:
- X1 = 1, dato che le onde stanno pompando
- X2 = 0, dato che la folla è fuori
- X3 = 1, dato che non c’è stato un recente attacco di squali
Ora, dobbiamo assegnare alcuni pesi per determinare l’importanza. Pesi maggiori significano che particolari variabili sono di maggiore importanza per la decisione o il risultato.
- W1 = 5, dato che le grandi mareggiate non vengono spesso
- W2 = 2, dato che sei abituato alla folla
- W3 = 4, dato che hai paura degli squali
Finalmente, assumeremo anche un valore di soglia di 3, che si tradurrebbe in un valore di bias di -3. Con tutti i vari input, possiamo iniziare a inserire i valori nella formula per ottenere l’output desiderato.
Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6
Se usiamo la funzione di attivazione dall’inizio di questa sezione, possiamo determinare che l’output di questo nodo sarebbe 1, poiché 6 è maggiore di 0. In questo caso, andresti a fare surf; ma se regoliamo i pesi o la soglia, possiamo ottenere risultati diversi dal modello. Quando osserviamo una decisione, come nell’esempio precedente, possiamo vedere come una rete neurale potrebbe prendere decisioni sempre più complesse a seconda dell’output delle decisioni o degli strati precedenti.
Nell’esempio precedente, abbiamo usato i perceptron per illustrare parte della matematica in gioco qui, ma le reti neurali sfruttano i neuroni sigmoidi, che si distinguono per avere valori tra 0 e 1. Dal momento che le reti neurali si comportano in modo simile agli alberi decisionali, con una cascata di dati da un nodo all’altro, avere valori di x tra 0 e 1 ridurrà l’impatto di qualsiasi cambiamento di una singola variabile sull’output di qualsiasi nodo, e successivamente, l’output della rete neurale.
Quando cominciamo a pensare a casi d’uso più pratici per le reti neurali, come il riconoscimento delle immagini o la classificazione, faremo leva sull’apprendimento supervisionato, o su set di dati etichettati, per addestrare l’algoritmo. Mentre addestriamo il modello, vorremo valutare la sua accuratezza usando una funzione di costo (o perdita). Questa è anche comunemente chiamata errore quadratico medio (MSE). Nell’equazione che segue,
- i rappresenta l’indice del campione,
- y-hat è il risultato previsto,
- y è il valore reale, e
- m è il numero di campioni.
In definitiva, l’obiettivo è quello di minimizzare la nostra funzione di costo per garantire la correttezza del fit per ogni osservazione data. Mentre il modello regola i suoi pesi e bias, utilizza la funzione di costo e il reinforcement learning per raggiungere il punto di convergenza, o il minimo locale. Il processo in cui l’algoritmo regola i suoi pesi è attraverso la discesa del gradiente, permettendo al modello di determinare la direzione da prendere per ridurre gli errori (o minimizzare la funzione di costo). Con ogni esempio di allenamento, i parametri del modello si adattano per convergere gradualmente al minimo.
Vedi questo articolo IBM Developer per una spiegazione più approfondita dei concetti quantitativi coinvolti nelle reti neurali.
La maggior parte delle reti neurali profonde sono feedforward, cioè fluiscono in una sola direzione, dall’input all’output. Tuttavia, è anche possibile addestrare il modello attraverso la backpropagation, cioè muoversi nella direzione opposta, dall’output all’input. La retropropagazione ci permette di calcolare e attribuire l’errore associato ad ogni neurone, permettendoci di regolare e adattare i parametri del modello (o dei modelli) in modo appropriato.
Tipi di reti neurali
Le reti neurali possono essere classificate in diversi tipi, che sono utilizzati per scopi diversi. Anche se questa non è una lista completa di tipi, la seguente sarebbe rappresentativa dei tipi più comuni di reti neurali che incontrerete per i suoi casi d’uso comuni:
Il perceptron è la rete neurale più antica, creata da Frank Rosenblatt nel 1958. Ha un solo neurone ed è la forma più semplice di rete neurale:
Le reti neurali feedforward, o perceptron multistrato (MLP), sono quelle su cui ci siamo concentrati principalmente in questo articolo. Sono composte da uno strato di input, uno o più strati nascosti e uno strato di output. Mentre queste reti neurali sono anche comunemente chiamate MLP, è importante notare che sono in realtà composte da neuroni sigmoidi, non perceptron, poiché la maggior parte dei problemi del mondo reale sono non lineari. I dati di solito vengono inseriti in questi modelli per addestrarli, e sono la base per la visione artificiale, l’elaborazione del linguaggio naturale e altre reti neurali.
Le reti neurali rivoluzionarie (CNN) sono simili alle reti feedforward, ma di solito vengono utilizzate per il riconoscimento delle immagini, il riconoscimento dei modelli e/o la visione artificiale. Queste reti sfruttano i principi dell’algebra lineare, in particolare la moltiplicazione delle matrici, per identificare i modelli all’interno di un’immagine.
Le reti neurali ricorrenti (RNN) sono identificate dai loro cicli di feedback. Questi algoritmi di apprendimento sono principalmente sfruttati quando si utilizzano dati in serie temporali per fare previsioni sui risultati futuri, come le previsioni del mercato azionario o le previsioni di vendita.
Reti neurali vs. deep learning
Deep Learning e reti neurali tendono ad essere usati in modo intercambiabile nelle conversazioni, il che può confondere. Di conseguenza, vale la pena notare che il “profondo” nell’apprendimento profondo si riferisce solo alla profondità degli strati in una rete neurale. Una rete neurale che consiste di più di tre strati – che comprenderebbe gli ingressi e l’uscita – può essere considerata un algoritmo di apprendimento profondo. Una rete neurale che ha solo due o tre strati è solo una rete neurale di base.
Per saperne di più sulle differenze tra le reti neurali e altre forme di intelligenza artificiale, come l’apprendimento automatico, leggi il post del blog “AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: Qual è la differenza?”
Storia delle reti neurali
La storia delle reti neurali è più lunga di quanto si pensi. Mentre l’idea di “una macchina che pensa” può essere fatta risalire agli antichi greci, ci concentreremo sugli eventi chiave che hanno portato all’evoluzione del pensiero sulle reti neurali, che ha avuto un andamento altalenante negli anni:
1943: Warren S. McCulloch e Walter Pitts pubblicano “A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB) (link resides outside IBM)” Questa ricerca cercava di capire come il cervello umano potesse produrre modelli complessi attraverso cellule cerebrali collegate, o neuroni. Una delle idee principali emerse da questo lavoro fu il confronto dei neuroni con una soglia binaria alla logica booleana (cioè 0/1 o affermazioni vero/falso).
1958: A Frank Rosenblatt viene attribuito lo sviluppo del perceptron, documentato nella sua ricerca “The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain” (PDF, 1.6K KB) (il link risiede fuori da IBM). Egli porta il lavoro di McCulloch e Pitt un passo avanti introducendo dei pesi nell’equazione. Sfruttando un IBM 704, Rosenblatt riuscì a far sì che un computer imparasse a distinguere le carte segnate a sinistra da quelle segnate a destra.
1974: Mentre numerosi ricercatori hanno contribuito all’idea della backpropagation, Paul Werbos è stata la prima persona negli Stati Uniti a notare la sua applicazione nelle reti neurali nella sua tesi di dottorato (PDF, 7,8 MB) (il link risiede fuori da IBM).
1989: Yann LeCun ha pubblicato un documento (PDF, 5,5K KB) (il link risiede fuori da IBM) che illustra come l’uso dei vincoli nella backpropagation e la sua integrazione nell’architettura della rete neurale può essere usata per addestrare gli algoritmi. Questa ricerca ha sfruttato con successo una rete neurale per riconoscere le cifre del codice postale scritte a mano fornite dal Servizio Postale degli Stati Uniti.
Reti neurali e IBM Cloud
Da decenni ormai, IBM è un pioniere nello sviluppo delle tecnologie AI e delle reti neurali, evidenziato dallo sviluppo e dall’evoluzione di IBM Watson. Watson è ora una soluzione affidabile per le imprese che cercano di applicare l’elaborazione avanzata del linguaggio naturale e le tecniche di deep learning ai loro sistemi utilizzando un approccio a livelli collaudato per l’adozione e l’implementazione dell’AI.
Watson utilizza il framework UIMA (Unstructured Information Management Architecture) di Apache e il software DeepQA di IBM per rendere disponibili alle applicazioni potenti capacità di deep learning. Utilizzando strumenti come IBM Watson Studio e Watson Machine Learning, la vostra azienda può portare i vostri progetti AI open-source in produzione senza soluzione di continuità, distribuendo ed eseguendo i vostri modelli su qualsiasi cloud.
Per maggiori informazioni su come iniziare con la tecnologia di deep learning, esplorate IBM Watson Studio.
Sign up for an IBMid and create your IBM Cloud account.