Le tipologie di reti neurali
Continuiamo il discorso iniziato nel precedente articolo “Reti neurali“, andando ad approfondire le tipologie di reti neurali e le possibili applicazioni.
Esistono diverse tipologie di reti neurali, che possono essere distinte per tipo, struttura e algoritmo di apprendimento utilizzato. Una prima distinzione può essere fatta per tipo di rete neurale; il tipo di una rete neurale indica se i neuroni dei vari strati della rete possono essere collegati tra loro.
Vi sono due macro raggruppamenti: feedforward o feedback (dette anche recurrent). Le reti neurali di tipo feedforward permettono solo collegamenti neuronali tra due diversi strati, mentre le reti di tipo feedback consentono anche connessioni tra i neuroni dello stesso strato.
Il tipo più semplice di rete neurale feedforward è la Single-Layer Perceptron. Si tratta di un tipo molto semplice di rete neurale con due strati di neuroni che accetta solo input ed output binari (0 e 1). Il processo di apprendimento è supervisionato e la rete è in grado di risolvere operazioni logiche di base come AND e OR, mentre operazioni più complesse come XOR (ossia quel problema nel quale, dati due ingressi binari, la funzione d’uscita restituisce un valore vero se i due input non sono uguali e un valore falso se sono uguali) non possono essere risolte da questo tipo di rete neurale. Questa rete è utilizzata anche per la classificazione di modelli (pattern classification).
Un altro tipo di rete feedforward è la Multi-Layer Perceptron, introdotta da Minsky e Papert nel 1969. Si tratta di un perceptron esteso con uno o più livelli nascosti tra lo strato di input e quello di output. Grazie alla sua struttura estesa, questa rete è in grado di risolvere ogni operazione logica, compreso il problema XOR.
Nel 1986 Hinton, Rumelhart e Williams introdussero la rete MLP backpropagation, ossia la Multi-Layer Perceptron con algoritmo di apprendimento backpropagation. Questa rete ha la stessa struttura della classica MLP ed è uno dei tipi più potenti di rete neurale. Oltre che per operazioni logiche complesse e pattern classification può essere usata per l’analisi del parlato.
Un’altra rete feedforward è la rete neurale a base radiale o rete di funzione di base radiale. Questa rete ha un solo livello hidden di neuroni che realizza funzioni di base circolari centrate sui punti dello spazio di input; esistono varie forme delle funzioni, anche se in genere si usano delle gaussiane. Questo tipo di rete è ideale per interpolazioni di funzioni e per la predizione in serie temporali.
Tra le reti feedforward c’è anche la rete neurale convoluzionale (o CNN dall’inglese Convolutional Neural Network). In questa rete il pattern di connettività tra i neuroni è ispirato dall’organizzazione della corteccia visiva animale, i cui neuroni individuali sono disposti in maniera tale da rispondere alle regioni di sovrapposizione che tassellano il campo visivo. Le reti convoluzionali sono ispirate da processi biologici e sono variazioni di percettroni multistrato progettate per usare al minimo la pre-elaborazione. Queste reti hanno diverse applicazioni nel riconoscimento di immagini e video, nell’elaborazione del linguaggio naturale e, recentemente, in bioinformatica.
Per quanto riguarda le reti ricorrenti, nel 1982 il fisico Hopfield pubblicò un articolo in cui presentò un modello di rete che prende proprio il suo nome; a differenza delle precedenti, questa rete neurale ha un metodo di apprendimento non supervisionato. Questa rete si compone di un insieme di neuroni, in cui ogni neurone è collegato ad ogni altro neurone, e non c’è differenziazione tra neuroni di input e di output. Da un punto di vista strutturale, la rete di Hopfield costituisce una rete neurale ricorrente simmetrica, di cui è garantita la convergenza. L’applicazione principale di questo tipo di rete è la conservazione e il riconoscimento di modelli, per esempio immagini.
Nello stesso anno fu introdotta dal professore finlandese Kohonen un’altra rete neurale con apprendimento non supervisionato; anche in questo caso la rete prende il nome dal suo ideatore. Questa è probabilmente il tipo di rete neurale più utile per la simulazione del processo di apprendimento del cervello umano. Il suo “cuore” è la mappa caratteristica, uno strato di neuroni in cui i neuroni si organizzano secondo certi valori di input. Durante il processo di apprendimento, infatti, i neuroni sulla mappa si organizzano in funzione dei valori di ingresso; questo si traduce in una struttura neuronale clusterizzata, in cui i neuroni con proprietà (valori) simili si dispongono in settori connessi sulla mappa. Questo tipo di rete neurale è sia feedforward che feedback, e viene utilizzata per il pattern classification, per problemi di ottimizzazione e simulazione.
Infine un modello di ultima generazione è la Spiking Neural Network (SNN), una rete a impulso che tenta di mimare più realmente le reti neurali naturali. Oltre allo strato sinaptico e neuronale, una rete di questo tipo incorpora anche il concetto di tempo nel suo modello operativo. L’idea è che i neuroni artificiali non attivino in automatico ognuno un ciclo di propagazione come nelle reti multistrato con percettrone, ma piuttosto quando un potenziale di membrana, ossia una qualità intrinseca del neurone correlata alla carica della sua membrana elettrica, raggiunge uno specifico valore. Quando un neurone si attiva genera un segnale che viaggia verso altri neuroni, che a turno incrementano o decrementano i loro potenziali in accordo a questo segnale. Per le SNN, l’attuale livello di attivazione (modellato come un’equazione differenziale) è normalmente considerato uno stato del neurone, che con impulsi in arrivo spinge questo valore più in alto e poi si attiva o decade nel tempo. Esistono vari metodi di codifica per interpretare l’uscita del “treno di impulsi” come numero reale, facendo affidamento sulla frequenza dei picchi o sul tempo tra i picchi, per codificare le informazioni. In linea di principio, le SNN possono essere utilizzate per le stesse applicazioni delle ANN tradizionali. Inoltre, queste reti possono modellare il sistema nervoso centrale di organismi biologici o studiare il funzionamento dei circuiti neurali biologici.
Possibilità e limiti delle reti neurali
Le reti neurali vengono progettate per risolvere problemi che non possono essere risolti mediante algoritmi tradizionali. Tali problemi sono solitamente problemi di ottimizzazione o classificazione. I diversi domini in cui le reti neurali possono essere utilizzati sono:
- riconoscimento/classificazione di modelli (pattern association/classification);
- rilevamento di regolarità (regularity detection);
- elaborazione delle immagini (image processing);
- analisi del parlato (speech analysis);
- problemi di ottimizzazione (optimization problems);
- controllo di robot (robot steering);
- elaborazione di input inesatti o incompleti;
- garanzia della qualità (quality assurance);
- previsioni di mercato (stock market forecasting);
- simulazione;
Come già detto, ci sono molti differenti tipi di reti neurali, ciascuna con proprietà particolari, per cui ogni dominio applicativo ha il proprio tipo di rete. In generale si può dire che le reti neurali sono sistemi molto flessibili per scopi di “problem solving”. Una caratteristica particolare delle reti neurali è la tolleranza agli errori; ciò significa che, se una rete neurale viene addestrata per un problema specifico, sarà in grado di produrre risultati corretti anche se il problema da risolvere non è esattamente lo stesso di quello già appreso. Per esempio, si supponga che una rete neurale sia stata addestrata a riconoscere il linguaggio umano. Durante il processo di apprendimento, una persona pronuncia alcune parole, che vengono apprese dalla rete; in seguito, se addestrata correttamente, la rete neurale dovrebbe essere in grado di riconoscere le parole pronunciate anche da un’altra persona.
Sebbene le reti neurali siano in grado di trovare soluzioni a problemi difficili, i risultati non possono essere garantiti; essi sono infatti solo approssimazioni della soluzione desiderata e un certo errore è sempre presente. Inoltre, esistono problemi che non possono essere correttamente risolti utilizzando reti neurali. Un esempio sul “pattern recognition” può chiarire meglio il concetto. Se si incontra una persona vista in precedenza, di solito la si riconosce una seconda volta, anche se non sembra la stessa del primo incontro. Si supponga ora di aver addestrato una rete neurale con una fotografia di quella persona: l’immagine sarà sicuramente riconosciuta dalla rete; ma se si disturba l’immagine o la si ruota di un certo angolo, il riconoscimento probabilmente fallirà. Sicuramente nessuno utilizzerebbe mai una rete neurale in un algoritmo di ordinamento, poiché esistono algoritmi molto migliori e più veloci; ma in domini applicativi come quelli sopra menzionati, le reti neurali rappresentano una buona alternativa agli algoritmi classici.
Fonti
- www.terna.it/it
- www.studioninarello.it/efficienza-energetica/la-generazione-distribuita/
- www.aerel.info/struttura/tecnologie/generazione-distribuita
- “A spiking neural network (SNN) forecast engine for short-term electrical load forecasting”, Santosh Kulkarni , Sishaj Simon, K. Sundareswaran (2013)
- bias.csr.unibo.it/maltoni/ml/DispensePDF/8_ML_RetiNeurali.pdf
- www.crescenziogallo.it/unifg/dottorato-medicina-traslazionale- 2018/Reti%20neurali%20artificiali%20-%20Concetti%20base.pdf
- www.di.univr.it/documenti/OccorrenzaIns/matdid/matdid833568.pdf
- vision.unipv.it/IA/aa2001-2002/10-RetiNeurali.pdf
- www.illuminamente.org/dokuwiki/lib/exe/fetch.php?media=neurali:reti3.pdf
- tesi.cab.unipd.it/64862/1/tesi pdf
- download.terna.it/terna/Annuario%20Statistico%202018_8d7595e944c2546.pdf
- www.mathworks.com/products/deep-learning.html
- www.terna.it/it/sistema-elettrico/transparency-report/download-center
- “Forecasting Hourly Electricity Load Profile Using Neural Networks”, Mashud Rana, Irena Koprinska, Alicia Troncoso (2014)