Università degli Studi della Calabria
Facoltà di Lettere e Filosofia
Corso di Laurea in D.A.M.S. indirizzo Multimediale
Psicologia Generale 2
Le Reti Neurali
Simulazione: apprendimento da parte di una rete neurale artificiale.
Studentessa:
Eleonora Fazio
Docente:
Eleonora Bilotta
A.A. 2000/2001
2
Indice.
Introduzione.
1. Le reti neurali.
1.1. Le reti neurali naturali.
1.2. Le reti neurali e i neuroni artificiali.
1.3. L’apprendimento di una rete neurale.
2. Simulazione: apprendimento di una rete neurale.
2.1. Creazione della rete.
2.2. Creazione del training Set.
2.3. La simulazione.
2.4. Verifica dell’apprendimento.
2.5. Variazione di alcuni parametri.
2.5.1. Aggiunta di uno strato di hidden.
2.5.2. Variazione del parametro presentazione del Training Set.
2.5.3. Conclusioni.
Introduzione.
Prima del 1875, anno in cui Wilhelm Wundt diede vita alla Psicologia Sperimentale, lo studio
della mente era affidato esclusivamente alla filosofia, che nel corso dei secoli aveva elaborato molte
teorie anche contrastanti tra loro. A partire dalla fine del XIX secolo, invece, anche la Psicologia
comincia ad interessarsi a questo problema; la prima corrente psicologica che teorizza qualcosa in
merito è il Comportamentismo di
John Watson, nato alla fine del 1800. Secondo i
comportamentisti la mente, intesa come pensiero, non esiste, mentre ciò che deve essere studiato è il
cervello dell’uomo, che raccoglie gli stimoli fisici dell’ambiente e determina una risposta o
comportamento nell’individuo, direttamente osservabili nella realtà (teoria dello Stimolo-Risposta).
Questo approccio allo studio della mente umana ha avuto fortuna fino alla fine degli anni ’50 del
secolo successivo, quando la Psicologia allargò i suoi rami con la nascita del Cognitivismo la cui
prima formulazione teorica fu quella di Ulric Neisser , che attuò un completo capovolgimento della
teoria comportamentista. Il Cognitivismo afferma, infatti, che non è il cervello, elemento fisico o
hardware, che va studiato dalla Psicologia, ma la mente, il software, intesa come elaboratore di
informazioni. Con questa teoria viene recuperato il dualismo cartesiano tra mente e corpo.
Il Cognitivismo, nel cui ambito prese vita l’Intelligenza Artificiale ad opera di John McCarthy,
Marvin Minsky, Allen Newell ed Herbert Simon, ha elaborato così una teoria della mente che è
rimasta incontrastata, addirittura, fino agli anni ’80, quando, grazie al volume Parallel Distributed
Processing (PDP) di Dave Rumelhart e Jay McClelland (1986), è stata rivalutata la teoria del
Connessionismo, la quale capovolge completamente gli assunti precedenti.
Il Connessionismo rivaluta l’importanza della componente fisica della mente, il cervello,
costituita da un’ampia e complessa rete di neuroni, che rende possibile qualsiasi attività cognitiva e
permette all’uomo di attuare tutti i comportamenti che esso esplica nel mondo circostante.
Questi due approcci allo studio della mente (e del cervello) rientrano in un disegno più generale
e in un sogno che, a partire dagli anni ’50, ha accomunato gli studiosi di tutto il mondo: la
possibilità di trasferire l’intelligenza umana alle macchine, elaboratici di informazione, i computer,
che in quegli anni stavano nascendo.
3
Nella realizzazione di questo sogno gli studiosi si divisero in due gruppi, che la pensavano in
modo completamente diverso:
Il gruppo dell’Intelligenza Artificiale, di cui facevano parte coloro che volevano studiare la
mente senza tenere in considerazione il cervello, ma prendendo come modello del suo
funzionamento il computer, in particolare la macchina di Von Neumann1. Questo gruppo ha tentato
di trasferire le capacità cognitive umane alle macchine, senza tenere conto della reale struttura
biologica del cervello, ma tenendo conto di quella del calcolatore. L’Intelligenza Artificiale crede
che creando il modello di funzionamento si possa capire come funziona l’intelligenza.
Il gruppo dei connessionisti, di cui facavano parte coloro che sostenevano che il modello di
funzionamento della mente non è, né può essere il calcolatore, bensì è il cervello, con la sua
architettura2, quell’insieme di neuroni connessi tra loro che permettono all’uomo di pensare. Al
contrario il computer, modello per i cognitivisti, diventa mezzo per i connessionisti, mezzo per
verificare, attraverso le simulazioni3, il funzionamento corretto delle reti neurali artificiali, costruite
sulla base di quelle naturali e biologiche. I connessionisti dunque sono fermamente convinti che per
trasferire l’intelligenza alle macchine bisogna rispecchiare completamente la struttura cerebrale
umana e, quindi, bisogna capire prima come funziona l’intelligenza, solo dopo simularla al
computer. Un settore in cui vengono applicate le teorie connessioniste è quello della Vita
Artificiale, branca che cerca di studiare su calcolatore i fenomeni biologici e di trasferire a questi le
caratteristiche tipiche degli esseri biologici.
Questi due approcci partono da un concetto di intelligenza completamente diverso: i primi
ritengono che questa sia un sistema di manipolazione di simboli4, che sia cioè costituita da strutture
che si fanno una rappresentazione simbolica delle cose e da regole, che modificano queste
rappresentazioni (come nel computer ci sono i dati e le istruzioni, che costituiscono il programma,
che sono di natura simbolica e vengono interpretati dal calcolatore); i secondi, invece, ritengono che
l’intelligenza utilizzi i simboli, ma non si basi esclusivamente su questi, perché il modello della
mente, il cervello, non lavora con dati simbolici ma con impulsi fisici. Il modello connessionista,
basato su sistemi dinamici complessi5 fa emergere l’intelligenza come facoltà superire, derivante da
un livello inferiore, quello fisico della rete neurale, costituita da tante piccole unità la cui
connessione e il cui lavoro parallelo permettono questa emergenza.
Un’altra differenza riguarda il modo in cui trasferire l’intelligenza alle macchine: il cognitivismo
crea macchine che hanno un’intelligenza già tutta acquisita, infatti, il programmatore esterno deve
scrivere programmi che descrivono dettagliatamente ciò che una macchina deve compiere, in base
al quale essa riuscirà sicuramente a raggiungere lo scopo (questi sono gli algoritmi tradizionali); il
connessionismo, invece, crea macchine che, attraverso un processo di evoluzione nel tempo basato
su determinate regole, acquisiscono una capacità senza che questa sia completamente descritta nella
macchina. Le reti neurali inserite nei calcolatori, infatti, vengono addestrate e cambiano di volta in
volta i loro pesi, finchè raggiungono lo scopo richiesto.
Questa è una macchina che processa le informazioni in modo sequenziale e programmato. E’ costituita da strumenti di
input e di output, che permettono di ricevere e inviare dati, di una memoria contenente i dati e il programma,
opportunamente stilato dall’operatore esterno, che gli permette di funzionare e di esplicare la sua capacità di processare
simboli, in modo sequenziale, cioè uno dopo l’altro.
2
Un’architettura non è altro che il modo in cui gli elementi che costituiscono un oggetto, in questo caso il cervello, sono
strutturati e connessi tra loro per garantirne il funzionamento.
3
La simulazione è quel nuovo metodo scientifico reso possibile dai computer, che permette di riprodurre i fenomeni
naturali sulle macchine e di controllarne e cambiarne le diverse variabili, per osservare i loro effetti, anche a lungo
termine. Questo nuovo metodo adottato da molte Scienze permette di unificare due metodi tradizionali di indagine:
l’osservazione e la sperimentazione.
4
Un simbolo è un segno che rinvia a qualcosa di esterno a se stesso e può, addirittura, rinviare ad altri simboli.
5
Questi sistemi sono così chiamati perché si evolvono e grazie al processo di evoluzione diventano sempre più
complessi (da facoltà inferiori derivano man mano facoltà superiori, tra cui l’intelligenza).
1
4
Dalle teorie del connessionismo si è potuto dedurre che l’elemento fondamentale e la novità
assoluta di questa scienza è la creazione delle reti neurali, il cui sviluppo sta facendo passi da
gigante.
1. Le reti neurali.
1.1. Le reti neurali naturali.
Il Connessionismo nel costruire le reti neurali artificiali vi trasferisce le caratteristiche del
sistema nervoso biologico.
Il sistema nervoso è suddiviso in una serie di moduli, ognuno dei quali è costituito da una grande
quantità di neuroni connessi tra loro a formare una rete molto complessa. Ogni neurone è formato
da tre settori: il soma o corpo del neurone, l’assone, attraverso cui invia gli impulsi agli altri
neuroni, e i dendriti, una grande quantità di filamenti che lo connettono agli altri neuroni (che
solitamente si trovano ad una breve distanza) da cui riceve gli impulsi. Il punto di connessione tra
due neuroni è la sinapsi, che lega l’assone di un neurone (detto presinaptico) con il ramo dendritico
dell’altro (detto postsinaptico). Le sinapsi, quindi, permettono che l’informazione passi da un
neurone all’altro. Esse sono puntiformi, trasmettono l’informazione in un’unica direzione
(dall’assone ai dendriti), usano per fare ciò i neurotrasmettitori o gli ormoni e possono essere
eccitatorie (aumentano la scarica elettrica) o inibitorie (diminuiscono la scarica elettrica). Un
neurone si attiva, emette segnale elettrico, quando la differenza di carica elettrica tra l’interno della
sua membrana e la parte esterna raggiunge una determinata soglia, a questo punto esso perde la
condizione di equilibrio e si depolarizza (raggiunge valori positivi) causando la produzione del
segnale. Per quanto riguarda la trasmissione del segnale il dibattito è in corso: alcuni ritengono che
il neurone trasmetta informazione binaria (emissione di 0 se è inattivo e di 1 se è attivo), anche se
questa tesi è ormai superata; altri ritengono che il neurone produca una quantità maggiore di
informazione, che dipende dalla frequenza degli impulsi in un secondo, perché anche quando esso è
in una situazione d’equilibrio rimane attivo; infine, altri ancora ritengono che l’informazione
provenga non dall’attività di un singolo neurone, ma da quella di un insieme di neuroni che
lavorano insieme.
1.2. Le reti neurali e i neuroni artificiali.
5
Le reti neurali artificiali semplificano notevolmente la struttura delle reti biologiche, anche se ne
seguono le regole di funzionamento.
Le reti neurali artificiali sono costituite da neuroni artificiali che presentano tre caratteristiche
(fig. 1):
Un insieme di sinapsi che lo legano ai dendriti di altri neuroni, attraverso cui passano le
informazioni (pesi sinaptici) da un neurone all’altro.
Una soglia, oltre la quale si ha l’attivazione del neurone. Questo, infatti, riceve le cariche dagli
altri neuroni fino ad una determinata soglia, raggiunta la quale scarica gli impulsi sugli altri neuroni
e ritorna allo stato di riposo.
Una funzione di attivazione, che calcola l’attivazione del neurone: se la somma di tutti i pesi
sinaptici (W)che giungono al neurone è maggiore della soglia, allora il neurone si attiva, altrimenti
resta inattivo.
SE S1 * W (1,3) + S2 * W (2,3) > = Soglia
Allora
S3 = 1 (attivo)
Altrimenti
S3 = 0 (inattivo)
S1
W (1,3)
S2
W (2,3)
1. Struttura di un neurone artificiale
SFigura
3
L’architettura di una rete neurale si distingue in base agli strati di neuroni che la costituiscono e
dalla differenza tra neuroni di input e neuroni di output.
Tra le architetture più utilizzate vi è certamente quella etero-associativa, in cui i neuroni di input,
che ricevono le informazioni dall’ambiente, sono distinti da quelli di output, che danno le risposte
della rete. I neuroni che costituiscono questo tipo di rete sono in grado di associare pattern di input e
pattern di output che possono anche non avere lo stesso numero di valori. Queste reti si distinguono
a loro volta in due tipologie:
 Reti neurali con due strati di neuroni (detti percettroni)(fig. 2).
 Reti neurali con tre strati di neuroni (fig.3), detti anche multistrato o percettroni multistrato,
che oltre allo strato di input e a quello di output presentano anche uno strato interno di
neuroni nascosti (detti hidden).
Output
Ouput
6
Hidden
Input
Figura 2. Rete a due strati.
Input
Figura 3. Rete a tre strati.
Il numero di strati di una rete è una variabile importante che permette di migliorare
l’apprendimento da parte della stessa.
La codifica dell’input per una rete neurale può essere di due tipi:
Codifica locale, si attribuisce ogni input ad un neurone diverso, per cui il numero di neuroni deve
essere uguale al numero degli input. Questo metodo non è molto sicuro perché in caso di rottura di
un elemento si perderebbe completamente un valore di input.
Codifica distribuita, ad ogni neurone viene attribuita una particolare caratteristica dell’oggetto di
input (es. forma, altezza, peso, ecc…) per cui ogni oggetto di input attiva più di un neurone e se uno
di questi dovesse danneggiarsi l’oggetto non si perderebbe, ma potrebbe essere identificato dalle
caratteristiche (neuroni) restanti.
1.3. L’apprendimento di una rete neurale.
Le reti neurali artificiali, come quelle biologiche, apprendono attraverso l’esperienza, infatti,
modificano i loro pesi sinaptici in seguito alla presentazione di una serie di esempi (pattern), che
viene ripetuta durante il tempo (epoche). Man mano che i pattern vengono presentati alla rete,
questa riduce l’errore della sua risposta, sulla base di una particolare regola, fino ad arrivare ad un
completo apprendimento.
Nel 1949 lo psicologo canadese Donald Hebb elaborò una regola che è alla base di tutti gli
algoritmi di apprendimento, la regola di Hebb, la quale dice che se due neuroni connessi tra loro
sono contemporaneamente attivi la sinapsi tra questi si rinforza. Secondo questa regola, quindi,
l’incremento dei pesi sinaptici è dato da
w =  S1 S2
dove
 è il tasso di apprendimento della rete, inserito dall’operatore;
S1 e S2 rappresentano i pesi dei neuroni.
7
Se si vuole conoscere il valore del peso sinaptico W in un tempo successivo basta applicare la
seguente formula:
W(t1) = W(t o) + w
La regola “classica” di Hebb presenta, però, un problema di interferenza. Poiché essa, infatti,
prevede solo un incremento dei pesi sinaptici e mai un loro decremento, la rete non riesce a
distinguere pattern simili che richiedono risposte diverse, perché sia che tutti i neuroni di input
siano attivi, sia che lo siano solo alcuni, i pesi crescono sempre allo stesso modo e i neuroni di
output si attivano lo stesso. Per questo la rete tende a dare risposte miste.
Hebb, allora, ha cercato di risolvere il problema con l’introduzione di tre varianti alla regola
classica:
Regola postsinaptica: i pesi si incrementano se entrambi i neuroni, quello presinaptico e quello
postsinaptico, sono attivi; se il primo è inattivo e il secondo è attivo i pesi si decrementano:
w = (S1 S2 + (S1 – 1) S2)
Regola presinaptica: i pesi si incrementano se entrambi i neuroni sono attivi; se quello
presinaptico è attivo e quello postsinaptico è inattivo i pesi si decrementano:
w = (S1 S2 + (S2 – 1) S1)
Regola della covarianza: i pesi si incrementano quando i neuroni sono nello stesso stato (attivi
o inattivi), si decrementano quando sono in stati diversi.
L’apprendimento delle reti neurali può essere di tre tipi:
a) Apprendimento supervisionato. Si addestra la rete presentando sia pattern di input sia
pattern di output, cioè le risposte esatte che si desidera ricevere. Questo tipo di apprendimento è
stato proposto da Rosenblatt, che lo ha utilizzato con i suoi percettroni (reti a due strati di sinapsi
che grazie a strutture chiamate feature detector, collegate ai neuroni di output riescono a
riconoscere particolari figure proiettate su una retina artificiale). In questo tipo di apprendimento i
pesi sinaptici vengono modificati in base all’errore generato dalla rete nel confronto tra output
ottenuto ed output desiderato, secondo la regola seguente, definita regola delta.
wij =  (dj – oj) ii
La modifica dei pesi avviene tra le feature detector e i neuroni di output, mentre la connessione
sinaptica tra retina e feature è fissa. I percettroni, che sono strutture molto simili al cervello umano
(anche in questo ci sono delle feature detector), sono in grado di generalizzare e sono molto robusti
al rumore (graceful degradation), però hanno un limite molto importante: non sono in grado di
risolvere problemi “linearmente non separabili”, problema che ha determinato il lungo silenzio
degli scienziati nel campo delle reti neurali, durato dal 1969 al 1989. Un problema linearmente non
separabile (come XOR) è così definito perché il piano cartesiano non può essere suddiviso da una
retta che separi le due diverse risposte della rete, cosa possibile nei problemi opposti. Per risolvere
8
questo inconveniente l’unico modo è quello di utilizzare reti non a due strati come il percettrone,
ma a tre strati di neuroni (Percettrone multistrato).
Fino agli anni ’80, però, non esisteva nessun algoritmo in grado di far apprendere una rete del
genere, solo nel 1986 gli psicologi Dave Rumelhart e Jay McClelland proposero l’algoritmo di
Error Back-propagation nel loro volume PDP (1986).
Questo algoritmo, simile alla regola delta dei percettroni è anch’esso un metodo di
apprendimento supervisionato, perché vengono forniti alla rete sia i pattern di input sia quelli di
output e l’errore viene calcolato sulla base del confronto tra output desiderato ed output fornito
dalla rete. La differenza consiste nel modo in cui l’errore viene calcolato; come dice il nome stesso
si attua una retropropagazione dell’errore attraverso i seguenti passaggi:
- Si calcola l’errore sull’output, con il confronto tra i due output, e si modificano i pesi
sinaptici tra neuroni d’uscita ed hidden;
- Si retropropaga l’errore e lo si calcola sulle hidden e si modificano i pesi tra queste e
neuroni d’ingresso, che permetteranno alla rete di migliorare la sua prestazione nel
riconoscimento successivo.
Nell’algoritmo di Back-propagation è importante la funzione di attivazione del neurone, diversa
da quella delle reti a due strati che era una funzione a soglia; la funzione delle reti a tre stati è
definita funzione logistica, la quale non dà mai come risultato 1 (attivo) o 0 (inattivo), ma un
numero compreso tra 0.1 e 0.9, che si approssima a 0 o 1 secondo un indice di precisione.
Le reti neurali a tre strati però, non sono perfette ma presentano un problema, quello dei “minimi
locali”. Mentre nelle reti neurali a due strati l’errore riesce ad arrivare a zero in un punto (minimo
assoluto), e la procedura si ferma perché la rete ha appreso, in quelle a tre strati oltre al minimo
assoluto c’è anche un minimo locale, dopo il quale l’errore tende a salire e non riesce a d arrivare a
zero. La procedura si ferma ma la rete non ha appreso, perché l’errore non ha raggiunto il minimo
più basso, che è quello assoluto, bensì si è fermato a quello relativo. Quando si verifica questo
inconveniente è necessario ripetere la simulazione modificando alcuni parametri della rete (pesi
iniziali) o dell’algoritmo (momento).
b) Apprendimento per auto-organizzazione. Si addestra la rete presentando solo pattern di
input ed una serie di regole che le permettono di auto-organizzare il proprio apprendimento. Con
questo metodo non è necessario che l’operatore conosca la risposta al problema perché questa viene
generata autonomamente dalla rete, per cui non c’è alcun confronto tra risposta data dalla rete e
risposta esatta.
c) Apprendimento tramite algoritmi genetici. Si addestra la rete presentando solo pattern di
input, infatti, non è necessario conoscere la risposta esatta che questa dovrà associare all’input. Gli
algoritmi genetici, elaborati da Holland, sono basati sul concetto di riproduzione selettiva,
sviluppato da Charles Darwin in merito alla teoria dell’evoluzionismo. Essi, utilizzati soprattutto nel
campo della Vita Artificiale per riprodurre su macchine alcuni fenomeni biologici e nel settore della
Robotica Evolutiva, aiutano a simulare l’evoluzione di intere popolazioni, non l’apprendimento di
un singolo individuo come fa l’algoritmo di Back-propagation. Si genera una popolazione di
individui al computer, ognuno dei quali è dotato di una rete neurale con pesi sinaptici casuali; questi
individui vengono inseriti in un ambiente, dove devono svolgere un dato compito. Dopo ripetute
interazioni individuo-ambiente si misura la competenza raggiunta dai vari individui nello
svolgimento del loro compito (test di fitness o valore di adattamento) e si selezionano i migliori,
cioè quelli con una fitness maggiore, che sopravvivono e possono riprodursi6, mentre i peggiori si
estinguono. Alla fine della simulazione con gli algoritmi genetici si ottiene un adattamento degli
6
La riproduzione può essere di due tipi: asessuata, con cui vengono inserite delle mutazioni casuali nel
genotipo,modificando casualmente alcuni pesi sinaptici della rete; sessuata, con cui due individui si scambiano pezzi di
genoma e generano un figlio che eredita il nuovo materiale genetico.
9
organismi all’ambiente circostante, che ripropone quello naturale degli organismi biologici, che dà
loro la possibilità di evolversi.
2. Simulazione: apprendimento di una rete neurale.
Quella che segue nelle prossime pagine è una simulazione realizzata al computer con il software
NetTools che ha come scopo quello di far apprendere una rete neurale artificiale.
2.1. Creazione della rete.
Per lo svolgimento della simulazione ho costruito, attraverso il software NetManager una rete
neurale che ha le seguenti caratteristiche (fig. 4):
Numero di strati: 2
Numero di neuroni: 5 di input e 1 di output.
10
Figura 4. Grafico della rete.
Questa rete neurale ha il seguente compito:
Dati dei pattern di input deve discriminare i metalli dai non metalli.
Le domande a cui corrispondono i valori di input sono cinque:
 E’ conduttore di elettricità?
 E’ solido?
 E’ duttile?
 E’ lucente?
 E’ inossidabile?
2.2. Creazione del Training Set.
Definite le domande ho creato il Training Set (fig. 5), una serie di esempi (pattern), correlati di
dati di input (che rispondono alle domande precedenti) e di dati di output (le soluzioni), attraverso il
software TrsEditor :
Pattern
Ferro
Oro
Carbonio
Zinco
Input
11110
11111
01000
11101
Output
1
1
0
1
Figura 5. Training Set sottoposto alla rete.
2.3. La simulazione.
Dopo la creazione della rete priva di pesi e del training set, ho dato il via alla simulazione,
attraverso il software NetTrainer. Ho lasciato invariati i vari parametri ed ho controllato il grafico
dell’errore (fig. 6), che ha prodotto i seguenti risultati:
11
Figura 6. Grafico dell’errore.
Si può notare come l’errore della rete sia calato immediatamente, dopo solo poche epoche
rispetto alle 1.000 a disposizione; e, infatti, il tempo che la rete ha impiegato per apprendere è stato
di 5,509 secondi.
2.4. Verifica dell’apprendimento.
Dopo la fase della simulazione, quindi dell’addestramento della rete, ho verificato che questa
abbia effettivamente appreso, attraverso il software NetManager; per fare ciò ho fornito alla rete
alcuni input de essa conosciuti, perché presenti già nel Training Set (in particolare: ferro 1 1 1 1 0;
carbonio 0 1 0 0 0) ed altri input mai visti prima (fig. 7) :
Pattern
Elio
Legno
Tungsteno
Input
00000
01010
11100
Output
0
0
1
Figura 7. Pattern mai visti dalla rete, utilizzati per la verifica dell’apprendimento.
I risultati ottenuti sono stati abbastanza buoni, ciò vuol dire che la rete è riuscita a generalizzare,
cioè partendo da elementi noti è riuscita ad astrarre determinate caratteristiche dei metalli e ad
12
applicarle ad altri elementi mai visti prima, riuscendo, così, a discriminare tra metalli e non metalli
(approssimando i valori a 0 per i non metalli e ad 1 per i metalli (fig. 8)):
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,2322
0,2469
0,7531
Figura 8. Input forniti alla rete per verificarne l’apprendimento.
2.5. Variazione di alcuni parametri.
Dopo la prima simulazione ho deciso di osservare il comportamento della rete con il variare di
alcuni parametri.
2.5.1. Aggiunta di uno strato di hidden.
Ho costruito una rete, non a due strati come quella precedente, ma a tre strati (fig. 9) , per
verificare se ci siano delle variazioni nell’apprendimento:
Numero di strati: 3
Numero di neuroni: 5 di input, 2 hidden e 1 di output.
Figura 9. Grafico della rete.
Dopo l’applicazione del Training Set ho effettuato l’addestramento della rete ed ho controllato il
grafico dell’errore (fig. 10):
13
Figura 10. Grafico dell’errore.
Dal grafico emerge che questa rete ha impiegato per apprendere un tempo maggiore rispetto alla
prima, cioè 6,098 secondi ma, verificando l’apprendimento ho constatato che le risposte della rete
agli input mai visti sono più precise (fig. 11). Questa rete a tre strati, quindi, riesce a generalizzare
con più precisione rispetto alla prima a due strati:
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,1689
0,1855
0,8351
Figura 11. Input forniti alla rete per verificarne l’apprendimento.
2.5.2. Variazione del parametro presentazione del Training Set.
In questa terza simulazione ho utilizzato la reta a tre strati, variando semplicemente un
parametro, quello della presentazione del Training Set alla rete da Sequenziale a Random Totale.
Ho effettuato l’addestramento della rete ed ho controllato il grafico dell’errore (fig. 12).
14
Figura 12. Grafico dell’errore.
Dal grafico emerge che il tempo impiegato dalla rete per apprendere è simile a quello della
simulazione precedente, cioè 6,079 secondi. Per ciò che riguarda, invece, le risposte della rete,
quindi l’apprendimento, ho notato un ulteriore miglioramento rispetto alla simulazione precedente
(fig. 13).
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,1563
0,1709
0,8421
Figura 13. Input forniti alla rete per verificarne l’apprendimento.
2.5.3. Conclusioni.
Mettendo a confronto i risultati delle tre simulazioni (fig.14-15-16) ho notato che i dati pur
essendo comunque, sempre, abbastanza precisi tendono a migliorare sensibilmente da una
simulazione all’altra; in particolare l’aggiunta di uno strato di hidden rende più precisa la capacità
di generalizzare della rete e, ancora, la variazione di come il Training Set viene presentato alla rete
15
nelle varie epoche, da Sequenziale a Random Totale, determina un ulteriore miglioramento dei
risultati ottenuti (forse perché la rete si abitua più facilmente alle variazioni degli input).
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,2322
0,2469
0,7531
Figura 14. Simulazione con la rete a due strati.
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,1689
0,1855
0,8351
Figura 15. Simulazione con la rete a tre strati.
Pattern
Input
Carbonio
Ferro
Elio
Legno
Tungsteno
01000
11110
00000
01010
11100
Output dato
dalla rete
0,1000
0,9000
0,1563
0,1709
0,8421
Figura 16. Simulazione con la rete atre strati variando la presentazione del Training Set
16
17