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