• Non ci sono risultati.

l’uscita attuale dipende solo ed esclusivamente dall’ingresso attuale; quindi, in sostanza la rete non ha memoria di ingressi avvenuti in tempi precedenti.

Un’altra tipologia di rete neurale è la Recurrent Neural Network (RNN), dove sono previste connessioni di feedback verso o neuroni dello stesso livello, o neuroni di livelli precedenti.

Una rete neurale ricorrente è una rete in cui esistono dei cicli: i valori di uscita di un layer di livello superiore vengono utilizzati come ingresso per un layer di livello inferiore. Le reti appartenenti a questa categoria hanno pertanto una gestione del flusso di informazioni e dell’addestramento molto complicato e che si dipana su più istanti temporali (unfolding in time).

Per ottenere il valore ottimale occorre modificare i valori di W con lo scopo di minimizzare la cosiddetta funzione di perdita. Questo processo può essere descritto dalla seguente formula:

min{ J(W) } = min {1

N∑(Li(f(xi, W), ytrue)) + λR(W)

N

i=1

}

dove:

• L rappresenta la funzione di perdita calcolata tra la predizione della rete (y_pred) e il relativo output target (y_true);

• R(W) è il termine di regolarizzazione, con il relativo parametro di regolarizzazione λ;

• J(W) esprime la funzione di costo complessiva calcolata sugli N campioni di batch.

La minimizzazione è un processo iterativo in cui durante la prima iterazione vengono inizializzati i pesi con valori casuali ed i dati vengono fatti passare in forward lungo gli strati della rete, ottenendo una predizione. La predizione viene poi confrontata con l’output target, calcolando attraverso la funzione di perdita l’errore di predizione. Sulla base della perdita ottenuta, ad ogni iterazione si andrà a propagare in backward l’errore, effettuando l’aggiornamento dei pesi seguendo uno dei due approcci:

• approccio batch (adatto in casi di regressione non lineare), dove le modifiche ai pesi vengono apportate una volta che alla rete è stato presentato l’intero insieme degli esempi. L’idea di base è quella di effettuare meno modifiche ma sostanziali;

• approccio sequenziale (adatto in casi di pattern recognition), basato su tante piccole modifiche, nel quale i pesi vengono aggiornati dopo la presentazione di ogni singolo pattern. È l’approccio più utilizzato, che permette, fissando il parametro di

apprendimento sufficientemente piccolo e scegliendo in modo casuale gli esempi da presentare alla rete, una vasta esplorazione dello spazio della funzione di costo.

Quello descritto sinora non è altro che il comportamento del più famoso ed utilizzato algoritmo di addestramento di una rete neurale, introdotto nel 1986 da Rumelhart, Hinton e Williams: l’algoritmo della retro-propagazione dell’errore o Error back-propagation [79].

L’algoritmo consiste in una tecnica d’apprendimento tramite esempi e si tratta sostanzialmente una generalizzazione dell’algoritmo d’apprendimento del percettrone di Rosenblatt. L'addestramento di un MLP viene solitamente realizzato utilizzando un algoritmo di back-propagation che prevede, come anticipato, due fasi: forward e back propagation [80].

Nella prima i pesi assumono dei valori fissi e vengono calcolate tutte le attivazioni dei neuroni della rete, dal primo layer proseguendo fino all’ultimo. Nella seconda il risultato generato dalla rete viene confrontato con quello desiderato e se ne calcola l’errore.

L’errore viene così propagato nel senso inverso a quello delle sinapsi, con l’intento di minimizzarlo, modificando i pesi di conseguenza. Alla fine di questa fase comincia una nuova iterazione con la forward propagation.

L'algoritmo di apprendimento della back-propagation è semplice da implementare e computazionalmente efficiente, in quanto la sua complessità è lineare nei pesi sinaptici della rete. Tuttavia, una delle principali limitazioni dell'algoritmo è che non sempre converge verso un risultato e può essere estremamente lento quando si ha a che fare con reti di grandi dimensioni.

Una serie di caratteristiche fa delle reti neurali artificiali dei sistemi ampiamente utilizzati, tra cui:

• l’elevato parallelismo, che permette di processare grandi quantità di dati in tempi relativamente brevi;

• la tolleranza ai guasti, ovvero la capacità di resilienza nei confronti di eventuali malfunzionamenti di alcune unità;

• la tolleranza al rumore, ovvero la capacità di operare quasi sempre in modo corretto nonostante input imprecisi o incompleti;

• l’evoluzione adattativa, ovvero la capacità di auto-aggiornarsi in caso di modifiche ambientali.

D’altro canto, non vanno però dimenticati il funzionamento a black box delle reti neurali, che si accompagna ad elevati livelli di complessità e numerosità dei parametri, l’incapacità di prevedere la lunghezza della fase di addestramento e la necessità di una enorme mole di dati per l’addestramento oltre che una grande potenza computazionale.

Per categorie come il data mining, optimization, elaborazione di modelli predittivi e simulativi e classificazione, le reti neurali rappresentano tutt’oggi lo strumento migliore per la gestione di analisi e problemi ad esse appartenenti.

Capitolo 3

L’analisi empirica

Il capitolo ha come oggetto la presentazione della realtà aziendale che ha permesso di elaborare l’analisi su di un caso di business reale, nonché la fase di preparazione ed elaborazione della base dati attraverso l’algoritmo di Random Forest e la rete neurale.

Dopo una breve presentazione dell’azienda SEWS-CABIND e del Gruppo Sumitomo, al fine di comprendere al meglio le caratteristiche della base dati, viene esposto il processo di produzione del cablaggio e con esso spiegata la struttura ed il funzionamento delle macchine saldatrici ad ultrasuoni Minic III della Schunk Sonosystem. Seguono i dettagli relativi all’analisi empirica condotta sui file log (i.e. l’output del processo di produzione del cablaggio) mediante l’elaborazione di un algoritmo Random Forest e di una rete neurale feed-forward a tre strati. Per l’elaborazione di entrambi i modelli ci si è serviti del linguaggio di programmazione Python.