Nel campo dell'apprendimento automatico, una rete neurale artificiale (, abbreviato in ANN o anche come NN) è un modello computazionale composto di "neuroni" artificiali, ispirato vagamente alla semplificazione di una rete neurale biologica.

Questi modelli matematici sono troppo semplici per ottenere una comprensione delle reti neurali biologiche, ma sono utilizzati per tentare di risolvere problemi ingegneristici di intelligenza artificiale come quelli che si pongono in diversi ambiti tecnologici (in elettronica, informatica, simulazione, e altre discipline).

Una rete neurale artificiale può essere realizzata sia da programmi software sia da hardware dedicato (DSP, Digital Signal Processing). Questa branca può essere utilizzata in congiunzione alla logica fuzzy.

Storia L'ampia varietà di modelli non può prescindere dal costituente di base, il neurone artificiale proposto da W.S. McCulloch e Walter Pitts in un famoso lavoro del 1943: A Logical Calculus of the Ideas Immanent in Nervous Activity (Un calcolo logico delle idee immanenti a un'attività nervosa),.Ripubblicato in: "A Logical Calculus of the Ideas Immanent in Nervous Activity". With Walter Pitts. In: Bulletin of Mathematical Biophysics Vol 5, pp 115–133. il quale schematizza un combinatore lineare a soglia, con dati binari multipli in entrata e un singolo dato binario in uscita: un numero opportuno di tali elementi, connessi in modo da formare una rete, è in grado di calcolare semplici funzioni booleane.

Le prime ipotesi di apprendimento furono introdotte da D. O. Hebb nel libro del 1949: The Organization of Behaviour (L'organizzazione del comportamento), nel quale vengono proposti collegamenti con i modelli complessi del cervello.

Nel 1958, J. Von Neumann nella sua opera The Computer and the Brain, esamina le soluzioni proposte dai precedenti autori sottolineando la scarsa precisione che queste strutture possedevano per potere svolgere operazioni complesse.

Nello stesso anno, Frank Rosenblatt nella rivista Psychological review, introduce il primo schema di rete neurale, detto Perceptron (percettrone), antesignano delle attuali reti neurali, per il riconoscimento e la classificazione di forme, allo scopo di fornire un'interpretazione dell'organizzazione generale dei sistemi biologici. Il modello probabilistico di Rosenblatt è quindi mirato all'analisi, in forma matematica, di funzioni quali l'immagazzinamento delle informazioni, e della loro influenza sul riconoscimento dei pattern; esso costituisce un progresso decisivo rispetto al modello binario di McCulloch e Pitts, perché i suoi pesi sinaptici sono variabili e quindi il percettrone è in grado di apprendere.

L'opera di Rosenblatt stimola una quantità di studi e ricerche che dura per un decennio, e suscita un vivo interesse e notevoli aspettative nella comunità scientifica, destinate tuttavia a essere notevolmente ridimensionate allorché nel 1969 Marvin Minsky e Seymour A. Papert, nell'opera Perceptrons. An Introduction to Computational Geometry, mostrano i limiti operativi delle semplici reti a due strati basate sul percettrone, e dimostrano l'impossibilità di risolvere per questa via molte classi di problemi, ossia tutti quelli non caratterizzati da separabilità lineare delle soluzioni: questo tipo di rete neurale non è abbastanza potente; non è infatti neanche in grado di calcolare la funzione or esclusivo (XOR). A causa di queste limitazioni, al periodo di euforia dovuto ai primi risultati della cibernetica (come veniva chiamata negli anni sessanta) segue un periodo di diffidenza durante il quale tutte le ricerche in questo campo non ricevono più alcun finanziamento dal governo degli Stati Uniti d'America; le ricerche sulle reti tendono, di fatto, a ristagnare per oltre un decennio, e l'entusiasmo iniziale risulta fortemente ridimensionato.

Il contesto matematico per addestrare le reti MLP (Multi-Layers Perceptron, ossia percettrone multistrato) fu stabilito dal matematico americano Paul Werbos nella sua tesi di dottorato (Ph.D.) del 1974. Non fu dato molto peso al suo lavoro, tanto fu forte la confutazione dimostrata da Minsky e Papert anni prima, e solo l'intervento di J. J. Hopfield, nel 1982, che in un suo lavoro studia dei modelli di riconoscimento di pattern molto generali, si oppose in modo diretto alla confutazione di Minsky riaprendo così degli spiragli per la ricerca in questo campo.

Uno dei metodi più noti ed efficaci per l'addestramento di tale classe di reti neurali è il cosiddetto algoritmo di retropropagazione dell'errore ("error backpropagation"), proposto nel 1986 da David E. Rumelhart, G. Hinton e R. J. Williams, il quale modifica sistematicamente i pesi delle connessioni tra i nodi, così che la risposta della rete si avvicini sempre di più a quella desiderata. Tale lavoro fu prodotto riprendendo il modello creato da Werbos. L'algoritmo di retropropagazione (BP) è una tecnica di apprendimento tramite esempi, costituente una generalizzazione dell'algoritmo di apprendimento per il percettrone sviluppato da Rosenblatt nei primi anni '60. Mediante questa tecnica era possibile, come detto, trattare unicamente applicazioni caratterizzabili come funzioni booleane linearmente separabili.

L'algoritmo di apprendimento si basa sul metodo della discesa del gradiente che permette di trovare un minimo locale di una funzione in uno spazio a N dimensioni. I pesi associati ai collegamenti tra gli strati di neuroni si inizializzano a valori piccoli (ovvero molto inferiori ai valori reali che poi assumeranno) e casuali, e poi si applica la regola di apprendimento presentando alla rete dei pattern di esempio. Queste reti neurali sono poi capaci di generalizzare in modo appropriato, cioè di dare risposte plausibili per input che non hanno mai visto.

L'addestramento di una rete neurale di tipo BP avviene in due diversi stadi: forward-pass e backward-pass. Nella prima fase i vettori in input sono applicati ai nodi in ingresso con una propagazione in avanti dei segnali attraverso ciascun livello della rete (forward-pass). Durante questa fase i valori dei pesi sinaptici sono tutti fissati. Nella seconda fase la risposta della rete viene confrontata con l'uscita desiderata ottenendo il segnale di errore. L'errore calcolato è propagato nella direzione inversa rispetto a quella delle connessioni sinaptiche. I pesi sinaptici infine sono modificati in modo da minimizzare la differenza tra l'uscita attuale e l'uscita desiderata (backward-pass).

Tale algoritmo consente di superare le limitazioni del percettrone e di risolvere il problema della separabilità non lineare (e quindi di calcolare la funzione XOR), segnando il definitivo rilancio delle reti neurali, come testimoniato anche dall'ampia varietà di applicazioni commerciali: attualmente la BP rappresenta un algoritmo di largo uso in molti campi applicativi.

Fondamenti

Una rete neurale artificiale (ANN "Artificial Neural Network" in inglese), normalmente chiamata solo "rete neurale" (NN "Neural Network" in inglese), è un modello matematico/informatico di calcolo basato sulle reti neurali biologiche. Tale modello è costituito da un gruppo di interconnessioni di informazioni costituite da neuroni artificiali e processi che utilizzano un approccio di connessionismo di calcolo. Nella maggior parte dei casi una rete neurale artificiale è un sistema adattivo che cambia la propria struttura in base a informazioni esterne o interne che scorrono attraverso la rete stessa durante la fase di apprendimento.

In termini pratici le reti neurali sono strutture non-lineari di dati statistici organizzate come strumenti di modellazione. Esse possono essere utilizzate per simulare relazioni complesse tra ingressi e uscite che altre funzioni analitiche non riescono a rappresentare.

Una rete neurale artificiale riceve segnali esterni su uno strato di nodi (unità di elaborazione) di ingresso, ciascuno dei quali è collegato con numerosi nodi interni, organizzati in più livelli. Ogni nodo elabora i segnali ricevuti e trasmette il risultato a nodi successivi.

Teoria e paradigmi di apprendimento Analisi del sistema di apprendimento di una rete neurale Il concetto di rete neurale si pone perché una funzione è definita come una composizione di altre funzioni , che possono a loro volta essere ulteriormente definite come composizione di altre funzioni. Questo può essere comodamente rappresentato come una struttura di reti, con le frecce raffiguranti le dipendenze tra variabili. Una rappresentazione ampiamente utilizzata è la somma ponderata non lineare, dove , dove è una funzione predefinita, detta funzione di attivazione, come ad esempio la tangente iperbolica. Sarà conveniente per le seguenti far riferimento a un insieme di funzioni come un vettore .

La Figura 1 esemplifica una decomposizione della funzione , con dipendenze tra le variabili indicate dalle frecce. Queste possono essere interpretate in due modi:

Il primo punto di vista è la vista funzionale: l'ingresso è trasformato in un vettore a 3-dimensioni, che viene poi trasformato in un vettore bi-dimensionale , che è poi finalmente trasformato in . Questo punto di vista è più comunemente riscontrato nel contesto dell'ottimizzazione. Il secondo punto di vista è la vista probabilistica: la variabile casuale dipende dalla variabile casuale , che dipende da , che dipende a sua volta dalla variabile casuale . Questo punto di vista è più comunemente riscontrato nel contesto dei modelli grafici.

I due punti di vista sono in gran parte equivalenti. In entrambi i casi, per questa particolare architettura di rete, i componenti dei singoli strati sono indipendenti l'uno dall'altro (ad esempio, le componenti di sono indipendenti l'una dall'altra, dato il loro ingresso ). Questo, naturalmente, permette un certo grado di parallelismo nella costruzione del sistema.

Reti, come ad esempio quelle precedenti vengono comunemente chiamate "feedforward", perché il loro è un grafico aciclico diretto. Reti con cicli (output diretto a unità dello stesso strato o dei precedenti) sono comunemente chiamate reti neurali ricorrenti. Tali reti sono comunemente raffigurate nel modo indicato nella parte superiore della Figura 2, dove la funzione è mostrata come dipendente da se stessa. Tuttavia, vi è una dipendenza temporale implicita che non è possibile mostrare. Questo significa in pratica che il valore di a un certo punto nel tempo dipende dai valori di al tempo zero o su uno o più altri punti temporali. Il modello del grafico nella parte inferiore della Figura 2 illustra il caso in cui il valore di al tempo dipende solo dal suo valore precedente.

Tuttavia la funzionalità più interessante di queste funzioni, ciò che ha attirato l'interesse e lo studio per la maggior parte delle reti neurali, è la possibilità di apprendimento, che in pratica significa la seguente:

dato un compito specifico da risolvere, e una classe di funzioni , apprendimento significa impiegare un set di osservazioni, al fine di trovare che risolve il problema in modo ottimale.

Ciò comporta la definizione di una funzione di costo tale che, per la soluzione ottimale nessuna soluzione ha un costo inferiore al costo della soluzione ottimale.

La funzione di costo è un concetto importante nell'apprendimento, poiché si tratta di una misura di quanto è lontana da noi la soluzione ottimale del problema che vogliamo risolvere. Quindi vi sono una serie di algoritmi di apprendimento che cercano nello spazio delle soluzioni al fine di trovare una funzione che abbia il minor costo possibile.

Per applicazioni in cui la soluzione dipende da alcuni dati, il costo deve essere necessariamente funzione delle osservazioni.