apogeo - reti neurali artificiali (1991)

113
ALESSANDRO MAZZETTI Una nuova sfida tecnologica Reti Neurali Artificiali Introduzione ai principali modelli e simulazione su personal computer

Upload: gnagual69

Post on 21-Oct-2015

220 views

Category:

Documents


21 download

DESCRIPTION

informatica, reti neurali

TRANSCRIPT

Page 1: Apogeo - Reti Neurali Artificiali (1991)

A L E S S A N D R O M A Z Z E T T I

Una nuova sfidatecnologica

Reti NeuraliArtificiali

Introduzione ai principali modellie simulazione su personal computer

Page 2: Apogeo - Reti Neurali Artificiali (1991)

Reti Neurali ArtificialiIn traduzione ai principali modellie simulazione su personal computer

AutoreAlessandro Mazzetti

Copyright 0 1991

RAI - TelesoftwarePiazza Montegrappa 400195 Roma

Telefono (06) 3220686Fax (06) 3225427

APGEO - Editrice di InformaticaVia Voghera 11 /A20144 Milano

Telefono (02) 89404722,89408423

Fax (02) 89404595

ISBN 88-7303-002-S

Grafica, copertinae impaginazione elettronica di Anna Nicoli e Mauro Risani

Tutti i diritti sono riservati a norma di legge ed a normadelle convenzioni internazionali Nessuna parte di questolibro può essere riprodotta con sistemi elettronici,meccanici, o altri senza l’autorizzazione scritta dell’Editore.

Page 3: Apogeo - Reti Neurali Artificiali (1991)

Prefazione

Questo libro riproduce la parte testuale della versione elet-tronica di un corso commissionato all’autore dalla DivisioneTelevideo della RAI e trasmesso nell’ambito del proprioservizio Telesoftware.

Nato nel 1984, Televideo ha ampliato dalla fine del 1990 lagamma della sua offerta e ha avviato un servizio di trasmis-sione dati via etere, cioè di software per personal computer,dedicato all’utenza domestica, che affianca le trasmissionidati, sempre via etere, per utenze commerciali e per gruppichiusi di utenza e la trasmissione di software didattico peril mondo della scuola. Il servizio dedicato all’utenza dome-stica è stato denominato “Personal Software” e mette adisposizione, gratuitamente, di tutti i possessori di un per-sonal computer con sistema operativo MS-DOS materialiinformatici di varia natura.

Le pagine di Televideo sono suddivise in otto indici e sonocontenute in otto magazzini, sette dei qrali vengono utiliz-zati per la trasmissione cosiddetta “in chiaro” di informazio-ni e notizie.

L’ottavo magazzino, quello che comprende le pagine da 0 a99 (per alcune marche di televisori da 800 a 899>, e statoriservato alle trasmissioni del Telesoftware, alla trasmissio-ne via etere, cioe, di file di qualsivoglia tipologia per calco-la tori: programmi, da ti, testi, grafica.

In pratica, ogni utente, installando nel proprio calcolatoreuna apposita scheda Televideo/Telesoftware da collegarealla presa di antenna TV, può “ricevere” via eteresenza alcunonere aggiun tivo il software trasmesso, memorizzarlo nel

Prefazione Y

Page 4: Apogeo - Reti Neurali Artificiali (1991)

computer e quindi utilizzarlo secondo i tradizionali criteriinforma tici.

L’offerta di programmi di “Personal Software” e molto am-pia ed P soggetta a continui incrementi. In particolare, nel-l’arco dei primi mesi di programmazione sono statetrasmesse rubriche dedica te a libri elettronici, a programmididattici, ad applicazioni cosiddette di “produttività perso-nale”, a notiziari informativi, a software di pubblico domi-nio e autoprodotto. Mo1 te di queste rubriche, e di quelle infase di allestimento, sono realizzate in collaborazione conaltre aziende che operano o che si avviano a operare nelmondo dell’editoria elettronica e della diffusione dati.

La pagina 750 del Televideo offre un indice delle diverse areedi programmazione e fornisce informazioni sui programmitrasmessi, sulle loro caratteristiche essenziali e sulle moda-lità per riceverli.

VI Prcfnziom

Page 5: Apogeo - Reti Neurali Artificiali (1991)

Ringraziamenti

L’Autore desidera ringraziare tutte le persone che hannocontribuito allo sviluppo di questo libro, in particolare Pa-squale Santoli, sostenitore della versione “via etere” delpresente libro, trasmessa dalla rubrica Telesoftware di RAI-Televideo. Un particolare ringraziamento a Bruno Apolloni,Elisabetta Binaghi, Gabriele Ronchini e Gilberto Vanzettoper avermi seguito durante la realizzazione del libro con iloro pregiati consigli.

L’Autore

Alessandro Mazzetti, dopo aver conseguito la laurea infisica-cibernetica a Milano nel 1980, si è occupato di linguag-gi e metodologie presso 1’Etnoteam SpA e la Direzione Cen-trale delle Ricerche dell’Italtel SpA. Nel 1985 si è avvicinatoall’Intelligenza Artificiale operando come “Knowledge En-gineer” presso l’Exper t Systems Applica tion Cen tre dellaSystems Designers SpA. È autore di numerose pubblicazionifra le quali tre libri sui Sistemi Esperti e sul Prolog; la suapassione per lo studio delle più avanzate tecnologie si espri-me attraverso la continua collaborazione con l’università diMilano nel campo dei Sistemi che Apprendono e delle RetiNeurali. Attualmente è responsabile del Centro TecnologieInnova tive della CAP-Gemini-Sysdata SpA, dove ricopre ilruolo di Product Manager per i Sistemi Esperti e i ProdottiNeurali.

L’Autore VII

Page 6: Apogeo - Reti Neurali Artificiali (1991)

A Jacopo e Ruggero

Page 7: Apogeo - Reti Neurali Artificiali (1991)

Sommario

01

c l2

03

04

05

c l6

07

08

09

Il cervello biologico e le sue simulazioni . . . . . . . . . . . 1

Neuroni formali e reti artificiali . . . . . . . . . . . . . . . . . . . 9

Computabilità, apprendimento e caratteristiche . . . a 15

Memoria associativa distribuita . . . . . . . . . . . . . . . . . . 23

Simulazione software di una memoria associativa . . 37

Reti “back propagation” . . . . . . . . . . . . . . . . . . . . . . . . . 55

q Appendice 65

Applicazione di una rete back propagation . . . . . . . . 69

Altri modelli di rete neurale . . . . . . . . . . . . . . . . . . . . . 89

q Modelli stocastici 89CI Modelli auto-organizzanti 9.3q Modelli genetici 97

Applicazioni e strumenti . . . . . . . . . . . . . . . . . . . . . . . . 99

q Strunmti di sviluppo per Reti Neurali 102

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

X1

Page 8: Apogeo - Reti Neurali Artificiali (1991)

Il cerve1 IO

biologico ele sue simulazioni

T re sono le discipline rivolte allo studio dei fenomeni intellet-tuali:

l la ncwo@in, orientata a capire COIIZC 2faffo il cervello, valea dire quali sono i componenti biologici interni, qual e lastruttura fisica e come curare dal punto di vista chirurgicole possibili malattie.

. la ysicok@, orientata a capire COIIIC si cont~utu il cervello,quindi gli effetti del suo funzionamento, indipendente-mente dai processi fisico-chimici che avvengono al suoin temo.

0 l’infclligcrizn nrfificialc, orientata a emdarc i compor&urw~fiirzfellipzfi attraverso dispositivi meccanico-elettronici, ge-neralmente di natura molto differente da quelli biologici.

Fino a qualche anno fa queste tre discipline hanno proseguito laloro strada senza influenzarsi a vicenda, giungendo a risultatiinteressanti e utili ma spesso insoddisfacenti [12]. In parole po-vere, a tutt’oggi non sappiamo come funziona il cervelloumano; non siamo in grado di spiegare adeguatamente i proces-si di apprendimento; non siamo capaci di costruire macchineche possano essere scambiate per esseri viventi.

Sembra che per superare questi scogli sia necessaria una coope-razione e una sinergia fra diversi rami di studio. Nasce quindiuna nuova disciplina che unisce neurologia, psicologia, intelli-genza artificiale, biologia, ingegneria, fisica e matematica con lo

11 cervello biologico c le sue simnlnzioni 1

Page 9: Apogeo - Reti Neurali Artificiali (1991)

scopo di progredire nello studio dei fenomeni intellettuali. Nonsi tratta solo di voler costruire macchine più intelligenti delcomputer, ma anche di far progredire la psicologia e la neurolo-gia mediante simulazioni che fungano da esperimenti dilaboratorio per le teorie da convalidare.

Svariati nomi sono stati attribuiti a questa nuova disciplina:Nwroinfornzatica, Paradigma Sub-simbolico, Conncssionisrno, PardelDistributd Processing (queste ultime due sono discipline più ge-nerali in cui le reti neurali sono un possibile approccio). Negliambienti informi3 tici, questa disciplina ha inizialmente esorditonel tentativo di riprodurre le strutture nervose dei tessuti ccre-brali su strumenti di calcolo, ma sta man mano progredendocon l’identificazione di modelli ma tema tici che hanno sempremeno a che fare con la biologia, la psicologia o la medicina. Atutt’oggi, col termine Reti Neurnli (o Neurodi o Neuroniche [13])si identifica una tecnologia di elaborazione dell’informazionecomplementare all’informatica classica.

Il cervello umano ha circa 10 bilioni di cellule nervose (neuroni),connesse fra di loro in vario modo (figura 1). Il numero di inter-connessioni è stimato dell’ordine di un milione di miliardi.

Figura 1. Rete di neuroni biologici

2 Capitolo 1

Page 10: Apogeo - Reti Neurali Artificiali (1991)

Quando un neurone viene attivato, manda un impulso elettro-chimico ai neuroni cui è connesso: l’operazione si ripete perogni neurone e nell’intervallo di pochi centesimi di secondo inte-re regioni del cervello risultano interessate.

Il neurone è il componente elementare del sistema nervoso; visono molti tipi di neuroni, ma nell’uomo non sono presenti tipidiversi da quelli di altre specie animali [l]. Il neurone, comemostra la figura 2, è composto da:

0 corpo cellulare;

0 dendriti;

0 assone.

di altro Neuroni

Figura 2. La cellula neuronale

11 cervello biologico E le sue sinzulazioni 3

Page 11: Apogeo - Reti Neurali Artificiali (1991)

11 corpo cellulare è rivestito da una membrana in grado di man-tenere una polarizzazione, vale a dire una concentrazione dicariche elettriche. Tali cariche provengono dai dendriti, che sonodei prolungamenti ramificati a loro volta in contatto con altrineuroni. 1 molteplici dendriti di un neurone concorrono a eccita-re il corpo cellulare il cjuale, oltre un certo limite, “scarica” lasua attivazione lungo l’assone, andando quindi a interessare al-tri neuroni. Il punto di contatto fra due neuroni si chiamasinapsi e si manifesta nwdiante l’avvicinamento fra l’assone diun neurone con il dendrite di un altro neurone (figura 3).

Y

ASSONE---.

-----/JSINAPSI(processo

3

elettrochimico)

DENDRITE

Figura 3. La sinapsi,

La sinapsi è una leggera intercapedine fra assone e dendrite incui il segnale proveniente dall’assone si trasmette con un pro-cesso elettrochimico verso il dendrite. Lo spessore diquest’intercapedine è dell’ordine di poche decine di Angstrom epuò variare nel tempo, provocando quindi un rafforzamento oindebolimento della connessione fra due neuroni.

Il contenuto informativo del cervello umano è rappresentatodall’insieme dei valori di attivazione di tutti i neuroni e l’elabo-razione dell’informazione è rappresentata dal flusso di segnalifra i vari neuroni che si eccitano o inibiscono a vicenda. La me-moria è rappresentata dall’insieme delle sinapsi che formanoaddensamenti e rarefazioni nella rete neurale [2].

4 Cupitolo 1

Page 12: Apogeo - Reti Neurali Artificiali (1991)

La frequenza massima di trasmissione degli impulsi fra neuroniè piuttosto bassa, circa un centinaio al secondo [3], quindi l’in-formazione trasmessa t; limitata e insufficiente per da ticomplessi. In un computer i segnali elettronici viaggiano a velo-cità migliaia di volte superiori. Ciò spiega l’ipotesi di unmeccanismo &ffnso e ~wr~llcfu di trasmissione dell’informazione,secondo la quale l’elaborazione risiede in intere regioni del cer-vello piuttosto che in singole unità. Ad avvalorare questa tesisono anche diversi esperimenti biologici in cui si è notato che, inseguito ad una lesione cerebrale, le prestazioni intellettuali de-gradano proporzionalmente alla superficie della lesione; alcontrario, lesioni di limitata superficie non annullano del tuttole capacità intellettuali e provocano lo stesso effetto al variaredella zona dove avviene la lesione [4].

Se poniamo a confronto il cervello biologico con un computerelettronico possiamo notare una grossa differenza strutturale: inun computer, infatti, l’elaborazione viene effettuata in manierasequenziale nell’unita centrale di calcolo (CPU> e la memoria C;concentrata in unità separate (RAM). Anche i programmi soft-ware rispecchiano questa struttura, separando i datidall’algoritmo e considerando un flusso di controllo sequenzia-le. Nel cervello invece l’informazione è distribuita su unamoltitudine di unità elementari, di per sè semplici ma operantiin parallelo; inoltre non vi è netta distinzione fra memoria e uni-tà di elaborazione.

Ciò che vi può essere in comune fra cervello e computer è il COII-

tetto di input e output (figura 4): negli esseri viventi, infatti, l’inputè costituito dalle terminazioni nervose localizzate negli organi disenso (occhi, naso, bocca, orecchie, pelle...) e l’output è costituitoda neuroni residenti negli organi motori (muscoli, corde vocali, oc-chi...).

Risalgono a oltre mezzo secolo fa i primi tentativi di schematiz-zare con modelli matematici il cervello umano. Nel 1943McCullocl~ e Pitts presentarono un lavoro sulle reti “neurologi-che” [5] proponendo un modello formale di neurone. Gli studivertevano essenzialmente nell’individuazione delle funzionicomputabili dalle reti neurali e nell’equivalenza con le funzionicomputate dalla macchina di Turing (il padre dell’odierno com-

puter).

11 ccrucllo biologico c le sue sirnulmioni 5

Page 13: Apogeo - Reti Neurali Artificiali (1991)

OUTPUT

INPUT

OUTPUT

INPUTFigura 4. Concetto di input/output negli esseri viventi e nel computer;

Nel 1949 Donald Hebb ipotizzò l’apprendimento biologico co-me fenomeno sinaptico [6]: propose una formula matematicaoggi nota come legge di Hebb. Cominciò a crescere l’entusiasmoverso questi dispositivi, che sembravano in grado non solo disvolgere svariate funzioni, ma anche di imparare da soli il com-pito loro richiesto.

Nel 1957 Rosenblatt costruì il cosiddetto pcrwytr~ne 171, un dispo-sitivo in grado di imparare a riconoscere immagini: vienedimostrato un teorema che garantisce la capacità di apprendere uncerto insieme di funzioni. Il perceptrone mostrava la robustezza eflessibilita tipica dei sistemi biologici: a differenza dei computer,un guasto 0 un errore nell’input non comprometteva l’intera ela-borazione ma provocava un lieve degrado delle prestazioni.L’aspetto più sensazionale però stava nella capacità di riconoscerecorrettamente anche immagini mai viste prima, manifestandoquindi capacita di cuyiw piuttosto che di im~arure a rncmoria, at-traverso un meccanismo di associazione fra stimoli simili.

6 Cupifolo 2

Page 14: Apogeo - Reti Neurali Artificiali (1991)

Nel 1969 Minsky e Papert analizzarono criticamente il percep-trone evidenziandone i limiti e l’incapacità di risolvere alcuniproblemi banali, come ad esempio la funzione OR-esclusivo.Nel loro libro “Perceptrons” [8] manifestarono serie perplessitàsulla possibilità di migliorare le reti neurali e ciò portò comeconseguenza una sfiducia sull’argomento che dominò tutti glianni 70.

Negli anni 80 si assiste ad una rinascita delle reti neurali in se-guito al superamento dei limiti del perceptrone: gli studi diKohonen [ill formalizzarono rigorosamente la materia e gli stu-di di Rumelhart 191 dimostrarono l’esistenza di reti dallastrultura piuttosto semplice in grado di svolgere funzioni com-plesse e significative con elevata accuratezza. Il trucco stavanell’impiego di neuroni ”nascosti” che imparano dai propri er-rori (da qui i l nome di questa tecnica: “error backpropagation”).

A questo si aggiungono i successi di Crossberg e quelli di Hop-field [lo]. Quest’ultimo concepì le reti neurali non più comeentità astratte (cioè governa te da leggi matema tiche arbitrarie),ma come entita fisiche (governate da leggi fisiche come quelladell’energia, della carica elettrica, dei flussi turbolenti...). Si èquindi dimostrato che le capacità intellettuali possono emergerecome comportamento collettivo di un gran numero di entità fisi-che di per sé stupide. Per la prima volta si è pensato di costruirereti neurali general-purpose senza l’aiuto del computer, ma uti-lizzando direttamente componenti elettronici.

Degni di nota infine i contributi di Kohonen [ll] il quale haidentificato meccanismi di apprendimento per reti neurali chenon richiedono l’esistenza di un maestro (unsupervised lear-ning). In altre parole, si è dimostrata l’esistenza di reti neurali ingrado di sccyrirc nuove conoscenze anziché assimilare le cono-scenze altrui. È di particolare interesse l’architettura di queste reti,che sembra rispecchiare fedelmente le reti nervose biologiche.

Negli anni 80, i successi e le speranze dell’Intelligenza Artificialesimbolica (Sistemi Esperti, Linguaggi Logici, Reti Semantiche...)hanno alimentato una diatriba fra i sostenitori dei due diversiparadigmi per la rappresentazione di conoscenza: connessioni-sta e simbolico. L’inizio degli anni 90 è caratterizzato da unaforte tendenza ad integrare i due paradigmi.

Il ccrvcllo biologico c le sue simulaziod 7

Page 15: Apogeo - Reti Neurali Artificiali (1991)

Nel resto di questo libro andremo in dettaglio nella descrizionedelle reti neurali senza ripercorrere le varie tappe storiche, mapresenteremo soltanto i modelli più significa tivi e consolidati direti neurali in ordine crescente di difficoltà: dapprima il modellodi Hopfield (memoria associativa), poi quello di Rumelhart (reti“backpropagation”) e infine quello di Kohonen (reti auto-orga-nizzanti).

Page 16: Apogeo - Reti Neurali Artificiali (1991)

1J::;;:,:.:. .:. , .. .. . . . . . . .::j:.:., ;:::.2 :::

. . : . : . : . . . : ...:j:;+; . ::::::::::::‘7.‘. Neuroni formali

l 1 e reti artificiali

1 1 neurone formale è una schematizzazione del neurone biolo-gico in cui le proprietà funzionali sono descritte da formulema tema tiche, senza preoccuparsi dei fenomeni elettrici, chimici,termici, biologici che avvengono nella realtti. Per distinguere ilneurone formale da quello biologico, useremo una diversa ter-minologia: anziché neurone diremo semplicemente unikì;anziche dendriti e assone diremo input e oulpuf dell’unitti. At-tenzione a non confondere l’input/output della singola unitàcon l’input/output dell’intera rete.

Lo stato di eccitazione di un neurone (polarizzazione elettrica)verrà rappresentato da un zdove di nffivnzione, espresso come unnumero reale. Il meccanismo di scarica dell’attivazione lungol’assone verrà rappresentato da una funziom di ftm~erirnenfo (ofunzione di output) che darti il valore dell’output dell’unità a par-tire dal valore dell’attivazione. .La sinapsi verrà chiamata peso,nel senso che quando due unità sono in stretto contatto diremoche la loro connessione ha un forte peso (in altre parole, giocamolto sul comportamento della rete).

Il funzionamento del neurone formale può essere così schema-tizzato. Data una rete formata da N unità, consideriamol’i-esima unità (figura 5): questa riceve alcuni segnali di inputprovenienti dall’output di altre unità; indichiamo con Oj I’out-put della j-esima unitti, espresso come numero reale. 11 valoreOj viene trasmesso all’i-esima unità opportunamente pesato,cioè moltiplicato per il valore della forza sinaptica esistente frala j-esima unità e l’i-esima: denoteremo tale peso con Wij (dal-l’inglese Weight). Quindi il segnale che l’i-esima unità ricevesarà WijOj. Si noti che se Wij è compreso fra 0 e 1 avrà la funzio-

Neuroni formali E reti artificiali 9

Page 17: Apogeo - Reti Neurali Artificiali (1991)

Oa = T(Ai)

Figura 5. Il neurone formale.

ne di smorzare il segnale Oj; se è maggiore di 1 avnì una funzio-ne amplificatrice; se è negativo avrà una funzione inibitriceanziche eccita toria sull’unità i.

Le varie unità connesse con la i-esima unità concorrono a for-mare il suo stato di attivazione, che sarà dunque calcolato comesommatoria: indicando con Ai lo stato di attivazione dell’i-esimaunità, avremo:

. A . . ../...:::.::. . : . .. . , .‘ . ::.:.:. Ai = CWijOj:... . .<<<,< iIl valore dell’output dell’i-esima unità sarà dato dall’applicazio-ne della funzione di trasferimento, denotata da T. Quindi:::

::i;:. .:.::.Oi = (Ai)

10 Cyitolo 2

Page 18: Apogeo - Reti Neurali Artificiali (1991)

La funzione di trasferimento ha lo scopo di “trattenere” l’attiva-zione all’interno dell’unita fino ad un certo livello di soglia,oltre il quale l’unità si “scarica”: la forn~a della funzione T saràdunque a rampa (spigolosa o morbida, vedi figura 6).

Figura 6. Tipiche fvnzioni di trasferimento.

Una rete neurale artificiale è fonnata da un certo numero di uni-ta fra di loro interconnesse (figura 7). Alcune unità ricevonosegnali dall’esterno e per questo verranno battezzate unifà di in-prct della rete; analogamente, le unità che forniscono il lorovalore di output all’ambiente esterno saranno considerate oz~tpzlfdella rete (da non confondere con input/output del singolo neu-rone).

Neuroni fortnali E reti artqiciali 11

Page 19: Apogeo - Reti Neurali Artificiali (1991)

Figura 7. Una rete neurale arfificiale

L’input di una rete neurale è dunque un insieme di numeri realiche indicheremo con X; analogamente indicheremo con Y l’in-sieme dei numeri che formano l’output della rete. Il compitodella rete è quello di fornire un output ogni volta che gli vienepresentato un input; in altre parole, una rete neurale calcolauna funzione F (da non confondere con la funzione di trasferi-mento T):

i : : : : : y = +)L’esecuzione della funzione F avviene in questo modo: inizial-mente la rete è in stato di quiete, quindi tutte le unità sonoinattive e forniscono un output Oi nullo. Quando pervengonodall’esterno dei segnali di input X, le unit,ì di input vengonosollecitate e quindi mandano un segnale alle altre unità; questeultime ricevono uno stimolo che dipende dai pesi delle connes-sioni. Ogni unità della rete verr5 dunque attivata in manieradiversa e propagherà stimoli alle altre unitti. L’attivazione as-sunta dalle unità di output verrà trasmessa all’esterno formandol’insieme Y dei valori di output della rete. Si noti il fatto chel’elaborazione è avvenuta “in un sol colpo”, attivando in modoparallelo tutte le unità simultaneamente.

Page 20: Apogeo - Reti Neurali Artificiali (1991)

Ma non è tutto così semplice: una rete neurale, infatti, può con-tenere connessioni cicliche, come ad esempio quelle in figura 7fra le unità U2 e U3, oppure quelle che formano il ciclo Ul-U3-U4. In questo caso alcune unità continuano a stimolarsi a .vicenda e possono verificarsi tre situazioni:1 . la reciproca stimolazione porta ad attivare le unità di output

con valori sempre differenti. In questo caso la rete forniràall’ambiente un output in perenne cambiamento: diremo chela rete non cowergc. Può anche capitare che la stimolazionesia in continua crescita: in questo caso la rete csr>lone.

2 . la reciproca stimolazione porta ad una sequenza di attivazio-ni che si ripetono in ciclo: in questo caso l’output oscilla incontinuazione.

3. la reciproca stimolazione porta ad una combinazione di atti-vazioni che non cambia più: in questo caso diremo che larete convevgc verso una soluzione Y=F(X). Questo è ovvia-mente il caso più interessante perché fa diventare la reteneurale una macchina deterministica: esistono teoremi chepongono le condizioni base affinché una rete sia sempre con-vergen te.

Per facilitare lo studio dei fenomeni che avvengono in una reteneurale possiamo considerare alcuni modelli semplificati (figu-ra 8):1. Reti non ricorwnti = reti in cui le connessioni vanno in un

solo senso, dall’input all’output. È il contrario di reti cicliche.

2 . Reti totalrrwzte co~zy~cssc = reti in cui ogni unità è connessa contutte le altre (generalmente esclusa sé stessa). Si noti che unaconnessione fra due unità con peso nullo, Wii=O, è equiva-lente all’assenza di connessione: per comodità di calcolo siutilizzano spesso reti totalmente connesse in cui la topologiaviene definita azzerando alcuni pesi.

3. Reti a lizdi = reti i cui le unità sono organizzate in insiemiseparati e disgiunti di cui generalmente uno è detto livello diinput, un altro livello di output e gli altri livelli vengonochiama ti nascusfi 0 i&7wzcdi.

4 . Reti sivzrrrctriche = reti in cui la connessione fra due qualsiasiunità è uguale in entrambi i sensi: Wij=Wji.

Neuroni ~ormli c reti nrtificidi 13

Page 21: Apogeo - Reti Neurali Artificiali (1991)

5. Reti autcussociczt~w = reti in cui le unità di input coincidonocon quelle di output. Il compito di queste reti è di ricevereuno stimolo dall’esterno e di farlo evolvere, fornendo comerisultato una versione modificata (o completata) dell’inputricevuto.

6. Reti shzstichc = reti in cui vi è una certa probabilità cheun’unità non venga a 1 tiva ta anche quando riceve stimoli.

7. Reti asirzcrorx = reti in cui le unità vengono attivate non tuttecontemporaneamente ma una alla volta secondo un ordinecasuale.

Oulpul

Rete nonricorrente

Retesimmetrica

output

Rete totalmenteconnessa

IllPUl

Rete a piU livelli(totalmente c o n n e s s a

Inpul = output

Reteautoassociativa

fra i livelli)

Figura 8. Modelli di reti neurali

Nei capitoli a seguire perlustreremo in dettaglio solo i modelli piùinteressanti e significativi: non faremo una rassegna completa.

Page 22: Apogeo - Reti Neurali Artificiali (1991)

Computabilità,apprendimento

e caratteristiche

Sarebbe lecito domandarsi a questo punto: “ma cos’hannoqueste reti neurali di diverso dai computer?” Tutto sommatoanche le reti, come i computer, sono macchine che danno uncerto output come frutto dell’elaborazione di un certo input(col termine “computer” intendiamo qui una macchina di VonNeumann, vale a dire sequenziale, programmabile e con me-moria).

Prima di analizzare le differenze fra reti neurali e computer, sof-fermiamoci sugli aspetti che vi sono in comune. Esiste una tesiche afferma che la classe di funzioni computabili da una reteneurale coincide con la classe delle funzioni calcolabili su mac-chine di Turing. Tradotto in termini più terra-terra, questa tesiafferma che per ogni possibile programma per computer esisteuna rete neurale in grado di fare le stesse cose.

Un altro risultato interessante è il teorema di Hecht-Nielsen [17]:questo afferma che una qualsiasi funzione Y=F(X) può esserecomputata con elevata accuratezza da una rete neurale no~r ricor-nxte a soli tre livelli avente un opportuno numero di unità(anche molto elevato) nel livello intermedio, senza alcuna con-nessione all’interno del livello ma totalmente connessa fra unlivello e l’altro (figura 9).

Il teorema di Hecht-Nielsen riveste importanza più teorica chepratica, infatti non indica quante devono essere le unità né qualidevono essere i pesi W per ottenere una rete che effettivamenteesegua la funzione F. Non vi è una soluzione generale a questo

Computubilitcì, npprcndimcnto e ctrrattcristiche 15

Page 23: Apogeo - Reti Neurali Artificiali (1991)

Livello di output

Livello di input

Figura 9. Struttura di una rete in grado di computare una funziione qualsiasi

problema, ma fortunatamente esistono tecniche che fornisconoapprossimazioni ben funzionanti nella pratica (fra cui la tecnicaback propaga tion).

In conclusione, quindi con le reti neurali si riescono a fare essen-zialmente le stesse cose che si possono fare con i computer.Però il fatto che l’infonnazione venga elaborata in maniera di-stribuita da una moltitudine di unità elementari, porta a duesingolari conseguenze: vcsistcnz~~ al rf1f7lore e resistenzn al Ayy~2~0.Resistenza al rumore significa che la rete è in grado di operareanche in presenza di dati incerti, incompleti o leggernlente erra-ti. Resistenza al degrado significa che la rete è in grado dioperare anche in presenza di guasti o parti difettose; ovviarnen-te quest’ultitna caratteristica ha un senso nel caso di reti neuralihardware realizzate direttamente con componenti elettronici (obiologici). Entrambe queste caratteristiche derivano dal fatto chel’informazione viene processata “a pezzettini” dalle varie unitàdella rete e l’elaborazione emerge conle fenomeno collettivo; diconseguenza un difetto parziale nell’infonnazione, dovuto ad

16 cnpito~o 3

Page 24: Apogeo - Reti Neurali Artificiali (1991)

errore d’uso 0 a guasto, affonda nella collettività e viene sopras-seduto. Si noti l’estrema differenza rispetto ai computertradizionali, in cui la presenza di “colli di bottiglia” (CPU, BUS,Flusso di controllo...) comporta una estrema sensibilità al mini-mo errore; ne consegue che le reti neurali sono appropriate inquei campi in cui pii1 che la precisione è richiesta la robustezza:telecomunicazioni, visione, diagnostica, interpretazione di se-gnali con rumore (voce, caratteri manoscritti, firme), . . .

Un’altra grossa differenza fra reti neurali e computer riguarda ilmeccanismo per ottenere le funzionalità desiderate. Stamo par-lando, cioè, di come “programmare” una rete neurale. Una reteneurale non va programmata bensì &estmt~

Addestrare una rete neurale significa presentarle un insieme diesempi e lasciare che la rete si costruisca da sola la conoscenzainterna necessaria per svolgere il compito richiesto. Un esempio(volutamente esagerato anche se realmente funzionante) è quel-lo di insegnare ad una rete il concetto di somma: anzichéfornirle un algoritmo (ad esempio somma le singole cifre da de-stra a sinistra con riporto), si presentano alla rete alcuni esempidi somme: 5+3=8; 24+1329=1353; 1+17=18... Dopo aver “osser-vato” un numero sufficiente di somme, la rete avrà imparato ilconcetto di somma, quindi sarà in grado di eseguire anche so~n-

me di numeri mai visti prima, come ad esempio 37+9.

Un altro esempio può essere quello di addestrare una rete adeffettuare dei movimenti fisici come ad esempio giocare a tennis0 sciare. Per non complicarci troppo la vita, consideriamo unmovimento elementare ma significa tivo come ad esempio quelloper lanciare in aria un sasso per colpire un bersaglio. È suffi-ciente presentare alla rete un certo insieme di esempi, facendolevedere dove arrivano alcuni sassi lanciati per prova: analizzan-do questi tiri-prova, la rete riesce ad autocostruirsi la capacità ditirare sassi, tale per cui, quando le si chiederà di lanciare unsasso fino a laggiù, la rete sapri quale forza e quale angolazioneimprimere al lancio.

Nei computer tradizionali, invece, questo problema deve essererisolto a mano dall’uomo, che deve trovare le equazioni del mo-to di un corpo in caduta libera e tradurre tali equazioni in unalgoritmo da far eseguire dal computer. Il fatto che le reti neura-li possano apprendere da esempi le rende particolarmente

Conrputabilihì, npprendimcnto e cmutteristiche 17

Page 25: Apogeo - Reti Neurali Artificiali (1991)

appropriate in quei campi applicativi in cui non si riesca 0 nonsia conveniente trovare una soluzione algebrica o algoritmica: sipensi ad esempio alle previsioni metereologiche, al riconosci-mento di immagini, alla diagnostica medica, alla guida diautoveicoli, al controllo di parti meccaniche in movimento...

Si consideri il problema di riconoscere volti umani (ad esempioper consentire l’accesso ad un reparto privato). Purtroppo nonesiste una soluzione algoritmica a cluesto problema, perché ognivolto è un caso a parte. Un possibile approccio può essere l’im-piego di una rete neurale che aufoappmda a riconoscrere i volti“amici”, mediante l’analisi di fotografie. Dato un opportuno in-sieme di foto-esempio, la rete imparerà a riconoscere personeanche con diversa pettinatura o sorridenti o col cappello... Il“trucco” sta nel fatto che la rete impara a distinguere i tratti chesono tipici di un volto (occhi, orecchie, naso...) da quelli insigni-ficanti (espressione, pettinatura, trucco...).

Per correttezza è bene puntualizzare che le capacità di appren-dimento di una rete neurale (come anche la resistenza al rumoree al degrado) non sono frutto di magia, ma di una accurata scel-ta della topologia, numero di unità, regola di apprendimento,insieme di esempi... In altre parole, può capitare (ed è frequente)che una rete non riesca affatto ad apprendere la funzione desi-derata oppure che non resista al rumore, semplicemente perchéabbiamo usato un’architettura non adeguata (per esempio ca-renza di unità o di livelli, uso di una funzione di trasferimentonon adeguata...).

Da un punto di vista biologico per apprendimento si intende lacapacità del sistema nervoso degli esseri viventi di autoadattarsia fronte di stimoli esterni, modificando la propria conoscenza.Gli studi di neurofisiologia hanno portato all’ipotesi che la capa-cità di autoadattamento risieda in una plasticità sinaptica, vale adire variazione della forza di connessione fra le cellule nervose.

In termini matematici, addestrare una rete significa fornirle uninsieme di coppie input/output (X,Y> e fare in modo che la retetrovi da sola i valori delle connessioni W che realizzino la fun-zione Y=F(X). Riassumendo:

: appm.finzcwfo = froznrc W dafo X c Y;

cìcudzione = froixw Y hfo X e W.

Page 26: Apogeo - Reti Neurali Artificiali (1991)

L’idea base dell’apprendimento neurale è la seguente: per ogniesempio presentato, rafforzare le connessioni fra unità che sianoentrambe attive. Più propriamente, durante la presentazione diun certo esempio, incrementare Wij proporzionalmente a quantosono attive le unità i e j. Da un punto di vista matematico, que-sta regola è espressa dalla cosiddetta formula di Hebb [6]:

:j:: AWtj = EOtOj

Si noti che quanto più sono alti i valori delle unità i e j, tantopiù è alta la modifica del peso fra queste due unità; il tutto rap-portato da una costante di proporzionalità E, comunementechiamata tasso di appvcndinzento.

Questa formula, pur funzionando in diverse situazioni pratiche,non è del tutto fatata, infatti non garantisce la capacità di ap-prendere qualsiasi funzione; in altre parole, questa regola ha duedifetti: modifica immancabilmente i pesi anche quando non ne-cessario e, al contrario, non modifica abbastanza i pesi nei casipiù ardui. Ecco dunque la necessità di cambiare formula pur te-nendo valido il principio di base. 11 trucco è quello di applicare aripetizione una formula che “aggiusti” per piccoli passi ogni pe-so dirigendolo verso il valore ottimale. Ad ogni passo ènecessario lasciare che la rete evolva da sola per vedere quanto hasbagliato, quindi modificare solo i pesi delle unità che hanno erra-to di un ammontare tale da compensare l’errore commesso. Il tuttoripetuto finché non vi sono pesi errati, o meglio, finché l’errorecommesso non diventa accettabile. In conclusione, ciclando in con-tinuazione sullo stesso esempio, o sullo stesso insieme di esempi,otteniamo miglioramenti graduali che portano alla combinazioneottimale di pesi. Ognuno di questi cicli, in cui vengono ripresentatisempre gli stessi esempi, prende il nome di epoca di apprendi-mento. La fonnula dell’apprendimento per epoche è dunque:

. AWij=e(Dt-Ot)Oj

dove Di indica il valore desiderato di Ot, quindi Di-Ot indical’errore commesso dall’unità i.

Attenzione: la fase di apprendimento di una rete è ben distintada quella di esecuzione; una rete o impara o esegue un certocompito, analogamente ai computer tradizionali in cui la fase diprogrammazione è ben distinta da quella di esecuzione. Da que-sto punto di vista le reti neurali artificiali differiscono da quelle

Cortprtabilitrì, apmriirrumto e caratterisfiche 19

Page 27: Apogeo - Reti Neurali Artificiali (1991)

biologiche, in cui l’apprendimento è sempre “acceso”. Si pensiad attività sportive complesse, come ad esempio sciare: anche imaestri più anziani sono in continuo allenamento e non potran-no mai sciare in modo totalmente meccanico. Una rete neuraleartificiale, invece, richiede una fase di addestramento intensivo,dopo la quale viene “commutata” in modalita di esecuzione, incui non impara pii1 (pur rimanendo valida la possibilità di “ri-commutarla” in modalità di apprendimento per aggiornare lasua conoscenza>.

L’apprendimento da esempi di una rete neurale porta implicita-mente ad un’altra straordinaria capacità: quella digcnemlizzazione. L’addestramento di una rete neurale può avve-nire senza doverle fornire tutti gli esempi possibiliimmaginabili, ma soltanto i più significativi e rappresentativi.Ad esempio, ritornando ai tiri del sasso, non è necessario pre-sentare alla rete tutti i possibili tiri-prova (che peraltro sarebberoinfiniti), ma soltanto una piccola parte, ad esempio 200 tiri dicui un pò vicini, un pò lontani, alcuni alti e alcuni tesi. Suppo-niamo che fra questi esempi fossero presenti un tiro a 12 metribello alto e uno a 15 metri piuttosto teso, ma non vi fosse alcunaltro tiro fra i 12 e i 15 metri. La capacita di generalizzazionedella rete la rende capace di raccapezzarsi anche nel caso di untiro a 13 metri molto teso, indovinando per analogia la giustacombinazione fra angolazione del lancio e forza del tiro.

In conclusione, quindi una rete neurale manifesta capacità dicornprcnsiow piuttosto che di mcrtmizzmiom; si noti la differenzarispetto ad un tradizionale sistema di database il quale, una vol-ta memorizzati i suoi dati è in grado solo di ripescarli così comesono senza fare analogie e somiglianze per potersi districare difronte a dati non memorizzati o situazioni nuove. La capacità digeneralizzazione di ciò che si apprende è una caratteristica tipicadell’intelligenza umana: sarà capitato anche a voi, ad esempio, diaver preso un brutto voto a scuola pur avendo imparato a me-moria tutto il capitolo di storia o geografia. Magari prendendovipure dello stupido! Al contrario, uno studio poco mnemonicoma ben fornito di analogie, paragoni e astrazioni porta immanca-bilmente a buoni risultati perché è indice di comprensione einquadramento piuttosto che di bruta memorizzazione (diamoper scontato che nella vita di tutti i giorni è più utile capire cheimparare a memoria).

Page 28: Apogeo - Reti Neurali Artificiali (1991)

Esistono due principali regimi di apprendimento: con supevvisio-ne e SLWZU supcvvisionc (supervised e unsupervised). Gli esempicitati in precedenza (somma di numeri, lancio di sassi, ricono-scimento di volti) erano tutti relativi ad apprendimento consupervisione, cioè caratterizza ti dal fatto che gli esempi mostratial discente specificano sia l’input che l’output.

L’apprendimento senza supervisione invece si manifesta quan-do gli esempi osservati contengono solo l’input. In questo casonon si tratta più di apprendere una funzione Y=F(X), ma di or-ganizzare e inquadrare gli esempi osservati trovando relazioni eregolarità fra di loro. Facciamo subito un esempio: supponiamodi avere un insieme di dati relativi ad aziende italiane, in cuiper ogni azienda siano citate le dimensioni, l’ubicazione, il tipodi prodotto, il fatturato... insomma, un tradizionale database.Considerando ogni azienda come un esempio, una rete neuralecon apprendimento senza supervisione è in grado di individua-re raggruppamenti di aziende simili, arrivando a scoprireconcetti come aziende private, aziende di servizi, aziende delnord... oppure notare relazioni come ad esempio “le compagnieaeree sono generalmente statali”, “la tipica azienda del nord èpiccola e privata ,” “le aziende di servizi hanno un basso fattura-to pro capite”...

Terminiamo questo capitolo con un riassunto delle principali ca-ratteristiche delle reti neurali.1 . Una rete neurale è un sistema dinamico in grado di eseguire

qualsiasi funzione Y=F(X).2 . La struttura di una rete neurale è definita dal numero di uni-

ta, dalla particolare topologia (a livelli, ciclica, totalmenteconnessa...> e dal tipo di funzione di trasferimento T.

3. Una rete neurale non la si programn~ ma la si addestra.L’addestramento richiede un insieme di esempi specifici an-ziché una regola o un algorihno generale. L’apprendimentopuò essere con 0 senza supervisione ed è espresso nella for-ITM AWij = . . .

4. La “conoscenza” di una rete neurale (memoria a lungo ter-mine, programma) risiede nell’insieme dei pesi delleconnessioni fra le unita e nell’insieme di soglie di attivazionedelle unita. Tale conoscenza non è in forma simbolica espli-

Co~uptrrbilitR, apprcndimnto e caratteristiche 21

Page 29: Apogeo - Reti Neurali Artificiali (1991)

cita ma è un guazzabuglio di numeri di difficile comprensio-ne e interpretazione da parte umana.

5. 1 “dati” di una rete neurale (vale a dire le informazioni sulsingolo caso in esame, memoria a breve termine) risiedononei valori di attivazione che le unità assumono in seguito aduno stimolo di input.

6 . Una rete neurale non ha un orologio centrale né un flusso dicontrollo; l’elaborazione è frutto di un fenomeno distribuitoe collettivo, che può essere eseguito con alto parallelismo edeventuale asincronia.

7 . Non vi è distinzione fra hardware e software nelle reti neu-rali: sono concepibili sia come macchine a sé stanti costruitead hoc, sia come modelli matematici simulati via softwaresugli attuali computer (sequenzializzando l’aspetto parallelo).

8 . Punti deboli delle reti neurali: scarse capacità di calcolo, scar-se capacità logiche, scarsa precisione, incapacità dispiegazione dei risulta ti fomiti.

9. Punti forti delle reti neurali: capacità di associazione (fareanalogie, trovare similarità), capacità di generalizzazione, resistenza al rumore e al degrado, familiarità con gli eventi piùfrequenti, velocità (su hardware parallelo).

1 0 . Una rete neurale non si misura in byte o in istruzioni al se-condo ma in unità e connessioni al secondo.

22 Capitolo 3

Page 30: Apogeo - Reti Neurali Artificiali (1991)

Memoriaassociativa

distribuita

C 01 termine “memoria associativa” si intende un dispositivoin grado di contenere informazioni sotto forma di associazionefra dati. Un sinonimo di memoria associativa può essere nzcnzo-ria acccssibik per contenuto; il contrario è m.moriu accessibile perindirizzo. Un esempio tipico può essere l’associazione fra il nomedei miei amici e il mestiere che fanno: se ad esempio Ruggero falo skipper, il suo nome mi verrà in mente ogni qual volta siparla di vela e, viceversa, mi verranno in mente barche a velaogni volta che si parla di Ruggero.

Al contrario, una tipica memoria accessibile per indirizzo èun’agenda, in cui è estremamente facile sapere cosa ho fattoil 19 Aprile (usando la data come indirizzo d’accesso) ma èaltamente oneroso sapere quando ho incontrato Jacopo, in-fatti dovrei scandire tutta l’agenda verificando giorno pergiorno gli incontri fatti. Un memoria associativa, dunque, ef-fettua la classica associazione di idee, spesso caratterizzata dalfatto che un’informazione “fa venire in mente” un’altra informa-zione per analogia e similitudine piuttosto che per uguaglianzaesatta.

Una buona memoria associativa comporta l’abilità di operare inpresenza di dati incompleti o erra ti. Si supponga ad esempio diimmagazzinare in una memoria associativa un catalogo di libri,contenente la voce “Emilio Salgari: Le tigri di Mompracem, scaf-fale 21”. L’associazione fra autore e titolo permetterà di reperireun dato per intero anche a partire da una porzione di esso, come

Mmoriu associativa distribuita 23

Page 31: Apogeo - Reti Neurali Artificiali (1991)

ad esempio ‘Salgari: Le tigri”; oppure la possibilita di correggereversioni distorte di questo dako, come ad esempio “Egidio Salga-ri: Le tigri di Montparcel”. E infine auspicabile la capacità diaccedere alle infomxrzioni memorizzate con prestazioni indipen-denti dalla quantità di dati immagazzinati; in altre parole, iltempo di accesso ad una informazione deve essere lo stesso siain una base dati di poche righe che di migliaia. Questa caratteri-stica è tipica degli esseri viventi, infatti l’abilità di riconoscere unvolto, una musica, un’odore è identica a 5 anni come a 50, però a50 anni le infonnazioni immagazzinate nel cervello sono assai dipiù che a 5 anni. Questo suggerisce l’ipotesi di un supporto dimemoria che non comporti l’elencazione sequenziale dei dati, co-me avviene negli attuali da tabase, ma la sovraimposizione dei datiin una stessa struttura.

Una rete neurale è particolarmente adatta per realizzare memo-rie associa tive perché l’informazione risiede nell’insieme delleconnessioni fra le varie unità e il singolo dato da memorizzarenon è “concentrato” in celle di memoria ma è distribuito su unamoltitudine di unità; da qui il nome rnemoriu associaliva distribui-tn. Le unità della rete non sono specializzate per lamemorizzazione di un particolare dato, ma offrono ciascuna unpiccolo contributo alla memorizzazione di tutti i dati.

Ma veniamo al dunque: qual è la struttura di una rete neuraleche realizzi una memoria associativa? Ne esistono diverse, manoi considereremo qui una delle più semplici, chiamata “memo-ria associativa bidirezionale” (BAM, Kosko [14]): due livelli diunità, che chiameremo livello X e Y, con connessioni totali fra idue livelli e nessuna connessione all’interno del livello. Questosignifica che ogni unità del livello X è connessa con tutte le uni-tà di Y ma con nessun’altra unità di X (figura 10)

Indichiamo con N il numero di unità del livello X e con M quellodel livello Y; ogni unità può assumere due soli valori: +1 e -1 eper questo vengono dette bipolari. La scelta di (+1,-l} anziché(O,l} (unità binarie) è dovuta al fatto che questo facilita le fonnu-le matematiche e migliora le capacità di memoria della rete. Leconnessioni fra le unità sono bidirezionali e simmetriche, cioèWij=Wjt. La funzione di trasferimento T è un semplice gradinocentrato sullo zero (figura ll), cioè la soglia oltre la quale l’unità“scatta” è il valore di attivazione 0. Per comodità, anziché indicarel’output delle unità con 0~ distingueremo l’output delle unità del

24 CqJitolo 4

Page 32: Apogeo - Reti Neurali Artificiali (1991)

Dato x

N unit&

Figura 10. Shuffura di una refe neurale che realizzu una memoria associu-tiva distribuita.

-1

Figura 11. La funzione di trasferimento per la memoria associativa.

Memoria associativa distribuita 25

Page 33: Apogeo - Reti Neurali Artificiali (1991)

livello X da quelle delle unita del livello Y, denotandole rispetti-vamente Xi e Yj.

Le formule che governano la rete sono dunque:>:: , ::... . . . ...‘... . . ., . : : : :. . . . . . +1 se c::: WijYj > 0::.::.::. ., j,.:::.::::..:.:.:.... Xi=:....,:::::: : : : .

. : l -1 s e cWijYj 5 0. . : :. . : :. . . .:j’ i.,;:;:

, ‘ : . : :./. . .. .:.;: +1 se cWijXi > 0‘..:‘,”

. . l

i. : : .: . :: .: Yj’: , : j .. . . . . .. . : . . .: :; : j:.... -1 se c:..... . . . . . WijXj 2 0. . . . . ...:. . . i, : : . , :/.. . : .:

La formula di apprendimento di una rete di questo tipo puòessere la semplice formula di Hebb:

j:..:‘,

AWij = XiYj

La memorizzazione di un dato, o meglio, dell’associazione fradue da ti X e Y, avviene semplicemente rappresentando i dati informato bipolare (cioè con +1 e -11, assegandoli alle unita deilivelli X e Y e infine applicando la formula di Hebb (in letteratu-ra si parla spesso di “pattern” anziché di “dati”, per evidenziareil fatto che ogni dato è una combinazione di +l e -1). La memo-rizzazione di più associazioni avviene ripetendo questoprocedimento diverse volte con diversi dati.

Si supponga di avere 6 unità nel livello X e 4 nel livello Y; I’as-sociazione fra due dati verrà espressa ad esempio in questomodo:

{ xX=(+1 -1 +1 -1 t1 -l), Yl=(tl t1 -1 -1) }

Le connessioni fra le unità saranno 6x4=24 e possono essere rap-presentate con una matrice di numeri interi di 6 righe e 4colonne. Proviamo a memorizzare nella rete i dati X1 e Yl vistisopra (in altre parole, addestriamo la rete con quell’esempio).

26 Capitolo 4

Page 34: Apogeo - Reti Neurali Artificiali (1991)

Dalla formula di Hebb otteniamo una matrice così fatta:. . . .:. .:j:::.,..:. 91 +1 -1 -1: ::. . .:>: -1 -1 +1 +1..::: .::.,.: 91 +1 -1 -1'.:

-1 -1 +1 +1.:t1 t1 -1 -1

:: -1 -1 t1 t1

In questa matrice l’i-esima riga rappresenta i valori delle 4 con-nessioni che vanno dall’i-esima unità del livello X alle 4 unità dellivello Y (figura 12).

Yj = valore della j-esimaunità del livello Y

i

‘7..R 1~ =valore (bidireziomle)della connessione fral’i-esima mità del livelloX e la j-esima del livello Y

Xi=VdOlTdell’i-esimaunitA dellivello X

Figura 12. Implementazbne di una rete neurale con strufture daliper comptie[

Mcrnoria associativa distribuita 27

Page 35: Apogeo - Reti Neurali Artificiali (1991)

Proviamo ora ad addestrare questa rete con un’altra associazione:{ x2=(+1 t1 t1 -1 -1 -l), Y2=(+1 -1 t1 -1) }

La formula di Hebb implica che ogni connessione Wtj vengamodificata sovrnirnponc&ovi il nuovo valore, ottenendo quindi:

92 0 0 -2o-2+2 0t2 0 0 -5-2 0 0 ti0 t2 -2 0-2 0 0 t2

In conclusione, un algoritmo per simulare questa rete neurale inmodo sequenziale su un computer può essere:X:array[l..N] of integer;Y:array[l..M] of integer;W:array[l..N, l..M] of integer;procedure addestra;acquisisci dato X;acquisisci dato Y;per ogni unità j del livello Y

per ogni unità i del livello XW[i,j] = W[i,j] t ( X[i] * Y[j] )

finefine

fine;

Fermiamo qui la fase di addestramento e passiamo a far esegui-re questa rete, vale a dire assegnamo solo uno dei due livelli,diciamo X, e lasciamo evolvere la rete fino a quando si rilassa inuno stato stabile; a questo punto l’altro livello, Y, conterrà l’in-formazione associata ad X. Si noti che la rete è fortementeciclica, infatti essendo le connessioni bidirezionali, ogni unità in-fluenza le altre, a cui ne è a sua volta influenzata.Fortunatamente esiste un teorema che assicura la convergenzadella rete garantendo l’impossibilità di oscillare per sempre cao-ticamente [15].

L’algoritmo per simulare in modo sequenziale l’esecuzione dellarete è il seguente:procedure esegui;

acquisisci dato X;azzera dato Y;ripeti

28 ~n~>itok~ 4

Page 36: Apogeo - Reti Neurali Artificiali (1991)

. . .. . . .. . . . . .. . . . . .,.... . :.:.:.:::..... . . . .:::.... . .j:x. . .. .. . .., . .. A , .:...,...,:::.:.

per ogni unitA j del livello Y (* sndata da X a Y *)calcola la sua attivazione A=SUbfi(W[i,j]*X[i]);Y[jl=TW;

fine;per ogni unita i del livello X (* ritorno da Y a X *)

calcola la sua attivazione A=SOaaj(W[i,j]*Y[j]);:..::

X[i]=T(A);:.. . .. . .. . fine;.::.:,::::. visualizza dato Y;:,.>. fi.nch& non ci sono pih cambiamenti in X e YI Y2.$jj fine;..::. . . . . .. . . . . .. . . . ...::. ..\.. . . . .. . . . .":j:i funzione T (A) ;"..j:.:::. . . . .. . . .. .. . .se A>O allora T:=tl altrimenti T:=-1;. . .. . . . . .:. fine:

Come si può notare, l’evoluzione della rete è una continua oscil-lazione da X a Y (andata e ritorno), fino a che non vi sono piùcambiamenti (questo equivale ad una oscillazione infinita in cuida un certo punto in poi non cambia più nulla).

Vediamo quindi se la rete ha memorizzato correttamente i datifornitele in fase di addestramento: proviamo a darle X=(+1 +1+1 -1 -1 -1) e calcoliamo a mano il valore di Y, supponendoloinizialmente nullo, cioè Y=(O 0 0 0).:: : .:::

:.:;; Y[ll = T(t1*2 tl*O +1*2 -l*-2 -l*O -l*-2) = T( 2+0+2+2-Ot2)::: = T(t8) =tl.I:: y[2] = T(tl*O tl*-2 tl*O -l*O -1*2 -l*O) = T( O-2+0-0-2-0). . = T(4) = -1

':j:; Y[3] = T(tl*O +1*2 tl*O -l*O -l*-2 -l*O) = T( 0+2+0-0+2-O)= T(t4) =tl

::j; Y(41:.:.:. = T(tl*-2 tl*O tl*-2 -1*2 -l*O -1*2) = T(-2+0-2-2-O-2). . . . ...::>:,. :" = T(-8) = -1

Come si può vedere, Risulta Y=(+l -1 +l -1); calcoliamo ora il“ritorno” da Y a X:. . ., .g;::j X[l]

. . . = T(t1*2 -l*O tl*O -l*-2) = T( 2-OtOt2) = T(t4) = tl

. . . .Ajj X[2] = T(tl*O -l*-2 +1*2 -l*O) = T( 0+2+2-O) = T(t4) = tlf;:j X[TJ]:.. = T(tf*2 -l*O tl*O -l*-2) = T( 2-OtOt2) = T(+4) = tl',- X[4] = T(tl*-2 -l*O tl*O -1*2) = T(-2-OtO-2) = T(-4) = -1

'1::: X[5] = T(tl*O -1*2 tl*-2 -l*O) = T( 0-2-2-O) = T(-4) = -1.': X[6] = T(tl*-2 -l*O tl*O -1*2) = T(-2-OtO-2) = T(-4) = -1

e otteniamo X=(+1 +l +l -1 -1 -l), che è identico al valore prece-dente, quindi è inutile proseguire con altre oscillazioni, perché la

Memoria associativa distribuita 29

Page 37: Apogeo - Reti Neurali Artificiali (1991)

rete è ornIai in uno stato stabile da cui non si discosta più. Inconclusione, il dato Y fornito dalla rete come risposta allo stimo-lo iniziale X è stato esattamente quello che aveva appreso.

Proviamo ora a farla funzionare al contrario: diamo alla reteY=(+l -1 +1 -1) e vediamo cosa ci da in risposta. La “andata” daY a X è uguale a quella appena vista sopra mentre il “ritorno”da X a Y è uguale a quello visto prima. Anche in quasto caso findalla prima oscillazione la rete fornisce la corretta risposta. Pro-viamo ora con l’altro dato appreso, X=(+1 -1 +l -1 +l -1):

$$ Y[l] = T(+1*2 -l*O tl"2 -l*-2 tl*O -l*-2) = T( 2-0+2+2+0+2):::..:..,:::x. . . . . = T(t8) =tl..:...:.,.::jjj) Y [2] = T(tl*O -l*-2 tl*O -l*O t1*2 -l*O) = T( 0+2+0-0+2-O):.:.,:,:::::. . . . = T(t4) =tl.A.....I.:Iji: Y[31 = T(tl*O -1*2 tl*O -l*O tl*-2 -l*O) = T( O-2+0-0-2-0)..:...,.:::. = T(-4) = -1..:. : . . . :: : j j j j Y[4] = T(tl*-2 -l*O tl*-2 -1*2 tl*O -1*2) = T(-2-O-2-2+0-2):<:... . . . = T(-8) = -1

Come previsto, risulta Y=(+l +1 -1 -1) al primo colpo. Il ritornolo lasciamo calcolare a voi come esercizio contro 1’insonnia. Inconclusione, questa rete ha memorizzato correttamente le asso-ciazioni {Xl,YlJ e (X2,Y2]. Forse l’impressione è di aver sparatoad una mosca con un cannone, andando a scomodare le reti neu-rali per fare un banale sistema che memorizza dati. Però il belloha ancora da venire. Immaginiamo una rete con migliaia di unitànei livelli X e Y e migliaia di associazioni memorizzate: facendoandare la rete in parallelo (su hardware apposito) otteniamo ilreperimento di una informazione in un batter d’occhio, senzadover scandire alcuna struttura sequenziale. Tutto ciò grazie allasovraimposizione dei diversi dati nella stessa struttura e l’indi-pendenza fra le unità, che permette una elaborazione parallela.

Ma non è tutto: questa rete è resistente al rumore e al degrado.Proviamo a fornirle un input molto simile a X2 ma con un pic-colo errore (nell’ultima unità): X=(+1 +l +l -1 -1 +l). Otteniamo(si noti l’ultimo addendo):.c<:<::...,

ij:jjj Y[l]. . . . .= T(tl*Z i-1*0 +1*2 -l*-2 -l*O tl*-2) = T( 2+0+2+2-O-2)::.. . . . . . = T(t4) =tl. ../. . . . . .;;ij Y[2] = T(tl*O tl*-2 tl*O -l*O -1*2 tl*O) = T( O-2+0-0-2+0).: :,,.:::. . . . = T(-4) = -1: . ..f:: Y[3] = T(tl*O +1*2 tl*O -l*O -l*-2 tl*O) = T( 0+2+0-Ot2tO)

= T(td) =tl.,.,.;;:: Y (41 = T(tl*-2 tl*O tl*-2 -1*2 -I*O kl*LQ P T(-2+0-2-2-Ot2)

a T(-4) = -1

30 Capitolo 4

Page 38: Apogeo - Reti Neurali Artificiali (1991)

L’oscillazione di “ritorno” fornirà il valore X=(+1 +1 +1 -1 -1 -l),che, essendo diverso da quello che aveva prima (nell’ultimaunità), provocherà un ciclo in più, dopo il quale la rete si rilas-serà nell’associazione {X2,Y2). Come si può notare, la rete haautocorretto l’errore, riconducendo l’input al dato piu simile fraquelli memorizzati. Da questo punto di vista la rete non ha “im-parato a memoria” ma ha “ricordato qualcosa di simile”, in altreparole, ha generulitmfo ciò che ha appreso.

Proviamo ora a vedere cosa succede quando dovesse manife-starsi un guasto, ad esempio, l’unità 3 del livello X dà sempre 0perché non funziona. Partendo dall’input X=(+1 +l +l -1 -1 -1)otteniamo: (si noti il terzo addendo):::: . .

2:; Y[ll = T(t1*2 tl*O t0 -l*-2 -l*O -l*-2) = T( 2+0+0+2-Ot2):::::./\.. . . . = T(t6) =tl. . . . . ...I..jjjj; Y[2] = T(tl*O tl*-2 t0 -l*O -1*2 -l*O) = T( O-2+0-0-2-0):.:j::y. = T(-4) = -1gg Y[3] = T(tl*O +1*2 t0 -l*O -l*-2 -l*O) = T( 0+2+0-0+2-O). .:. = T(t4) =tliii;. Y[4] = T(tl*-2 tl*O t0 -1*2 -l*O -1*2) = T(-2+0+0-2-O-2)..:.,.:: = T(-6) = -1

Come è possibile notare, l’output è sorprendentemente corret-to. In altre parole il guasto è stato soprasseduto dallacollettività e non ha fatto collassare la rete. Si noti che ogni sin-gola unità non è conscia del risultato globale che la rete staraggiungendo, ma “fa i fatti suoi”. Sembra quasi che vi sia unamano invisibile che guida le unità anarchiche verso una metacomune.

Ma proviamo ora a mettere in crisi questa rete. Cosa succede sele dessimo un input molto diverso da quelli appresi? Proviamocon X=(+1 +l +l -1 +l +l): questo dato è a uguale distanza daX1 e da X2 infatti differisce da entrambi per il 33% circa (dueunità diverse). ,

Andata::.:.:..\.2 Y[l] = T(t1*2 tl*O +1*2 -l*-2 tl*O tl*-2) = T( 2+0+2+2+0-2):..:.:.:.,.. = T(t6) = tl.,c..:jlj:: Y[2] = T(tl*O tl*-2 tl*O -1*0 +1*2 tl*O) = T( O-2+0-0+2+0):.:..::. . . = T( 0) = -1. . . . . .;,llj Y[3] = T(tl*O +1*2 tl*O -l*O tl*-2 tl*O) = T( 0+2+0-O-2+0).,.,:: = T( 0) = -1::i:ij Y[4] = T(tl*-2 tl*O tl*-2 -1*2 tl*O +1*2) = T(-2+0-2-2tOt2)

= T(-6) = -1. . .

Mmoria nssociatiuu distribuita 31

Page 39: Apogeo - Reti Neurali Artificiali (1991)

Ri tomo:. .. . . .;ii; X[l] = T(t1*2 -l*O -1*0 -l*-2) = T( 2-O-0+2) = T(t4) = tl'.;.; x121 = T(tl*O -l*-2 -1*2 -l*O) = T( 0+2-2-O) = T( 0) = -1

x131 = T(t1*2 -1"O -l*O -l*-2) = T( 2-O-0+2) = T(t4) = tl.::: X[4] = T(+l*-2 -l*O -l*O -1*2) = T(-2-0-0-2) = T(-4) = -1

,:.:. X(5, = T(tl*O -1*2 -l*-2 -l*O) = T( O-2+2-0) = T( 0) = -1X[6] = T(tl*-2 -l*O -l*O -1*2) = T(-2-0-0-2) = T(-4) = -1:

Seconda andata:, . : .:;:. Y[l] = T(t1*2 -l*O t1*2 -l*-2 -l*O -l*-2) = T( 2-0+2+2-Ot2):. = T(t8) =tl3.: Y[2] = T(tl*O -l*-2 tl*O -l*O -1*2 -l*O) = T( 0+2+0-0-2-O):::..:..I = T( 0) = -1..I. . . . . .gji Y[3] = T(tl*O -1*2 tl*O -l*O -l*-2 -l*O) = T( O-2+0-0+2-0):...,. = T( 0) = -1,:::::2 Y[4] = T(tl*-2 -l*O tl*-2 -1*2 -l*O -1*2) = T(-2-0-2-2-0-2):j:. = T ( - 8 ) = - 1:

È successo che la rete si è stabilizzata in uno stato spurio, cioènon precedentemente memorizzato:

:' x=(+1 -1 t1 -1 -1 -l), Y=(tl -1 -1. -1).::.:.In altre parole, la rete ha fatto confusione ed ha avuto una spe-cie di “allucinazione”, nel senso che ha creduto di ricordarequalcosa che non aveva mai visto.

Purtroppo questo non è l’unico inconveniente di questo tipo direte: problemi analoghi possono affiorare quando si “sovraccari-ca” una rete nel tentativo di farle apprendere troppa roba.Esistono svariati teoremi a proposito della capacità di memoriadi questo tipo di rete [16]: il sovraccarico si manifesta quando ilnumero di dati da memorizzare si avvicina al numero di unitàdel livello che ne ha di meno. Teoricamente il limite massimo didati memorizzabili è:

L = min(N,M)

dove N e M sono il numero di unità nei livelli X e Y. In so-stanza, il numero di unità di una rete limita le sua capacità dimemoria. nel nostro caso, avendo N=6 e M=4, si può notareuna certa amnesia della rete con 4 dati. Proviamo infatti adaggiungere alla nostra rete la memorizzazione di queste asso-ciazioni:

-d ( X3=(-1 t1 t1 t1 -1 -l), Y3=(-1 t1 t1 -1) }.,( x4=(+1 t1 -1 -1 t1 tl), Y3=(-1 t1 t1 tl) }

Page 40: Apogeo - Reti Neurali Artificiali (1991)

La matrice risultante Sara:4,. : . . .:: t2 0 0 0. -2 0 +4 0

t2 0 o-4-2 0 0 00 t2 -2 t2

. . . . -2 0 ot4

Provando a darle l’input X3=(-1 +1 +l +1 -1 -1) otterremo l’out-put spurio Y=(-l-l +l -1). Anche in questo caso la rete ha avutole traveggole, nonostante il fatto che l’input fornitole fosse esat-tamente uno di quelli appresi. Provando ora a farleriapprendere l’associazione {X3,Y3) otteniamo un riacqu+to dimemoria con conseguente perdita di memoria degli altri dati. Inconclusione, la rete manifesta una sorta di @ihrifh cm gli men-f i pirì freqr4enf i e rccenf i.

Poniamoci ora un’altra domanda: supponendo di voler memo-rizzare nella rete una corretta quantità di associazioni, riuscirà lanostra rete a memorizzare qualsiasi combinazione di dati? Pur-troppo no. Se ad esempio provassimo a memorizzare dei datitroppo simili fra di loro, rischiamo di creare confusione. Provia-mo ad addestrare la nostra rete con queste tre associazioni Cenessun’altra).

‘. { x1=(+1 -1 t1 -1 t1 -l), Yl=(tl -1 t1 -1) );.:,.. . . .{ x2=(-1 t1 -1 t1 -1 tl), Yl=(-1 t1 -1 tl) ),. :/:::..:.: { X3=(-1 -1 t1 -1 t1 -l), Yl=(-1 -1 t1 -1) )

La matrice dei pesi sarà:t3 -1 t1 -1

.< .:., -1 t3 -3 t3:.::.::".::.:, .: t1 -3 t3 -3..:

-1 t3 -3 t3t1 -3 t3 -3

:... -1 t3 -3 t3

Nonostante il fatto che le associazioni memorizzate siano appe-na 3, si possono manifestano errori, infatti, da X=(-l -1 +1 -1 +1-1) si ottiene Y=(+l -1 +l -1). Questo fatto è dovuto alla estremasomiglianza fra i da ti memorizza ti, non in termini di ugualianzafra i valori delle unità, ma di varietà nella combinazione dei piùe dei meno: in altre parole, i dati X1 e X2 sono simmetrici (cioèhanno la stessa sequenza con segno opposto) e dal punto di vi-sta della rete sono praticamente uguali. La memorizzazione di

Memoria associatiua distribuita 33

Page 41: Apogeo - Reti Neurali Artificiali (1991)

un dato implica automaticamente la memorizzazione del suosimmetrico. La rete riesce a memorizzare bene solo i dati conun’alta ortogonnlità fra di loro. Non bisogna confondere I’ortogo-nalità di dati con la simmetria: il simmetrico di un dato si ottienescambiando tutti i +1 con -1 (e viceversa); l’ortogonale di un datosi ottiene scambiandone circa la metà.

Un’utile metafora per capire il comportamento di questa reteneurale è quella di immaginare il supporto di memoria come unfoglio di gomma in cui vi siano alcune pietre che creano deitra teri. Ogni cratere rappresenta un’associazione memorizzata;l’esecuzione della rete può essere immaginata come il movimen-to di una pallina su questa superficie: se la pallina è findall’inizio dentro un cratere, vi rimane, e questo corrisponde afar eseguire la rete con un input che coincide esattamente conuno di quelli appresi. Se la pallina è nelle vicinanze di alcunicrateri (input lievemente distorto), rotola dentro al cratere piùvicino (cioè la rete fa più oscillazioni). Se è distante da tutti icrateri (input molto distorto), la pallina vaga un po’ e poi siassesta in qualche avvallamento spurio. Se due crateri sonotroppo vicini (dati non ortogonali), oppure se vi sono troppi cra-teri, si creano strane colline con avvallamenti spuri. Il fatto cheprima o poi la pallina si fermi è garantito dal fatto che il fogliodi gomma non ha buchi né discese infinite, ma solo crateri.

Questa metafora non è immaginaria, ma frutto di una singolareanalogia fra lo stato della rete e il concetto di energia di un si-stema dinamico. È possibile definire una sorta di energia dehwtc come una grandezza che tiene conto del valore di ogni unitàe delle rela tive connessioni:

I.:’: .::.:.: . : . . ..:: E =-C C WijXiYj. ...::::: i j

Il valore di E in ogni istante dell’esecuzione della rete rappre-senta la posizione della pallina sul foglio di gomma. A questopunto è piuttosto facile dimostrare che la nostra rete ha una“superficie d’energia” con crateri e senza buchi (questo è il teo-rema della convergenza, cioè quello che dimostra che leoscillazioni della rete prima o poi terminano). La dimostrazionesi basa sul fatto che un qualsiasi cambiamento nella rete com-porta una d’minuzione dell’energia e che esiste un minimo (iltra tere): Cd* conseguenza, comunque vadano le cose, la rete ten-

34 Cnpitola 4

Page 42: Apogeo - Reti Neurali Artificiali (1991)

derà a raggiungere il SLIO minimo energetico e a rimanervi. Con-sideriamo un qualsiasi cambiamento che avviene nella rete: saràsenz’altro dovuto al fatto che una certa unità, diciamo Xt, riceveuno stimolo (dalle altre unita) non concorde con il suo attualevalore, cioè di diverso segno. Ad esempio, se l’unita Xi vale +1 e

riceve uno stimolo c WijYj = -4, verrà trasformata in -1. Calco-

liamo adesso la vafrkrzione dell’energia in seguito a questamodifica: con semplici passaggi si può calcolare che la variazio-ne AE dell’energia dovuta alla variazione AXi dell’i-esima unitàdel livello X è:

: . : . . .: : : . <: : :.:: : : . : ../... AE = -AXi C WijYjj:: ::: j

Dall’osservazione fatta prima, si può notare che AXt ha sempre

lo stesso segno di c WijYj, quindi la loro moltiplicazione è sem-i

pre positiva (vi ricordate: più per più fa più, meno per meno fapiù?). Di conseguenza AE è sempre negativa o al limite nulla.Abbiamo dimostrato che un qualsiasi cambiamento dovuto al-l’esecuzione della rete tende a far diminuire l’energia della retefino ad un minimo stabile, quindi è garantito che la rete nonoscilla casualmente ma tende sempre a “rilassarsi” verso unostato stabile.

Ritornando agli aspetti generali, possiamo concludere che con lereti neurali si può realizzare delle memorie associative con ca-ratteristiche molto simili alle memorie degli esseri viventi, vale adire poco precise, poco capienti, ma molto elastiche, robuste eadattabili.

Memoria associativa distribuita 35

Page 43: Apogeo - Reti Neurali Artificiali (1991)

..:.j:i:, ;,;:;:;:i:... . . . . . . .. .:.:.:.,:.,.:.:.:.:.:.......,. ./.: ;:j:i:j:.:

ilye

5 .:

.:::::c.. ::. . . . . . . . . .. . . . .: Simulazione

softwaredi una memoria

associativa

1n questo capitolo descriviamo due programmi scritti in lin-guaggio Pascal per la simulazione sequenziale su computer diuna memoria associa tiva neurale. La relativa versione eseguibileper Personal Computer MS-DOS t; disponibile al pubblico altra-verso le strutture divulgative di RAI-TELEVIDEO. Il primo diquesti due programmi si chiama MEM-ASS e permette di speri-mentare una memoria associativa fornendo “a mano” i valori +1e -1 dei livelli X e Y. Il listato 1 contiene il codice Pascal di clue-sto programma.

Listato 1:” \:. . . . . .

.:.: :.: : ESERCIZIO SU RETI NEURALI.:'Y,., MEMORIA ASSOCIATIVA DISTRIBUITA:.. . . ..,'. PROGRAMMA MEM-ASS.,: A. Mazzetti - 1991:,..,:::,.. . . . . *1:;:jj progrem mem-ass;.:::$:<I var X:array[l..lOO]of integer; (* livello X *).',. Y:array[l ..lOO]of integer; (* livello Y *)::...:: : W:array[l ..100,1..100]of integer; (* matrice dei pesi *).,:.::. .. N,M:integer; (* numero di unita *):. com:char; (* comando utente *):>>. i,j:integer; (* indici *)

Sinuhrzionc software di una memoria associativa 37

Page 44: Apogeo - Reti Neurali Artificiali (1991)

(* acquisisci-X *)procedure acquisisci-X;begin

for i:=l to N do beginwrite('X',i,' ? : '); readln(X[i])

end;writeln;

end;

(* acquisisci-Yprocedure acquisisci-Y;begin

for j :=l to W do beginwrite('Y',j,' ? : '); readln(Y[j])

end;writeln

end;

*1

t* - apprendiprocedure apprendi:begin

acquisisci-X;acquisisci-Y;for j:=l t.0 Y dofor i:=l to N do

I[i, j] :=N[i, j]+(X[i]*Y[j]);end;

----*)

t* funzione di trasferimento Tfunction T(A:integer):integer;begin

if A>O then T:= +l else T:= -1end;

-*1

:::.:.. . .,.: .:: :>.::.A.I::...,.. t*

- emetti-output'1: procedure emetti-output;',::I begin:.. :::. :.: for j:=l to M do writeln(Y[j]:6);

-*1

: . : ../ writeln;en,

.:.....

38 CapiWo s

Page 45: Apogeo - Reti Neurali Artificiali (1991)

t* - eseguiprocedure esegui;var A: integer; cambiato:boolean:begin

acquisisci-X;for j:=l to M do Y[j]:=O;repeat

cambiato:=false;for j:=l to M do begin

A:=O*,for i:=l to N do A:=At(W[i,j]*X[i]);Y[j] :=T(A);

end;for i:=l to N do begin

A.-O--- ,for j:=l to # do A:=At(W[i,j]*Y[j]);if T(A)<>X[i] then cambiato:=true;X[il :=T(A);

end;emetti-output;

unti1 not cambiato;end;

*)

(*procedure modifica;begin

modifica *)

write('Numero di unita del livello X ? (l..lOO): ');readln(N);write('Numero di unita del livello Y ? (l..lOO): ');readln(M);for i:=l to N do X[i]:=O;for j:=l to Y do Y[j]:=O;for i:=l to N do

for j:=l to M doW[i,j]:=O;

end;

(* visualizzaprocedure visualizza;begin

writeln; writeln('unità di input : ');for i:=l to N do write(X[i]:2,' '); writeln;writeln('unita di output: ');for j:=l to M do write(Y[j]:2,' '); writeln;writeln; write(' ':4);for j:=l to W do write(j:2,'Y '); writeln;writeln;for i :=l to N do begin

---*)

Simukazione software di una nrcmoria associativa 39

Page 46: Apogeo - Reti Neurali Artificiali (1991)

:y:. .: . :.: . . write(i:2,'X 1);I:.,..: for j:=l to W do write(W[i,j]:3,' '); writeln;:... ...+..>:. end;. ..\.,:::::j;::: writeln;. . . . .:....::::.::: en,

t* salva *)procedure salva;var f:text; fn:string[20];begin

write('Nome del file in cui salvare i pesi : ');readln(fn);assign(f,fn); rewrite(f);writeln(f,N);writeln(f,M);for j:=l to M dofor i:=l to N do

writeln(f,W[i,j]:6);close(f);

end;

(" carica "1procedure carica:

v a r f:text; fn:string[20]; r:integer;begin

write('Nome del file da cui caricare i pesi : ');readln(fn);assign(f,fn); reset(readln(f,r);if r=N then begin

readln(f,r);if r=M then begin

for j :=l to M dofor i:=l to N do

readln(f,W[i,j]);end else writeln('errore: M letto da file e ,r,' anziche ',M)

end else writeln('errore: N letto da file è ,r,' anziché ',N);close(f);

end;

.i: .'.' t* - main -").. : . : :

. : : : . : bgin..\\. ..\.: . : . : :, . . . :. . .modifica::.j1 repeatj:j..<,..:.... . . . .writeln;write('Apprendi Esegui Visualizza Salva Carica.:.j;i:; Modifica Fine: ');::i:::...:. . readln(com);.>':::.,. case com of

40 cfzpilolo 5

Page 47: Apogeo - Reti Neurali Artificiali (1991)

:.:.,.. . ..a. ..\.. . . .:......: 'a' :::.:. apprendi;:::....: ::: 'e' :esegui;::.j ‘V’ :visualizza;,Q)..::.:. ‘8’ :salva;.:::.::j: 'c' : carica:::::.j:: : ‘m’ :modifica;

ji)). . . . . .:.::, end;. ...:untii com='f'

z$ end.'..

Listato 1: Codice Pa-scal dc1 programma MEM-ASS per la simulaziorlescqm.xzialc di nxmoric associatizx murali.

Appena lanciato, questo programma chiede all’utente il numerodi uniti dei livelli X e Y e poi appare un menù:

.;gj: C : > W-ASS:..:'lt: Numero di unita del livello X ? (l..lOO) : 6;::j; Numero di unita del livello Y ? (l..lOO) : 42; Apprendi Esegui Visualizza Salva Carica Modifica Fine: _..:.:

Qui bisogna rispondere con una lettera minuscola (a,e,v,s,c,m,f):il comando “a” (Apprendi) acquisisce il valore delle unità deilivelli X e Y e poi fa apprendere dalla rete l’associazione, adesempio:

Apprendi Esegui Visualizza Salva Carica Modifica Fine: aXl?:fx2 ? : -1X3?:1x4 ? : -1X5?:1X6 ? : -1Yl?:lY2 ?:lY3 ? : -1Y4 ? : -1Apprendi Esegui Visualizza Salva Carica Modifica Fine: vunita di input:1 -1 1 -1 1 -1

unita di output:1 1 -1 -1

Sitmlazionc software di una mw~orilr associativa 41

Page 48: Apogeo - Reti Neurali Artificiali (1991)

:.:.,.:..... . . . . ..:..:::. 1Y 2Y 3Y 4Y:::::::.:::, : : : : : 1 x 1 1 -1 -1. . . . .. . . . . .::::..:::.:: 2x -1 -1 1 1. . . . . .2.. . .. .. . . ., : : : : : 3x 1 1 -1 -1:..:,.>:.. ..\...:.. l-1 1 1j::i...A... 5x 1 1 -1 -1:.,.:.. . . . . .:....2.2... . . . ..i... 6X -1 -1 1 1. :.:$ Apprendi Esegui Visualizza Salva Carica Modifica Fine: _:....

Si noti l’uso del comando ‘7 (Visualizza) per avere una stampaa video della matrice dei pesi. Il comando “e” (Esegui) acquisi-sce il valore delle unità del livello X e poi fa partire la rete: adogni oscillazione viene visualizzato il livello Y. Nel listato 1 sipuò notare nella procedura “apprendi” la formula di Hebb enella procedura “esegui” il loop in cui vengono fatte le “andate”e i “ritorni” fino a quando non cambia più nulla. Si noti anchela funzione di trasferimento T.

1 due comandi “s” e “c” (Salva e Carica) servono per salvare sufile e caricare da file la matrice dei pesi W e il numero delleunità N e M. Il comando “111” (Modifica) permette di ridefinireil numero delle unità dei due livelli e riazzera la matrice; il co-mando ‘7” (Fine) fa terminare il programma.

L’altro programma si chiama IMMAGINI ed è una applicazionedella memoria associativa nel campo del riconoscimento delle im-magini (figura 13).

Qui i dati da associare sono matrici di pixel in cui ad ogni pixelcorrisponde una unità delle rete: al colore bianco corrisponde ilvalore +1 e al nero -1. Un esempio di possibile associazione fradue immagini può essere quella fra il minuscolo e il maiuscolodi caratteri:

..::::. . .. ..xxx..x... . . . . . . . . . . . .::. ..x...x.x... . . . ..xx.....

.x.....xx... . . ..x..x....x......xx... . ..x....x...x * - . . ..xx... . .xmooooH....,.,,<. ‘ . ’ .x.. . . .)M.. . .x........x..

, , , j . . . . .X x.x..x X . . . . . . . . ..x.:.:; . ..xxx...xx. . . . . . . . . . . . ...::

Ogni immagine deve risiedere su un file di testo in cui i primidue numeri devono contenere il numero di righe e di colonne ele successive righe contengono l’immagine espressa attraverso i

42 Cu~Jitolo 5

Page 49: Apogeo - Reti Neurali Artificiali (1991)

Figura 13. Un’applicazione della memoria associativa nel campodel riconoscimento delle immagini

caratteri “punto” e “X maiuscola”; tale file deve essere realizza-to dall’utente tramite un qualsiasi editor. Attenzione a, nonconfondere questa matrice di pixel con la matrice dei pesi dellarete .

Lanciando il programma IMMAGINI si ottiene un menù ugualea quello del programma MEM-ASS, però cambia il tipo di ela-borazione (vedi listato 2): il comando “a” (Apprendi) infatti nonchiede più l’inserimento manuale dei valori +I e -1, ma i nomidei file che contengono le immagini. Il comando “e” (Esegui)richiede il nome del file dell’immagine X e poi sputa fuori avideo l’immagine Y associata. Gli altri comandi sono uguali aquelli già visti nel programma MEM-ASS.

Simulazione software di una memoria associativa 43

Page 50: Apogeo - Reti Neurali Artificiali (1991)

Listato 2:

:.:::.:::.:.:.:. (*: . : .: . > : .. . . . .. : . :::.:. . . . ESERCIZIO SU RETI NEURALI./A3:::../.. . . . .. . . . . MEMORIA ASSOCIATIVA DISTRIBUITA. ../.:::::;...:::j PROGRAMMA IMMAGINI. . .

:j::., A. Mazzetti - 1991*)

. ...I. . . . . ..A.. . .2 program irmnagini;.j::? var X:array[l..lOO]of integer;:.y (* livello X *)j:j:,:::..:. Y:array[l ..lOO]of integer;::: (* livello Y *). . .:..:.:.:::..:.:. W:array[l ..100,1..100]of integer; (* matrice dei pesi *):::..::::::::: N,W:integer;. . . (* numero di unita *); . . .;:..:.:... com:char;. . (* comandi e modalita di I/O *):.:.,:. ..;,:.:.: i,j,rigx,colx,rig~,col~,r,c:integer; (* indici vari *): ::.,..:.....' t* acquisisci-X *1ii::::

::;:. procedure acquisisci-X;. . ...>... . . . . .,.... var k:char; f:text; fn:string[20]; nn:integer;:.:.,:..:.. :.::.:.. . ..: begin. ..::. . .write('Nome file dell"immagine X : ');readln(fn);;:j.: assign(f,fn); reset(./.. . . .. . . . . ..:.::.. . . . readln(f,nn);23:,.:.... ...:..: if nn=colx then begin. :

readln(f,nn);if nn=rigx then begin.:..:. j.:=l*,:,:..:::.:.: for r:=l to rigx do begin::..::. for c:=l to col-x do begin

read(f,k);write(k);. if k=' .'.: :.: then X[i]:=-1 else X[i]:=l;,.:.:.:. :.: i:=i+l;: .,j::.,,::::. end;:....:..:::.: readln(f);writeln;.,.::'. end: :j;:.,.... end else writeln ('errore: il file ha ',M,' righe')::::,:. .. .:..:; end else writeln('errore: il file ha ',nn,' colonne');:.<.,. .::.. close(f);,.>>. .. . . ad..: I.:...y.::. . :: . .. . .:.: ':: (* acquisisci-Y "1.':.,.

:::. procedure acquisisci-Y;',',..var k:char; f:text; fn:string[20]; nn:integer;: ::

44 Cqdolo 5

Page 51: Apogeo - Reti Neurali Artificiali (1991)

beginwrite('nome file dell"immagine Y : ');readln(fn);assign(f,fn); reset(readln(f,nn);if nn=coly then beginreadln(f,nn);if nn=rig_y then begin

l- t'.=1.

for r:=l to rig_y do beginfor c:=l to ~012 do begin

read(f,k);write(k);if k=’ .I then Y[j]:=-1else if k=‘?’ then Y[j]:=Oelse Y[j]:=l;j:=jtl;

end;readln(f);writeln;

endend else writeln ('errore: il file ha ',M,' righe')

end else writeln('errore: il file ha ',nn,' colonne');close(f);

end;

: : : j (*'z procedure apprendi::.:b e g i n:::..y:::,. acquisisci-X;

acquisisci-Y;

- apprendi *)

..". for j :=l to M do,.. . . . .:.:.. . for i:=l to N do.'::j,:.. W[i,j]:=W[i,j]t(X[i]*Y[j]);.::.//. a d -. . .: ::,: I::.:..: :. . . . . .. ..\.. . . . .::>: . . .::: . . : , ... .::::::.,.,:.:.:,:::::.:. (" funzione di trasferimento Tv: function T(A:integer) :integer;../..:..\$ begin. ..:j :. . . . . if A>O then T:= tl else T:= -1

- - - *1

: : end;':::. . :.:.: :

Page 52: Apogeo - Reti Neurali Artificiali (1991)

. .: : : . : .. : : : : :.. .t* - emetti-output *)procedure emetti-output;begin

j:=l; writeln;for r:=l to rigJ do begin

for c:=l to ~012 & beginif Y[j]>O then write('X') else write('.');j:=jtl;

end;writeln;

. . . . .. . : : : j end;..:.:.

..:::..::....::::.: end;. . . . .. . . .:....:..::.::.:.i:;: :

t* - esegui

procedure esegui;v a r Azinteger; cambiato:boolean;begin

acquisisci-X;for j:=l to W dc Y[j]:=O;repeat

cambiato:=false;for j:=l to M do begin

A--O-.- Ifor i:=l to N do A:=At(W[i,j]*X[i]);Y[jl :=T(A);

end;for i:=l to N do begin

A--O -.- Ifor j:=l to M dc A:=At(W[i,j]*Y[jJ);if T(A)<>X[i] then cambiato:=true;X[i] :=T(A) ;

end;emetti-output;

unti1 not cambiato;end;

*)

; . : . , .. , .>. . . .. : . 1” modifica.,... *):.:..;;;j;; procedure modifica;,::::::.... ../jjy.s hgin:.:::..... ...:: write('Quante righe nell"immagine X ? : '); readln(rigx);.:.:....j... . write('Quante COlOMe nell"immagine X ? : '); readln(co1x);. .:.:,:::'. writeln;

46 Capitolo s

Page 53: Apogeo - Reti Neurali Artificiali (1991)

write('Quante righe nell"immagine Y ? : '); readln(rig>);write('Quante colonne nell"immagine Y ? : '); readln(col_y);N:=rigx*colx;M:=rigg*col_y;if (N>lOO)or(M>lOO) then writeln('Immagine troppo grossa.

Ripetere.');if (N<lOO)and(M<199) then begin

for i:=l to N do X[i]:=O;for j:=l to Y do Y[j]:=O;for i:=l to N do

for j :=l to M doW[i,j]:=O;

end;end;

t* - visualizzaprocedure visualizza;begin

writeln; writeln('unità di input : ');for i:=l to N do write(X[i]:2,' '); writeln;writeln('unita di output: ');for j:=l to M do write(Y[j]:2,' '); writeln;writeln; write(' ':4);for j :=l to M do write(j:2,'Y '); writeln;writeln;for i:=l to N do begin

write(i:2,'X ');for j:=l to M do write(W[i,j]:3,' '); writeln;

ad;writeln;

end;

(* salva "1procedure salva;var f:text; fn:string[20];begin

write('Nome del file in cui salvare i pesi : ');readln(fn);assign(f,fn); rewrite(f);writeln(f,N);writeln(f,M);for j:=l to M do

for i:=l to N dowriteln(f,W[i,j]:6);

close(f);end;

Siniirlnzionc softwnrc di zuza mmoria associcztiva 47

Page 54: Apogeo - Reti Neurali Artificiali (1991)

'+.::.: : : .::: : : : J t* carica *).A.I'li: procedure carica;; var f:text;,:.. : fn:string[20]; r:intsger;. . . .. . . .

:i$; begin..:..:j. :.:. write('Nome del file da cui caricare i pesi : ');readln(fn);. . . . .. . . . ..:....::. assign(f,fn); reset(:..:::..:::.. . . . . .readln(f,r);. . . .;:..::.:.:::::: if r=N then beginI ;::.. . . . .. . . .readln(f,r);.::::..:..:. . ..A.:::j

if r=M then beginfor j :=l to M do

.. for i:=f to N doj::I..

readln(f,W[i,j]);..:',.j: j end else writeln (’ errore: M letto da file _ ‘ , r, ' anzich-..:.. ‘ tw.,.:'.. ...: end else writeln('errore: N letto & file B ',r,' anziché ',N);.: . . close (f) ;./.;.;:.c..:.... end;. . . . .. . . . .: ::,:..:..:..:

(* - main --*)

beginmodifica;repeatwriteln;write('Apprendi Esegui Visualizza Salva Carica

Modifica Fine: ');readln(com);case com of'a' :apprendi;'e' :esegui;‘V’ :visualizza;‘8’ :salva;‘C’ : carica;lrn' :modifica;l3Ild;

unti.1 cos‘f'end.

Listato 2: Codice Pascal del yrograltaua IMMAGINI per fa associiziomdi imrnagir~i.

48 Cqdtolo 5

Page 55: Apogeo - Reti Neurali Artificiali (1991)

Supponiamo di avere creato i seguenti file di immagini:

file A.X e A.Y:812. . . XXX..X...X. . . . . X.X...

.X.....XX...

X . . . . . . Xx.. .X . . . . . . Xx.. *.X.....XX...

X. . . . . X.X. .x. . . XxX.. .xX.

file B.X e B.Y:

812. . . . . Xx.....

. . . . x..x....

x x..... . . . . .

x X x . . . .. . . . ..-X.xX......

. .xX.. .xXx..xx.x...x..... . . . XxX.....

file C.X e C.Y:

8 812 12. . . . . . . . . . . .

. . . . XxXx.. . .

..XX....X...

.X..........X . . . . . . . . . . .

.X..........

..XX....X...

. . . . XxXx.. . .

. .xxxxxxX. * *

.x.......x..X . . . . . . . . . . .

X . . . . . . . . . . .X . . . . . . . . . . .X . . . . . . . . . . ..x.......x..

. .xcQcca.. .

812. . . . . . . . . . . .

. . . . . Xx.....

. . . . x. .x.. . .

. . . x x.... . . .

- .XXXXXXXX...x........x.X . . . . . . . . . . X

. . . . . . . . . . . .

812.wxtxx......x.....x....

.x.....x....

.lorxxxx.. . . *

.x.....x....

.x......x...

.x.....x....

.xxxxxx.....

Sirmrlmioiic softuwrc di mfl mwrori~z msocidiun 49

Page 56: Apogeo - Reti Neurali Artificiali (1991)

Supponiamo di avere alcune versioni distorte di queste immagini:file Al.X:

. . . XXX..X...X. . . . . X.X...

. . . . . . Xx.. . .X . . . . . . Xx.. .X . . . . x.xXx...x..x..xx...X. . . . . X.X...

. . . xxx....x.

file B1.X:

. . . . . Xx.....

. . . . XX.X....

..X..XXX....

..X.XX......

. .XX.X.XCI..xX.x.x.x..... . . . XxX.....

Quella che si trova di seguito è Lma traccia dell’uso del pro-gramma IMMAGINI:C:> IMMAGINIQuante righe nell'immagine X ? : 8Quante colonne nell'inxnagine X ? : 12Quante righe nell'immagine Y ? : 8Quante colonne nell'immagine Y ? : 12

Apprendi Esegui Visualizza Salva Carica Modifica Fine: aNOme file dell'indagine X : A.X

. ..XXX..X...X. . . . . X.X...

.X.....XX...X . . . . . . Xx.. .X . . . . . . Xx.. ..X.....XX...X. . . . . X.X. .x

. . . m...xx.

50 Cnpifolo 5

Page 57: Apogeo - Reti Neurali Artificiali (1991)

..:::::..2 Nome file dell'imrtagine Y : A.Y./A. ..\.: j j.,:.../.:.>: . . . . . . . . . . . .. .::

. . . . . Xx...... .. . . . x. .x.. . .., . . . . . . .x x...

. .-. .: :,: .x.. . . . . . .x.

.: . ...:. .: X.:

. ...'. . . . . . . . . . . . .;:;.:B:'Agp rendi Esegui Visualizza Salva Carica Modifica Fine: a$ Nome file dell'imnagine X : B.X:..... . . .:::. . . . .. . . .. . . . .. . . . ..A.... ...:.A... . . . . . Xx.......,.:.. . . .;::,.. . .. . . . x..x....

. ..x...x..... . :.x Xx....: . . . . .

:c:.. -.X.X.X......,.. .': ,: ::: . .xX.. .mx...,:,..'jl: Xx . x . . . x . . . .

. .xXx.. . * ..:,; . .:::::.p.: nome file dell'hgine Y : B.Y::...:.:..:.:: .mxxxx.. . . .. . . ..,:::.x.....x....:.:.; .x.....x......, ,:

.xxxxuc.. . . *.x.....x....

.x......x...

.x.....x...... .xlcQccx.. . . .': .:: . .. . :.:j;; Apprendi Esegui Visualizza Salva Carica Modifica Fine: a.j; Nome file dell'inxmgine X : C.Xj:;::.:.::::.::::. . .. . . . . .:,:. . . . . . . . . . . . .:.:..,..'.' . . . .macx.. . ..:. .., ..XX....X...

.x . . . . . . . . . .::x...........

.x.. . . . . . . . ..'

..xx....x....::'.: . . . . xX%x.. . .

Sirnulazionc software di una memoria associativa 51

Page 58: Apogeo - Reti Neurali Artificiali (1991)

nome file dell'imnagine Y

. .xxYcGax.. .

.x.......x..X . . . . . . . . . . .X . . . . . . . . . . .X . . . . . . . . . . .X . . . . . . . . . . ..x.......x... .xlmxxxx.. .

: C.Y

Apprendi Esegui Visualizza Salva Carica Modifica Fine: eNome file dell'imwgine X : A.X

. ..XXX..X...X. . . . . X.X...

.X.....XX...X . . . . . . Xx.. .X . . . . . . Xx.. ..X.....XX...X. . . . . X.X. .x

. . .x%x.. .xX.

. . . . . . . . . . . .

. . . . . Xx.....

. . . . x. .x.. . .

. . . x x.... . . .* .-. ..x........x.X . . . . . . . . . . X. . . . . . . . . . . .

Apprendi Esegui Visualizza Salva Carica Modifica Fine: e

Nome file dell'imnagine X : B.X. . . . . Xx...... . . . x. .x.. . .

x x..... . . . . .x Xx..... . . . .

..X.XX......

. .xX.. .xXx..xx.x...x..... . . . XxX.....

52 Capitolo 5

Page 59: Apogeo - Reti Neurali Artificiali (1991)

.xxaxx.. . . .

. X . . . . . X . . . .

.x.....x....

.xmcca.. . * .

. x . . . . . x . . . .

. x . . . . . . x . . .

. x . . . . . x . . . .

.xmowc.....

Apprendi Esegui Visualizza Salva Carica Modifica Fine: eNome file dell'immagine X : A1.X

. . . XxX. .x.. .X. . . . . X.X...

. . . . . . Xx.. . .X . . . . . . Xx.. .X . . . . x.xXx...x..x..xx...X. . . . . X.X...

. . . XXX....X.

. . . . . . . . . . . .

. . . . . Xx.....

. . . . x..x....

. . . x x.... . . .

. .-. .

.x........x.X . . . . . . . . . . X. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . Xx.....

. . . . x. .x.. . .

. . . x x.... . . .

. .xxxaxxx..

.x........x.X . . . . . . . . . . X. . . . . . . . . . . .

Apprendi Esegui Visualizza Salva Carica Modifica Fine: eNome file dell'immagine X : B1.X

Page 60: Apogeo - Reti Neurali Artificiali (1991)

. . . . . Xx.....

. . . . xX.X....

..X..XXX....

..X.XX......

. .xX.x.=. .xX.x.x.x..... . . . XxX.....

.xxxxQc.....

.x.....x..... . ..x.. . ..x.

.xxxxxx..

.x.. . . .x.

.x.. . . . .x

. . .

. . .

. . *. x . . . . . x . . . ..xxxmx.. . . .

.xxxax.. . . .

.x.....x....

.X.....X....

.xxxxxx.. . * *

.X.....X....

.x......x...

.x.....x....

.xxmxx.. . . .

Apprendi Esegui Visualizza Salva Carica Modifica Fine: sNome del file in cui salvare i pesi : irmagini.wApprendi Esegui Visualizza Salva Carica Modifica Fine: fc:>

54 Capitolo 5

Page 61: Apogeo - Reti Neurali Artificiali (1991)

Reti “backI I propagation”

1 1 modello di rete neurale visto nel capitolo precedente è moltosemplice è facile da capire, ma anche molto limitato. La sempli-cità risiede sia nella topologia di rete (due soli livelli conconnessioni totali bidirezionali), sia nelle singole unita (solo va-lori +1 e -1, con funzione di trasferimento a gradino), sia nellalegge di aprendimento (formula di Hebb). 1 limiti di cluesta retesono molto pesanti: non riesce ad apprendere tutto ma solo datiortogonali, può eseguire solo associazioni ma non funzioniclualsiasi, è lenta in esecuzione perché oscilla.

L’obiettivo che ci prefiggiamo ora è lo studio di un modello direte più generale e più affidabile: ad esempio una rete che rico-nosce un’immagine dovrà avere nel livello X tante unità quantisono i pixel e nel livello Y una sola unità che indica un si/no.Essendoci una sola unita nel livello Y, vengono a cadere tutte legaranzie del modello di memoria associativa: è quindi auspica-bile un modello di rete più generale.

Rispolveriamo qualche teorema visto nel capitolo 3 e ragioniamocisu. Innanzitutto consideriamo la topologia di rete: alcuni teore-mi affermano che una rete con due soli livelli non potra maiapprendere certe funzioni, chiama te dai materna tici funzioni “li-nearmente non separabili”. Un facile esempio di funzionelinearmente non separabile è la funzione logica XOR (in italiano“0 esclusivo”, in la tino “aut aut”); l’espressione A XOR B valevero qrando è vero A o B ma non tutti e due. Senza addentrarciulterionnente nel merito di questa classe di funzioni, osservia-mo che l’architettura a livelli di una rete limita le sue capacita dicalcolo. Fortunatamente, però, l’adozione di più di due livellipermette di superare qreste difficoltà.

Reti “back propgation” 55

Page 62: Apogeo - Reti Neurali Artificiali (1991)

Come già visto nel capitolo 3, il teorema di Hecht-Nielsen affer-ma che una qualsiasi funzione F può essere computata da unarete neurale organizzata in tre livelli, con connessioni totali fra ilivelli senza cicli (rete non ricorrente, “feed forward network”).Con un’architettura di questo tipo vengono eliminati sia i pro-blemi di ortogonalit(i dei dati da apprendere, sia i problemi dicapacit di memoria della rete, infatti, l’inserimento di uGti1 na-scoste nel livello intermedio fornisce alla rete la potenza dicalcolo necessaria per svolgere qualsiasi funzione. In altri termi-ni, il livello intermedio di unità serve alla rete per formarsi unasua rappresentazione interna deI problema, necessaria per “ca-pire cosa sta facendo” e fornire un output appropriato. In alcunicasi può essere conveniente adottare più livelli intermedi anzi-ché un solo livello di grosse dimensioni: per semplicità nontratteremo questi casi in questa sede.

Un’altra miglioria che si può introdurre in una rete neurale ri-guarda il valore delle singole unitA: anziché valori bipolari{-l,+l}, adottiamo valori reali qualsiasi compresi in un certo in-tervallo, ad esempio {O..l). In questo modo, l’input X e l’outputY della rete sono insiemi di numeri reali anziché di valori binari,con notevole vantaggio di espressività. L’introduzione di valorireali implica la necessità di modificare anche la fomIa della fun-zionedi trasferimento T delle unità: non più a gradino, ma asigmoide. Una funzione di trasferimento sperimentata con suc-cesso è la seguente:

In figura 14 compare il grafico di questa funzione.

Anche questa funzione, come quella a gradino delle memorieassocia tive, è “centrata” sullo zero; questo implica che ogni uni-ti della rete è “accesa” (più o meno intensamente) quando lasua attivazione è positiva ed è “spenta” quando quando negati-va. Questo non è sempre l’ideale, perché in molte applicazionisarebbe più opportuno avere delle soglie su valori qualsiasi di-versi per ogni unità. Ad esempio, la k-esima unit3 tende adaccendersi quando In sua attivazione è vicina al valore -18; valea dire, una sigmoide centrata sul valore Ak=-18. Per tenere con-to di questo fatto modifichiamo la formula dell’attivazione delleunità in questo modo:

56 Cnpitob 6

Page 63: Apogeo - Reti Neurali Artificiali (1991)

Oi A

Figura 14 Funzbne di tasferimenfo a sigmoide per unità con valoredi attivcnone reale fra zero e uno.

.,..

.3:. A .,::p

::I.:.. . .::>:: Ak = cwjkxi - Bk:jj:; i:c:

dove il termine Bk rappresenta la soglia della k-esima unit5, cioèil punto dove centrare la sigmoide; chiameremo tale soglia Bits,dall’inglese “tendenza”, per esprimere il fatto che in assenza distimoli l’unità tende ad assumere quel valore.

1 bias delle diverse unità possono essere diversi fra loro e dipendo-no dall’applicazione, cioè dalla funzione che la rete deve ,sapersvolgere. In altri termini, il valore Bk dovrà essere appreso allastessa stregua dei pesi W: questo suggerisce di considerare il biascome il peso di una connessione fittizia verso una “uniti fanta-sma” che vale sempre 1. Supponendo di avere N unità nel livelloX di una rete, il bias sari realizzato attraverso una (N+l)-esimaunità il cui valore è fisso ad 1 e le cui connessioni verso le altreunità rappresentano l’opposto del loro bias. La formula dunqueritorna ad essere quella di prima:

. . : . . .N+l

Ak = CWikXii=l

con l’unica differenza che l’indice i varia da 1 a N+l anziche N.

Reti “bnck propption” 57

Page 64: Apogeo - Reti Neurali Artificiali (1991)

Livello di output

NY unità

Livello di input Bias

Figura 15. Struttura di una rete back propagation

Riassumendo, per ottenere una rete in grado di eseguire unaqualsiasi funzione Y=F(X) è necessaria una struttura come quel-la di in figura 15, in cui le unità hanno valori di attivazionereali, la funzione di trasferimento è a sigmoide e la topologia èorganizzata su tre livelli di cui uno di input (livello X, aventeNX unità più il bias), uno intermedio (livello H, dall’ingleseHidden=nascosto, avente NH unità più il bias) e uno di output(livello Y, con NY unità). La relativa struttura dati per computersarà:. .. . .

i%ii X:array[l..NXtl] of real; (* unità. del livello X t bias*): .:,j:jj: H:array[l..NHtl] of real; (* unita del livello H t bias*)'I:ij Y:array[l..NY] of real: (* unitàr del livello Y*):.::lj Wl:array[l..NXtl,l..NH] of real;:.::.:' (*matrice dei pesi primo livello*)::'. W2:array[l..NHtl,l..NY] of real;:.. ::. . . . . .:.::,:. . . . . . (*matrice dei pesi secondo::.::,. :.. ...: livello*):.::.

Page 65: Apogeo - Reti Neurali Artificiali (1991)

A differenza del modello di rete visto per le memorie associati-ve, questo modello è privo di connessioni cicliche, infatti ilegami fra le unità sono solo in una direzione; questo implicache l’esecuzione della rete sarà estremamente veloce, infatti av-viene in una sola passata (per essere precisi, essendoci tre livellidi unità, vi saranno due passaggi: uno dal livello di input aquello nascosto e un altro al livello di output). L’algoritmo di

:,y.;: esecuzione della rete sarà dunque::::.:,:::. . . . . .procedura esegui;. . . ..,.. . .: acquisisci dato X;:.j:;:.: azzera livelli H 0 Y;:::...::::..: per ogni unita k del livello Wj.,::;. .. . .::.>:. calcola la sua attivazione (con bias). . . . .. . . . . ..P...:.. A=SUbC(Wl[i,k]*X[i]);

::: H[klfl(A);::..y. fine;: :.: per ogni unità j del livello Y::..:>..,. . .:.:: calcola la sua attivazione (con bias)..:.:' :::. A=SUMk(W2[k, j]*H[k]);::::::. Y[jl=T(A);:..\..:::. .. . . fine;. . . ...I. ..A.. . visualizza dato Y;.'.':.:.,:. . .:....\.. fine;. . . . .. .. . . . . ...:... . . ..,

. .:fjj

funzione T(A)::., .: T=l/(ltexp(-A));.:., fine:

Ciò che è ciclico nelle reti back propagation è il meccanismo diapprendimento: infatti, per ottenere una giusta combinazionedei pesi non è più sufficiente la formula di Hebb, ma è necessa-ria una formula che operi per e,rxhe (vedi capitolo 31, vale adire che aggiusti i pesi per piccoli passi ciclando più volte sugliesempi da apprendere.

Il meccanismo di apprendimento funziona in questo modo: da-to un insieme di esempi nella forma (X,D), ove X rappresental’input alla rete e D l’output desiderato, la rete inizialmenteprova ad eseguire l’input X e vede quale output Y salta fuoricon gli attuali pesi; questo viene confrontato con l’output desi-derato D e si misura l’errore commesso; quest’ultimo viene“propagato all’indietro” aggiustando i pesi (da qui il nome“back propagation”). Il tutto viene ripetuto per ogni esempio ecostituisce una singola epoca di apprendimento. Le epoche

Reti “back propagation” 59

Page 66: Apogeo - Reti Neurali Artificiali (1991)

vengono poi ripetute fino a che l’errore commesso non rimanesotto ad un certo errore ammesso. L’algoritmo di simulazione di

. questo processo è:. , .. ..' procedure apprendi::. ripeti (* epoche *).:.:.::j: per ogni esempio {X,D}..,... esegui la rete con X e trova Y;

:::.: calcola errore della rete nel singolo esempio;

::. aggiusta i pesi Wl e W2;:... . . . fine;..::::..: :..:.: calcola errore dell'intera epoca;:...... .. . .. finch6 errore dell'epoca inferiore ad errore amnesso

.: fine:

Vediamo ora come effettuare la modifica dei pesi. Ricordandoche le unità hanno valori continui fra zero e uno, possiamo defi-nire l’errore Ej commesso dalla j-esima unità del livello Y comedifferenza dal valore desiderato, cioè:

. . Ej = Dj -Yj

L’errore sarà dunque un numero compreso fra -1 e +l, in cuizero significa che non si è avuto alcun errore, -1 e +1 significanoche si ha sbagliato del tutto in un senso o nell’altro. L’erroreglobale dell’intera rete durante la presentazione di un singoloesempio è concepibile come la somma degli errori Ej commessida ogni unita Yj, però se facessimo una semplice somma alge-brica, rischieremmo di annullare gli errori opposti: ad esempio,se Y1 ha commesso un errore di +l e Y2 un errore di -1, la lorosomma 6 zero e questo potrebbe essere interpretato come assen-za d’errore. Per ovviare a questo inconveniente, è sufficientedefinire l’errore globale della rete E come somma dei quadratidegli errori, ottenendo una grandezza più significativa (persemplificare alcuni calcoli è più opportuno dividerlo per due):

% E=kZ(Dj-Yj)2. . . . j

Supponiamo, quindi, che in seguito alla presentazione di uncerto esempio la rete abbia commesso un certo errore E: questoè dovuto al fatto che i pesi delle connessioni non erano buoni.Consideriamo uno qualsiasi di questi pesi, ad esempio quelloche connette f-k con Yj, cioè w&j. Se w&j fosse stato diverso, larete avrebbe dato un errore diverso. Consideriamo l’andamento

Page 67: Apogeo - Reti Neurali Artificiali (1991)

dell’errore E al variare del valore di w&j: questo avrà una certaforma strana come quella di fipra 16.

Figura 16. Andamento dell’errore della rete in funzione di un peso.

Il valore di w&j corrispondente al minimo di quella curva(punto C in figura 16) è proprio quello che cerchiamo: se tutti ipesi della rete fossero quelli corrispondenti al rispettivo mini-mo, la rete non darebbe più errore, cioè avrebbe imparatocorrettamente. Il problema è dunque quello di trovare il valoredi w&j corrispondente al minimo; si tenga presente però che laforma della funzione dipende da tutti gli altri pesi della rete esiccome da un’epoca all’altra ogni peso della rete cambia, inogni epoca avrò a che fare con funzioni di forma sempre diver-sa. Il vero problema è quello di trovare il minimo di unafunzione in uno spazio N-dimesionale, che si traduce nel pro-blema di trovare un insieme di minimi che vadano d’accordofra di loro in spazi bidimensionali. Purtroppo non esiste unaformula magica per trovare quest’insieme di valori, ma fortuna-tamente esiste una tecnica per arrivarci per piccoli passi, tecnicache i ma tematici chiamano &xesa del gradiente.

L’idea di base di questa tecnica è quella di partire da un certopunto, ad esempio il punto A nella figura 16 e calcolare lì la

Reti “back propagation” 61

Page 68: Apogeo - Reti Neurali Artificiali (1991)

derivata della funzione. Ricordiamo che la derivata di una fun-zione in un certo punto è un numero che esprime quanto quellafunzione “pende” in quel punto: ad esempio, in riferimento allafigura 16, la derivata nel punto A sarà un numero negativo pic-colo per indicare che in A la funzione decresce di poco; nelpunto B sarà un numero negativo grande, infatti in B la funzio-ne è più ripida; nel punto C la derivata è nulla e in D è unnumero positivo, per indicare che la funzione è crescente. Latecnica di discesa del gradiente consiste nel partire da un puntoqualsiasi e fare uno spostamento inversamente proporzionale al-la derivata in quel punto. Se ad esempio si partisse da B,essendo la derivata in B negativa, si farà uno spostamento posi-tivo, avvicinandosi a C; se invece fossimo partiti da D, essendola derivata positiva avremmo fatto uno spostamento all’indietro,avvicinandoci anche in questo caso a C. Ripetendo in ciclo ilprocesso, il punto C viene raggiunto per piccoli passi e non piuabbandonato, infatti in C la derivata è nulla, quindi lo sposta-mento è nullo. In conclusione, la formula per trovare il pesow&j che dà errore minimo è la seguente:

: : . : ... . .j:: : . :.//..\.I. . . . . .. . . . .. . .: . .: .:::

3EAW2kj = -Eaw2kj

dove E è una costante di proporzionalità chiamata fasso di ap-

prcndinzcnfo, e =$& è la derivata rispetto al peso w&j

dell’errore commess: dalla rete durante la presentazione di uncerto esempio.

Facendo alcuni passaggi matematici (riportati in appendice diquesto capitolo), è facile sviluppare questa derivata, ottenendo::.\../\../.... . . . . .. ..\../.... . . . . .. . . . . .. . . . . .AW2kj = &6jHk. . . ..i.... A . . .. .. . . . . .. . . . ..//..\.:.....I\.::. . Sj=(Dj-Yj)Yj(l-Yj)

; . : : ..:. E = zulore quakksi consi@&ile fra 0.1 e 0.9: _Queste sono le formule per l’apprendimento dei pesi W2, cioèquelli che vanno dal livello nascosto H al livello di output Y.Passiamo ora all’apprendimento dei pesi Wl, cioè quelli delleconnessioni del livello X col livello H. La tecnica di calcolo è Iastessa, però vi è una difficoltà in più dovuta al fatto che dovre-mo considerare l’errore commesso dalle unità nascoste e questonon è immediato. L’idea di fondo è quella di propagare l’errore

62 Capitolo 6

Page 69: Apogeo - Reti Neurali Artificiali (1991)

all’indietro dal livello Y al livello H “pesandolo” coi valori W2(prima della loro modifica). In altre parole, se l’unità Yi ha com-messo un certo errore, questo sarà stato proveniente da unerrore commesso dalle unità Hk e propagato a Yj attraverso ipesi w&j. Se ripercorro all’indietro i legami W2, sono in gradodi ricostruire l’errore commesso da Hk. Traducendo questa ideain formule ma tema tiche abbiamo:

: : . : .. ../.. ..\.: : : . . :. . : . : .:::::. ..jj: . . .. . :

f3EAW1 ik = -&-aw1 ik

con passaggi matematici analoghi a quelli visti prima (riportatiin appendice), otteniamo:. . . .. ..\.. ../.,:::::.\\..\\.. . . . . .AW1 ik = &&Xi. . . . . .

Hk (l-Hk)

Si noti la ricorsività nella formula per il 6, che corrisponde allapropagazione all’indietro dell’errore. Per comodità, la sommato-ria che compare nella formula di 8k verra chiamata erroresull’unità Hk e denotata con Err-H[kl.

Riscriviamo dunque l’algoritmo di apprendimento ‘back propa-. . . . . , ga tion”:. . . . .::::..:::::::. . . . . . procedura apprendi;. . . . ...::::..: :.::..: ripeti (* epoche *)., :.:.:.;..:...A,.

,.:.:.. . ...:::. . :..:

per ogni esempio {X,D}esegui la rete con X e trova Y;backpropagate;

fine;calcola errore dell'intera epoca;

PinchB errore dell'epoca inferiore ad errore ammssofine:

procedure backpropagate;per ogni unith j del livello Y (* aggiusta W2 e

calcola ErrH *)delta := (D[j] - Y[jJ) * Y[j] * (1 - Y[j]);per ogni unità k del livello H (compreso bias)

Err-H[k] := ErrH[k] + (delta * W2[k,j]);W2kjl := W2[k,j] + (epsilon * delta * H[k]);

fine;fine:

Reti “6ack propagation” 63

Page 70: Apogeo - Reti Neurali Artificiali (1991)

per ogni unith k del livello H (* aggiusta Wl *):.:delta := Err-H[k] * B[k] * (1 - H[k]);

..: ,: per ogni unità i del livello X (compreso bias). Wl[i,k] := Wl[i,k] + (epsilon * delta * X[i]);: fine;:,..:gj:: f ine :

fine:.:: : :Si noti un piccolo particolare: se all’inizio dell’apprendimento larete avesse tutti i pesi M7 e W2 uguali a zero, la rete potrebbenon apprendere mai, infatti tutti gli errori Err-H[k] varrebberozero e i pesi Wl non verrebbero mai modificati. È dunque indi-spensabile inizializzare tutti i pesi Wl e W2 con piccoli valoricasuali.

Concludiamo questo capitolo con alcune considerazioni: questatecnica di apprendimento ha il vantaggio di essere relativamen-te semplice e facile da implementare ma ha due grossisvantaggi. In primo luogo non garantisce la capacità di appren-dere sempre, in secondo luogo è molto lento. Entrambe questecaratteristiche sono frutto del metodo “discesa del gradiente”,infatti lo spostamento verso la discesa non garantisce di arrivareal minimo assoluto ma all’avvalamento più vicino, che potrebbenon essere il più basso di tutti. Inoltre il fatto di spostarsi di UIIfattore proporzionale alla pendenza fa si che i pendii più leggerivengano percorsi “al rallenta tore”; non vi è infatti alcuna tecnicadi “rincorsa” o “inerzia” per raggiungere più velocemente i fon-dovalle. Esistono varie tecniche per accelerare e migliorarequesto metodo di apprendimento, ma in questa sede non è ilcaso di parlarne.

Page 71: Apogeo - Reti Neurali Artificiali (1991)

Appenciice

3EStil~pp~ di AWZkj = -&3W2ke1

Sfruttiamo una nota regola materna tica che affenna che la deri-vata di una funzione composta è calcolabile come prodotto didue al tre deriva te (composizione delle deriva te): scomponiamodunque la nostra derivata considerando il valore di attivazioneAj dell’unità j del livello Y. Otteniamo:

. . : .:..: . : : , :. . Aw2kj

3E= -&w

3Aj3w2kj

Per comodità di calcolo, introduciamo una nuova grandezzachiamata 6i, avremo dunque:

. )

: y. : .j:::.. aAj: ; . . .

AW2kj = E6’ ~. . ’ aW2kj:

: ‘ : : 6. =-3E1 aAj

La prima equazione si risolve facilmente ricordando che la for-mula di attivazione delle unità è:

,:::.,,.: : . Aj = c w2kjHkk

quindi la sua derivata è::;:::.::. i aAj-Hk::y:.. . : . ..: 3W2kj -

L’tyuazione per il delta, invece, va risolta applicando una se-conda volta la regola di composizione delle derivate, stavoltarispetto al valore dell’output Yj:

Risolviamo queste due derivate una per volta: per la prima siconsideri la definizione data dell’errore:

Reti “back propagation” 65

Page 72: Apogeo - Reti Neurali Artificiali (1991)

con semplici passaggi si può calcolare la sua derivata rispetto aYj, ottenendo:

..:.>:.. , . . .: : : . : :. . . .: , : . :. : :j:..:.ij,..:E=-(DI-Yj)

Passiamo alla seconda derivata: ricordando la funzione di tra-sferimento T a forma di sigmoide:

.:

. . Yj = ~

: ::., ,+;- Ai

si ottiene facilmente la sua derivata:;.::.:::.. . . .. .. : : . 3yi-; 3Aj - Yj (l-Yj)

Ricucendo tutti i pezzi otteniamo le formule finali:. .. .:..:. AWZkj = E8jHk

‘. Sj=(Dj-Yj)Yj(l. , : ‘. tz = 7~lore qlmlshsi

JEstihpp~ di AWIik = -cdW1 .k

1

- Yj )

coi~si$i76ife fin 0.2 c 0.9

Anche qui applichiamo la regola di composizione delle derivate:j;;:;:::..:. . . .:.. C’E dAk: . . :. : . . . :. .:.:

AW1 ik = -EK m

la prima di queste due deriva te la chiamiamo anche qui “delta”;la seconda derivata, invece, la risolviamo con la stessa tecnicaadottata per W2, ottenendo:

. . .‘ . :. AW1 tk = &&Xi:.g.

&=-g

Applichiamo ancora la regola di composizione delle derivate:

Page 73: Apogeo - Reti Neurali Artificiali (1991)

!: : . . 3E 3f-fk. . . .. . . .&=--.--. . . . .:::.:.. . . . 3k-k ihdk:..:..

Il primo di questi due termini verrà chiamato ewo)% sr#mitti Hke denotato con Err-H[k]; applichiamo ad esso la regola di com-posizione delle deriva te, combinata con la regola della derivatadella sommatoria:

.:

..:..: . , . .. :11 primo termine nella sonmatoria non è nuovo, infatti è giàstato trovato durante il calcolo di W2, dove era stato battezzato“Sj”; il secondo termine viene risolto ricordando la formula chedà l’attivazione delle unità, la cui derivata è semplicementew&j; e terzo termine viene risolto con la stessa tecnica già vistaper W2, ottenendo &(l-Hk). Ricomponendo i vari pezzi siavrà:

AW1 k = &6kXi

&=- ci

6jw2kj./ 1

Hk (l-Hk)

Reti “back propagation” 67

Page 74: Apogeo - Reti Neurali Artificiali (1991)

El7 Applicazionedi una rete

backpropagation

VedLImo in questo capitolo un’applicazione semplice e signifi-cativa: una rete che apprende la capacith di lanciare in aria unsasso (argomento gi5 visto nel capitolo 3). 1 parametri in giocosono 4 (figura 17): vclocitti di lancio (Vel), angolazione di lancio(hg), tempo di caduta (TemI e gittata (Cit = distanza fra il lan-ciatore e il punto di arrivo).

Tempo di

caduta

Gittala -/Punto di Punto dipartenza arrivo

Figura 17. I parametri in gioco nel lancio di un sasso.

Page 75: Apogeo - Reti Neurali Artificiali (1991)

È noto che questo problema P risolubile con i classici metodianalitici della meccanica, che forniscono equazioni per metterein relazione le quattro grandezze suddette; ad esempio, permet-tono di calcolare con esattezza la gittata a partire dalla velocità edall’angolo di lancio, oppure il tempo di caduta a partire dallagittata e dall’angolo, o qualsiasi altra combinazione.

Ci si può dunque chiedere perché scomodare le reti neurali perun problema di così consolidata risoluzione. In realtà quello chevogliamo evidenziare P il fatto che la capaciti umana di lanciareoggetti in aria, e più in generale di muoversi nello spazio, non èaffatto frutto di calcoli incosci che avvengono nel nostro cervel-lo, ma frutto di addestramento ed allenamento per prove ederrori. Se qualcuno mi chiedesse di colpire un certo bersagliocon un sasso, non farei alcun calcolo ma tutt’al più qualche lan-cio di prova e poi tirerei senza indugio. Facciamo fare allanostra rete neurale la stessa cosa.

Il fatto di aver scelto un campo applicativo di nota soluzionetradizionale comporta due vantaggi: innanzitutto la possibilitàdi verificare il risultato della rete confrontandolo col risultatoottenuto dalle equazioni, in secondo luogo la possibilitti di pro-curarsi l’insieme degli esempi senza dover praticare fisicamentedei lanci ma simulando via software i lanci-prova. Prima di pro-cedere, dunque, ricordiamo alcune formule utili:

: : . . .. : : :. .:.:.. Cit = Ve12sin (2Ang)I: .;:::::..:::::

Tell1 = 2Vel s’(Ang)g

dove g è l’accelerazione di gravità (9.8 m/sec/sec). La posizioneall’istante t del sasso può essere rappresentata mediante coordi-nate ortogonali R e C (Riga, Colonna):

R = Ve1 cos ( Ang ) t: : . . , ,: >:: :.. : . . . C = Ve1 sin (Ang) t- igt2

L’istante di caduta a terra, assumendo di essere in pianura, sarà:, : ‘..

t = 2Vel sin ( Ang )$

70 Cf7pikJlo 7

Page 76: Apogeo - Reti Neurali Artificiali (1991)

:.:.:.. .:..::.,.

;.;.>.\.:.. . . .::):.;::..: ::. ..\.. . . . .::>:.:..:.... . . .. ../. . . . ...:...::

.j :.:

“ :

Con queste formule è dunque banale fare un tracciamento sulvideo del computer della traiettoria di lancio, previo rapporta-mento di R e C alle dimensioni del video. È utile definire i limitientro i quali spaziano le grandezze in gioco: assumiamo che lavelocità di lancio sia compresa fra 0 e 100 metri al secondo e chel’angolazione sia compresa fra 0 e 90 gradi (che in radianti vale3.14/2). Calcoliamo i limiti dell’area di lancio: l’altezza massimaraggiungibile si atterra lanciando il sasso con la velocità massi-ma in verticale,

=2.9.8 =

loooo---. . 2.9.8

la gittata massima si ha lanciando il sasso con velocità massimae angolazione pari a 45 gradi (3.14/4),

‘. :Git n,ax = Ve12sWAng)-

=9.8 =

..: 1tXIOO. . . . =-: . : 9 . 8

il tempo massimo di volo si avrà lanciando il sasso con velocitàmassima in verticale,

::::;. .. .. : . Te,,, Imx = 2ve1 sin tAng ) =-

. . . ‘ ..,.>:,,..’ ‘. =

9.8 =200./ - -‘. -

‘. . 9 . 8:/

Applicnziom di una rete back propagation 71

Page 77: Apogeo - Reti Neurali Artificiali (1991)

Ma torniamo alla nostra rete neurale. Il suo scopo è quello ditrovare quale velociti c quale angolazione imprimere al lanciodi un sasso per farlo arrivare in un certo punto. Avremo dunquedue unità di output della rete, che rappresentano velocità e an-golazione, e due unità di input, che rappresentano gittata etempo. Le unità nascoste della nostra rete possono essere sceltecon vari criteri empirici, ma a priori 6 buona norma tentare conun numero di unità nascoste che superi il doppio delle unità diinput, quindi impiegheremo 5 unità nascoste (figura 18).

Velocith Angolazione

Fig uru 18. Topologia della m;te neurale per il lancio di un sasso.

Si noti che l’unità di input che rappresenta il tempo di caduta t‘indispensabile, infatti a paritA di gittata un tiro può essere teso oalto, e ciò che determina la forma della traiettoria 6 proprio iltempo di caduta, come evidenziato in figura 19.

Page 78: Apogeo - Reti Neurali Artificiali (1991)

tiro alto: velocitkalta

?empo=lungo

t i to medio: velocità=bassaangolo=mediotempo=medio

tiro teso: velocilà=altaangolo=basrotempo=breve

Figura 19. Varietà di lanci a parità di gittata.

Per loro natura, le unitA di una rete back propagation possonoassumere solo valori compresi fra 0 e 1, quindi è indispensabileche le grandezze in gioco siano rapportate con un fattore di sca-la all’intervallo [O..l]. Dato un qualsiasi lancio avremo dunque:

: : . . , :: : : . ; ., .. . .: :: : . : D2=ar1golo:.:.:. =s.:.: . : . . .: . .. . : . ;:c: : *2.::

e, analogamente, dato un certo esito della rete avremo:. .vdocihì = YI - 100

.:.: 3.14: . . . . =:..... : nrz~olo Y2:.. y-

Applicazione di una rete back propagation 73

Page 79: Apogeo - Reti Neurali Artificiali (1991)

L’addestramento della nostra rete avverrà generando un certoinsieme di lanci-prova le cui grandezze saranno memorizza te inuna lista di esempi chiamata E. Ogni esempio E[i] è una quater-na di numeri reali: E[i].Vel, E[i].Ang, E[i].Git, E[i].Tem. Eacostruzione di questi esempi avviene scegliendo a caso i valoriVe1 e Ang e calcolandosi i corrispettivi Git e Tem. Per evitare lagenerazione di lanci anomali, come ad esempio lanci orizzontalio lanci con velocità nulla, è meglio che il valore casuale di Ve1sia compreso fra 30 c 100 e il valore di Ang sia compreso fra 30e 80 gradi.

Una volta generati gli esempi, la nostra rete effettuerà un ap-prendimento per epoche in cui per ogni epoca vengonospazzolati tutti gli esempi. Per ogni esempio la rete viene ese-guita e poi viene propagato all’indietro il suo eventuale errore.Durante questa fase viene tenuta traccia dell’errore commessodalla unità Yj che ha sbagliato di più (Errrete, che in valoreassoluto è compreso fra 0 e 1). Viene poi calcolato l’errore mas-simo commesso durante l’epoca (Err-epoca) trovando ilmassimo fra i vari Err-rete di ogni esempio. L’apprendimentocontinua a ciclare sulle epoche finché l’errore dell’epoca nonscende al di sotto di un errore ammesso (Err-amm). A questopunto abbiamo la garanzia che la rete abbia appreso bene, cioèche per ogni esempio non vi sia alcuna unità che sbagli più diErr-amm. Ad esempio, supponendo di definire Err~ann-n=0.05,otterremo una rete in cui la velocità o l’angolazione del lancionon siano mai sbagliati più del 5% (il che non implica affattoche il sasso arrivi sul bersaglio con uno scarto del 5%). L’otteni-mento di simili prestazioni può richiedere tempo diapprendimento estremamente lungo o addirittura infinito (nelcaso di carenza di unità nascoste), quindi è necessario introdur-re delle pause durante l’apprendimento con richiesta diconfemía all’utente sul proseguimento.

Nel listato 3 compare il codice Pascal del programma SASSO, lacui versione eseguibile (SASSO.COM) è reperibile tramite lestrutture divulgative di RAI-Televideo.

74 Cq1ifolo 7

Page 80: Apogeo - Reti Neurali Artificiali (1991)

Listato 3:

ESERCIZIO SU RETI NEDRALIMODELLO RACK PROPAGATION

PROGRAMMA SASSOA. Mazzetti - 1991

program sasso:const max X=51; max H=51; max Y=50; max E=200;t y p e striig12=string[12]; -

-

var X:array[l.. max-X]of real; (* unita di input + bias *)H:array[l.. max-H]of real; (* unita nascoste + bias *)Y:array[l.. max-Y]of real; (* unita di output *)D:array[l.. max-Y] of real; (* unita di output desiderato *)Wl:array[l..max-X,l..max-H]of real;

(* matrice pesi lA livello *)W2:array[l..max_H,l..max-Y]of real;

(* matrice pesi 2A livello *)NX,NH,NY,NE:integer; (* numero unita, numero esempi *)epsilon, _Err retezreal; (* tasso apprendimento, errore rete *)com:char; (* comando letto da tastiera *)i,k, j,p:integer; (* indici vari *)Alt max,Git max,Tem max:real;-

(* altezza, gittata, tempo caduta *)E:array[l ..max-E]of record Vel,Ang,Git,Tem:real end;

(* esempi *)

t* backgropagate -*1procedure backgropagate;var ErrH:array[l..max-H]of real; (* errore su unita nascoste *)

delta:real;begin

for k:=l to NHtl do ErrH[k]:=O.O; Err-rete:=O.O;for j:=l to NY do beginif abs(D[j]-Y[j]) > Errrete then Err-rete:=abs(D[j]-Y[jl);delta:=(D[j]-Y[j])*Y[j]*(l.O-Y[j]);Por k:=l to NHtl do begin

ErrH[k] :=ErrH[k]+(delta*W2[k,j]);WZ[k,j]:=W2[k,j]t(epsilon*delta*H[k]);

end;

Applicazione di una rete back propagation 75

Page 81: Apogeo - Reti Neurali Artificiali (1991)

end;for k:=l to NH do begin

delta:=Err-H[k]*H[k]*(l.O-B[k]);for i:=l to NX+l & begin

Wl[i,k] :=Wl[i,k]+(epsilon*delta*X[iJ);end;

end;end;(" funzione di trasferimento T a sigmoide -------*)

function T(A:real) :real;begin

T:=l.O / (1.0 + exp(-A) );end;t* esegui --*)

procedure esegui;var A:real;begin

for k:=l to NH do H[k]:=O.O; 1 :for j:=l to NY do Y[jJ:=O.O; h'for k:=l to NH do begin

A:=O.O;for i:=l to NX+l do A:=At(Wl[i,k]*X[i]);HOI :=T(A);

end;for j:=l to NY do begin

A:=O.O;

for k:=l to NHtl do A:=At(W2[k,j]*H[k]);Y[jl :=T(A);

end;end;

t* tracciamento traiettoria sul video ---*)

procedure traccia(Vel,Ang:real);var t:real; r,c:integer;begin

t:=0.1; gotoxy(1,25); (* posizionamento cursore sul video *)repeat

c:=lttrunc(Vel*cos(Ang)*t*(8O/Git_Mx));r:=25-trunc( ((Vel*sin(Ang)*t)-(0.5*9.8*t*t))*(25/Altmax));gotoxy(c,r): write('*');t:=tto.1;

unti1 t>((2*Vel*sin(Ang))/9.8);gotoxy(l,l);write('premere RET ');readln;clrscr; (* pulizia video *)

end;

76 cnpito~o 7

Page 82: Apogeo - Reti Neurali Artificiali (1991)

(” generazione esempi lancio sassoprocedure genera-esempi;begin

clrscr; (* pulizia video *)for p:=l to NE do begin

E[p].Vel:=(random(lOO)*(7O/lOO))+30;E[p].Ang:=((random(90)*(50/90))+30)*(3.14/180);E[p].Git:=(E[p].Vel*E[p].Vel*sin(2*E[p].~g))/9.8;E[p].Tem:=(E[p].Vel*2*sin(E[p].Ang))/9.8;traccia(E[p].Vel,E[p].Ang);

end;end;

--*)

(" apprendi -----*)procedure apprendi;var Err-epoca,Err-amm:real; c:char; pausa,epoca:integer;begin

write('Quanti esempi? (l..',max-E,') : ');readln (NE) ;

write('Errore massimo ammesso? (0.001. .0.99): ');readln(Err-amm);

write('Tasso di apprendimento (epsilon)? (0.001..0.99): ');readln(epsilon);

write('Pausa ogni guarite epoche? (O..lOOOO): ');readln(pausa);

genera-esempi;epoca:=O;repeat (* ciclo sulle epoche *)

Err-epoca:=O.O;for p :=l to NE do begin (* ciclo sugli esempi *)

xr11 :=E[p].Git/Git-max; X[2]:=E[p].Tem/Tem_max;DIlI :=E[p].Vel/lOO; D[2]:=E[p].Ang/(3.14/2);esegui:backgropagate;if Err-rete>Err-epoca then Err-epoca:=Err-rete;

end;epoca:=epocatl;writeln('epoca=',epoca:3,' errore=' ,Err_epoca:7:5);if (epoca mod pausa)=0 then begin

write('ancora ?(s/n) '); readln(c); if c='n' thenErrepoca:=-1.0;

end;unti1 Errepoca<Err-amm

end;

Applicmione di una rctc back propqntion 77

Page 83: Apogeo - Reti Neurali Artificiali (1991)

(*procedure modifica:begin

modifica --*)

write('Numero di unita' di input (l..',max X-1,') ? :');readln(m);

write('Numero di unità' nascoste (l..',max H-l,') ? :');readln(%);

write('Numero di unita' di output (l..',max Y,') 2 : ');readln (NY) 7

for i:=l to NX do X[i]:=O.O; x[NXtl]:=l.o;for k:=l to NI-I do H[kJ:=O.O; H[NHtl]:=l.O;for j:=l to NY do Y[j]:=O.O;for i:=l to NXtl do

for k:=l to NH doWl[i,k]:= (random(lOO)-50.0)/100.0;

for k:=l to NHtl dofor j :=l to NY do

W2Uc, jl :=(random(lOO)-50.0)/100.0;Alt_max:=10000/(2*9.8);Git-max:=10000/9.8;Tem-max:=200/9.8;

end:

i* e visualizza -")procedure visualizza:var ch:char;begin

writeln; writeln('unith' di input : ');for i:=l to NXtl do write(X[i]:4:2,' '); writeln;writeln('unitA' nascoste : ');for k:=l to NHtl do write(H[k]:4:2,' '); writeln;writeln('unita' di output: ');for j:=l to NY do write(Y[j]:4:2,' '); writeln;writeln; write('Vuoi vedere matrice Wl (s/n) ? : ‘);readln (ch);if ch='s' then begin

write(’ ’ :4);for k :=l to NH do write(k:2,'W '); writeln;writeln;for i:=l to NXtl do begin

write(i:2,'X '):for k:=l to NH do write(Wl[i,k]:5:2,' '): writeln:

end;writeln;

end;write('Vuoi vedere matrice W2 (s/n) ? : ');readln(ch);if ch='sj then begin

78 Capitolo 7

Page 84: Apogeo - Reti Neurali Artificiali (1991)

write(' ':4);for j :=l to NY do write(j:2,'Y '); writeln;writeln;for k:=l to NHtl do begin

write(k:2,'H ');for j :=1 to NY do write(W2[k,j]:5:2,' '); writeln;

end;writeln;

ex-id;end:

t* salva “1procedure salva:var f:text; fn:stringl2:begin

write('Nome del file su cui salvare i pesi: ');readln(fn);assign(f,fn); rewrite(f);writeln(f,NX);writeln(f,NH);writeln(f,NY);for k:=l to NH dofor i:=l to NXtl &

writeln(f,Wl[i,k]:7:3);for j:=l to NY do

for k:=l to NHtl dowriteln(f,W2[k,j]:7:3);

close(f);end;

t* carica --")procedure carica:var f:text; fn:stringl2; r:integer:begin

write('Nome del file contenente i pesi: ');readln(fn);assign(f,fn); reset(readln(f,NX);readln(f,NH);readln(f,NY);for k:=l to NH do

for i:=l to NXtl doreadln(f,Wl[i,k]);

for j:=l to NY dofor k:=l to NHtl do

readln(f,W2[k,j]);close(f);

end;

A~J~Jhzionc di una rete back propagation 79

Page 85: Apogeo - Reti Neurali Artificiali (1991)

,.::j::):.:<.:. . . .:.,: t* - definisci-lancio:.::::+ procedure definisci-lancio;:!:. ..>.: ::.. .. . .var c:integer; ch:char; t:real;'.::.:.:.:..: begin..:x.'$. clrscr;:.. (* pulisci video *)

--")

. . ..:.:.,.i:.y:. write('Posizionare il bersaglio coi tasti freccia, poi predere:.:: RET') ;,,..:::,.. C:dO; gOtoxy(c-l,25); write('-');: :>

. . repeat:.j...'.,:. read(kbd,ch); if ch=chr(27) then read(kbd,ch);: :>j.,. (*leggi tasti freccia *)

:.: :.::, gotoxy (c-1,25); write(' ');. ...,..j:j :..,.. . . if ch=chr(75) then if c>3 then c:=c-1;:j :. (* freccia verso sinistra *)..:.. if ch=chr(77) then if c<75 then c:=ctl;..:.

(* freccia verso destra *)gotoxy(c-1,25); write('--');

unti1 ch=chr(l3);':..:.. X[ll :=c/ao;..:.:, : . . gotoxyu, 1); for c:=l to 80 do write(' '); gotoxy(l,l):,:::,.. . .., .>:

write('Tempo di caduta? (1..',Temrmax:2:0,' sec.):. . );readln(t);: . ..:: ,:: :::.. . . . . .gotoxY(l,l); for c:=l to 80 do write(' '); gotoxy(l,l);.:. .::.::..<..:: X[P]:=t/Tem-max;::: .i.:: ,'. . : end;

\ I

begin

modifica:repeat

writeln; write('Apprendi Esegui Carica Salva VisualizzaModifica Fine: ');

readln(com);case com of'a' :apprendi;'e':begin definisci-lancio; esegui; traccia(Y[l]*lOO,Y[2]*

(3.14/2)) end;'C' :carica;'s' : salva:‘V’ :visualizza;'m' :modifica;end:

unti1 com='f'end.

Listato 3: Codice Pascal dc1 yrogramrla SASSO, p la prova hl modelloback propaga t ion.

8 0 Cupitolo 7

Page 86: Apogeo - Reti Neurali Artificiali (1991)

L’interfaccia di questo programma è molto simile a yella deiprogrammi MEM-ASS e IMMAGINI già visti in precedenza.Lanciando il programma SASSO si ottiene un menù di questotipo:

:::j: ::: . . : Apprendi Esegui Carica Salva Visualizza Modifica Fine:

il cui significato delle voci è lo stesso degli altri programmi. Ilcomando “a” (Apprendi) comporta l’acquisizione dei parametrida usare durante l’apprendimento: numero di esempi, erroreammesso, tasso di apprendimento e collocazione della pausa.Segue la visualizzazione degli esempi autogenerati casualmentee poi la fase di apprendimento vera e propria in cui per ogniepoca viene visualizzato sul video l’errore; l’apprendimento tcr-mina o quando viene raggiunto l’errore ammesso o quandol’utente interrompe durante una pausa. Segue una traccia dell’e-secuzione:

c:> SASSONumero di unita di input (1..50) ? : 2Numero di unità nascoste (1..50) ? : 5Numero di unita di output (1..50) ? : 2Apprendi Esegui Carica Salva Visualizza Modifica Fine: a

Quanti esempi? (1..200): 200Errore massimo amnesso? (0.001..0.99): 0.02Tasso di apprendimento (epsilon)? (0.001..0.99): 0.3Pausa ogni quante epoche? (O..lOOOO): 100

fpremere RET

\

************* ****

*** ***l *** ***! ** **

* #l/

Page 87: Apogeo - Reti Neurali Artificiali (1991)

i

**1 *:* **

** **** *** *

** **

/ * ** *

* */

. . . (fa vedere 200 lanci-prova casuali)

epoca=1 errore=0.34382epoca=2 errore=0.35986epoca=3 errore=O. 35977

. . .

epoca=100 errore=0.27663ancora? (s/n) : sepoca=101 errore=0.27019

. . .

epoca=5800 errore=0.02103ancora? (s/n) : n

Apprendi Esegui Carica Salva Visualizza Modifica Fine:

Si noti che può capitare che all’inizio l’errore dell’epoca aumentianziché diminuire: questo èi dovuto ad una sorta di “confusio-ne” in cui la rete incappa all’inizio, cioè quando i pesi sonoancora molto casuali; poi, man mano che i pesi vengono modifi-cati, si orientano verso i minimi d’errore e continuano la lorodiscesa asintotica. Può capitare che l’errore zero non venga mairaggiunto in tempi accettabili (polinomiali).

8 2 Cq7ifolo 7

Page 88: Apogeo - Reti Neurali Artificiali (1991)

Nel listato 3 si può osservare la procedura “apprendi” in cuicompare la generazione degli esempi seguita dal ciclo sulle epo-che contenente il ciclo sugli esempi; per ogni esempio vi èl’assegnamento delle unità di input X e di output desiderato D,seguito dall’esecuzione (in cui vengono calcolate Pe unitrì Y) edalla backpropagation (che aggiusta i pesi Wl e W2). Si notil’immagazzinamento di “Err-epoca” (errore della rete nell’esem-pio che ha sbagliato di più) e la terminazione del ciclo sulla basedell’errore.

Nella procedura “genera-esempi” compare la generazione ca-suale della velocità e angolazione, seguita dal calcolo dellagittata e del tempo, a sua volta seguita dal tracciamento sul vi-deo dalla traiettoria di volo. La procedura “traccia” contiene ullciclo in cui ad ogni istante di tempo si calcolano le coordinatedel punto in cui è posizionato il sasso e lo si visualizza col ca-ra ttere asterisco. La procedura “esegui” contiene l’azzeramentoiniziale delle unit5 nascoste e di output, seguito dai due cicli:uno per passare dal livello X a quello H, l’altro per passare da Ha Y. Si noti la funzione di trasferimento ‘7” a sigmoide.

La procedura “back-propagate” contiene anch’essa il doppio ci-clo, ma in ordine inverso: il primo per propagare l’errore da Yad H, aggiornando i pesi W2; l’altro per propagare l’errore sulleunità nascoste (Err-H[k]) da H a X, aggiornando i pesi Wl. Sinoti che Em-H[k] viene calcolato durante il primo ciclo e usatonel secondo ciclo; si noti anche l’immagazzinamento di Err-rete(valore assoluto dell’errore dell’uniti Y che ha sbagliato di pii&

Il comando del menù principale “e” (Esegui) pennette di prova-re la rete facendole fare un tiro verso un dato bersaglio. Ilposizionamento del bersaglio viene fatto in modo grafico dallaprocedura “definisci-lancio”: il bersaglio è rappresentato da tretrattini “-” che si possono muovere a destra e sinistra median-te i tasti freccia. Segue la richiesta del tempo di cadutadesiderato e l’assegnamento delle unitA di input della rete X[l] eX[2] con valori opportunamente normalizzati. Terminata la pro-cedura “definisci-lancio”, segue il richiamo della procedura“esegui”, che calcola i valori di Y[l] e Y[2], a sua volta seguitadalla procedura “traccia” a cui vengono passati come parametrii valori Y[l] e Y[2] opportunamente de-normalizzati. Ecco unatraccia dell’esecuzione:

Applicazione di una rete back propagation 83

Page 89: Apogeo - Reti Neurali Artificiali (1991)

Apprendi Esegui Carica Salva Visualizza Modifica Fine: ePosizionare il bersaglio coi tasti freccia, poi premere RE'6

. . .

Tempo di caduta? (1..20 sec.): 12

/****

l *****************

I ****** ******I

**** ****l

I***

** -/

Apprendi Esegui Carica Salva Visualizza Modifica Fine: vunita di input :0.50 0.59 1.00unità nascoste :0.80 0.11 0.07 0.01 0.98 1.00unita di output:0.73 0.61Vuoi vedere nratrice Wl (s/n) ? : s

1H 2H 3H 4H 5H1x -4.22 -0.15 0.86 -8.61 4.112 X 2 . 5 0 5 . 4 9 - 6 . 3 5 1 . 3 3 4 . 2 8

3 X 2 . 0 2 - 5 . 2 6 0 . 6 8 - 0 . 8 7 - 0 . 5 2

Vuoi vedere matrice W2 (s/n) ? : s1Y 2Y

1H -4.15 1.612H 6.87 1.583H 1.55 -5.784H 1.35 6.645H 4.94 0.186H -1.41 -0.90

Apprendi Esegui Carica Salva Visualizza Modifica Fine: fc:>

84 Cn~‘itolo 7

Page 90: Apogeo - Reti Neurali Artificiali (1991)

Si noti il comando “v” (Visualizza) per vedere i valori delle uni-tà dei livelli X, 1-l e Y seguiti dai valori delle matrici Wl e W2. Icomandi “c” (Carica) e “s” (Salva) caricano e salvano i pesi inmaniera identica a quella gii vista per le memorie associative. 11comando “111” (Modifica) acquisisce il numero di unità dei trelivelli e poi inizializza le matrici Wl e W2 con valori casualicompresi fra +0.5 e -0.5 (per ovviare ai problemi di non appren-dibilità per simmetria); seguono le inizializzazioni dei valorimassimi di altezza, gittata e tempo.

L’utilizzo di questo programma patri dare una sensazione del-l’estrema onerosità della fase di apprendimento e dell’estremasnellezza della fase di esecuzione: per dare un’idea di massima,l’esecuzione della rete, cioè la fase che inizia dopo l’acquisizionedall’utente del tempo di caduta e finisce quando parte il sasso,dura una frazione impercettibile di scxondo. La fase di appren-dimento, invece, avendo 200 esempi e un tasso diapprendimento di 0.3, arriverj ad un errore inferiore a 0.03 do-po qualche migliaio di epoche; su un PC AT 286 questo puòrichiedere una ventina di ore di elaborazione (il file SASS0.Wcontiene i pesi appresi in questo modo, vedi figura 20).

Si noti che la figura 20 esprime la “conoscenza” che In rete hasul problema del lancio del sasso; in altri termini, questo guaz-zabuglio di numeri incomprensibili è l’equivalente di tutte leformule matematiche viste prima a proposito della velocità, git-tata, tempo ed angolazione del lancio; appare sensazionale,dunque, la compattezza dell’informazione contenuta in una reteneurale. Per contro può sgomentare il fatto che la conoscenzacontenuta in quella rete sia del tutto incomprensibile all’uomo:ad esempio, in quella trentina di numeri è impressa la conosccn-za relativa al fatto che per ottenere un lancio lento non bisognatirare lentamente ma con forza in alto. La conoscenza contenutain questa rete è difficilmente dominabile da parte umana: se adesempio si scoprisse che la rete sbaglia in certi casi, avremmoserie difficoltà nell’individuare il punto d’errore ed effettuarecorrezioni.

Esistono alcune tecniche per indagare nel contenuto cognitivo diuna rete neurale, ma si tratta per lo più di tentativi artigianali.Uno dei metodi più usati è l’estrazione di ~rwppe di nttivitù delleunità nascoste: si tratta di rappresentazioni grafiche che eviden-ziano il valore di output di una certa unità I-k al variare dei

Applicazione di una rete back propagation 85

Page 91: Apogeo - Reti Neurali Artificiali (1991)

VelocitA Angolazione

Bias

Figura 20. La conoscenza appresa dalla rete, relativa al lancio del sesso.

valori delle unità di input. Nel nostro caso, avendo due unità diinput, otterremo una superficie in uno spazio euclideo tridimen-sionale (figura 21).

Sviluppando una mappa di attività per ogni unità nascosta ot-terremo una sensazione del loro ruolo nell’elaborazione; nelnostro caso, ad esempio, si può individuare quale unità ha a chefare con i lanci alti e quale con quelli tesi. Tuttavia questa infor-mazione 6 poco utile dal punto di vista pratico perché nonconsente alcuna manipolazione della conoscenza della rete. Cu-nico modo di modificare la conoscenza della rete è unriaddestramento effettuato con un più accurato insieme diesempi.

86 Cczpito/o 7

Page 92: Apogeo - Reti Neurali Artificiali (1991)

Figura 21. Mappa di affivitd di una unità nascosta.

Applicazione di una rctc back propagation 87

Page 93: Apogeo - Reti Neurali Artificiali (1991)

Altri modellidi rete neurale

1 modelli di rete visti finora (memoria associativa e back pro-pagation) sono i più significalivi ma non esauriscono tulte lepossibilita. Ci proponiamo in questo capitolo di indagare altrimodelli, senza entrare troppo in dettaglio. Analizzeremo tre mo-delli molto differenti fra loro e capostipiti di tre interessantifiloni di ricerca: modelli stocastici, modelli auto-organizzanti emodelli genetici.

Modelli stocasticiNell’ambito dei modelli stocastici l’architettura più nota è la co-siddetta Macchina di Bolfzmnnn [18] il cui nome manifestal’analogia coi sistemi termodinamici. Si può notare infatti unacorrispondenza fra l’attivazione delle unità di una rete neurale ela posizione delle molecole di un materiale metallico; l’organiz-zazione a reticolo cristallino impone un certo equilibrio delleforze interagenti fra le diverse molecole, proprio come nelle retineurali le connessioni fra le unita implicano una certa relazionedi “buon vicinato”.

È noto però che nei melalli le molecole non sono ferme ma incontinua agitazione termica: quanto più è elevata la temperatu-ra, tanto più le molecole sono ribelli alla loro posizione;l’agitazione termica è assimilabile ad uno spostamento casualerispetto alla posizione di equilibrio. Esiste una nota tecnica me-tallurgica chiamata femp basata su un trattamento termico alloscopo di forzare ogni molecola nella miglior posizione, per otte-nere l’indurimento del ma teriale. Scaldando un ma teriale

Altri modelli di rete natralc 89

Page 94: Apogeo - Reti Neurali Artificiali (1991)

metallico, infatti, aumentiamo la casualità della posizione dellemolecole; raffreddandolo molto lentamente l’agitazione dellemolecole si riduce man mano fino ad annullarsi (congelamento).Le molecole si fermano (o quasi) nella posizione in cui si dannomeno fastidio fra di loro, vale a dire nella posizione di equili-brio delle forze reciproche.

Ma torniamo alle reti neurali: anche qui il problema è quello ditovare la migliore forma di convivenza delle unità, cioè la mi-gliore combinazione dei valori di attività. Introducendo nellereti neurali il concetto di temperatura, inteso come agitazionecasuale ribelle delle uniti, possiamo effettuare delle operazionidi tempra simulata (simulated annealing [19]) allo scopo di otte-nere situazioni di equilibrio ottimale. L’architettura che più sipresta a questa estensione è quella della memoria associativa,opportunamente riveduta e corretta. Consideriamo un insiemedi unità a valori binari {O,l), totalmente connesse e organizzatein modo che alcune di esse rappresentino l’input/output dellarete e altre siano nascoste, come in figura 22.

UnitA nascoste

1 I 1

Uniti di input /output

Figura 22. Architettura di una macchina di Botlzmann

90 Cnpifolo 8

Page 95: Apogeo - Reti Neurali Artificiali (1991)

La funzione di trasferimento T non è più di tipo deterministicoma probabilistico, nel senso che una unità ha una certa probabi-lità di non commutare il suo stato anche quando dovrebbe.Questa forma di ribellione è tanto più spinta quanto più è alto ilparametro tempera tura. Una formulazione ma tema tica di que-sto meccanismo può essere:: . . . : .

E:.y., : : : : :

p(++ 1:...../.... : . :. . : : : l+C Tcrip,.,::

.., . , . . .: : : . : : Ai = C WijXj;:’ j

dove P(Xt = 1) ’ d’m rea la probabilità che Xt valga 1. Si noti chefacendo tendere la temperatura a zero, la funzione probabilitàtende al gradino (già visto nel capitolo delle memorie associati-ve), quindi il comportamento delle unità non è ribelle maconformista. All’aumentare della temperatura la funzione assu-me una forma a sigmoide (simile a quella vista nei modelli backpropagation, ma usata qui per scopi del tutto diversi); ad esem-pio, se Ai valesse +lO, con una temperatura di +9 avremmo unaprobabilità del 75% circa che l’i-esima unità valga 1 e una pro-balità del 25% circa che valga 0. Con una scelta a casonell’ambito di questa distribuzione di probabilità , l’i-esima uni-tà assume il suo valore. Come si può notare, l’unita sarà ribellenel 25% dei casi. Alle alte temperature (Temp tendente ad infini-to) la probabilità si appiattisce sul valore 0.5, quindi ilcomportamento delle unità è totalmente casuale. In figura 23compare il grafico della funzione probabilità al variare dellatempera tura.

Lo scopo di tutto questo meccanismo è di far evolvere la retefino al minimo globale di energia, senza il pericolo di incepparsiin minimi locali (vi ricordate, nel capitolo sulle memorie asso-ciative, la “superficie di energia” assimilabile ad un foglio digomma con crateri?). Un’utile metafora per la comprensione delmeccanismo di tempra simulata può essere quello di rappresen-tare lo stato della rete come una pallina su una superficiemontagnosa (non di gomma stavolta) in cui la temperatura simanifesti come vibrazione del terreno. Quanto più forte è la vi-brazione, tanto più la pallina salterà (contrastando la forza digravità); riducendo la vibrazione, la pallina si assesterà nella

Altri modelli di rctc ncuralc 91

Page 96: Apogeo - Reti Neurali Artificiali (1991)

Temperatura bassa

Figura 23. la futione di probabilità delle unità per diversi valori dellatemperatura.

conca più larga e/o più profonda; al cessare della vibrazione lapallina rotolerà nel fondovalle.

Le reti neurali stocastiche hanno il vantaggio di trovare la solu-zione migliore con alta probabilità e lo svantaggio di esserelente e computazionalmente onerose. La plausibilità biologica diquesto tipo di rete è fortemente in dubbio fra gli esperti.

Il meccanismo di apprendimento per questo tipo di rete è piùcomplesso di quelli visti finora, fermo restando un’impronta ditipo Hebbiano, a cui va aggiunta una componente stocastica.Fondamentalmente l’apprendimento avviene in due fasi: nellaprima la rete viene congelata più volte per ogni esempio avendoassegnate le unità di input/output. 1 pesi vengono inizialmentemodificati secondo la legge:

AW, = EXiXj

Nella seconda fase la rete viene congelata altrettante volte la-sciando libere le unità di input/output e i pesi vengonomodificati secondo una legge anti-Hebbiana:

..:: AW, = -EXiXj

In entrambe le fasi la rete registra il comportamento delle unitàvisibili dopo che sia stato raggiunto l’equilibrio termico e calcolale relative statistiche: la rete avrà appreso quando le distribuzio-ni di probabilità coincidono approssimativamente.

92 Cnpifolo 8

Page 97: Apogeo - Reti Neurali Artificiali (1991)

Sono state suggerite singolari analogie fra la legge ami-Heb-biana di apprendimento e la funzione del sonno REM degliesseri viventi [201 in cui vengono “disimparate” informazio-ni parassite.

Le macchine di Boltzmann possono essere impiegate come me-morie associative in cui a fronte di un input incompleto o erratoviene fornita mediante congelamento la versione completa ocorretta più verosimile. La presenza di unità nascoste e di mec-canismi stocastici permette di superare i problemi tipici deimodelli di Hopfield e di Kosko visti nei capitoli precedenti aproposito delle memorie associative.

Modelli auto-organizzantiPassiamo ora ad un modello di rete neurale totalmente differen-te, noto come rete au&y,y~izzante. Lo scopo di questo tipo direte non è più quello di fornire un output a fronte di un certoinput, ma quello di ricevere solo alcuni input e classificarli. Inaltre parole, la rete organizza in modo autonomo una strutturache accomuna gli input simili fra loro individuando regolarità esomiglianze. Il tipo di apprendimento di queste reti è detto nonsrprvisionafo perché gli esempi non contengono l’output, quindinon vi è infomlazione su cosa farsene degl’input. Lo scopo dellarete non è quello di apprendere una relazione fra input e outputma quello di “osservare” un certo insieme di esempi e indivi-duare possibili categorie.

Ad esempio, si consideri il caso in cui i dati di input siano ma-trici di pixel che rappresentano caratteri; nel capitolo sullememorie associative abbiamo visto un’applicazione in cui la reteaveva il compito di associare un carrittere minuscolo al suo cor-rispondente maiuscolo. Qui invece forniamo soltanto i caratteriminuscoli alla rete e le chiediamo di classificarli; la rete potràtrovare alcune interessanti categorie come ad esempio: i caratteritondeggianti (b,d,g,o,p,q...), i caratteri con 112 st~nghctta(l,t,b,d,p,q...), i caratteri con le gnmbe (m,n,i...). In altre parole, larete raggruppa gli esempi simili; una volta apprese queste cate-gorie, la rete potra essere usata per individuare la categoria di

Altri modelli di rete neurale 93

Page 98: Apogeo - Reti Neurali Artificiali (1991)

appartenenza di un certo carattere, anche mai visto, ad esempio,il carattere alfa potrà essere collocato fra i tondeggianti.

Esistono varie topologie per questo modello di rete, Pa più sempli-ce e significativa è stata studiata da Kohonen [Zl] e d èrappresentata in figura 24.

Griglia 2D

Figura 24. Architettura di una rete auto-orgcmimnte

Vi sono due livelli, chiamati X e Y, di cui il primo è quello diinput e il secondo è quello che rappresenta la classificazione. Visono due tipi di connessioni: quelle dal livello X al livello Y, chia-mate Wl, e quelle fra le unità del livello Y, chiamate W2, che(nella versione più semplice) non sono totali ma organizzate inuno schema a griglia in due dimensioni (ogni unità è connessasolo con le sue “vicine”). Queste ultime connessioni, W2, nonvengono apprese ma sono fisse ed hanno una struttura a “cap-pello messicano”, vale a dire che per ogni unità sono positiveverso le unità limitrofe e negative verso le unità nell’anello adia-

94 Capitolo 8

Page 99: Apogeo - Reti Neurali Artificiali (1991)

cente. Ogni unità del livello Y riceve dunque due stimoli: unodal livello X e l’altro dai vicini di casa:

::...: : : . ,: : ..: Aj = CWl ijXi + CW2kjYk:‘. i k: :: :

Lo stimolo rwiproco fra le unità del livello Y crea un meccani-smo di competizione che porta ciclicamente alla supremazia diuna singola unità. Infatti, avendo ogni unità connessioni negati-ve con quelle limitrofe, si scatena un processo di inibizionereciproca in cui chi è inizialmente più forte inibisce di più glialtri e viene inibito di meno, quindi sopravvive (ha un’attivazio-ne elevata) facendo soccombere gli altri (attivazione bassa). Perquesto motivo tale tipo di rete viene anche detto rcle competitiva1221. L’esecuzione di questa rete avviene in questo modo: datoun input qualsiasi X, la rete propaga verso il livello Y il segnalefacendo “accendere” l’unità Yj che rappresenta la classe di ap-partenenza dell’input dato. Qualora l’input sia ambiguo, cioè ametà strada fra più classi, il meccanismo di competizione fa sìche si formi una “bolla” di unità vincenti.

L’apprendimento di questa rete avviene in questo modo (ricor-diamo che solo i pesi Wl vanno appresi, i pesi W2 sono fissi e acappello messicano): data una distribuzione inizialmente casua-le dei pesi Wl, per ogni nuovo esempio X viene eseguita la retee tovata la bolla vincente; poi vengono modificati solo i pesidelle unità interne alla bolla. Supponiamo per semplicità che labolla sia composta da una sola unità vincente YV, verrannoquindi modificati solo i pesi Wli,, rappresentati in figura 25.

La variazione dei pesi è congegnata in modo da accentuare ilfatto che l’input X appartenga alla classe individuata (quellarappresentata da Yv); in altre parole la rete rafforza la sua con-vinzione che l’input X debba appartenere alla classe Yv. Manmano che la rete esamina gli esempi, si autoconvince semprepiù che gli esempi simili debbano far vincere la stessa unità,quindi che appartengano alIa stessa classe. La formula è la se-guente (nella sua fomla più semplice):

::.y. AWliv=E Xi-Wliv( >

dove v è l’indice dell’unità vincente (o l’insieme degli indici del-le unità interne alla bolla vincente). 1 pesi afferenti alle unitàperdenti non vengono modificati. Aila fine della fase di appren-

Altri modelli di rete neurale 95

Page 100: Apogeo - Reti Neurali Artificiali (1991)

Figura 25. I pesi soggetti a modifica durante l’esame di un dato esempio.

dimento la configurazione dei pesi Wl rappresenta una quantiz-zazione dello spazio degli esempi ricevuti, vale a dire unapartizione che raggruppa gli esempi simili fra loro, ove il con-cetto di somiglianza dipende dalla particolare distribuzionedegli esempi analizza ti.

Applicazioni di questo tipo di rete hanno avuto successo nelcampo dell’analisi del segnale vocale e nel campo della classifi-cazione di immagini. Sono particolarmente indicate quelleapplicazioni in cui non si sappia a priori come elaborare certeinformazioni, quindi ci si aspetta che la rete “scopra” da solaconcetti interessanti in una popolazione di dati non strutturati[23]. La plausibilità biologica di questo modello è molto accredi-tata a causa della presenza di strutture auto-organizzanti nellacorteccia cerebrale [24].

96 crrpito~o 8

Page 101: Apogeo - Reti Neurali Artificiali (1991)

Modelli geneticiDalla teoria dell’evoluzione di Darwin si è derivato un modellodi rete in cui l’apprendimento è frutto di selezione naturale inuna popolazione di individui che si riproducono [25, 261. Sisupponga di voler far apprendere ad una rete neurale un certoinsieme di esempi: anziché definire una “formula di apprendi-mento” nella forma “AWij = . ..“. definiamo una nzufmione

geMicrz intesa come piccolo cambiamento casuale di alcuni pesiWij della rete o come nggiunta/rimozione di una unitk Definia-mo inoltre un criterio di riproduzione e di morte della rete: ilsistema mantiene in vita una popolazione di reti che nascono, siriproducono e muoiono. Le reti sono ermafrodite e le figlie sonocopie delle madri leggermente modificate per mutazione geneti-ca. Durante la vita ogni rete esegue ripetutamente gli esempi esi riproduce più volte. La longevità e la prolificità sono funzionidell’errore che la rete commette nell’eseguire gli esempi: chi fameno errori si riproduce di più. Esiste un limite massimo al nu-mero di reti viventi, raggiunto il quale la popolazione noncresce più e il tasso di nataliti diventa uguale al tasso di morta-lità.

Facendo evolvere un sistema di questo tipo si avrà inizialmenteuna popolazione molto varia (reti molto casuali e diverse fraloro) che tende man mano ad un miglioramento della speciegrazie alla selezione naturale che privilegia le reti che fanno me-no errori. Viene quindi raggiunta asintoticamente la situazionein cui la popolazione è composta da individui tutti perfetti euguali (a meno delle piccole variazioni genetiche). Un campionedi questa popolazione è una rete che ha appreso gli esempi. Sinoti il fatto che l’apprendimento è frutto di selezione dalla ca-sualità. 1 modelli genetici, sebbene affascinanti, non hannofinora avuto molto successo, soprattutto per le eccessive risorsedi calcolo e di memoria richieste. Sono attuahnente in fase distudio le potenzialità di questo metodo per la realizzazione direti che automodificano la propria topologia.

Altri modelli di rete neurale 97

Page 102: Apogeo - Reti Neurali Artificiali (1991)

Applicazionie strumenti

L e reti neurali sono una tecnologia “orizzontale” che trovaapplicazioni dall’industria alla finanza, dalla medicina alla dife-sa, dalle telecomunicazioni alle assicurazioni. Ovviamente nonha senso impiegare reti neurali dove gli attuali computer si sonodimostrati eccellenti (calcoli, basi di da ti, word-processing...). Lereti neurali non devono essere intese come un’alternativa alcomputer, bensì un complemento: è opportuno adottarle dove icomputer falliscono, in particolare nei problemi caratterizza ti dainformazioni incomplete, vaghe, contradditorie, distorte, impre-cise, o in quei campi in cui manchi un algoritmo adeguato oinfine dove necessiti una velociti tale da richiedere parallelismo.Quindi:

.

.

0

e

0

0

.

.

.

.

0

riconoscimento/classificazione di immagini, testi, voce, se-gnali, pattem;

filtri di rumore su segnali;

sintesi di parlato;

pianificazione/ottimizzazione;

controllo di processo e di qualità;

supporto alle decisioni;

analisi finanziaria;

diagnostica medica e industriale;

previsioni metereologiche;

compressione/ trasmissione di da ti;

gestione database.

Applicazioni e strutncnti 99

Page 103: Apogeo - Reti Neurali Artificiali (1991)

Nell’ambito di alcuni progetti di ricerca e industriali si sonosperimentate con successo tecniche neurali per la realizza-zione di:

0 Un riconoscitore di caratteri manoscritti, in grado di rico-noscere dal 90% al 99% di un testo, a seconda della qualitàdella calligrafia.

a Un riconoscitore di caratteri Kanji, con una accuratezzadel 92% su una base di 2000 caratteri.

0 Un autenticatore di firme, i cui casi di falso allarme am-montano finora al 4% (prestazione assai migliore rispettoalle tecniche tradizionali).

0 Un rivelatore di carte di credito rubate (Chase ManhattanBank).

l Un classificatore di segnali radar, in grado di raggiungereil 100% delle prestazioni richieste, anche dove le tecnicheBayesiane non superavano il 95%).

0 Un rivelatore di esplosivi in servizio dal 1988 presso l’ae-reoporto di New York, Los Angeles e S. Francisco (tecnicaback propagation, controlla 10 valige al minuto, realizzatosolo con prodotti commerciali).

l Un sistema di guida autonoma di automobili, in grado diguidare a circa 5 Km/h nei viali alberati della CarnegieMellon University in diverse condizioni di luce (in-put=immagine della strada; output=posizione del volante;tecnica back propaga tion; addestramento effettuato con1200 immagini in 40 epoche, tempo di addestramento: 30minuti su supercomputer Warp; tempo di esecuzione: 200millisecondi su Sun-3; conoscenza sviluppata nelle unitànascoste: “bada al bordo della strada”; vedi figura 26).

0 Un sistema di controllo di un robot che governa l’orienta-mento di un sa telli te.

l Un lettore di testi ad alta voce, in grado di pronunciareparole (inglesi) mai viste prima con accuratezza del 90% econ lo stesso accento‘del maestro (back propagation, 309unita, 18.629 connessioni, implementato in “C” su VAX-780, legge 2 caratteri al secondo).

Page 104: Apogeo - Reti Neurali Artificiali (1991)

Telecamera

Figura 26. Applicazibne di una rete neurale come sistema di guidaautonoma di veicolo.

0 Un riconoscitore di oggetti sottomarini via Sonar (BendixAerospace).

0 Un correttore di eco in linee telefoniche.

0 Un “dattilografo” che trascrive sotto dettatura qualsiasi ti-po di testo pronunciato in finlandese o in giapponese conun’accuratezza compresa fra 1’80% e il 97% (preprocessingcon filtro passa basso, convertitore analogico-digitale, reteauto-organizzante con 15 unità in input e 96 in output,elaborazione in tempo reale su PC/AT con Signa1 proces-sor TMS-32010).

l Un sistema per la concessione di prestiti per l’acquisto dibeni di consumo a privati (back propagation, 100 unità diinput, 1 unità di output, apprendimento con 270.000 casidi prestiti effettuati nell’arco di 6 mesi, prestazioni miglioridel 7% rispetto al sistema preesistente di Credit scoring).

Applicazioni e strumenti 101

Page 105: Apogeo - Reti Neurali Artificiali (1991)

Strumenti di sviluppo per Reti NeurdiGli strumenti per la realizzazione di reti neurali si dividono in trecategorie:

0 strumenti software;

0 schede hardware per computer;

0 circuiti ad hoc.

1 simulatori software sono strumenti che mettono a disposizioneun linguaggio per la definizione di una rete neurale: si può sce-gliere un modello di rete con architettura prefissata (backpropagation, memoria associativa, rete competitiva, macchina diBoltzmann...) oppure si può costruire una architettura ad hoc,definendo il tipo di unità, di connessione, di funzione di trasfe-rimento... Una volta definita l’architettura è possibile istanziareuna rete con un certo numero di unità e di livelli e poi farleapprendere un insieme di esempi, eventualmente definendouna formula di apprendimento ad hoc. 1 prodotti più sofisticatipermettono la “traduzione” della rete addestrata in un linguag-gio di programmazione tradizionale (generalmente il “C”) el’integrazione della rete in software applicativo; in questo casola rete viene vista come una sorta di “subroutine” richiamabileall’occorrenza. Sono estremamente utili i programmi di utilitàper il debugging e il set-up della rete: grafici dell’errore, mappedi attività, diagrammi dei pesi...

In conclusione, i pacchetti software per la simulazione delle retineurali (Neuralworks, Neuroshell...) sono ottimi strumenti per laprototipazione e la realizzazione di applicazioni limitate; il lorobasso prezzo li può giustificare anche in veste tutoriale. 1 puntiforti sono l’estrema flessibilità, la completezza dei modelli a dispo-sizione, la semplicità di uso, la disponibilità su PC e il bassoprezzo. 1 punti deboli sono il limite di memoria e le prestazioni. 11vero problema della simulazione di reti neurali via software non èla lentezza (una Sun-Sparc ben programmata può superare circuitihardware artigianali) né la limitazione della memoria RAM, ma èla capacità dei compilatori e dei sistemi operativi di “digerire” ta-belle di enormi dimensioni (una rete di Hopfield applicata adun’immagine di 1OOx100 pixel richiede una tabella di 100 milionidi elementi).

102 Capitolo 9

Page 106: Apogeo - Reti Neurali Artificiali (1991)

Una soluzione a questo problema sono le schede hardware ag-giuntive per computer: queste generalmente contengonoparecchi megabyte di memoria e diversi processori e co-proces-sori matematici. La rete viene comunque eseguita (e addestrata)in maniera sequenziale, infatti queste schede non contengonouna circuiteria ad hoc parallela, ma semplicemente dei processo-ri alla Von Neumann con un’architettura ottimizzata per ilcalcolo matriciale (pipelinc). Per questo motivo queste schedeprendono il nome di “acceleratori neurali”. Esistono in commer-cio schede di tipo add-on per PC o Sun o Vax (DASH! 860,Anza, NDS, Parallon, Sigma, Mark...) corredate di software perla definizione e istanziazione di reti con architettura predefinitao personalizzata. Le capacità di memoria consentono di lavoraretranquillamente con centinaia di migliaia di unitA, milioni diconnessioni ad una velocità di esecuzione di decine di migliaiadi connessioni al secondo. L’unica forma di parallelismo è il fat-to che l’applicazione neurale può girare sulla schedacontemporaneamente ad applicazioni tradizionali operanti sullaCPU del computer ospite; generalmente l’applicazione neurale èvista come un co-processo.

In conclusione, queste schede neurali sono una via di mezzo fralo strumento prototipale (caratterizzato da alta flessibilità e ge-neralità) e lo strumento applicativo (caratterizzato da alteprestazioni). L’unico punto debole è il prezzo, che spesso superail valore dell’intero computer ospite. Le schede neurali sono daintendersi come strumenti di studio e sviluppo, non come pro-dotti per l’esecuzione di applicazioni. Il loro alto costo e lacomplessità hardware/software le rende improponibili per ap-plicazioni da rilasciare su vasta scala (usando una terminologiasoftware, si potrebbe dire che manca la versione di “delivery” oil “x-un time”).

Un’altra possibilità è l’implementazione di simulatori neurali sumacchine intrinsecamente parallele (Transputer, Array Compu-ter, Connection Machine...). Qui vi è il vantaggio di ottenere unreale parallelismo, ma possono sopraggiungere difficoltà tipica-mente dovute al fatto che l’architettura di queste macchine èconcepita per scopi diversi, che si scontrano con le esigenzeneurali.

La strada più promettente, anche se la più difficile, è quella del-la realizzazione di circuiti ad hoc. Svariati approcci sono stati

Applicazioni e strumenti 103

Page 107: Apogeo - Reti Neurali Artificiali (1991)

tentati: negli anni 60 H.D.Block costruì un perceptrone [27] conun’area sensoriale di 20x20 rivelatori, una rete associativa di 512unità e 8 unità di output. La rete era fisicamente collocata inuna scatola metallica e l’intensità delle connessioni veniva varia-ta, durante l’apprendimento, da potenziometri guidati dapiccoli motori elettrici. Questa rudimentale macchina aveva lastessa velocità di una rete neurale simulata oggi su una macchi-na tipo VAX.

Nel 1984 Hopfield propose una memoria associativa in cui leunità hanno uno stato di attivazione continuo anziché binario[28]: in questo caso, ogni unità è assimilabile ad un amplificato-re elettronico di segnali, le connessioni sono normalissimi fili e ipesi sono resistenze elettriche (figura 27). In altre parole, Hop-field propose la realizzazione elettronica di quello che è ilneurone biologico: ogni unita è caratterizzata da una capacita dimembrana Ci e una resistenza di membrana Ri. L’unità si com-porta come un semplice circuito elettrico con una parte lineareRC e una non lineare (la funzione di trasferimento T).

Linee di outout

Amplificatoreinvertito N’ Resistenza

Figura 27. Un circuito elettrico corrispondente ad una rete neurale di Hopfieldcon unità ad attivw’one continua.

104 Ci~;~ilolu 9

Page 108: Apogeo - Reti Neurali Artificiali (1991)

L’attivazione delle uniti è quindi governata da queste relazioni:

,,..::j.:... ::.

1

,. :

Wij=-

Rj

Si noti che il peso Wij delle connessioni è l’inverso della resi-stenza elettrica Rij fra gli amplificatori i e j. L’output delle unitàè assimilata alla frequenza di scarica ed è governata da una fun-zione tipo signloide (diversa da quella vista per le reti backpropaga tion):

Si noti, in figura 27, che ogni unitA è rappresentata da una cop-pia di anlplificatori per poter rappresentare sia eccitazioni cheinibizioni fra le unità (poiché non esiste una resistenza elettricanegativa, si applica una resistenza positiva ad un segnale inver-tito da un apposito amplificatore). Hopfield ha dimostrato cheun siffatto circuito manifesta le proprietà tipiche delle reti neu-rali ed è equivalente ad una rete con stati binari e attivazionestocastica. Svariate implementazioni sono state realizzate e postein commercio (AT&T, Bell, Synaptics, Fujitsu...). Le realizzazionisu silicio attuali contengono alcune centinaia di unità totahnenteconnesse, per un totale di centinaia di migliaia di transistor; latecnologia può essere sia digitale che analogica.

Si stanno diffondendo sul mercato anche sistenli applicativi spe-cifici, corredati di una rete neurale gi& addestrata o comunquepredisposta per addestramenti specifici. Dagli Stati Uniti pro-vengono sistemi per la comprensione di caratteri manoscritti;l’Europa (Università di Helsinki) è particolarmente forte nellarealizzazione di dispositivi in grado di scrivere sotto dettatura.

Riassumendo, diverse impletl7entazioni hardware ad hoc sonostate realizzate per le reti neurali, tutte caratterizzate da dueproblemi principali: il primo è che un circuito ad hoc non potnìmai essere general-purpose (ad esempio, un circuito per unamemoria associativa non patri mai funzionare conle back pro-pagation). Il secondo è l’oggettiva difficoltà nel creare un

“groviglio di fili” che non si tocchino (le connessioni).

Applicazioni e strmzcnfi 105

Page 109: Apogeo - Reti Neurali Artificiali (1991)

Un approccio molto promettente per risolvere quest’ultimo pro-blema è l’impiego di tecnologia ottica anziché elettronica: leproprietà della luce, infatti, calzano a pennello per le funzionineurali. Come è noto, due fasci di luce che si incrociano noninterferiscono fra di loro, ma si “attraversano” senza disturbarsi;inoltre, se diversi fasci di luce convergono in un punto, l’intensi-tà luminosa incidente è la sommatoria delle intensità dei fasci;infine, l’impiego di filtri ottici può fungere da peso sinaptico diconnessione. Pertanto, si può ipotizzare la realizzazione di unarete neurale in cui ogni unità sia un dispositivo ottico che ricevealcuni fasci di luce in input opportunamente filtrati, li somma, lielabora tramite lenti e specchi e poi li trasmette ad altri disposi-tivi senza preoccuparsi del fatto che i loro percorsi si incrocino.Svariati centri di ricerca stanno lavorando su quest’idea, chesembra promettere bene nonostante le difficoltà tecniche (volu-minosità delle apparecchiature, dispersione di energia...).

L’ultima frontiera nella realizzazione di reti neurali è l’approcciobiologico, in cui ogni unità è effettivamente formata da celluleopportunamente sintetizzate. L.a prospettiva di poter avere dei“bio-computer” è molto allettante perché potrebbe aprire nuoviorizzonti tecnologici, ma a tutt’oggi è più sogno che realtà.

Page 110: Apogeo - Reti Neurali Artificiali (1991)

Bibliografia

[ 11[ 21

[ 31

[ 41

[ 3

[ 61[ 71

[ 81[ 91

[IOI

1111

[121LI31

J.P. Changcux: “L’hommc ncuronal”, Parigi, 1983OxTotd Companion LO Mind: “Mcmory: biological basis”, Oxford,1987D.E. Rumclhart, J.L. McCtclland: “Parallcl Dislribulcd Processing”,MIT Press, 1988K.S. Lashlcy, “In scarch of tic Engram”, Society oi ExpctimcntalBiology Symposium, Camblidgc Univctsity Press, 1950W. McCulloch, W. Pitts: “A logical calculus of lhc idcas immancnl inncrvous aclivily” Bulldin of Malhcmalical Biophysics, 1943. Raccoltonel volume “Ncurocomputing: foundaiions of escarch” cds. J. Andcr-scn, E. Roscnfcld, MIT Ptcss 1988.

D.O. Hcbb: ‘The organizalion of bchaviour”, New York 1949F. Roscnblall: ‘The Pcrccplmn: a pmbabilistic modcl for informalionstomgc and organization in tic brain”, Psycologjcal Rcview 65, 1958M.L. Mitsky, S.A. Papctl: “Pcrccptrons”, MIT Press, 1969D.E. Rumclha& G.E. Hinlon, R.J. Wittiams: “Lcaming intcmal rcprc-scntations by crmr propagation” da “Parallcl Distibutcd Pmccssing”di Rumclhafl, McCtclland, MIT PESS, Cambridge MA, 1986

J.I? Hopticld: “Ncural Nclwotks and physicat syslcms wilh cmcrgcntcollcctivc computional abili&” Pmcccdings of lhc National ACXIC-my of Scicnccs 79,1982.T. Kohoncn, “Associalivc mcmory: u systcm lhcorclic approach”,Springcr Vcrlag, Bcrtino, 1977.D. Parisi: “Intervista sulle reti neurali”, Ed. Il Mulino, Bologna, 1989A. Mazzetti: “Reti Neurali: 10 risposte a 10 doma&“, InlònnaticaOggi N. 62, Jackson Ed. Giugno 1990

Bibliografia 107

Page 111: Apogeo - Reti Neurali Artificiali (1991)

[ 141 B. Kosko: “Bidiectional Associ:~tivc Mcmorics”, IEEE Transaclionson Syslcms, Man &and Cybcmctics, 1987

[ 151 J.J. Hopficld: “Ncural Nclwo&s and physical systcms with cmcrgcntcollccivc compulalional abilitics”, Pmcccdings of IIIC National Acadc-my of Scicncc 79,1982

[ 161 R. McEliccc, E. Posncr, E. Rodcmich, S. Vcnkalcsh: “The capacity oflhc Hopficld Associative Mcmory”, IEEE Trans. on InfomxaionThcory, July 1987

[ 171 R. Hcchl-Niclscn: ‘Thcory of Back Pmpagalion Ncural Networks” In-tcmalional Joint Confacncc on Ncu~fl Nclworks, 1989

[ 181 GHinton, T.J.Scjnowski: “Lcaming and xlcaming in Bolfzmann Ma-chincs” in “P~allcl Distribulcd Pmccssing” Rumclhard, McClclland,1986

[ 191 S.Kitkpalrick, C.D.Gcla& M.l?Vccchi: “Oplimizalion by simulrrlcd an-ncaling” in “Scicncc”, 220, 1983

[20] ECrick, G.Mitchinson: ‘The lùnclion of dtcam slccp” in “Nalurc”,3@l, 1983

[21] T.Kohoncn: “Sclr-0rganizing rormalion of topologically concct fcalu-IC mrrp”, Biologica1 Cybcmctics, 43, 1982

[22] S.Grossbcrg: “Compclilivc Lcaniing: fmm intcmclivc activation Loadaplivc raonancc” in “Cog&ivc Scicncc”, 11, 1987

[23] D.E.Rumclhart, D.Zipscr: “Fcalutc discovcry by compclilivc lcaming”in “Coqilivc Scicncc”, 9, 1985

[24] C.Von Der Malsbuq: “Sclf organizalion of oricntation scnstivc cclls inthe slriatc coflcx”, in “Kibcmctik”, 14, 1973

[25] G.N.Edclman: ‘The Ihcory of’ nalurdl gmup sclcclion” Basic Books,New York, 1987

[26] S.Nolfì, J.L.Elman, D.Pxisi: “Gcnctic adaplion and individuai lcumingin ncural networks”, lnslitutc of co@tivc Scicncc, S.Dicgo Univasityof California, 1989

(271 H.D.Block: “The pcrccplmn: 3 modcl Tor brain runclioning”, Rcvicwsof Modem Physics, 1962

[28] J.J.Hoplicld: “Ncurons wilh gradcd rcsponsc havc collcctivc computa-tional propcrtics likc Iho.sc of two slalc ncurons”, Pmc. of NationalAcadcmy of Scicncc USA, 1984

108 Bibliopfia

Page 112: Apogeo - Reti Neurali Artificiali (1991)

Finito di stmnparc nel mese diAgosto 1990 da Grafica 8.5 srl

Rodano Millepini

Page 113: Apogeo - Reti Neurali Artificiali (1991)

El 1.000 cotrst$ e trucclti AutoCAD Cod. 0022 - L. 76.000 - Pag. 512per0 600 consigli e h-trcclti Cotttttrodoti: Cod. 0031 - L. 48.ooO - Pag. 368perCI Au toCALI 30 Cod. 0029 - L. 48.ooO - Pag. 320CI AutoLZSPper AutoCAD 11 Cod. 0049 - L. 38.ooO - Pag. 224[7 Cottvcrtivc in OSI2 i progrmntni in C dc1 DOS Cod. 0020 - L. 53.ooO - Pag. 320CI Dati, Rclnzioni & Associazioni Cod. 0053 - L. 25.000 - Pag. 1900 dBASE ZV E dBASE SQL Cod. 0016 - L. 48.000 - Pag. 3200 Dizionario Acmttitni 6 Tcrtttitri di Tttforttratica Cod. 0022 - L. 48.ooO - Pag. 448CI Diziottnrio Actmitni & Tmtritti di Znfortnatictr softwctrc Cod. 0013 - L. 9O.Oa,0 DOS, Lottts l-2-3, WordStar, Word, dBASE ZZZ Plus Cod. 0024 - 48.ooO -

Pag. 384CI Il libro dei FAX Cod. 0022 - L. 25.ooO - Pag. 212L7 HyperTalk & ZZypcrTmf Cod. 0037 - L. 53.000 - Pag. 464Cl Lo hrs 1-2-3 Cod. 0033 - L. 19.000 - Pag. 1600 Pqc Mnkcr 4 Macitrtoslt e Wittdozus Cod. 0056 - L. 53.000 - Pag. 352perCl Pa1 Cod. 0052 - L58.ooO - Pag. 432Cl Parmfox 3 Cod. 0019 - L. 68.000 - Pag. 522Cl Ptqrmrtnarc Witrdozus 3 Cod. CO54 - L. 76.000 - Pag. 576Cl Reti Neurali Artificiali Cod. 0060 - L. 25.000 - Pag. 1280 Quafro Pm 2 Cod. 0038 - L. 76.ooO - Pag. 6240 Sistemi di Supporto alla Decisione Cod. 0018 - L. 48.000 - Pag. 2880 Systctn 7 (c Quick-Titnc) Cod. 0058 - L. 38.000 - Pag. 3200 Uttix DOS Cod. 0030 - L. 48.ooO - Pag. 352pr0 Vcttttrra 2 - Esfcttsiottc profcssionalc Cod. MI15 -.6S.o00 - Pag. 5120 Vcnttrra 3 - Il grnndc tnntru& Cod. 0055 - L.68.000 - Pag. 5760 Videotel Cod. ME!3 - L. 38.m - Pag. 2720 Windows 3 Cod. 0028 - L. 25.000 - Pag. 144Cl WordStnr 5 CaI. 0011 - L. 48.000 - Pag. 3520 Word Windozos Cod.0035 - L. 48.ooO - Pag. 352per0 Works 2 Progetti Coti. 0060 - L. 33.000 - Pag. 192

Opi mese 2 libri novità sui prodotti ity?ormatici pili intcrcssarlti:richicdcte il catalogo cort Ie novità di qucst’Auturuw(DOS 5, Borlatut C++, UNIX 4, HypcrCard, AlrtoCAD...),ad Apogeo, via Voghera 1 Ita, 20144 Milatzo