Centro di Scienza Cognitiva 

Università degli Studi e Politecnico di Torino

INTRODUZIONE ALLE RETI NEURALI

A cura di Gianluca Smeraldi

______________

Technical Report 96-01

 

1. INTRODUZIONE

La computazione neurale si ispira ai sistemi neurali biologici, dei quali cerca di modellarne la struttura e di simularne le funzioni di base. Di solito i sistemi basati su reti neurali sono analizzati in contrapposizione ai computer digitali standard di tipo Von Neumann ed il motivo sembra essere il fatto che la rete neurale da un lato e il computer seriale dall’altro, sono i rappresentanti di due filosofie distinte. I calcolatori digitali di tipo Von Neumann, infatti, sono caratterizzati da un processore (CPU) che accentra tutta la capacità computazionale del sistema ed esegue le operazioni in una sequenza programmata. Il concetto di algoritmo come insieme di operazioni organizzate in una sequenza opportuna (o diagramma di flusso) sta alla base di questo approccio.

            La filosofia delle reti neurali dall’altra parte, ispirandosi ai sistemi biologici, considera un numero elevato di processori che hanno una capacità computazionale elementare, i neuroni artificiali o nodi, connessi ad altre unità dello stesso tipo (di qui il termine connessionismo che designa questo approccio). Ad ogni connessione è assegnato un peso, cioè può essere più o meno debole in modo tale che un neurone possa influenzarne un altro in funzione della “forza” della connessione fra i due, proprio come nei sistemi neurali biologici in cui un neurone (pre-sinaptico) influenza un altro neurone (post-sinaptico) in funzione del potenziale post-sinaptico della sinapsi fra l’assone del neurone pre-sinaptico e il dendrite del neurone post-sinaptico. Ma più che sulla contrapposizione fra computer seriale e connessionismo è bene soffermarsi sulla contrapposizione fra intelligenza artificiale (IA) classica, legata storicamente alla logica dei calcolatori seriali e alla matematica computazionale (si veda per es. Clark e Cowell, 1976) e l’IA subsimbolica legata all’approccio connessionista ed alla computazione neurale.

            L'IA classica si occupa della simulazione dei processi cognitivi superiori adottando un approccio di elaborazione simbolica. In base alla famosa ipotesi del sistema simbolico fisico di Newell e Simon (1976), infatti, un sistema di occorrenze di simboli collegate in modo fisico e processi che operano su tale struttura simbolica è necessario e sufficiente per il comportamento intelligente; necessario perché un sistema che esibisce intelligenza generale mostrerà ad una successiva analisi di essere un sistema simbolico fisico; sufficiente perché ogni sistema simbolico fisico può essere organizzato per produrre intelligenza. Lo sviluppo dei sistemi intelligenti, di conseguenza, segue la filosofia computazionale tipica dei calcolatori digitali. Anche il calcolatore, infatti, è fatto di dati e di istruzioni per manipolare dati, dove sia i dati che le istruzioni sono simboli. Il comportamento intelligente può essere tradotto in un algoritmo opportuno e riprodotto attraverso il computer. Tale approccio metodologico ha portato allo sviluppo di sistemi in grado di giocare a scacchi e risolvere teoremi in quanto si pensava che questa fosse l’essenza del comportamento intelligente, mentre si ritenevano meno degni di attenzione processi quali per esempio il processamento di immagini visive.

            In realtà un bambino di un anno riconosce oggetti o facce in modo più veloce ed accurato del più evoluto programma di IA implementato nel più veloce supercomputer. Questa evidenza sottolinea da una parte che i compiti di processamento delle immagini visive non sono banali, dall’altra rinforza la convinzione che il cervello umano sia di gran lunga superiore ai sistemi intelligenti artificiali e che debba tale superiorità alle caratteristiche della sua struttura interna. Tale struttura, permette al sistema biologico di avere diverse proprietà significativamente diverse da quelle dei sistemi artificiali (Hertz, Krough e Palmer, 1991):

 

·      robustezza e tolleranza agli errori. Le cellule nervose nel cervello muoiono ogni giorno senza avere effetti significativi sulla performance totale del sistema;

·      flessibilità. La struttura si può facilmente adeguare a un nuovo ambiente attraverso l’apprendimento (non deve essere programmata in Pascal, Fortran o C);

·      Ha a che fare con informazioni confuse, probabilistiche, indefinite o inconsistenti;

·      parallelismo;

·      struttura piccola, compatta e che dissipa veramente poca energia.

 

            La simulazione della struttura dei sistemi neurali biologici potrebbe portare allo uno sviluppo di sistemi artificiali che conservino le caratteristiche del comportamento intelligente dei sistemi biologici. Ciò rappresenta un cambiamento di prospettiva piuttosto radicale rispetto alla computazione convenzionale. Il processo di calcolo nella computazione neurale è inteso come “metafora del cervello” in quanto tenta di modellarne la struttura, non più come “metafora del computer” dei sistemi artificiali classici (McCord Nelson e Illingworth, 1991), che focalizzavano l’attenzione sul processo, gioco degli scacchi o dimostrazione di teoremi, tradotto in un algoritmo opportuno e realizzato secondo la logica dei computer digitali. In altre parole il connessionismo utilizza il computer come strumento che consente di simulare i fenomeni tipici dei sistemi neurali biologici, invece per l’IA classica e per il cognitivismo in generale, il calcolatore è anche uno strumento di ricerca ma soprattutto è una fonte di ispirazione per sviluppare teorie e modelli della mente (Parisi, 1986[1]).

            Si è più volte ripetuto che le reti neurali si ispirano ai sistemi neurali biologici. Questo però non significa certamente avere la presunzione di costruire il cervello artificiale. Tanto più che le caratteristiche delle reti neurali biologiche riprese dalla computazione neurale artificiale sono un’esigua minoranza. Tom Swartz (1989)[2], a questo proposito, nota che i neuroni artificiali sono solo un’approssimazione dei neuroni biologici in quanto riproducono solo tre dei circa 150 processi che sono tipici dei neuroni del cervello umano. Pertanto è bene sottolineare che la computazione neurale ha a che fare con le macchine, non con il cervello. In altre parole l’obiettivo è quello di costruire macchine ispirate a sistemi biologici che riproducano comportamenti intelligenti non quello, come si è detto, di ricostruire  il cervello. L’obiettivo di costruire tali macchine, d’altra parte, può essere guidato da diversi scopi: un approccio, che si potrebbe definire ingegneristico, è interessato alla macchina in sé in funzione delle applicazioni potenzialmente utili a scopo applicativo; un secondo approccio, che si potrebbe definire scientifico, è interessato alle macchine per le informazioni che possono trarne allo scopo di saperne di più riguardo ai sistemi intelligenti in generale e quindi anche riguardo ai sistemi biologici.

            La computazione neurale è detta anche subsimbolica: ciò vuol dire che il simbolo non è presente in modo esplicito in tali sistemi. Non esiste un algoritmo che traduca la realtà percepita, per esempio attraverso una telecamera, in un insieme di simboli che denotino gli oggetti del percetto e nemmeno un insieme di manipolazioni possibili di tali simboli, come per esempio una serie di regole di produzione. La conoscenza nei sistemi neurali è distribuita: non è presente da qualche parte in modo esplicito come simbolo o insieme di simboli, ma il risultato dell’interazione di un numero elevato di neuroni attraverso le connessioni fra essi.

            Tali concetti verranno ripresi più avanti e risulteranno più chiari allorché si introdurrà la struttura di una rete neurale. Per ora basti ricordare due aspetti della computazione neurale:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 1. Neurone bipolare presente nella retina. I dendriti ricevono  il potenziale elettrico proveniente dall’assone di altri neuroni attraverso le sinapsi. Il potenziale post-sinaptico si somma sul corpo del neurone. Qualora tale potenziale superi un determinato valore di soglia il neurone innesca un potenziale elettrico che si propaga lungo il suo assone.


1.   si contrappone alla computazione digitale classica dei calcolatori di tipo Von Neumann dal punto di vista strutturale. I sistemi neurali sono caratterizzati da un parallelismo massiccio e la conoscenza è distribuita all’interno di tali sistemi. I computer digitali, invece, centralizzano le risorse computazionali deputandole ad un singolo processore (CPU) e le operazioni devono essere eseguite in modo seriale;

2.   all’interno dell’IA si situano in una dimensione parallela a quella della progettazione di sistemi simbolici. Non è necessariamente una posizione alternativa, ma un modo diverso di affrontare il problema della costruzione di sistemi intelligenti: simulare la struttura (il cervello) diviene funzionale alla produzione di macchine intelligenti, la dove l’IA simbolica focalizzava l’attenzione più sulla simulazione del processo.

 

            Infine è opportuno ricordare che la computazione neurale si serve, per la costruzione di modelli dei processi di percezione, memorizzazione e apprendimento, di un nuovo paradigma - il paradigma connessionista - che presuppone l’equivalenza fra il comportamento dinamico di un qualunque sistema a quello di una rete di unità interconnesse, in grado di attivarsi in presenza di segnali d’ingresso. Queste reti, come già detto, sono ispirate ai sistemi neurali biologici. Pertanto è opportuno partire da una descrizione delle proprietà delle reti neurali biologiche e, soprattutto, dei loro componenti elementari: i neuroni.

 

 1.1. I Sistemi Neurali Biologici

La computazione neurale, come si è detto più volte, si ispira alle reti neurali biologiche. Una panoramica sulle principali caratteristiche dei sistemi neurali biologici, pertanto, può certo aiutare a comprendere meglio i principi di base delle reti neurali artificiali.

 

Figura 2. Un singolo PE (Processing Element, nodo o neurone artificiale. Si osservi che a diversi ingressi (i1, i2, ..., in) corrisponde un’unica uscita.


            Sebbene la conoscenza del cervello sia ancora limitata sotto molti punti di vista, si conoscono molte informazioni circa l’anatomia e la fisiologia delle reti neurali biologiche. L’anatomia di base di una singola cellula nervosa - il neurone - è conosciuta e sono state identificate le principali reazioni biochimiche che governano la sua attività. Un neurone può essere considerata l’unità computazionale elementare del cervello. Nel cervello umano ne sono state identificate circa 100 classi diverse. Per analizzarne le caratteristiche anatomiche e funzionali si sceglierà come esempio un neurone bipolare della retina (figura 1).  La caratteristica principale del neurone è quella di generare un potenziale elettrico che si propaga lungo l’assone (l’output del neurone), allorché l’attività elettrica al livello del corpo del neurone supera una determinata soglia. L’input al neurone è un insieme di fibre chiamate dendriti: esse sono in contatto con gli assoni di altri neuroni dai quali ricevono i potenziali elettrici. Il punto di connessione fra un assone di un neurone e il dendrite di un altro neurone è chiamato sinapsi.

            La sinapsi, fra le tante, ha anche la proprietà di modulare l’impulso elettrico proveniente dall’assone. Il potenziale elettrico generato da un neurone infatti è di tipo tutto-o-nulla: se l’attività elettrica del neurone supera una certa soglia si innesca l’impulso, altrimenti no; e la scarica non differisce per intensità da un neurone all’altro. Il potenziale si propaga lungo l’assone e giunge alla sinapsi con il dendrite di un altro neurone. Il potenziale post-sinaptico sul dendrite dipende dalle caratteristiche biochimiche della sinapsi. In presenza dello stesso potenziale pre-sinaptico, due sinapsi diverse generano potenziali post-sinaptici differenti. In altre parole la sinapsi pesa il potenziale in ingresso modulandolo. I potenziali post-sinaptici si propagano attraverso i dendriti del neurone; a livello del soma si sommano: solo se il risultato di tale somma è superiore ad una certa soglia il neurone innesca il potenziale che si propagherà attraverso il suo assone.

 

Figura 3. Un PE con la soglia. L’uscita viene comparata con la soglia q per produrre il Potenziale P.


 

2. LE COMPONENTI DI BASE DI UNA RETE NEURALE

Questa sezione ha come obiettivo quello di introdurre all’architettura delle reti neurali. Fino ad ora, infatti, si è parlato di reti neurali in termini di generici sistemi computazionali ispirati a sistemi neurali biologici. Si incomincerà ora a descrivere che cos’è una rete neurale partendo dai suoi elementi costitutivi elementari.

 

2.1. I neuroni artificiali

Un neurone artificiale, che all’interno del connessionismo prende il nome di processing element (PE), è l’unità computazionale atomica di una rete neurale. Esso simula diverse funzioni di base del neurone biologico: valuta l’intensità di ogni input, somma i diversi input e confronta il risultato con una soglia opportuna. Infine determina quale sia il valore dell’output. diversi stadi del processo verranno di seguito discussi uno ad uno.

 

2.1.1. Ingressi e uscita

La raffigurazione schematica di un PE è illustrata in figura 2. Un neurone biologico, come si è detto, riceve diversi ingressi attraverso i dendriti. Così anche il neurone artificiale (PE o anche nodo) riceve diversi valori in ingresso (i1, i2,..., in). Tutti gli ingressi vengono sommati ed il risultato costituisce il valore computato dal PE. Se tale valore supera una certa soglia, il neurone produce un segnale di output, o potenziale (figura 3 - P)[3], altrimenti rimane silente.

            Formalmente l’uscita U sarà data da:

 

 

Figura 4. Il peso wi (i=1,...,n) determina quanto il relativo ingresso ii contribuisca alla somma totale degli ingressi U. Più è elevato il peso, più l’ingresso corrispondente contribuirà ad elevare tale somma e, di conseguenza, più alta sarà la possibilità di superare la soglia q e di innescare il potenziale P.


(1)                   U= i1 + i2 + ... + in

 

            Tale caratteristica del PE, quella cioè di sommare algebricamente il valore dei suoi ingressi, rappresenta la prima funzione implementata dal neurone artificiale: la funzione somma.

            Comparando l’uscita U con un opportuno valore di soglia q, il potenziale P sarà:

 

(2)                   P=U - q

 

2.1.2. I pesi

Ad ogni ingresso deve essere assegnato un peso, cioè un valore numerico che modula l’impatto che ha tale ingresso sulla somma totale per determinare il potenziale del PE. In altre parole ogni ingresso contribuisce in modo maggiore o minore a determinare il superamento del valore di soglia e l’innesco del potenziale. Anche questa proprietà si ispira ad una caratteristica dei neuroni biologici già introdotta nel paragrafo 1.1. La caratteristica in questione è propria delle sinapsi che l’assone di un neurone fa con il dendrite di un altro neurone.

            Dal punto di vista del neurone post-sinaptico, gli ingressi, costituiti dal potenziale di altri neuroni i cui assoni fanno sinapsi sui suoi dendriti, vengono modulati proprio da tali sinapsi: alcuni di essi avranno un effetto maggiore sulla somma totale, altri addirittura avranno carattere inibitorio, cioè avranno l’effetto di abbassare il valore della somma totale degli ingressi e, di conseguenza, di diminuire la probabilità che essa superi il valore di soglia e si inneschi un potenziale.

 

Figura 5. Esempio di somma pesata. Ogni ingresso i contribuisce alla somma in funzione del relativo peso w. Il valore della soglia q è 1. Con i valori assegnati agli ingressi ed ai relativi pesi così come si vede in figura, il risultato della somma pesata sarà 1.75, mentre il potenziale di uscita, comparato con la soglia q sarà 0.75. Si osservi che l’ingresso I3, pur essendo di valore superiore agli altri due ingressi, ha un effetto inibitorio sulla somma totale per effetto del suo peso w3=-1.


            Questa proprietà dei sistemi biologici viene modellata nei sistemi connessionisti con il concetto matematico di peso. Il peso di una connessione è un valore numerico per il quale moltiplicare il valore dell’ingresso. In questo modo l’ingresso avrà un effetto maggiore o minore sulla somma totale degli ingressi in funzione dell’entità del peso. La rappresentazione schematica del PE, a cui si è aggiunta anche la caratteristica dei pesi, è illustrata in figura 4. La somma degli ingressi diventerà ora la somma pesata degli ingressi.         Formalmente, per la definizione di somma pesata, la (1) diventa:

 

(3)                   U= i1 *w1 +i2 *w2 + ... + in*wn

 

            Matematicamente si può pensare all’ingresso e al peso corrispondente come a vettori del tipo I = (i1, i2,..., in) e W =  (w1, w2,..., wn). Il segnale d’ingresso totale al PE, quello che si è chiamato la somma degli ingressi, sarà il prodotto scalare di questi due vettori (I·W). Si moltiplica ogni componente del vettore i con il componente corrispondente del vettore w e si sommano tutti i prodotti (Ingresso1 = i1*w1, Ingresso2=i2*w2 e così via, poi si sommano Ingresso1 + Ingresso2 + ... + ingresson). Il risultato sarà uno scalare, la somma pesata degli ingressi.

            Geometricamente il prodotto scalare di due vettori può essere considerato una misura della loro somiglianza. Se i vettori hanno la stessa direzione il prodotto scalare è massimo; se i vettori hanno direzioni opposte (180 gradi) il prodotto scalare è nullo. Questi concetti torneranno utili più avanti quando si introdurranno le caratteristiche funzionali di una rete neurale. Per ora basterà ricordare il concetto di somma pesata: ogni ingresso partecipa alla somma in modo proporzionale all’entità del peso.

 

Figura 6. Il potenziale P del PE è una funzione f della somma pesata degli ingressi ik comparata con la soglia q.


            Un esempio pratico chiarirà ancor meglio il meccanismo. La figura 5 illustra una situazione in cui sono assegnati dei valori numerici agli ingressi, ai relativi pesi e alla soglia q. Il PE incomincia la computazione facendo la somma pesata degli ingressi ik (k=1,...,n): In base alla definizione di somma pesata ogni ingresso ik deve essere moltiplicato per il relativo peso wk e i diversi valori pesati devono poi essere sommati. Il PE di figura 5 ha tre ingressi: per l’ingresso i1  il valore pesato sarà:

                        i1 *w1  = 1.5 * 0.5 = 0.75

per l’ingresso i2 tale valore sarà:

                        i2 *w2  = 1 * 3 = 3

allo stesso modo per l’ingresso i3 sarà:

                        i3 *w3  = 2 * (-1) = -2

La somma dei tre valori pesati sarà:

0.75+ 3 - 2 =1.75

Tale valore (1.75) supera il valore di soglia, che è stato fissato a 1, quindi il potenziale del neurone, per la (2) sarà: 1.75 - 1 = 0.75. Si osservi che l’ingresso i3, pur avendo in origine un valore più elevato rispetto ad i2, per effetto del peso da un contributo negativo (inibitorio) alla somma totale. Se la soglia fosse stata uguale a 2, la somma non avrebbe superato tale soglia ed il potenziale sarebbe stato nullo, proprio per il contributo determinante del peso w3 che ha conferito all’ingresso i3 un carattere inibitorio.

 

 

Figura  7. Funzioni di trasferimento fra le più usate per i modelli connessionisti. a. funzione a gradino, che può assumere valori bipolari (-1. 1) come quella in figura, o valori binari (0, 1). b. funzione lineare con saturazione. c.  funzione sigmoide con valori computati compresi fra 0 e 1. d. funzione sigmoide con valori computati compresi fra -1 e 1.


2.1.3. La funzione di trasferimento

Nel paragrafo 2.1.1 si è illustrata la funzione somma, che è poi diventata somma pesata (par. 2.1.2) per l’introduzione del concetto di peso. Si introdurrà ora un altra proprietà del neurone artificiale ispirata ancora una volta ad una proprietà del neurone biologico. Si è detto che il neurone biologico, a livello del soma, somma tutti i potenziali post-sinaptici dei dendriti. In realtà tale somma non è proprio la somma algebrica dei valori di tali potenziali; diversi fattori, fra cui la resistenza passiva della membrana del neurone, fanno si che il risultato della somma di tali valori non sia l’esatta somma algebrica, ma una funzione, di solito non lineare, di tale somma. In altre parole il neurone artificiale somma gli ingressi pesati e poi modifica il risultato in base ad una determinata funzione f (figura 6). Tale funzione è detta funzione di trasferimento e, applicata all’uscita del PE determina il suo potenziale effettivo.

            Esistono diversi tipi di funzioni di trasferimento applicate ai PE delle reti neurali artificiali. La figura 7 illustra quattro di queste funzioni che saranno descritte di seguito:

 

a)   funzione a gradino. Se il valore in ingresso alla funzione x è maggiore di zero il valore restituito f(x) è 1; se x è minore di zero, f(x) è uguale a -1. Formalmente:

 

                                                          

 

La funzione a gradino può assumere valori bipolari (-1, 1), come quella descritta sopra, oppure valori binari (0, 1). In quest’ultimo caso se x è maggiore o uguale a zero f(x) assume valore 1, mentre se x è minore di zero, f(x) assume valore 0.

 

b)   funzione lineare con saturazione. Se il valore di x è compreso fra 0 e 1, f(x) diventa una funzione lineare e restituisce proprio il valore di x. D’altra parte la funzione appiattisce i valori per x<0, per cui f(x)=0, e per x>1, per cui f(x)=1. Formalmente:

 

                                                          

 

Una variante della funzione lineare con saturazione è quella in cui la pendenza del tratto in cui la x è compresa fra 0 e 1 viene fatta variare. Non si descriveranno qui le caratteristiche di tale funzione in quanto non entra a far parte dei modelli applicativi che verranno proposti. Per una definizione formale si rimanda a Cammarata, 1990.

 

c)   funzione sigmoide. Se il valore di x è 0, il valore restituito da f(x) è 0.5. Con l’aumentare del valore di x, f(x) tende asintoticamente a 1, mentre col diminuire di x, f(x) tende asintoticamente a 0. Formalmente:

 

                                                          

 

La funzione sigmoide è continua e derivabile. Per questo viene usata nei modelli di rete neurale nei quali l’algoritmo di apprendimento richiede l’intervento di formule in cui compaiano derivate. Si ritornerà in seguito sull’argomento.

 

 

Figura 8. Struttura fondamentale di una rete neurale. Ogni ingresso ik (k=1,..., n) è connesso con tutti i nodi di uscita oh (h=1,..., m); I pesi wnm determinano quanto ogni ingresso influisca sull’uscita di ogni nodo (PE).


d)   funzione sigmoide. Questo tipo di funzione ha una curva uguale alla precedente, ma passa per l’origine, e la f(x) può assumere anche valori negativi. Essa infatti restituisce valori compresi fra -1 e 1: con l’aumentare della x sull’asse positivo (x>0) la f(x) aumenta in modo asintotico e tende ad 1, mentre con l’aumentare della x sull’asse negativo (x<0) la f(x) tende in modo asintotico a -1. Per x=0,  f(x) è nulla. Formalmente:

 

                                                          

 

2.2. L’architettura di una rete neurale

Dopo aver descritto le proprietà di un PE, o nodo, si passerà ora a descrivere l’architettura di una rete neurale. Ciò significa da una parte illustrare fisicamente l’architettura di una rete neurale artificiale, dall’altra stabilire il ruolo di ogni singolo PE all’interno di tale struttura.

            Si supponga di avere diversi ingressi e diversi nodi in modo tale che ciascun ingresso sia connesso a tutti i nodi. La figura 8 illustra questa struttura. Ogni ingresso ik (k=1,..., n) è connesso con tutti i nodi di uscita oh (h=1,..., m); ogni nodo oh  possiede tutte le proprietà descritte sopra nel paragrafo 2.1 e svolge la sua attività parallelamente a quella degli altri nodi. Presentando un pattern in ingresso[4] si avranno dei valori per le uscite che dipendono sia dai valori in ingresso, sia dai pesi della rete. In generale un peso determinerà quanto l’ingresso relativo è in grado di influenzare un particolare nodo.

            L’insieme dei nodi, o PE,  della struttura di figura 8 prende il nome di strato. Le reti neurali possono essere anche a più strati. Ogni strato aggiunto alla rete ne aumenta la capacità computazionale (Par. 6.1). La figura 9 illustra il concetto di strato. Gli ingressi I sono valori numerici che vengono valutati dai pesi delle connessioni con il primo strato di nodi H (detto anche strato hide, o nascosto). Qui ogni nodo esegue la computazione così come descritta nel paragrafo 2.1 ed eventualmente produce un potenziale che, a sua volta, si propaga verso i nodi dello strato di uscita O. Il potenziale prodotto dai nodi di uscita O costituisce l’uscita computata dalla rete neurale.

            In generale quando si parla di architettura di una rete neurale si fa riferimento al modo in cui sono connessi i diversi nodo l’uno con l’altro. Come si vedrà più avanti l’architettura per strati, come quella di figura 9, è tipica delle reti neurali feed-forward. Tali reti sono caratterizzate dal fatto che l’attivazione dei nodi d’ingresso si propaga in avanti verso quelli dello strato (o degli strati) nascosto e da questi verso quelli dello strato di uscita. 

            Cambiando il modo in cui sono connessi i nodi l’uno all’altro, si cambia l’architettura della rete. Ciò non ha solo conseguenze di ordine pratico in quanto muta la capacità computazionale della rete, ma ha anche importanti conseguenze di ordine teorico che coinvolge il concetto di apprendimento, argomento della prossima sezione.

 

3. RETI CHE APPRENDONO

Uno dei concetti fondamentali per computazione neurale è quello di apprendimento. Fino ad ora si è parlato di reti neurali dal punto di vista delle unità computazionali elementari, i PE o nodi, e dal punto di vista dell’architettura, il modo cioè in cui tali unità sono connesse fra loro all’interno di una struttura. Ora è necessario vedere in che modo una rete neurale apprende ad emettere risposte appropriate in relazione a determinati pattern d’ingresso, incominciando a definire il concetto stesso di apprendimento in ordine alla computazione neurale.

            L’apprendimento potrebbe essere definito come la modifica del comportamento in conseguenza dell’interazione con l’ambiente e il risultato dell’esperienza che determina l’emergere di nuovi pattern di risposta agli stimoli esterni (McCord Nelson e Illingworth, 1991). Volendo adattare tale definizione ad una rete neurale, è necessario definire innanzi tutto cosa si intende per interazione con l’ambiente, stimoli esterni e pattern di risposta di una rete neurale. Poi bisogna descrivere in che modo la rete neurale accumula esperienza. Saranno questi gli argomenti dei paragrafi che seguono.

 

3.1. L’apprendimento

La capacità sorprendente di apprendere propria dei sistemi neurali biologici risiede nella loro grande plasticità a livello microstrutturale (Hebb, 1949). Le sinapsi modificano le loro proprietà in relazione a particolari stimoli esterni per far si che il sistema neurale nel suo complesso produca risposte adeguate a determinati stimolo ambientali. Questa è la caratteristica a cui si ispirano i sistemi neurali artificiali che apprendono. In altre parole concetti come interazione con l’ambiente, stimoli e pattern di risposta trovano i loro corrispondenti all’interno della computazione neurale. Dire che una rete interagisce con l’ambiente significa sostanzialmente affermare che dall’ambiente riceve gli stimoli attraverso i suoi ingressi (figura 9- I) e risponde attraverso la produzione di un pattern di uscita (figura 9 - O). La risposta della rete neurale deve essere modificata in modo da diventare il più appropriata possibile al pattern d’ingresso in quel momento. Questo viene ottenuto variando il valore dei pesi delle connessioni in modo che in presenza di un determinato pattern in ingresso alla rete si abbia una risposta corrispondente.

 

Figura 9. Rete a due strati. I: nodi d’ingresso. H: strato nascosto (hide). O: strato di uscita.


            La forma della risposta della rete, il pattern di uscita, può essere decisa a priori. In questo caso si parla di apprendimento supervisionato: l’operatore umano decide che in corrispondenza di un determinato pattern vi debba essere una determinata risposta. Altrimenti, se la forma della risposta non è nota a priori, si parla di apprendimento non supervisionato. La differenza fra i due tipi di apprendimento sta nell’algoritmo che si adotta per far apprendere la rete, ed è proprio questo  l’argomento del prossimo paragrafo.

 

3.2. Algoritmi di apprendimento

L’algoritmo di apprendimento specifica in che modo vengano modificati i pesi in modo tale da far sì che la rete apprenda. Di algoritmi di apprendimento si parlerà più diffusamente in seguito, quando si tratterà dei modelli specifici di rete neurale. Per ora basta sottolineare i principi di funzionamento generali delle due classi di algoritmi di cui si parlava sopra: gli algoritmi con supervisione e quelli senza supervisione.

 

3.2.1. Algoritmi di apprendimento supervisionato

La logica su cui si fonda questo tipo di algoritmo è quella di modificare i pesi delle connessioni in modo tale che, dato un pattern d’ingresso alla rete, il pattern d’uscita corrisponda ad una forma già definita a priori. Il più celebre di questi algoritmi è senz’altro quello di Rumelhart e McClelland (1986) chiamato Back-propagation che verrà descritto in seguito.

 

3.2.2. Algoritmi di apprendimento non supervisionato

Gli algoritmi di apprendimento non supervisionato seguono una logica sostanzialmente diversa. La forma dell’output non è conosciuta a priori e l’aggiustamento dei pesi della rete neurale avviene in base ad alcune valutazioni della qualità del pattern d’ingresso da parte delle funzioni dell’algoritmo stesso. Per esempio un pattern può avere più elementi attivi, diversi da zero, di un altro: i pesi della rete verranno modificati in modo tale che presentando in ingresso il primo dei due pattern si avrà una certa risposta, mentre presentando il secondo se ne avrà un’altra in base al criterio della numerosità degli elementi attivi.

 

3.2.3. Un esempio

L’esempio seguente illustrerà il concetto di pattern d’ingresso e di pattern di uscita corrispondente all’interno delle due categorie di algoritmi. Nella figura 10 è illustrata una rete neurale che processa un pattern d’ingresso I costituito da una retina artificiale di 4´5 pixel. Come si può osservare, il pattern di sinistra rappresenta una ‘F’ mentre quello di destra una ‘L’. I pixel ombreggiati avranno valore uno, mentre gli altri avranno valore zero. L’insieme dei valori binari zero ed uno costituiscono gli ingressi alla rete ed ogni ingresso è connesso a tutti i nodi dello strato nascosto H (per motivi di leggibilità in figura 10 sono raffigurate solo le connessioni di un ingresso). L’uscita della rete è costituita da due nodi.

 

Figura 10.  Esempio di rete neurale che processa un pattern in ingresso  I e computa un’uscita O. I nodi d’ingresso corrispondono ai pixel di una retina artificiale  di 4´5  elementi. I nodi ombreggiati hanno valore 1, quelli bianchi hanno valore 0. Ogni nodo d’ingresso è connesso a tutti i nodi  nascosti H (per motivi di leggibilità sono raffigurate solo le connessioni di un nodo d’ingresso). Ogni nodo nascosto è connesso con i due nodi di uscita. Ad ogni connessione è associato un peso. La modifica dei pesi operata dall’algoritmo d’apprendimento fa sì che la rete apprenda le associazioni ingresso-uscita.


Ora si supponga che il compito della rete debba essere quello di classificare l’immagine in ingresso: se l’immagine raffigura una ‘F’ (pattern di sinistra) il valore del nodo di uscita di destra deve essere uno e quello del nodo di sinistra zero; viceversa se in ingresso vi è il pattern corrispondente all’immagine ‘L’ (pattern di destra). I pesi della rete neurale all’inizio avranno valori casuali, in quanto risulterebbe assai arduo definirli in modo manuale. La risposta della rete neurale, pertanto, sarà casuale: applicando in ingresso una immagine o l’altra si avranno risposte incoerenti, cioè il valore dei nodi non sarà quello desiderato. Per far sì che tale valore sia effettivamente quello desiderato si deve applicare alla rete un algoritmo di apprendimento che modifichi i pesi della rete in modo che la sua risposta sia coerente con il pattern di ingresso, nel modo descritto sopra. Di seguito sarà descritto schematicamente il significato dell’applicazione di un algoritmo di apprendimento supervisionato e non supervisionato alla rete di figura 10.

 

1.   Apprendimento con supervisione significa sostanzialmente che alla rete è necessario fornire degli esempi e che la modifica dei pesi avviene in base al confronto fra uscita effettiva della rete (sbagliata, all’inizio) e uscita desiderata. La modifica dei pesi fa sì che l’uscita corretta e quella desiderata convergano. Riguardo all’esempio di figura 10, il procedimento schematico potrebbe essere il seguente: si presenta alla rete il pattern di sinistra e si calcola l’uscita. Poiché ai pesi viene dato valore casuale, anche l’uscita sarà casuale. Si confronta tale uscita con quella desiderata (valore 1 al nodo di sinistra, 0 a quello di destra) e in base alla differenza uscita effettiva/uscita desiderata si modificano i pesi della rete[5]. Poi si presenta il pattern di destra e si compie la stessa operazione di confronto e modifica dei pesi, sennonché in questo caso l’uscita desiderata è diversa (valore 0 al nodo di sinistra, 1 a quello di destra) e la modifica dei pesi verrà operata in questo senso. Ripetendo tale operazione un numero elevato di volte la rete incomincia a restituire risposte sempre più simili a quelle desiderate; la struttura dei pesi cambia in modo che presentando il pattern d’ingresso di sinistra si attiva il nodo di uscita sinistro, mentre presentando il pattern di destra, sempre alla rete con la stessa struttura di pesi, si attiva il nodo di destra. Questa caratteristica prende il nome di superimposizione. Con il termine superimposizione (si veda anche Gelder, 1992) si intende il fatto che processi fra loro diversi hanno accesso alle stesse risorse. Nell’ambito della computazione neurale definisce proprio la capacità della rete neurale di raggiungere una struttura interna tale che la stessa struttura reagisca in modo diverso a pattern di ingresso diversi, fornendo uscite consistenti con tali pattern. In questo caso, ciò avviene in base all’associazione ingresso-uscita decisa dal supervisore. Su questo argomento si ritornerà in modo più diffuso in seguito.

 

2.   Apprendimento senza supervisione significa che l’algoritmo di apprendimento è in grado di identificare differenze fra i pattern di ingresso basandosi su caratteristiche fisiche di tali pattern. Per esempio, considerando sempre la figura 10, la matrice di pixel di sinistra è diversa da quella di destra sia da un punto di vista quantitativo (i pixel attivati nella matrice di sinistra sono tre in più che in quella di destra), che da un punto di vista qualitativo (per esempio la disposizione spaziale dei pixel attivati è diversa). Basandosi sull’uno o sull’altro tipo di proprietà del pattern d’ingresso[6] o su entrambi, l’algoritmo modifica i pesi in modo da enfatizzare le differenze fra i pattern a livello dell’uscita. Pertanto, ad apprendimento ultimato, presentando il pattern di sinistra si attiverà uno dei due nodi, mentre presentando in ingresso il pattern di destra si attiverà quello opposto. La differenza fondamentale dall’algoritmo di apprendimento supervisionato è che non è necessario sapere a priori la forma dell’uscita e quindi non è necessario un confronto uscita effettiva - uscita corretta. La conseguenza, nell’esempio di figura 10, è che non è possibile stabilire a priori quale dei due nodi di uscita risponderà a ciascuno dei pattern d’ingresso. In altre parole può darsi che alla fine di un apprendimento non supervisionato sia il nodo di destra a rispondere al pattern di sinistra e viceversa.

 

            Si è accennato al concetto di superimposizione come la proprietà di una rete neurale di raggiungere, dopo l’apprendimento, una configurazione dei pesi stabile in modo tale che presentando pattern diversi in ingresso alla stessa rete essa fornisca risposte diverse per ognuno di questi pattern, coerenti con gli esempi forniti nella fase di apprendimento.

 

Figura 11. Presentando alla rete, addestrata con i pattern a sinistra e centrale all’apprendimento dell’associazione ingresso-uscita raffigurata, un  nuovo pattern che non partecipava all’apprendimento (a destra) l’uscita della rete sarà coerente con le  caratteristiche del nuovo pattern in relazione a quelle dei pattern di addestramento. In questo il pattern di richiamo possiede caratteristiche comuni ad entrambi i pattern di addestramento, con una affinità leggermente maggiore per il pattern ‘L’.


            Un altro concetto fondamentale della computazione neurale è quello di generalizzazione. Per illustrarlo si richiamerà l’esempio di figura 10. Cosa succederebbe se alla rete neurale che ha appreso ad associare gli ingressi e le uscite nel modo di figura 10 si presentasse un altro pattern d’ingresso, ad esempio corrispondente ad una ‘C’, come illustrato in figura 11? La risposta più plausibile è che la rete fornisca un a risposta a metà fra quella alla ‘F’ e quella alla ‘L’.

            La spiegazione deriva dal fatto che in fase di apprendimento, la struttura interna della rete, ovvero il valore dei pesi, si è modificata in modo da ricercare i tratti distintivi delle due matrici utilizzate per l’apprendimento. Osservando la figura 11, il pattern che raffigura la ‘C’ presenta caratteristiche intermedie fra quello che raffigura la ‘F’ e quello che raffigura la ‘L’: la differenza fra la ‘F’ e la ‘L’ nella matrice di pixel è principalmente nel fatto che i pixel della prima riga della matrice ‘F’ sono attivi (=1) mentre quelli della matrice ‘L’ non lo sono (=0); viceversa per i pixel dell’ultima riga. Nel pattern relativo alla ‘C’, invece, sono attivi sia i pixel della prima riga che quelli dell’ultima. La rete neurale, quindi, processerà le caratteristiche del nuovo pattern e fornirà una risposta intermedia fra quelle relative ai pattern usati per l’apprendimento, con una leggera propensione per l’uscita relativa al pattern ‘L’ che per quella relativa al pattern ‘F’ (0.6 contro 0.4) perché con esso è maggiore l’affinità.

            I pattern utilizzati nella fase di apprendimento sono chiamati pattern di addestramento. Quando si presenta un pattern nuovo alla rete e la fase di apprendimento è finita, come in questo caso, tale pattern prende il nome di pattern di richiamo (recall). Il pattern di richiamo viene processato in base alle stesse proprietà dei pattern di addestramento per cui la rete ha appreso ad associare tali pattern ad una specifica uscita. Questa caratteristica prende il nome di generalizzazione.

 

            Dopo la discussione delle caratteristiche generali delle reti neurali, si passerà all’analisi dei diversi modelli di rete neurale. I modelli, che si differenziano per capacità computazionale, per algoritmo di apprendimento e per architettura, verranno proposti secondo un ordine cronologico in base alla storia delle reti neurali. I concetti visti nei paragrafi precedenti verranno ripresi e vi sarà data una definizione e una collocazione più definita rispetto sia alla storia della computazione neurale, sia all’interno dei diversi sistemi proposti.

 

4. I PRECURSORI

In questo paragrafo verranno trattati i modelli e le teorie che hanno fatto la storia delle reti neurali. Per considerare tali modelli è necessario fare un passo indietro per quello che riguarda le nozioni descritte sopra, in quanto esse rispecchiano le caratteristiche attuali delle reti neurali.

            Si incomincerà a descrivere il modello di McCulloch e Pitts (1943) e la loro definizione di elemento a soglia e di rete nervosa formale, che costituisce il prototipo di una rete neurale come la si intende attualmente. Si vedrà poi il modello di Hebb (1949) che introduce il concetto di plasticità sinaptica e apre la fase degli studi sulle reti neurali che apprendono.

 

4.1. Il Modello di McCulloch e Pitts

Nel 1943 McCulloch e Pitts[7] proposero quello che sarebbe diventato il prototipo delle reti neurali. La rete nervosa formale che proponevano era composta da elementi a soglia, connessi tra loro da connessioni ad efficacia sinaptica variabile (i pesi). Le funzioni proprie dell’elemento a soglia sono la somma pesata degli ingressi e il trasferimento lineare del valore di uscita (cioè l’uscita è quella effettiva risultante dalla somma pesata degli ingressi a cui viene sottratto il valore di soglia, come in figura 4). Il modello di McCulloch e Pitts di elemento a soglia è rappresentato in figura 4.

 

Figura 12. Rete formale di McCulloch e Pitts che risolve l’and logico.  In alto a sinistra: tavola di verità dell’and logico. In basso: rete composta di un elemento a soglia (quadrato ombreggiato). La soglia è di 1, ed anche il valore dei pesi è 1. Si osservi che  solo nel caso in cui entrambi gli ingressi sono 1, la somma pesata supera la soglia, e l’uscita è 1.


 

            Gli autori ottennero risultati fondamentali, soprattutto dal punto di vista teorico (Pessa, 1992):

1.   La teoria delle reti nervose formali costituisce un modello del calcolo proposizionale;

2.   è sempre possibile progettare una rete nervosa formale che simuli il comportamento di qualsiasi automa finito.

            Essi dimostrarono l’isomorfismo fra una rete formata dagli elementi a soglia del tipo di quello di figura 4 e l’algebra di Boole, nel senso che data una qualsiasi funzione booleana di m variabili è sempre possibile trovare un’opportuna rete di McCulloch e Pitts, composta da almeno un elemento e m ingressi, tale da riprodurre l’associazione ingresso-uscita che caratterizza la funzione booleana considerata.

            L’esempio di una tipica rete nervosa formale che risolve il problema dell’and logico è illustrato in figura 12. L’elemento ha una soglia di 1; anche i pesi delle connessioni hanno valore 1. Solo nel caso in cui entrambi gli ingressi abbiano valore 1, la somma pesata sarebbe uguale a 2 e l’uscita della rete sarebbe 1 (valore della somma pesata meno il valore di soglia).

            Il limite delle reti nervose formali di McCulloch e Pitts è che manca un procedimento automatico di modifica dei pesi in relazione alle associazioni ingresso-uscita: i pesi devono essere noti a priori. In altre parole non esiste un algoritmo di apprendimento e questo rende estremamente difficoltoso l’uso di questo modello per applicazioni pratiche un po’ più complesse di quella di figura 12. Si immagini per esempio di dover definire il valore dei pesi della rete di figura 10 in modo che discrimini i due pattern d’ingresso; l’impresa, anche se teoricamente possibile, sarebbe assai difficoltosa. Per arrivare al concetto di modifica dinamica della forza dei pesi delle connessioni si deve arrivare alle teorie di Hebb sulla plasticità delle sinapsi del sistema nervoso centrale, di cui si parlerà nel prossimo paragrafo.

 

4.2. La regola di Hebb

Nel 1949 Hebb, nel suo libro the organization of behavior (Hebb, 1949), propose l'esistenza di particolari sinapsi, denominate in seguito sinapsi di Hebb. Il principio è quello per cui la forza della connessione aumenta se entrambi i neuroni connessi sono attivi.

            Più formalmente secondo la regola di Hebb, dati due neuroni i e j di attivazione ai ed aj  rispettivamente, la forza della connessione wi,j  è:

 

                                           

 

dove h è una costante che rappresenta il grado della variazione del peso.

            Nel caso di stati bipolari (cioè valori di ai ed aj pari a 1 e -1) la legge di Hebb rinforza la connessione anche tra neuroni contemporaneamente inattivi, in cui cioè sia ai che aj siano uguali a -1.

 

 

5. IL PERCEPTRON

Il perceptron è un modello di rete neurale proposto nel 1958 da Rosenblatt. Esso ricalca il modello di rete nervosa formale con elementi a soglia, proposta da McCulloch e Pitts. In realtà il perceptron, nella sua versione più semplice, ha un’unica uscita ed n ingressi ed è in grado di riconoscere se una generica forma X appartiene ad una certa classe F, separando le forme F da quelle non-F. In altre parole il Perceptron è in grado di classificare il pattern d’ingresso[8].

 

Figura 13. Raffigurazione dell’architettura di un perceptron. La funzione di trasferimento f  è una funzione a gradino con uscite binarie (0, 1), o con uscite bipolari (-1, 1), come illustrato in figura 7a.


            La differenza principale con la rete nervosa formale di McCulloch e Pitts è senz’altro nella struttura di connessioni plastiche propria del Perceptron. All’inizio i pesi hanno valori casuali; poi tali valori vengono cambiati in funzione dell’associazione ingresso-uscita che si desidera ottenere dalla rete, mediante un opportuno algoritmo di apprendimento. Si procederà dall’illustrazione dell’architettura di un generico perceptron. Si proseguirà poi indicando le caratteristiche dell’apprendimento, sottolineando i pregi e i limiti del perceptron. In seguito si illustrerà una variante del modello di Rosenblatt, ovvero il perceptron a più uscite e l’algoritmo di apprendimento di Widrow-Hoff. Per quanto riguarda la notazione, da ora in avanti il pattern d’ingresso sarà indicato con X ed i singoli ingressi con xi (i=1...n) mentre il potenziale (l’uscita effettiva) con P, come al solito..

 

5.1. Il modello di Rosenblatt

Il modello originario del perceptron è quello illustrato in figura 13. Le caratteristiche computazionali di tale rete neurale sono quelle descritte in generale nei paragrafi introduttivi. Il nodo di figura 13 compie la somma pesata degli ingressi xi, paragona il risultato di tale somma con un’opportuna soglia q e genera un potenziale che verrà trasferito da un’opportuna funzione f. Formalmente:

 

(4)                  

 

dove f(x) è la funzione di trasferimento e q è la soglia associata al nodo di uscita.

            Solitamente la funzione di trasferimento f(x) per il perceptron è quella a gradino (figura 7 a) con uscite binarie (0, 1) o bipolari (-1, 1). Attraverso l’algoritmo di apprendimento il perceptron dovrebbe imparare a discriminare i pattern in ingresso come appartenenti ad una classe F (uscita 1) o non-F (uscita 0 o -1).

 

5.2. L’algoritmo di apprendimento

L’algoritmo di apprendimento, come più volte accennato, modifica il valore dei pesi in modo tale che la rete neurale apprenda ad associare una certa classe di ingressi ad una uscita (esempio ingresso=classe F, uscita=1) ed un’altra classe di pattern d’ingresso ad un’altra uscita (esempio ingresso=classe non-F, uscita=0 oppure uscita=-1 nel caso di funzione di trasferimento a gradino che computa valori bipolari).

            L’algoritmo di apprendimento è illustrato passo per passo nel riquadro 1. Il principio su cui si fonda la modifica dei pesi in funzione dell’uscita voluta del perceptron è il seguente:

 

·      se l’ingresso appartiene alla classe F e l’uscita è corretta, cioè uguale a 1, non si modifica il valore dei pesi;

·      se l’ingresso appartiene alla classe non-F e l’uscita è corretta, cioè uguale a 0, non si modifica il valore dei pesi;

·      se l’ingresso appartiene alla classe F e l’uscita è scorretta, cioè uguale a 0, si aumenta il valore dei pesi, in base alla regola delta (riquadro 1);

·      se l’ingresso appartiene alla classe non-F e l’uscita è scorretta, cioè uguale a 1, si diminuisce il valore dei pesi, in base alla regola delta (riquadro 1);

 

            Il prossimo paragrafo provvederà ad una discussione più rigorosa e formale sulle condizioni che rendano possibile la classificazione di forme attraverso il perceptron con l’algoritmo di apprendimento sopra esposto.

5.2.1. La separabilità lineare

Il principio fondamentale dell’apprendimento supervisionato, come più volte ricordato, è quello per cui ad ogni pattern di ingresso X deve corrispondere una determinata uscita D. L’algoritmo deve modificare i pesi della rete in modo tale che l’uscita effettiva della rete P corrisponda all’uscita desiderata D. Formalmente:

 

Riquadro 1. Algoritmo di apprendimento per il Perceptron (da Cammarata, 1990).

 

Il Perceptron può apprendere se una forma X appartenga o non appartenga ad una classe F.

 

a)    Si assegnano valori casuali ai pesi wi;

 

b)    si presenta una forma X e si calcola il potenziale :

c)    si possono verificare 4 casi:

 

            1. Riconoscimento corretto (X=F e P>0). si ritorna a b) senza aggiustare i pesi;

 

            2. X=non-F e P>0: occorre diminuire i pesi:

 

                ritorno al punto b);

 

            3. Riconoscimento corretto (X=non-F e P<0). si ritorna a b) senza aggiustare i pesi;

 

            4. X=F e P<0: occorre aumentare i pesi:

                ritorno al punto b);


(5)                                       (atteso)

 

dove T indica il pattern considerato (T=1...max numero di coppie di pattern ingresso-uscita utilizzate per l’apprendimento) ed i indica l’i-esima unità di uscita. In questo caso, avendo il perceptron un’unica uscita, i=1.

            Si definisce la funzione f(x) come funzione a gradino con valori di uscita bipolari:

 

(6)                  

 

Il grafico di tale funzione è illustrato in figura 7  a.

            L’insieme dei pesi può anche essere considerato un vettore ad una dimensione, in quanto il perceptron ha una sola uscita. Si consideri tale vettore dei pesi:

 

                       

 

Anche il pattern in ingresso T può essere considerato un vettore di ingressi x:

                       

 

 

Figura 14. Esempio di separabilità lineare in un perceptron  con due ingressi e un’uscita. A: raffigurazione del perceptron in esempio. La soglia q per ora è uguale a 0. B: rappresentazione geometrica  del prodotto scalare fra il vettore d’ingresso e quello dei pesi. Gli 8 pattern d’ingresso a, b, ..., h possono essere discriminati dal perceptron solo se appartengono a zone diverse rispetto al piano (linea tratteggiata) perpendicolare al vettore dei pesi W.


Essendo il potenziale del nodo la somma pesata degli ingressi, come già detto nel paragrafo 2.1.2, esso è anche il risultato del prodotto scalare dei due vettori di ingresso e dei pesi. Formalmente:

 

(7)                  

 

che significa che il potenziale P è il risultato del prodotto scalare fra il vettore I del pattern T-esimo e il vettore dei pesi W. In conseguenza della (7) la condizione (5) diventa:

 

(8)                                     (atteso)

 

cioè l’uscita desiderata D per il T-esimo pattern I deve essere il prodotto scalare del vettore d’ingresso I per il vettore dei pesi W, trasferito dalla funzione f.

            La (8) ha un significato geometrico molto importante che verrà illustrato con un esempio. Si supponga di avere un semplice perceptron con due ingressi x1 e x2 e un’uscita P (figura 14 - A). Il perceptron in questione avrà due pesi w1 e w2. Si supponga, inoltre, che vi siano 8 pattern d’ingresso che debbano essere classificati. Tali pattern d’ingresso vengono rappresentati in un sistema di riferimento i cui assi sono i due ingressi al perceptron. Per esempio supponendo che un pattern abbia ingressi x1=2 e x2=1, esso sarà rappresentato al punto (2, 1) del sistema di riferimento.

            L’espressione (8) significa geometricamente che il vettore dei pesi W deve essere scelto in modo tale che la proiezione del pattern T-esimo Is deve avere lo stesso segno di Ds. In altre parole il piano perpendicolare passante per l’origine e perpendicolare al vettore dei pesi W è la linea di confine fra le proiezioni positive e negative dei pattern di input X su W. Infatti, il prodotto scalare fra due vettori significa anche moltiplicare la norma, o modulo, del primo, per quella del secondo per il coseno dell’angolo compreso:

 

                                  

 

Dove J è l’angolo compreso fra A e B. Se tale angolo è minore di 90 (o compreso fra 270 e 360 gradi),  il prodotto scalare è positivo, altrimenti è negativo.

            Osservando la figura 14 - B, si può osservare come, per quel particolare vettore dei pesi W (definito anch’esso da due valori, essendo due i pesi del perceptron dell’esempio) abbia direzione tale per cui le proiezioni dei pattern a, b, c, d su di esso sono positive, mentre quelle dei pattern e, f, g, h sono negative. Si dice, in questo caso, che le classi di appartenenza dei pattern sono linearmente separabili, ovvero che la rappresentazione in un sistema di riferimento i cui assi sono gli ingressi dei pattern a, b, c, d appartenenti alla classe F è separabile attraverso un piano dalla rappresentazione dei pattern e, f, g, h appartenenti alla classe non-F. Il piano passa per l’origine se la soglia del nodo è 0, come in figura 14-B. Se la soglia assume valore diverso da 0, il piano perpendicolare al vettore dei pesi W dista dall’origine tanto quanto è il valore di soglia. Infatti:

 

(9)                  

 

oppure:

 

(10)                

 

in notazione vettoriale.

            Il perceptron riesce a classificare gli ingressi in categorie distinte, tramite l’algoritmo di apprendimento del riquadro 1, solo se tali categorie sono linearmente separabili da un piano perpendicolare al vettore dei pesi e che dista dall’origine tanto quanto è il valore di soglia q del nodo. L’esempio di figura 14 mostra un caso in cui il piano che divide le categorie è una retta, in quanto ci sono solo due ingressi. Ma se ci fossero stati tre o più ingressi il piano sarebbe stato tridimensionale o un iperpiano nel caso di più di tre dimensioni.

            La necessità che i pattern d’ingresso debbano essere linearmente separabili è il limite principale del Perceptron. Seguiranno più avanti alcuni esempi su pattern linearmente separabili e non.

 

5.3. Il perceptron a più uscite

Il modello considerato nel paragrafo precedente aveva un’unica uscita P ed n ingressi X={xi :i=1...n} (figura 14 A). Si supponga di estendere tale modello al caso in cui si abbiano m uscite P={pk :k=1...m}  (figura 15). In questo caso si avrà una rete in grado di classificare m classi linearmente separabili. Basterà che ogni unità di uscita pk rappresenti la corrispondente classe k, in modo che presentando in ingresso il pattern X={xi} a cui corrisponde la classe k si abbia:

 

                                                          con j¹k

 

In altre parole ad ogni classe corrisponde un nodo di uscita; presentando un pattern che appartiene ad una determinata classe K, dopo l’apprendimento, il nodo di uscita pk corrispondente a tale classe produrrà un potenziale.

            Si possono utilizzare diversi algoritmi per l’apprendimento del perceptron a più uscite, ognuno dei quali si fonda su un principio diverso per l’aggiornamento dei pesi. Ne verranno presentati due: quello proposto dallo stesso Rosenblatt, ed un secondo proposto da Widrow e Hoff. Quest’ultimo è particolarmente importante in quanto sta alla base degli sviluppi successivi della computazione neurale e verrà ripreso nei suoi principi essenziali da Rumelhart e McClelland per la formulazione dell’algoritmo di apprendimento per reti multistrato Back Propagation, che si vedrà più avanti.

 

 

Figura 15. Perceptron a più uscite.


5.3.1. Algoritmo di apprendimento per il perceptron a più uscite

Il principio fondamentale su cui si fonda ogni algoritmo è la regola di aggiornamento dei pesi, ovvero in base a quale proprietà del pattern d’ingresso, di quello di uscita o dell’associazione, è possibile ricavare un valore da sommare al valore del peso precedente. In altre parole, dato il valore di un peso w all’istante t, bisogna trovare una regola da cui si ricavi il suo valore all’istante successivo t+1, che sarà dato da:

 

                                  

 

in cui Dwik è proprio il valore che si desidera ricavare dalla regola.

            Per esempio, si potrebbe fare apprendere il perceptron aggiornando i pesi in base al principio di Hebb (par. 4.2) . In tal caso la regola di aggiornamento dei pesi sarebbe:

 

                                  

 

dove

 

                                  

 

oppure

 

(12)                           

 

oppure

 

Riquadro 2. Algoritmo di apprendimento del perceptron a più uscite.

 

Si consideri una rete (figura 15) con unità d’ingresso xi (i=1...n) e unità d’uscita pk (k=1...m) totalmente connessa. Ogni connessione ha peso wik

 

1.    Si assegnano ai pesi wik valori casuali compresi fra 0 e 1;

2.    Si presenta il pattern T-esimo XT ={xi} e l’uscita corretta DT ={dk} per tale pattern;

3.    Si calcola l’uscita effettiva della rete PT ={pk} per tale pattern;

4.    si modificano i pesi secondo la regola:

 

                                  

 

5.    se l’errore sui pattern è inferiore ad un valore prefissato si arresta il procedimento, altrimenti si pone T=T+1 e si itera nuovamente il processo a partire dal punto 2.


(13)                           

 

dove xi è l’i-esimo ingresso del pattern T, dkT è l’uscita desiderata del k-esimo nodo di uscita per il pattern T, mentre pkT è l’uscita effettiva del k-esimo nodo, sempre per il pattern T. Il parametro h è il coefficiente di apprendimento e rappresenta il tasso di aggiustamento dei pesi, ovvero l’entità della variazione dei pesi dall’istante t al successivo t+1.

            La (13) è la regola di modifica dei pesi su cui si basa l’algoritmo di apprendimento del perceptron a più uscite proposta da Rosenblatt. Infatti, una volta identificata la regola di aggiornamento dei pesi, è possibile costruire l’algoritmo (riquadro 2). Block, Minsky e Papert[9] provarono che tale algoritmo converge verso uno stato dei pesi tale che le associazioni ingresso-uscita desiderate sono soddisfatte in un numero finito di passi.

 

Riquadro 3. Algoritmo di apprendimento di Widrow-Hoff.

 

Si consideri una rete neurale (per es. figura 15) con unità d’ingresso xi (i=1...n) e unità d’uscita pk (k=1...m) totalmente connessa. Ogni connessione ha peso wik

 

1.    Si assegnano ai pesi wik valori casuali compresi fra 0 e 1;

2.    Si presenta il pattern T-esimo XT ={xi} e l’uscita desiderata DT ={dk} per tale pattern;

3.    Si calcola l’uscita effettiva della rete PT ={pk} per tale pattern;

4.    si modificano i pesi secondo la regola:

 

                                  

 

5.    se l’errore sui pattern è inferiore ad un valore prefissato si arresta il procedimento, altrimenti si pone T=T+1 e si itera nuovamente il processo a partire dal punto 2.

 


5.3.2. L’algoritmo di Widrow-Hoff

L’algoritmo di apprendimento elaborato da B. Widrow e M. E. Hoff nel 1960 si basa su una regola di aggiustamento dei pesi nota come regola delta estesa. In generale, presentando un pattern T d’ingresso XT ={xi}  ad una rete i cui pesi sono assegnati a caso, l’uscita effettiva della rete PT ={pk}  sarà diversa da quella desiderata DT ={dk}. E’ possibile misurare l’errore derivante dalla discrepanza fra l’uscita effettiva PT e quella desiderata DT per il pattern T. Si definisce errore quadratico relativo al pattern T la somma dei quadrati delle differenze fra uscita effettiva e desiderata relative ad ogni nodo di uscita:

 

(14)                           

 

L’errore quadratico, oltre che su un singolo pattern T, può essere calcolato sull’insieme di tutte le associazioni ingresso-uscita:

 

(15)                           

 

 

Figura 16. L’errore quadratico medio E è una funzione quadratica dei pesi wik rappresentabile come un iper-paraboloide nello spazio a nm+1 dimensioni. L’algoritmo di apprendimento fa sì che il valore dei pesi si modifichi in modo tale che l’errore discenda verso  il punto di minimo dell’iper-paraboloide (si osservi la freccia in figura).


L’errore quadratico può essere minimizzato cambiando il valore dei pesi delle connessioni. La regola che utilizza l’errore quadratico per modificare i pesi in modo tale che la rete apprenda le associazioni ingresso-uscita desiderate è la cosiddetta regola delta estesa:

 

(16)                           

 

dove h è il coefficiente di apprendimento. Spiegata a parole, la (16) significa che:

 

·      se l’errore E cresce all’aumentare di wik la derivata di E rispetto a wik assume segno positivo e quindi, dato il segno negativo davanti alla derivata, i pesi wik devono essere diminuiti (Dwik < 0).

·      se l’errore E diminuisce all’aumentare di wik i pesi vengono aumentati (Dwik >0).

 

 

Figura 17. Un perceptron che  implementa l’OR logico (a) e l’AND logico (b).


A fini pratici non si usa la (16) ma la seguente regola delta estesa o ADALINE o regola LMS (Least Mean Square), che risulta dalla (16) per l’applicazione delle regole della derivazione formale:

 

(17)                           

 

dove f’(pk) è la derivata prima della funzione di trasferimento del nodo pk. Si osservi che, nel caso di funzioni di trasferimento lineari la derivata prima è uguale ad uno, quindi il termine f’(pk) scompare dalla (17).

            A questo punto, data la regola di aggiornamento dei pesi, si può formulare l’algoritmo di apprendimento che avrà una forma simile a quello del riquadro 2 salvo, naturalmente, la regola di aggiornamento dei pesi (riquadro 3).

            Ci si può chiedere, a questo punto il significato geometrico della (17). L’errore E, nel caso di funzioni di trasferimento lineari, è una funzione quadratica degli n´m pesi wik rappresentabile graficamente come un iper-paraboloide nello spazio a n´m + 1 dimensioni (figura 16). La regola di aggiornamento dei pesi può dunque essere interpretata come la discesa lungo la linea di massima pendenza da un punto generico del paraboloide (le cui coordinate sono i pesi assegnati a caso e l’errore è quello iniziale) al suo unico punto di minimo. Il parametro h può essere considerato come il passo della discesa:



[1] Introduzione all’edizione italiana di Rumelhart e McClelland, 1986, citato in bibliografia.

[2] Cit. in McCord Nelson e Illingworth, 1991.

[3] I valori in ingresso e uscita, trattandosi di modelli matematici, sono necessariamente quantità numeriche.

[4] presentare un pattern in ingresso significa sostanzialmente assegnare un valore numerico a ciascun ingresso . Si parla di pattern perché tali valori hanno senso tutti insieme, come pattern appunto.

[5] Per ora si omette la modalità con cui viene operata la modifica dei pesi. Tale modalità dipende dal tipo di algoritmo usato, pertanto se ne discuterà al momento della presentazione dei diversi algoritmi.

[6] Dipende naturalmente dal tipo di algoritmo non supervisionato.

[7] Per una descrizione più dettagliata si consulti Pessa, 1992.

[8] Per una discussione più articolata sul concetto di classificazione di forme riguardo al Perceptron, si consulti Cammarata, 1990.

[9] La dimostrazione si trova in Hertz, Krough e Palmer, 1991.

 

© Copyright 2011 Emernet