RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

13

Click here to load reader

description

RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

Transcript of RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

Page 1: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

Corso di Alta Formazione in “Esperto in metodi quantitativi e strumenti informatici per la

gestione economica e finanziaria”

RETI NEURALI ARTIFICIALI E RETI

NEURALI BAYESIANE

Dicembre 2004 [email protected] Susanna Daddi

Page 2: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

2

1. Introduzione Le reti neurali artificiali nascono dall’esigenza di riprodurre attività tipiche del cervello umano, come il riconoscimento di forme e caratteri, la percezione delle immagini, la comprensione del linguaggio e il coordinamento senso-motorio. Un calcolatore è infatti molto bravo nell’eseguire in tempi brevissimi una sequenza ordinata e determinata di comandi, ma non è in grado di elaborare alcuna risposta di fronte a nuove situazioni. Ciò vuol dire ad esempio, che per far in modo che una macchina riconosca che un certo carattere scritto a mano, in forme diverse, rappresenta sempre la stessa lettera dell’alfabeto, occorrerebbe prendere in considerazione, in un ipotetico programma, tutte le possibili calligrafie.

Figura1: Alcuni dei caratteri utilizzati per costruire una rete neurale artificiale in grado di riconoscere tutti i caratteri dell’alfabeto, scritti a mano.

Una rete neurale, invece, è in grado di apprendere dall’esperienza ed elaborare risposte nuove anche di fronte a nuove situazioni. Essa riesce ad adattarsi all’ambiente circostante e a modellare la realtà, imparando le leggi che la governano attraverso l’esperienza. E la cosa più impressionante è che essa ha la capacità di comprendere e sintetizzare le leggi che legano gli eventi anche laddove noi non ne conosciamo una formula matematica che li spieghi: semplicemente analizzando le cause e gli effetti una rete riesce autonomamente a riprodurre il legame che condiziona un evento. Per risolvere il problema del riconoscimento dei caratteri sopra illustrato, ad esempio, con l’utilizzo di una rete neurale occorre soltanto calibrarne la struttura e i parametri e lanciare un’opportuna fase d’apprendimento: il riconoscimento dei caratteri è garantito con un arbitrario margine d’errore.

Page 3: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

3

2. Struttura Le reti neurali artificiali prendono quindi esempio dalla biologia e, in particolare, proprio dalla struttura del cervello umano. Pertanto possiamo definire un neurone artificiale come un modello matematico semplificato del neurone biologico, previsto di una funzione d’attivazione che dipende dagli stimoli che riceve in input. Per chi ha reminiscenze informatiche, una rete neurale artificiale può essere definita come un modello dinamico avente la topologia di un grafo orientato, i cui nodi rappresentano i neuroni artificiali e gli archi i pesi sinaptici. In altre parole, essa non è altro che un insieme ordinato di neuroni, detti nodi, collegati opportunamente tramite elementi detti pesi. I nodi si distribuiscono in strati: il primo è quello di input, poi ci sono gli strati intermedi (hidden layers) e infine lo strato di output; i pesi collegano tutti i nodi di ogni strato con ogni nodo dello strato successivo, ma non con quelli dello stesso strato. Inoltre, in tutti gli strati, tranne quello di input, ogni nodo è collegato tramite un peso speciale, detto soglia, ad un nodo che, per convenzione, si considera di valore costante. Possiamo allora mostrare la forma della funzione d’attivazione, associata ad ogni nodo tranne quelli di input:

��

���

� += �i

ii xwwfy 0 ,

dove w0 è il valore di soglia, xi sono i valori dei neuroni dello strato precedente e wi i pesi che collegano quest’ultimi al nodo in esame. Una rete si presenta quindi come un modello matematico multidimensionale in grado di modellare, approssimare e classificare realtà anche molto complesse. Di seguito è illustrata graficamente la struttura di una generica rete neurale multistrato:

Figura 1: Rete neurale con un singolo hidden layer, costituita da 2 nodi di input, 5 nodi nello strato intermedio e un nodo di output.

Page 4: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

4

Per comprendere però effettivamente le potenzialità e il potere computazionale di una rete neurale è necessario enunciare il seguente teorema:

TEOREMA DI APPROSSIMAZIONE UNIVERSALE Una rete neurale multistrato, con un singolo hidden layer è in grado di

apprendere qualsiasi funzione continua e di approssimarla con qualsiasi grado di precisione.

(Teorema d’esistenza di Kolmogorov applicato alle reti neurali da Cybenco,1988 e Hornik,1989) In pratica una rete neurale, potenzialmente, può rappresentare, con la precisione desiderata, qualunque fenomeno descrivibile attraverso una legge di tipo continuo. Ovviamente, aumentando il numero degli strati nascosti si possono cogliere anche le discontinuità di una funzione, ma con un costo computazionale che potrebbe risultare troppo elevato. Il problema però è che il teorema garantisce soltanto l’esistenza di una rete che soddisfi determinate condizioni, ma purtroppo non fornisce alcun metodo pratico per trovarne la struttura o i parametri corrispondenti. 3. Apprendimento L’apprendimento, o training, di una rete neurale è la fase in cui essa “esamina” la realtà, cogliendone i tratti più rappresentativi: in pratica, in questa fase, vengono presentati alla rete una serie di inputs ed i corrispondenti reali valori di output. Misurando di quanto gli outputs che essa genera differiscono da quelli esatti, la rete modifica i suoi parametri per adattarsi alla realtà ed imparare da questa. L’apprendimento può essere ottenuto con diversi algoritmi, la cui scelta deve essere conseguente all’obiettivo che si vuole raggiungere. In altre parole, in base al metodo con cui viene effettuato il training si ottengono diversi tipi di rete. In questo documento verranno illustrati gli algoritmi principali finalizzati all’apprendimento: quello della Error Back Propagation, associato alle reti neurali e il Metropolis - Hastings per le reti neurali Bayesiane. Reti neurali e reti neurali Bayesiane sono due mondi a confronto che s’incontrano e si scontrano: le prime seguono il principio della Maximum Likelyhood, le altre l’Approccio Bayesiano. Nella Maximum Likelyhood l’apprendimento è finalizzato ad ottenere una sola rete, “la migliore”, quella che commette l’errore più piccolo, perciò, alla fine del training, si ottiene un unico vettore di pesi che sarà quello con cui la rete risponderà alle richieste che le verranno sottoposte. Con l’Approccio Bayesiano, invece, si considera una distribuzione di probabilità sullo spazio dei pesi: essa rappresenta il grado di fiducia nei diversi vettori di pesi generati. Alla fine del

Page 5: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

5

training si tengono tutte le reti generate e, in fase di esecuzione, l’output che si ottiene non è altro che il valore atteso degli outputs generati da tutte queste le reti. L’apprendimento di una rete neurale, dipende, però, anche dalla scelta della funzione d’attivazione. Generalmente, la più utilizzata è quella sigmoidale, la cui espressione è data da:

dove wi sono i pesi che collegano il nodo in esame con i rispettivi nodi dello strato precedente e xi sono le uscite corrispondenti di tali nodi. Graficamente la sigmoide si presenta così: Essa può essere decritta attraverso alcune sue caratteristiche molto importanti: è sempre crescente, è continua su tutto l’asse dei reali ed è sempre derivabile, condizione quest’ultima necessaria per poter utilizzare l’algoritmo di Back Propagation; inoltre: Ciò vuol dire che il condominio della funzione sigmoidale ha valori compresi in [0,1] e che, aumentando il modulo di x, essa va molto presto in saturazione. Queste particolarità della funzione d’attivazione richiedono alcuni accorgimenti da tener presenti nel momento in cui i dati che si hanno a disposizione vengono presentati alla rete: se essi hanno valori compresi in un intervallo molto ampio, ad esempio, è necessario “costringerli” a rimanere in un intervallo più piccolo, che non mandi subito in saturazione la sigmoide. Inoltre, se vogliamo ottenere come outputs valori esterni all’intervallo [0,1] occorre estrapolare tali valori dai risultati ottenuti direttamente dalla rete. Risulta necessaria, quindi, una fase iniziale di pre-processing

�+

−i

ii xw

e1

1

.01

1lim =

+ −−∞→ xx e,1

11

lim =+ −+∞→ xx e

Page 6: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

6

dei dati e una finale di post-processing. La soluzione più immediata a questo problema è data dalla formula:

dove [Imin,Imax] è l’intervallo in cui vogliamo costringere i dati, v è il valore reale che abbiamo a disposizione, [Vmin,Vmax] è l’intervallo a cui appartengono i dati reali e i il valore che otteniamo, quello da poter presentare alla rete. Ovviamente, sia gli inputs che gli outputs della fase di training devono essere opportunamente pre-processati attraverso questa formula: gli outputs, alla fine, dovranno essere anche post-processati utilizzando semplicemente l’inversa della funzione sopra. Un altro problema che si può porre al momento dell’utilizzo pratico di una rete neurale è anche quello dell’uniformità dei dati d’ingresso. Supponiamo che una rete abbia, come inputs, 2 tipi di dati: la frequenza di una calamità naturale e l’importo dei danni relativi ad essa. Fortunatamente, i valori delle frequenze saranno piuttosto bassi, ma, al contrario, gli importi corrispondenti saranno di gran lunga maggiori. Presentando alla rete i 2 tipi di dato così come vengono registrati nella realtà, il peso degli importi forzerebbe la rete a trascurare completamente le frequenze, con una conseguente distorsione della realtà. Per risolvere anche questo problema esistono altre opportune formule per il pre-processing ed il relativo post-procesing. Presentata una piccola panoramica del “mondo neurale”, possiamo ora vedere gli algoritmi d’apprendimento sopra citati più da vicino, descrivendone la struttura e le caratteristiche principali. 3.1. Back Propagation Si basa sul metodo della Discesa del Gradiente con l’intento di minimizzare l’errore commesso dalla rete, che viene definito come:

� −=i

ii OTE 2)(21

,

dove Ti è l’i-imo output esatto (target) e Oi l’i-imo output generato dalla rete. Per ogni peso wi,j si calcola quindi la derivata di E rispetto al peso stesso e si aggiorna quest’ultimo in modo opportuno. Svolgendo alcuni calcoli matematici, si dimostra facilmente che, per i pesi dello strato di output, l’espressione finale della derivata è la seguente:

minmax

minminmaxmin

))((VV

VvIIIi

−−−+=

Page 7: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

7

dove hj è l’output del j-imo nodo dell’hidden layer, f la funzione d’attivazione e ∆i è la porzione di derivata associata al i-imo nodo di output. Per quanto riguarda i pesi dello strato intermedio, invece, nel computo della derivata è necessario tener conto anche del contributo dato all’errore dai nodi dell’ultimo strato, in modo proporzionale al peso attraverso cui quest’ultimi sono collegati ai nodi dell’hidden layer. Esplicitamente la sua forma sarà quindi:

dove xk è il k-imo input, ∆i il delta dell’i-imo output node e ∆j la porzione di derivata associata al j-imo nodo dello strato nascosto. L’aggiornamento del generico peso wi,j avviene allora secondo la seguente formula:

dove aj-1,i è l’output del nodo dello strato precedente collegato allo strato successivo tramite wi,j e β è il coefficiente d’apprendimento della rete, parametro che ha un ruolo fondamentale nella riuscita e nell’efficienza della fase di training. Presentato alla rete un opportuno numero di esempi corretti da cui imparare, a questo punto possiamo descrivere la struttura dell’algoritmo di Back Propagation nel modo seguente:

for (i=1;i<num_iterazioni;i++) { ∀ pattern { calcola gli outputs della rete; calcola il delta di ogni nodo; aggiorna i pesi; } }

������ ������� ��j

k iiijkjk

jkk

jk

wxwfw

xwE

� � ∆∂

∂−=∂∂

])]}[([{,ˆˆ,

ˆ,ˆˆ

ˆ,ˆ

ijjjiji aww ,1,, −∆+= β

����� ������ ��i

jjij

ijiij

ij

hwfw

OThwE

�∂∂−−=

∂∂

)]}([){( ˆ,ˆ,ˆ

ˆˆˆ,ˆ

Page 8: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

8

Alla fine del training si otterrà il vettore di pesi che permette alla rete di approssimare al meglio la funzione o il problema che gli è stato sottoposto. Il Teorema di Approssimazione Universale, però, ha lasciato aperto un problema, che è quello della scelta dei parametri: non esiste alcun metodo che ci permetta di sapere, a priori, qual è il numero di nodi da immettere nello strato intermedio, né quanti strati inserire, né qual è il numero d’iterazioni necessarie nella fase di training, né, tanto meno, qual’è il valore ottimale da dare al coefficiente d’apprendimento. Dalla scelta di tutti questi parametri dipende la capacità d’approssimazione e di generalizzazione e l’efficienza della rete: meno nodi si hanno nello strato intermedio, più aumenta la capacità di generalizzazione della rete, ma, contemporaneamente, diminuisce la precisione nell’approssimazione. Maggiore è il numero degli strati, maggiore è la complessità della situazione che la rete può rappresentare, ma maggiori sono i tempi necessari per l’apprendimento e il costo computazionale. Maggiore è il numero d’iterazioni, maggiore è il grado di precisione che la rete raggiunge, ma maggiore è il rischio di overfitting, cioè il pericolo che la rete rimanga troppo legata ai dati e non sia in grado poi di dare buone risposte di fronte a situazioni mai viste. Per comprendere meglio questo concetto, è come se uno studente imparasse a memoria una particolare lezione, ma non sapesse rispondere a domande più generali sull’argomento o non fosse in grado di trarre conclusioni autonome su di esso. Per comprendere realmente l’importanza del coefficiente d’apprendimento, invece, consideriamo la seguente funzione d’errore:

L’obiettivo della fase di training è quello di minimizzare l’errore commesso e quindi, nel grafico, trovare il vettore di pesi ottimale (w*): minore è il valore di β , più lenta sarà la convergenza e quindi maggiore sarà il numero d’iterazioni necessarie per raggiungerla (1°caso). Aumentando un po’ il valore di β si ottiene una convergenza più rapida (2°caso), ma, superato un certo valore del coefficiente d’apprendimento, l’algoritmo inizia ad avere un comportamento instabile, oscillando da una parte all’altra di w* (3°caso). Aumentando ancora il valore di β può accadere che l’algoritmo addirittura non converga (4°caso). Ciò vuol dire che, per ogni singolo problema, occorre tarare in modo opportuno tutti i parametri e testare rigorosamente le risposte della rete per trovarne la struttura ottimale.

Page 9: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

9

Dopo aver presentato, in linea generale, la struttura dell’algoritmo di Back Propagation, possiamo ora esaminarne pregi e difetti. I vantaggi possono essere riassunti nella facile implementabilità, nell’efficienza e nel fatto che esso è applicabile a reti con qualunque numero di nodi e di strati. D’altra parte però, i limiti sono: la lentezza del processo di training, il rischio di overfitting, già citato sopra e la possibile convergenza a minimi locali, cioè il pericolo che la rete modifichi i suoi parametri sulla base di un minimo della funzione d’errore che però è soltanto relativo e non riesca poi a raggiungere quello assoluto. Per risolvere questi ed altri problemi sono state elaborate diverse soluzioni, dall’aggiunta del termine Momento, all’Early Stopping, con ottimi risultati.

3.2. Metropolis – Hastings Il teorema di Bayes ci permette di passare dalla probabilità a priori alla probabilità a posteriori di un evento, attraverso la relazione:

dove A e B sono gli eventi in esame. Se consideriamo W lo spazio dei pesi di una rete neurale e D lo spazio dei targets, possiamo riscrivere la relazione sopra nel modo seguente: dove p(w|D) è la probabilità che il vettore dei pesi sia w dato che l’insieme dei targets è D, p(D|w) la probabilità di avere D come spazio dei targets dato che il vettore dei pesi della rete è proprio w e, in qualche modo, rappresenta il rumore, l’errore commesso e p(w) la probabilità a priori dei pesi della rete. Per convenzione si suppone che la distribuzione di probabilità a priori sullo spazio dei pesi sia di tipo normale e che anche l’errore commesso dalla rete (rumore) segua lo stesso andamento. Le due distribuzioni di probabilità avranno quindi la forma seguente:

,)(

)()|()|(

ApBpBAp

ABp =

�= =

−W

iiw

w

eZ

wp 1

2

2

)(1

)(α

α

,)(

)()|()|(

DpwpwDp

Dwp =

Page 10: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

10

per quella a priori, dove ZW(α) è un fattore di normalizzazione, α una costante nota e wi i pesi della rete e, per la distribuzione del rumore:

dove ZD(β) è sempre un fattore di normalizzazione, β una costante nota, y(xn,w) è l’n-imo output della rete ottenuto con il vettore w di pesi e tn l’n-imo target. Dal teorema di Bayes si ottiene allora:

dove ZS è un fattore di normalizzazione indipendente dai pesi e S(w) la seguente espressione:

Abbiamo detto che l’Approccio Bayesiano prevede il calcolo del valore atteso:

che, nella maggior parte dei casi, è un integrale non calcolabile direttamente, pertanto il suo valore viene approssimato attraverso la formula: Il problema che si pone a questo punto, però, è quello di generare valori dei pesi che abbiano proprio p(w|D) come distribuzione di probabilità a posteriori: è a questo livello che interviene il metodo di Metropolis – Hastings. Esso permette, infatti, di

,1

)()()|(

)|( )(wS

S

eZDp

wpwDpDwp −==

�= dwDwpwFI )|()(

.2

}),({2

)(1

2

1

2 ��==

+−=W

ii

N

nnn wtwxywS

αβ

.)(1

1�

=

≈L

iiwF

LI

�= =

−−N

nnn twxy

D

eZ

wDp 1

2}),({2

)(1

)|(β

β

Page 11: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

11

generare esempi secondo una data distribuzione, avvalendosi dei Metodi Monte Carlo e quindi della teoria dei processi stocastici, in particolare, delle Catene di Markov. L’algoritmo lavora iterativamente, per un numero di cicli prefissati, variando, ad ogni passo, ogni peso della rete secondo la relazione: wnew = wold +ε , dove ε è un vettore di quantità casuali, pertanto tale relazione rappresenta proprio una passeggiata aleatoria. I passi dell’algoritmo possono allora essere schematizzati nel modo seguente:

if p(wnew|D) > p(wold|D) accetta il vettore wnew; else if p(wnew |D) < p(wold |D)

accetta il vettore wnew solo se α<)|()|(

DwpDwp

old

new

dove α è un numero casuale compreso tra 0 ed 1. Ovviamente l’intento è quello di massimizzare la probabilità, senza però accontentarsi di ottenere il vettore migliore, ma conservando i vettori che risultano “più buoni”, quelli più rappresentativi che permettano alla rete di modellare la realtà in modo molto più generale della Maximum Likelyhood, tenendo conto anche di possibili variazioni casuali ed impreviste delle condizioni che favoriscono un evento. Questo approccio permette di affrontare, con una rete neurale Bayesiana, tutta una serie di problemi in cui subentra il fattore casualità, rischio: permette cioè di apprendere con precisione l’andamento di un fenomeno, ma senza mantenersi attaccati ai dati specifici che lo descrivono. In altre parole, il risultato che si ottiene con una rete neurale Bayesiana è un valore che segue un andamento, ma contempla anche la possibilità che, nella realtà, si siano verificati fattori imprevisti che abbiano fatto variare la realtà pre-esistente. 4. Applicazioni Le possibili applicazioni di una rete neurale artificiale spaziano nei campi più disparati, dalla medicina all’ingegneria, dalla finanza alla sicurezza. Esaminiamo alcuni di questi più da vicino. Nel campo della sicurezza, ad esempio, le reti neurali stanno assumendo un ruolo di primo piano nel riconoscimento di immagini e voci, in particolare nel riconoscimento automatico di volti e impronte digitali. Pensiamo all’importanza che avrebbe una

Page 12: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

12

telecamera che, in un aeroporto, fosse in grado di riconoscere un soggetto in modo autonomo e di segnalarlo, se necessario, tempestivamente a chi di dovere. Oppure pensiamo all’importanza che avrebbe un apparecchio che riuscisse, istantaneamente, a riconoscere un’impronta digitale e, di conseguenza, a concedere o no l’accesso in un dato luogo. Discorso del tutto analogo per quanto riguarda il riconoscimento di voci e suoni. In ambito finanziario trovano applicazione nella gestione del rischio di credito e nel rischio operativo, argomenti di grande attualità in seguito agli accordi di Basilea e Basilea 2. Esiste inoltre un progetto che utilizza reti neurali anche nella valutazione di opzioni finanziare e costituisce attualmente una valida alternativa ai metodi classici. Nel campo della robotica un esempio di applicazione è dato dalla risoluzione di un problema di cinematica inversa: un braccio meccanico che partendo dalla posizione (x0,y0) deve raggiungere un obiettivo situato nel punto (x1,y1) percorrendo il cammino minimo. Con l’ausilio di una rete neurale, esso è in grado di ricostruire autonomamente qual è il percorso migliore da seguire, rilevando anche la presenza di eventuali ostacoli. E’stato realizzato con successo, poi, un sistema di guida autonoma di automobili, in cui il conducente è stato proprio una rete neurale che in input prendeva l’immagine della strada. Un’ulteriore applicazione è nel mondo industriale, come metodo più efficiente e più sicuro nel controllo di qualità della produzione: un meccanismo che sia in grado di classificare autonomamente i prodotti difettosi di un dato lotto di merce, infatti, risulterebbe sicuramente più veloce e meno costoso. Ma l’ambito più affascinante, a mio parere, è il campo della medicina: il Medical Neural Engineering, azienda che realizza software per il mondo della sanità, ha già realizzato, ad esempio, un sistema di supporto alla diagnosi nel campo dell’odontoiatria. In questo settore, ovviamente, l’utilizzo delle reti delle reti neurali non ha come obiettivo quello di sostituire il ruolo del medico, ma vuole essere semplicemente uno strumento importante di ausilio alle diagnosi. E’noto, infatti, che un medico deduce la diagnosi della malattia di un paziente dai risultati degli esami a cui si è sottoposto, ma, congiuntamente, anche dalla sua esperienza, confrontando la situazione che ha di fronte con i casi analoghi che gli si sono presentati nel corso della sua carriera. In questo senso, una rete neurale che abbia appreso migliaia di casi in cui si è riscontrata una certa patologia potrebbe avere una visione più ampia, magari servendosi dei giudizi dati dall’esperienza di centinaia di altri medici in varie parti del mondo. E’come se, in qualche modo, potesse ampliare ed arricchire l’esperienza del medico. Di grande interesse e attualità è, in particolare, il ramo della ricerca in campo oncologico: si sta studiando, infatti, la possibilità di utilizzare una rete neurale che sia in grado, prendendo in input le caratteristiche principali risultanti dall’analisi di un dato tumore, di classificarlo e inserirlo più velocemente in una data categoria. Questi sono soltanto alcuni esempi d’applicazione di una rete neurale, ma la ricerca è in continuo sviluppo e la creatività di chi studia questi modelli riuscirà a destinare loro moltissimi altri utilizzi. Attualmente non è possibile prevedere in quale misura le

Page 13: RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE

13

reti neurali verranno effettivamente utilizzate, ma sicuramente le loro potenziali applicazioni coinvolgono fortemente gli aspetti più presenti nel nostro quotidiano. Senza alcun dubbio esse possono essere, per questo, uno strumento davvero importante ai fini del miglioramento della nostro modo di vivere e pertanto rappresentano un capitolo dell’intelligenza artificiale che merita tutta la nostra attenzione. Bibliografia e riferimenti Christopher M. Bishop “Neural Networks for Pattern Recognition”; Radford M. Neal “Bayesian Training of Backpropagation Networks by the Hybrid Monte Carlo Method”; B. Walsh “Markov Chain Monte Carlo and Gibbs Sampling”; D.J.C. Mackay “Introduction to Monte Carlo Methods”; Stefano Hajek “Soft Computing”. Materiale reperito in rete, in particolare dispense universitarie, tesi di laurea e di dottorati di ricerca, articoli pubblicati da siti e riviste specializzate, documentazioni di progetti già realizzati o in fase di realizzazione.