Guida

Reti neurali artificiali: quando l’IT si ispira al cervello biologico

Decennio dopo decennio, l’informatica riesce ad affiancare ai sistemi tradizionali soluzioni che mimano le strutture e i meccanismi del sistema nervoso umano. Tecnologie che risolvono efficacemente piccoli e grandi problemi in ambiti che hanno in comune la gestione di dati complessi e situazioni non sempre prevedibili

Pubblicato il 10 Nov 2021

reti neurali

Modelli matematici, implementati su pc, server aziendali, cloud o su dispositivi hardware dedicati e sempre più innovativi, che mirano a risolvere problemi di diversa natura simulando i diversi meccanismi utilizzati dal sistema nervoso umano in diversi tipi di contesti. Sono le reti neurali artificiali, un tema di cui si parla da più di mezzo secolo, ma che dagli anni Novanta in poi, ha iniziato a diventare realtà in modo pervasivo. Anche se non sempre ce ne rendiamo conto, sono moltissime le applicazioni con reti neurali che utilizziamo nella vita quotidiana.

Cosa sono le reti neurali artificiali

Le reti neurali artificiali sono costituite in massima parte da software come le applicazioni tradizionali, di cui non sono necessariamente sostitutive. Il loro codice, anche se scritto con gli stessi linguaggi usati per sviluppare le applicazioni tradizionali, non è un insieme di istruzioni fisse che permettono ai programmi di elaborare richieste specifiche in modo standard. Esso è costituito da algoritmi che permettono alle reti di imparare quali output fornire a fronte di input che possono essere molto grandi, complessi e inattesi.

Affinché questi modelli matematici, o algoritmi, riescano a raggiungere tali capacità, devono essere ben progettati e sottoposti a un periodo di training. Training che varia in funzione della complessità delle applicazioni di impiego delle reti neurali artificiali.

Funzionamento di una rete neurale artificiale, il ruolo del percettrone

Un minimo di storia. Il primo tipo di neurone artificiale, ribattezzato percettrone, viene sviluppato nel 1958 da Frank Rosenblatt per il riconoscimento e la classificazione di forme. Il percettrone di Rosenblatt era costituito da uno strato di ingresso, uno di uscita e una regola di apprendimento. Regola basata sulla minimizzazione dell’errore, la cosiddetta funzione di error back-propagation (retro propagazione dell’errore).

Con questa struttura, il percettrone poteva però rappresentare solo funzioni booleane di base di tipo AND, ON, NON, ma non XOR. E quindi non poteva risolvere problemi complessi.

Un passo decisivo per fare uscire le reti neurali da un più che ventennale ristagno avviene nel 1986. Allora vi fu la presentazione, da parte di David E. Rumelhart, Geoffrey E. Hinton e Ronald J. Williams, di un algoritmo di error backpropagation in grado di addestrare reti con più strati di percettroni, ossia i network MLP (Multi-layers Perceptron).

Grazie alla backpropagation dell’errore, la rete viene indotta a ritentare numerose volte, modificando i pesi delle connessioni e altri parametri finché l’errore si riduce al minimo possibile e il neural network diviene in grado di agire con successo anche a fronte di dati in ingresso non noti.

Esempi di reti neurali

Tutte le reti neurali artificiali hanno in comune una più o meno forte ispirazione a qualche tipo di rete neurale biologica. Caratteristica comune di quasi tutte è la presenza di uno strato d’ingresso, uno o più strati intermedi costituiti da neuroni, o nodi, collegati fra loro attraverso connessioni, o sinapsi, e uno strato di uscita.

Questo modello è diverso da quello di un sistema informatico tradizionale, in quanto, come abbiamo già accennato, le reti neurali devono essere in grado di apprendere, di adattarsi, di aggiornarsi, e quindi, più che di set istruzioni da applicare, necessitano di algoritmi di Machine Learning (ML)e di cicli di training con grandi data set.

2 macrocategorie

In generale, comunque, le reti neurali artificiali si possono distinguere in due macrocategorie.

Quelle di tipo feed-forward (a flusso in avanti). In esse le connessioni fra i neuroni trasmettono i segnali solo nel verso che parte dallo strato di input e arriva a quello di output (come un grafo aciclico) e le reti neurali ricorrenti (recursive neural network, o RNN).

Nelle reti neurali ricorrenti, alcuni neuroni sono collegati fra loro in loop. Questo consente di utilizzare uno strato come memoria di stato che fornisce allo strato inferiore, in ingresso, una sequenza temporale di valori, modellandone il comportamento temporale. Le reti neurali ricorrenti sono molto adatte all’analisi predittiva di sequenze di dati.

Tipi di reti neurali

A differenziare le reti neurali artificiali sono anche i paradigmi di apprendimento, cioè di Machine Learning. I principali sono tre: supervisionato (supervised learning), non supervisionato (unsupervised learning) e apprendimento per rinforzo (reinforcement learning). Il semi-supervised learning è una combinazione dei primi due tipi, che sfrutta i rispettivi benefici per funzioni complementari.

Perché sono utili reti neurali, machine learning e intelligenza artificiale

Nel paradigma di training supervisionato, basato sull’algoritmo della backpropagation, vengono impiegati data set (collezioni di dati) adatti all’addestramento. Questi hanno feature (caratteristiche) tipiche del dominio in cui la rete sarà applicata e label (etichette) consistenti negli output attesi.

Grazie a questi esempi tipici di ingressi e relative uscite, la rete inizia a inferire le relazioni che intercorrono fra loro. Ciclo dopo ciclo di retropropagazione dell’errore (che conduce al Gradient Descent) diventano capaci di effettuare previsioni plausibili anche laddove gli output non sono noti a priori. Grazie a questa capacità di generalizzazione, le reti con addestramento supervised risultano particolarmente utili per risolvere problemi di regressione e di classificazione.

Reti neurali convoluzionali, ecco a cosa servono

Questo tipo di machine learning viene utilizzato con reti feed-forward come le reti neurali convoluzionali (CNN o ConvNet). Una rete convoluzionale si usa per i seguenti scopi. Reti neurali convoluzionali sono finalizzate al riconoscimento di immagini e video, alla formulazione di raccomandazioni, nell’elaborazione del linguaggio naturale (Natural Language Processing, NLP), nella visione artificiale e nella bioinformatica. Una rete neurale convoluzionale si impiega anche con le reti ricorrenti (RNN), per esempio quelle per la sintesi vocale (text-to-speech).

Apprendimento non supervisionato

Anche nell’apprendimento non supervisionato l’obiettivo è far sì che si modifichino i pesi (weight) nella rete, ma utilizzando solo variabili in ingresso. In questo tipo di network, i neuroni individuano cluster rappresentativi di dati con l’utilizzo di metodi topologici o probabilistici. Questo tipo di apprendimento è molto impiegato per sviluppare tecniche di compressione dei dati.

Apprendimento con rinforzo

Nell’apprendimento con rinforzo, un opportuno algoritmo permette di individuare determinati modus operandi nell’ambiente esterno. Per questa classe di problemi è necessaria la presenza di un agente con capacità di percezione. Nella sua esplorazione dell’ambiente, la rete analizza le azioni che hanno impatto sull’ambiente e le retroazioni che l’ambiente produce, che possono essere di incentivazione o incentivazione. L’algoritmo di reinforcement learning identifica così delle politiche tese a massimizzare gli incentivi cumulati. Queste formano una conoscenza sfruttabile nell’esplorazione di situazioni ignote. Le reti neurali che utilizzano il reinforcement learning trovano largo impiego nella robotica, nell’automazione dei processi, nella produzione industriali e nell’economia.

Nel semi-supervised learning si usano grandi quantità di dati unlabeled (come nella unsupervised learning) e un numero inferiore di labeled data da utilizzare per aumentare la capacità della rete di riconoscere i pattern nei data set privi di label.

Deep learning, un esempio in cui reti neurali esprimono il proprio valore

Le reti neurali esplicano il loro valore quando c’è necessità di classificare data set molto variabili e contenenti anche dati errati. Servono per riconoscere le relazioni nascoste. E decidere in tempo reale quali output fornire, sia essa la trascrizione di un parlato o di una scrittura a mano, o la generazione di un’immagine, un video, una musica.

Le reti neurali artificiali concepite per il Deep Learning, infine, sono molto dipendenti dall’hardware. Sempre più spesso, al posto delle Cpu tradizionali, si utilizzano le Gpu, più veloci nell’eseguire molti calcoli a matrice. Ma diversi vendor hanno già da tempo iniziato a sperimentare microprocessori di tipi neuromorfico. Essi imitano sempre più fedelmente l’architettura e i processi che avvengono nel nostro sistema nervoso. Diventano l’ambiente ideale in cui far girare algoritmi delle reti neurali artificiali.

Applicazioni

I comparti in cui è possibile pensare le applicazioni delle reti neurali sono i più disparati.

Attualmente, vi sono applicazioni in ambito finanziario. Si pensi alla valutazione dei trend di mercato, all’analisi di rischi e portafogli.

Sono molto utili per le diagnosi mediche. E, in generale, in ambito data mining.

Inoltre, le reti neurali sono usate per il riconoscimento e l’elaborazione delle immagini. Così come per il riconoscimento delle voci e l’interpretazione del parlato.

Le reti neurali hanno, infine, applicazioni per simulazioni di varia natura.

Limiti delle reti artificiali oggi

Come abbiamo scritto all’inizio, le reti neurali artificiali non sono da considerare sempre un’alternativa alle applicazioni tradizionali. Il loro funzionamento si basa soprattutto su osservazioni di dati e sul riconoscimento di pattern che permettono di elaborare determinati output.

Elaborazioni che risultano veloci e precise solo se gli algoritmi di machine learning – o meglio ancora di deep learning – sono stati progettati con grande conoscenza di dominio (fondamentale il ruolo dei data scientist), abilità degli sviluppatori, workflow efficienti e grande impegno nel training degli algoritmi.

Ha senso usare le reti neurali quando la complessità dei dati e le difficoltà di elaborazione non renderebbe conveniente e praticabile la progettazione di sistemi in grado di offrire le prestazioni delle neural network con metodi di analisi tradizionale. Se i dati da elaborare sono invece ben chiari, il loro processing è standardizzato. E la quantità è comunque molto elevata, è più conveniente utilizzare i software tradizionali.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4