Università degli studi della Calabria Facoltà di lettere e filosofia Corso di Psicologia Generale II “Reti Neurali” “I Rettili” Stella Simona Matr. 54478 “Reti neurali” I computer moderni sono sempre più veloci e potenti, ma non sono ancora in grado di risolvere alcuni problemi che per gli umani sono banali. Non esistono programmi per computer che realizzano questi tipi di compiti. Questo, forse, perché il modo in cui i programmi tradizionali elaborano l’informazione è molto diverso dal modo in cui funzionano i sistemi nervosi biologici. L’architettura e i principi di funzionamento del computer vengono utilizzati dal Cognitivismo come “metafora della mente”: la mente è un elaboratore di informazioni rappresentate per mezzo di simboli. In quel periodo, si cercava di capire la mente attraverso i computer, e i modi per farlo erano due: Intelligenza artificiale: l’idea che si potesse meccanizzare la mente ignorando il cervello e che il calcolatore programmabile e sequenziale dovesse costituire un modello per la mente (cognitivismo); Connessionismo: il modello della mente non è il calcolatore ma il cervello. Per circa 20 anni, l’intelligenza artificiale dominò nella ricerca sulla mente. Verso la metà degli anni ’80, il connessionismo cominciò a farsi strada. Vediamo le principali differenze tra cognitivismo e connessionismo: Come ho detto prima, per il cognitivismo l’architettura e il modo di funzionare dei calcolatori sono modelli di com’è fatta e di come funziona la mente; per il connessionismo, invece, il calcolatore è solo uno strumento di ricerca, che rende possibile la riproduzione artificiale (simulazione) di fenomeni che si vogliono conoscere. Con la simulazione è possibile costruire modelli dettagliati di fenomeni complicati; Per il cognitivismo, il cervello va ignorato e i sistemi artificiali intelligenti vanno disegnati basandosi su una ricostruzione logicorazionale; i connessionisti, invece, ritengono che non si possa studiare la mente e l’intelligenza ignorando il funzionamento del sistema nervoso. Il connessionismo utilizza le reti neurali, che sono state introdotte nel 1943. Le reti neurali artificiali sono dei sistemi d’elaborazione dell’informazione il cui funzionamento trae ispirazione dai sistemi nervosi biologici. Per analizzare le reti neurali artificiali bisogna, quindi, considerare per prima cosa le reti neurali naturali: tutti i sistemi nervosi animali sono 2 costituiti da neuroni, che rappresentano le unità strutturali e funzionali del sistema nervoso. I neuroni hanno una forma molto variabile e spesso complessa, ma risultano sempre costituiti da un nucleo, dal soma e da due tipi di prolungamenti, a volte molto lunghi, i dendriti, che trasformano in impulsi nervosi gli stimoli provenienti dall’esterno o da altri neuroni, e l’assone che conduce gli impulsi distalmente rispetto al corpo cellulare. Attraverso questi prolungamenti ogni neurone e collegato con altri neuroni. Quindi, il neurone riceve input da altri neuroni attraverso i dendriti e genera impulsi che sono trasmessi lungo l’assone. Lo spazio che esiste tra la terminazione di un assone e i dendriti di un altro neurone costituisce la sinapsi, cioè il punto di contatto tra il terminale assonico di un neurone (detto neurone presinaptico)e il ramo dendritico di un altro neurone (neurone postsinaptico). Grazie alla sinapsi ogni neurone è in contatto con gli altri neuroni. La differenza tra un calcolatore e la mente umana sta nel fatto che mentre un calcolatore elabora in modo sequenziale un dato per volta, la mente umana elabora e valuta una gran quantità di informazioni contemporaneamente, quindi l’elaborazione dell’informazione avviene in parallelo. Le reti neurali artificiali sono pensate e costruite secondo questo modello di elaborazione di dati. Una rete neurale è costituita da una serie d’unità elementari (neuroni), connesse tra loro in modo da poter scambiare dei dati. Gli elementi della rete (neuroni) sono generalmente disposti in strati. Ad ogni connessione della rete è associato un peso che rappresenta una sorta di conoscenza interna. Tipicamente sono presenti un certo numero di unità di input, in cui vengono inseriti i dati riguardanti l’evento da elaborare, un certo numero di unità nascoste, hidden, ed un certo numero di unità di output. Le sinapsi hanno in questo caso il compito di “pesare” l’informazione proveniente dal neurone precedente. L’apprendimento della rete avviene secondo precisi algoritmi che esprimono le modifiche da apportare ai pesi sinaptici in funzione della differenza tra la risposta fornita dalla rete e la risposta attesa per determinati pattern di input. In fase di allenamento vengono presentati alla rete pattern con risposta nota. In base alla risposta si modificano i pesi sinaptici. La regola di modifica sinaptica di Donald Hebb (psicologo canadese) del 1949, costituisce la base da cui derivano quasi tutti gli algoritmi d’apprendimento. La Regola di Hebb dice che “la stimolazione simultanea di due neuroni collegati tra loro provoca un rafforzamento della sinapsi”. 3 Così, se S1 e S2 sono rispettivamente un pattern d’ingresso e uno d’uscita, la modifica dei pesi sinaptici è data da: ΔW= η*S1*S2 dove η è il tasso di apprendimento. Negli anni la regola di Hebb è stata più volte ritoccata. Nella regola di Hebb classica i pesi sinaptici possono essere solo aumentati; si crea un problema di interferenza quando pattern di input hanno elementi in comune; se applichiamo la regola di Hebb su tutti i pesi, allora questi aumenteranno tutti allo stesso modo, ma noi dovremmo invece aumentare o diminuire i pesi in base a delle regole. Per evitare questo problema sono state introdotte altre tre regole che permettono di aumentare e diminuire il peso sinaptico: Regola Postsinaptica: l’incremento è modulato dal neurone postsinaptico; la regola prevede che il valore della connessione sinaptica viene aumentato quando sia l’unità presinaptica che quella postsinaptica sono attive, ma viene diminuito quando l’unità presinaptica è attiva e quella postsinaptica è inattiva, come segue: ΔW(1,2)= η(S1*S2+(S1-1)S2) Regola Presinaptica: l’incremento è modulato dal neurone presinaptico; la regola prevede che il valore della connessione sinaptica viene aumentato quando sia l’unità presinaptica che quella postsinaptica sono attive, ma viene diminuito quando l’unità postsinaptica è attiva e quella presinaptica è inattiva, come segue: ΔW(1,2)= η(S1*S2+(S2-1)S1) Regola della covarianza: dipende dallo stato di entrambi i neuroni; quando l’unità presinaptica e quella postsinaptica sono nello stesso stato (entrambe attive o entrambe inattive) la connessione viene rinforzata; quando le due unità sono in stati diversi, la connessione viene indebolita. Nel 1962 Rosenblatt propose l’idea di modificare i pesi sinaptici di una rete neurale artificiale in base all’errore generato dal confronto tra la risposta della rete e la risposta desiderata. Egli da vita ai percettroni, che sono 4 delle reti neurali ispirate dagli studi sul sistema di visione del cervello. Essi hanno una struttura del tipo: Neurone di output Feature detectors Retina artificiale Ogni Feature detectors vede solo una parte della retina; nel primo strato le sinapsi non possono essere modificate; nel secondo strato le connessioni sono variabili. Quindi le connessioni dagli input ai Feature detectors non possono imparare, mentre quelle dai feature detectors al neurone d’output possono imparare. Un algoritmo d’apprendimento molto importante è quello di Backpropagation apparso intorno al 1969, ma modificato molte volte. La sua importanza sta nel metodo con cui la rete reagisce ogni volta che effettua un errore: questi errori, infatti, vengono propagati da ogni strato attraverso le connessioni sinaptiche e sommati per ciascuna unità da cui ricevono segnale; l’errore cioè è propagato all’indietro da uno strato a quello precedente. Quindi: viene calcolato l’errore sull’output e vengono aggiornati i pesi tra output e hidden,; viene calcolato l’errore sulle hidden e aggiornati i pesi tra hidden e input. 5 “I Rettili” Lo scopo della rete neurale che ho creato è di individuare la classe di appartenenza dell’animale preso in esame: rettile o anfibio. Ho posto allora tre domande: Depone le uova sulla terraferma? Vive nell’acqua? È ricoperto di squame? Determiniamo gli esempi con le risposte corrette: INPUT Rana Biscia d’acqua Coccodrillo Salamandra 0 0 1 0 1 1 1 0 0 1 1 0 OUTPUT 0 1 1 0 Apriamo NetManager: File Nuova Rete FFW Classic Numero di Strati=2; Strato 1=3 (input); Strato 2=1 (output); Salva come modello: “rettili.str”. 6 Apriamo TrsEditor: File Nuovo; Numero di pattern 4 (esempi); Numero di input 3; Numero di output 1; Poi ho inserito i valori di esempio; Training set Crea; Salva con nome:”rettili.trs”. Il risultato finale è mostrato nell’immagine: 7 Apriamo NetTrainer: File Nuovo; Rete: rettili.str; Training Set: rettili.trs; Visualizza grafico dell’errore: Salva rete: “rettili.rna”. Riapriamo NetManager: File Apri: rettili.rna; verificando i vari casi, vediamo che la rete ha appreso. Se inseriamo due valori a caso, non compresi tra gli esempi dati alla rete avremo: INPUT Lucertola Proteo 1 1 0 1 1 0 OUTPUT 1 0 Abbiamo così creato una rete neurale artificiale. 8