Professional Documents
Culture Documents
M A Z Z E T T I
Reti Neurali
Artificiali
Introduzione ai principali modelli
e simulazione su personal computer
Copyright 0 1991
RAI - Telesoftware
Piazza Montegrappa 4
00195 Roma
Via Voghera 11 /A
20144 Milano
ISBN 88-7303-002-S
Grafica, copertina
e impaginazione elettronica di Anna Nicoli e Mauro Risani
Prefazione
Questo libro riproduce la parte testuale della versione elettronica di un corso commissionato allautore dalla Divisione
Televideo della RAI e trasmesso nellambito del proprio
servizio Telesoftware.
Nato nel 1984, Televideo ha ampliato dalla fine del 1990 la
gamma della sua offerta e ha avviato un servizio di trasmissione dati via etere, cio di software per personal computer,
dedicato allutenza domestica, che affianca le trasmissioni
dati, sempre via etere, per utenze commerciali e per gruppi
chiusi di utenza e la trasmissione di software didattico per
il mondo della scuola. Il servizio dedicato allutenza domestica stato denominato Personal Software e mette a
disposizione, gratuitamente, di tutti i possessori di un personal computer con sistema operativo MS-DOS materiali
informatici di varia natura.
Le pagine di Televideo sono suddivise in otto indici e sono
contenute in otto magazzini, sette dei qrali vengono utilizzati per la trasmissione cosiddetta in chiaro di informazioni e notizie.
Lottavo magazzino, quello che comprende le pagine da 0 a
99 (per alcune marche di televisori da 800 a 899>, e stato
riservato alle trasmissioni del Telesoftware, alla trasmissione via etere, cioe, di file di qualsivoglia tipologia per calcola tori: programmi, da ti, testi, grafica.
In pratica, ogni utente, installando nel proprio calcolatore
una apposita scheda Televideo/Telesoftware da collegare
alla presa di antenna TV, pu ricevere via eteresenza alcun
onere aggiun tivo il software trasmesso, memorizzarlo nel
Prefazione Y
VI
Prcfnziom
Ringraziamenti
LAutore desidera ringraziare tutte le persone che hanno
contribuito allo sviluppo di questo libro, in particolare Pasquale Santoli, sostenitore della versione via etere del
presente libro, trasmessa dalla rubrica Telesoftware di RAITelevideo. Un particolare ringraziamento a Bruno Apolloni,
Elisabetta Binaghi, Gabriele Ronchini e Gilberto Vanzetto
per avermi seguito durante la realizzazione del libro con i
loro pregiati consigli.
LAutore
Alessandro Mazzetti, dopo aver conseguito la laurea in
fisica-cibernetica a Milano nel 1980, si occupato di linguaggi e metodologie presso 1Etnoteam SpA e la Direzione Centrale delle Ricerche dellItaltel SpA. Nel 1985 si avvicinato
allIntelligenza Artificiale operando come Knowledge Engineer presso lExper t Systems Applica tion Cen tre della
Systems Designers SpA. autore di numerose pubblicazioni
fra le quali tre libri sui Sistemi Esperti e sul Prolog; la sua
passione per lo studio delle pi avanzate tecnologie si esprime attraverso la continua collaborazione con luniversit di
Milano nel campo dei Sistemi che Apprendono e delle Reti
Neurali. Attualmente responsabile del Centro Tecnologie
Innova tive della CAP-Gemini-Sysdata SpA, dove ricopre il
ruolo di Product Manager per i Sistemi Esperti e i Prodotti
Neurali.
LAutore
VII
A Jacopo e Ruggero
Sommario
01
c2l
3
0
4
0
5
0
c6l
Appendice 65
7
0
8
0
9
0
Applicazioni e strumenti . . . . . . . . . . . . . . . . . . . . . . . . 99
q
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
X1
Il cerve1 IO
biologico e
le sue simulazioni
Ttuali:re sono le discipline rivolte allo studio dei fenomeni intelletl
0 linfclligcrizn
irzfellipzfi
2 Capitolo 1
Quando un neurone viene attivato, manda un impulso elettrochimico ai neuroni cui connesso: loperazione si ripete per
ogni neurone e nellintervallo di pochi centesimi di secondo intere regioni del cervello risultano interessate.
Il neurone il componente elementare del sistema nervoso; vi
sono molti tipi di neuroni, ma nelluomo non sono presenti tipi
diversi da quelli di altre specie animali [l]. Il neurone, come
mostra la figura 2, composto da:
0 corpo cellulare;
0 dendriti;
0 assone.
di altro Neuroni
11 corpo cellulare rivestito da una membrana in grado di mantenere una polarizzazione, vale a dire una concentrazione di
cariche elettriche. Tali cariche provengono dai dendriti, che sono
dei prolungamenti ramificati a loro volta in contatto con altri
neuroni. 1 molteplici dendriti di un neurone concorrono a eccitare il corpo cellulare il cjuale, oltre un certo limite, scarica la
sua attivazione lungo lassone, andando quindi a interessare altri neuroni. Il punto di contatto fra due neuroni si chiama
sinapsi e si manifesta nwdiante lavvicinamento fra lassone di
un neurone con il dendrite di un altro neurone (figura 3).
ASSONE
---.
-----/J
SINAPSI
(processo
elettrochimico)
3
DENDRITE
Figura 3. La sinapsi,
OUTPUT
OUTPUT
INPUT
INPUT
Figura 4. Concetto di input/output negli esseri viventi e nel computer;
Nel 1949 Donald Hebb ipotizz lapprendimento biologico come fenomeno sinaptico [6]: propose una formula matematica
oggi nota come legge di Hebb. Cominci a crescere lentusiasmo
verso questi dispositivi, che sembravano in grado non solo di
svolgere svariate funzioni, ma anche di imparare da soli il compito loro richiesto.
Nel 1957 Rosenblatt costru il cosiddetto pcrwytr~ne 171, un dispositivo in grado di imparare a riconoscere immagini: viene
dimostrato un teorema che garantisce la capacit di apprendere un
certo insieme di funzioni. Il perceptrone mostrava la robustezza e
flessibilita tipica dei sistemi biologici: a differenza dei computer,
un guasto 0 un errore nellinput non comprometteva lintera elaborazione ma provocava un lieve degrado delle prestazioni.
Laspetto pi sensazionale per stava nella capacit di riconoscere
correttamente anche immagini mai viste prima, manifestando
quindi capacita di cuyiw piuttosto che di im~arure a rncmoria, attraverso un meccanismo di associazione fra stimoli simili.
Cupifolo 2
Nel 1969 Minsky e Papert analizzarono criticamente il perceptrone evidenziandone i limiti e lincapacit di risolvere alcuni
problemi 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 come
conseguenza una sfiducia sullargomento che domin tutti gli
anni 70.
Negli anni 80 si assiste ad una rinascita delle reti neurali in seguito al superamento dei limiti del perceptrone: gli studi di
Kohonen [ill formalizzarono rigorosamente la materia e gli studi di Rumelhart 191 dimostrarono lesistenza di reti dalla
strultura piuttosto semplice in grado di svolgere funzioni complesse e significative con elevata accuratezza. Il trucco stava
nellimpiego di neuroni nascosti che imparano dai propri errori (da qui il nome di questa tecnica: error back
propagation).
A questo si aggiungono i successi di Crossberg e quelli di Hopfield [lo]. Questultimo concep le reti neurali non pi come
entit astratte (cio governa te da leggi matema tiche arbitrarie),
ma come entita fisiche (governate da leggi fisiche come quella
dellenergia, della carica elettrica, dei flussi turbolenti...). Si
quindi dimostrato che le capacit intellettuali possono emergere
come comportamento collettivo di un gran numero di entit fisiche di per s stupide. Per la prima volta si pensato di costruire
reti neurali general-purpose senza laiuto del computer, ma utilizzando direttamente componenti elettronici.
Degni di nota infine i contributi di Kohonen [ll] il quale ha
identificato meccanismi di apprendimento per reti neurali che
non richiedono lesistenza di un maestro (unsupervised learning). In altre parole, si dimostrata lesistenza di reti neurali in
grado di sccyrirc nuove conoscenze anzich assimilare le conoscenze altrui. di particolare interesse larchitettura di queste reti,
che sembra rispecchiare fedelmente le reti nervose biologiche.
Negli anni 80, i successi e le speranze dellIntelligenza Artificiale
simbolica (Sistemi Esperti, Linguaggi Logici, Reti Semantiche...)
hanno alimentato una diatriba fra i sostenitori dei due diversi
paradigmi per la rappresentazione di conoscenza: connessionista e simbolico. Linizio degli anni 90 caratterizzato da una
forte tendenza ad integrare i due paradigmi.
Il ccrvcllo biologico c le sue simulaziod
2
l
1J::;;:,:
.:. .:. , .
.: j:...:.,....;.: .:. .
. :.:.:. . :.
..:j:;+
; :::
. ::::::
7.
Neuroni formali
e reti artificiali
1 neurone formale una schematizzazione del neurone biologico in cui le propriet funzionali sono descritte da formule
ma tema tiche, senza preoccuparsi dei fenomeni elettrici, chimici,
termici, biologici che avvengono nella realtti. Per distinguere il
neurone formale da quello biologico, useremo una diversa terminologia: anzich neurone diremo semplicemente unik;
anziche dendriti e assone diremo input e oulpuf dellunitti. Attenzione a non confondere linput/output della singola unit
con linput/output dellintera rete.
Lo stato di eccitazione di un neurone (polarizzazione elettrica)
verr rappresentato da un zdove di nffivnzione, espresso come un
numero reale. Il meccanismo di scarica dellattivazione lungo
lassone verr rappresentato da una funziom di ftm~erirnenfo (o
funzione di output) che darti il valore delloutput dellunit a partire dal valore dellattivazione. .La sinapsi verr chiamata peso,
nel senso che quando due unit sono in stretto contatto diremo
che la loro connessione ha un forte peso (in altre parole, gioca
molto sul comportamento della rete).
Il funzionamento del neurone formale pu essere cos schematizzato. Data una rete formata da N unit, consideriamo
li-esima unit (figura 5): questa riceve alcuni segnali di input
provenienti dalloutput di altre unit; indichiamo con Oj Ioutput della j-esima unitti, espresso come numero reale. 11 valore
Oj viene trasmesso alli-esima unit opportunamente pesato,
cio moltiplicato per il valore della forza sinaptica esistente fra
la j-esima unit e li-esima: denoteremo tale peso con Wij (dallinglese Weight). Quindi il segnale che li-esima unit riceve
sar WijOj. Si noti che se Wij compreso fra 0 e 1 avr la funzioNeuroni formali E reti artificiali
Oa = T(Ai)
ne di smorzare il segnale Oj; se maggiore di 1 avn una funzione amplificatrice; se negativo avr una funzione inibitrice
anziche eccita toria sullunit i.
.:A/.:..::..
. ,.
:..:<...:<:..
,<
Le varie unit connesse con la i-esima unit concorrono a formare il suo stato di attivazione, che sar dunque calcolato come
sommatoria: indicando con Ai lo stato di attivazione delli-esima
unit, avremo:
Ai = CWijOj
i
Il valore delloutput delli-esima unit sar dato dallapplicazione della funzione di trasferimento, denotata da T. Quindi:
::
::i;
Oi = (Ai)
:.::.. .:
10 Cyitolo 2
La funzione di trasferimento ha lo scopo di trattenere lattivazione allinterno dellunita fino ad un certo livello di soglia,
oltre il quale lunit si scarica: la forn~a della funzione T sar
dunque a rampa (spigolosa o morbida, vedi figura 6).
di trasferimento.
Una rete neurale artificiale fonnata da un certo numero di unita fra di loro interconnesse (figura 7). Alcune unit ricevono
segnali dallesterno e per questo verranno battezzate unif di inprct della rete; analogamente, le unit che forniscono il loro
valore di output allambiente esterno saranno considerate oz~tpzlf
della rete (da non confondere con input/output del singolo neurone).
Neuroni fortnali E reti artqiciali
11
arfificiale
i: :
y = +)
Lesecuzione della funzione F avviene in questo modo: inizialmente la rete in stato di quiete, quindi tutte le unit sono
inattive e forniscono un output Oi nullo. Quando pervengono
dallesterno dei segnali di input X, le unit, di input vengono
sollecitate e quindi mandano un segnale alle altre unit; queste
ultime ricevono uno stimolo che dipende dai pesi delle connessioni. Ogni unit della rete verr5 dunque attivata in maniera
diversa e propagher stimoli alle altre unitti. Lattivazione assunta dalle unit di output verr trasmessa allesterno formando
linsieme Y dei valori di output della rete. Si noti il fatto che
lelaborazione avvenuta in un sol colpo, attivando in modo
parallelo tutte le unit simultaneamente.
Ma non tutto cos semplice: una rete neurale, infatti, pu contenere connessioni cicliche, come ad esempio quelle in figura 7
fra le unit U2 e U3, oppure quelle che formano il ciclo Ul-U3U4. 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
allambiente un output in perenne cambiamento: diremo che
la rete non cowergc. Pu anche capitare che la stimolazione
sia in continua crescita: in questo caso la rete csr>lone.
2 . la reciproca stimolazione porta ad una sequenza di attivazioni che si ripetono in ciclo: in questo caso loutput oscilla in
continuazione.
3. la reciproca stimolazione porta ad una combinazione di attivazioni che non cambia pi: in questo caso diremo che la
rete convevgc verso una soluzione Y=F(X). Questo ovviamente il caso pi interessante perch fa diventare la rete
neurale una macchina deterministica: esistono teoremi che
pongono le condizioni base affinch una rete sia sempre convergen te.
Per facilitare lo studio dei fenomeni che avvengono in una rete
neurale possiamo considerare alcuni modelli semplificati (figura 8):
1. Reti non ricorwnti = reti in cui le connessioni vanno in un
solo senso, dallinput alloutput. il contrario di reti cicliche.
2 . Reti totalrrwzte co~zy~cssc = reti in cui ogni unit connessa con
tutte le altre (generalmente esclusa s stessa). Si noti che una
connessione fra due unit con peso nullo, Wii=O, equivalente allassenza di connessione: per comodit di calcolo si
utilizzano spesso reti totalmente connesse in cui la topologia
viene definita azzerando alcuni pesi.
3. Reti a lizdi = reti i cui le unit sono organizzate in insiemi
separati e disgiunti di cui generalmente uno detto livello di
input, un altro livello di output e gli altri livelli vengono
chiama ti nascusfi 0 i&7wzcdi.
4 . Reti sivzrrrctriche = reti in cui la connessione fra due qualsiasi
unit uguale in entrambi i sensi: Wij=Wji.
13
Rete non
ricorrente
Rete totalmente
connessa
IllPUl
Rete
a piU livelli
(totalmente connessa
fra i livelli)
Inpul = output
Rete
simmetrica
Rete
autoassociativa
Computabilit,
apprendimento
e caratteristiche
S
arebbe lecito domandarsi a questo punto: ma coshanno
queste reti neurali di diverso dai computer? Tutto sommato
anche le reti, come i computer, sono macchine che danno un
certo output come frutto dellelaborazione di un certo input
(col termine computer intendiamo qui una macchina di Von
Neumann, vale a dire sequenziale, programmabile e con memoria).
Prima di analizzare le differenze fra reti neurali e computer, soffermiamoci sugli aspetti che vi sono in comune. Esiste una tesi
che afferma che la classe di funzioni computabili da una rete
neurale coincide con la classe delle funzioni calcolabili su macchine di Turing. Tradotto in termini pi terra-terra, questa tesi
afferma che per ogni possibile programma per computer esiste
una 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 essere
computata con elevata accuratezza da una rete neurale no~r ricornxte a soli tre livelli avente un opportuno numero di unit
(anche molto elevato) nel livello intermedio, senza alcuna connessione allinterno del livello ma totalmente connessa fra un
livello e laltro (figura 9).
Il teorema di Hecht-Nielsen riveste importanza pi teorica che
pratica, infatti non indica quante devono essere le unit n quali
devono essere i pesi W per ottenere una rete che effettivamente
esegua la funzione F. Non vi una soluzione generale a questo
Computubilitc,
npprcndimcnto
e ctrrattcristiche
15
Livello di output
Livello di input
Figura 9. Struttura di una rete in grado di computare una funziione qualsiasi
16 cnpito~o
errore duso 0 a guasto, affonda nella collettivit e viene soprasseduto. Si noti lestrema differenza rispetto ai computer
tradizionali, in cui la presenza di colli di bottiglia (CPU, BUS,
Flusso di controllo...) comporta una estrema sensibilit al minimo errore; ne consegue che le reti neurali sono appropriate in
quei campi in cui pii1 che la precisione richiesta la robustezza:
telecomunicazioni, visione, diagnostica, interpretazione di segnali con rumore (voce, caratteri manoscritti, firme), . . .
Unaltra grossa differenza fra reti neurali e computer riguarda il
meccanismo per ottenere le funzionalit desiderate. Stamo parlando, cio, di come programmare una rete neurale. Una rete
neurale non va programmata bens &estmt~
Addestrare una rete neurale significa presentarle un insieme di
esempi e lasciare che la rete si costruisca da sola la conoscenza
interna necessaria per svolgere il compito richiesto. Un esempio
(volutamente esagerato anche se realmente funzionante) quello di insegnare ad una rete il concetto di somma: anzich
fornirle un algoritmo (ad esempio somma le singole cifre da destra a sinistra con riporto), si presentano alla rete alcuni esempi
di somme: 5+3=8; 24+1329=1353; 1+17=18... Dopo aver osservato un numero sufficiente di somme, la rete avr imparato il
concetto di somma, quindi sar in grado di eseguire anche so~nme di numeri mai visti prima, come ad esempio 37+9.
Un altro esempio pu essere quello di addestrare una rete ad
effettuare dei movimenti fisici come ad esempio giocare a tennis
0 sciare. Per non complicarci troppo la vita, consideriamo un
movimento elementare ma significa tivo come ad esempio quello
per lanciare in aria un sasso per colpire un bersaglio. sufficiente presentare alla rete un certo insieme di esempi, facendole
vedere dove arrivano alcuni sassi lanciati per prova: analizzando questi tiri-prova, la rete riesce ad autocostruirsi la capacit di
tirare sassi, tale per cui, quando le si chieder di lanciare un
sasso fino a laggi, la rete sapri quale forza e quale angolazione
imprimere al lancio.
Nei computer tradizionali, invece, questo problema deve essere
risolto a mano dalluomo, che deve trovare le equazioni del moto di un corpo in caduta libera e tradurre tali equazioni in un
algoritmo da far eseguire dal computer. Il fatto che le reti neurali possano apprendere da esempi le rende particolarmente
Conrputabilih,
npprendimcnto
e cmutteristiche 17
= froixw Y hfo X e W.
AWij=e(Dt-Ot)Oj
dove Di indica il valore desiderato di Ot, quindi Di-Ot indica
lerrore commesso dallunit i.
Attenzione: la fase di apprendimento di una rete ben distinta
da quella di esecuzione; una rete o impara o esegue un certo
compito, analogamente ai computer tradizionali in cui la fase di
programmazione ben distinta da quella di esecuzione. Da questo punto di vista le reti neurali artificiali differiscono da quelle
Cortprtabilitr,
apmriirrumto
e caratterisfiche 19
Esistono due principali regimi di apprendimento: con supevvisione e SLWZU supcvvisionc (supervised e unsupervised). Gli esempi
citati in precedenza (somma di numeri, lancio di sassi, riconoscimento di volti) erano tutti relativi ad apprendimento con
supervisione, cio caratterizza ti dal fatto che gli esempi mostrati
al discente specificano sia linput che loutput.
Lapprendimento senza supervisione invece si manifesta quando gli esempi osservati contengono solo linput. In questo caso
non si tratta pi di apprendere una funzione Y=F(X), ma di organizzare e inquadrare gli esempi osservati trovando relazioni e
regolarit fra di loro. Facciamo subito un esempio: supponiamo
di avere un insieme di dati relativi ad aziende italiane, in cui
per ogni azienda siano citate le dimensioni, lubicazione, il tipo
di prodotto, il fatturato... insomma, un tradizionale database.
Considerando ogni azienda come un esempio, una rete neurale
con apprendimento senza supervisione in grado di individuare raggruppamenti di aziende simili, arrivando a scoprire
concetti come aziende private, aziende di servizi, aziende del
nord... oppure notare relazioni come ad esempio le compagnie
aeree sono generalmente statali, la tipica azienda del nord
piccola e privata ,le aziende di servizi hanno un basso fatturato pro capite...
Terminiamo questo capitolo con un riassunto delle principali caratteristiche 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 unita, dalla particolare topologia (a livelli, ciclica, totalmente
connessa...> e dal tipo di funzione di trasferimento T.
3. Una rete neurale non la si programn~ ma la si addestra.
Laddestramento richiede un insieme di esempi specifici anzich una regola o un algorihno generale. Lapprendimento
pu essere con 0 senza supervisione ed espresso nella forITM AWij = . . .
4. La conoscenza di una rete neurale (memoria a lungo termine, programma) risiede nellinsieme dei pesi delle
connessioni fra le unita e nellinsieme di soglie di attivazione
delle unita. Tale conoscenza non in forma simbolica espli-
Co~uptrrbilitR,
apprcndimnto e caratteristiche
21
5.
6.
7.
8.
9.
10.
22 Capitolo 3
Memoria
associativa
distribuita
C
01 termine memoria associativa si intende un dispositivo
in grado di contenere informazioni sotto forma di associazione
fra dati. Un sinonimo di memoria associativa pu essere nzcnzoria acccssibik per contenuto; il contrario m.moriu accessibile per
indirizzo. Un esempio tipico pu essere lassociazione fra il nome
dei miei amici e il mestiere che fanno: se ad esempio Ruggero fa
lo skipper, il suo nome mi verr in mente ogni qual volta si
parla di vela e, viceversa, mi verranno in mente barche a vela
ogni volta che si parla di Ruggero.
Al contrario, una tipica memoria accessibile per indirizzo
unagenda, in cui estremamente facile sapere cosa ho fatto
il 19 Aprile (usando la data come indirizzo daccesso) ma
altamente oneroso sapere quando ho incontrato Jacopo, infatti dovrei scandire tutta lagenda verificando giorno per
giorno gli incontri fatti. Un memoria associativa, dunque, effettua la classica associazione di idee, spesso caratterizzata dal
fatto che uninformazione fa venire in mente unaltra informazione per analogia e similitudine piuttosto che per uguaglianza
esatta.
Una buona memoria associativa comporta labilit di operare in
presenza di dati incompleti o erra ti. Si supponga ad esempio di
immagazzinare in una memoria associativa un catalogo di libri,
contenente la voce Emilio Salgari: Le tigri di Mompracem, scaffale 21. Lassociazione fra autore e titolo permetter di reperire
un dato per intero anche a partire da una porzione di esso, come
Mmoriu associativa distribuita
23
N unit&
Dato x
Figura 10. Shuffura di una refe neurale che realizzu una memoria associutiva distribuita.
-1
:::.. .,
,.: :
.::..::..::.
,:::: ::.
.: . :
.: :
:j.. .
,;:;:
Xi=
l -1 s e
.,.:.:;/:..: .
.
cWijYj 5 0
i
+1 se c WijXi > 0
.:,
:. .::.
:.
:
.:. .:,..:.j. .. .
::. :.;:j
:. .. .. . . .
Yj
l -1 se
.. .:.. . . .
c WijXj 2 0
i
,:/..,:
:. . :.
AWij = XiYj
t1 -1 -1) }
Le connessioni fra le unit saranno 6x4=24 e possono essere rappresentate con una matrice di numeri interi di 6 righe e 4
colonne. Proviamo a memorizzare nella rete i dati X1 e Yl visti
sopra (in altre parole, addestriamo la rete con quellesempio).
26
Capitolo
.j::. :....: Dalla formula di Hebb otteniamo una matrice cos fatta:
,::. :.
91 +1 -1 -1
:.. ::>.
: .
.,.':.:
:
.:
:
:
-1
91
-1
t1
-1
-1
+1
-1
t1
-1
+1
-1
+1
-1
t1
+1
-1
+1
-1
t1
In questa matrice li-esima riga rappresenta i valori delle 4 connessioni che vanno dalli-esima unit del livello X alle 4 unit del
livello Y (figura 12).
Xi=VdOlT
delli-esima
unitA del
livello X
per comptie[
t1 t1 -1 -1 -l), Y2=(+1
-1 t1 -1) }
Fermiamo qui la fase di addestramento e passiamo a far eseguire questa rete, vale a dire assegnamo solo uno dei due livelli,
diciamo X, e lasciamo evolvere la rete fino a quando si rilassa in
uno stato stabile; a questo punto laltro livello, Y, conterr linformazione associata ad X. Si noti che la rete fortemente
ciclica, infatti essendo le connessioni bidirezionali, ogni unit influenza le altre, a cui ne a sua volta influenzata.
Fortunatamente esiste un teorema che assicura la convergenza
della rete garantendo limpossibilit di oscillare per sempre caoticamente [15].
Lalgoritmo per simulare in modo sequenziale lesecuzione della
rete il seguente:
procedure esegui;
acquisisci dato X;
azzera dato Y;
ripeti
28 ~n~>itok~ 4
. .
..
. .
,.
.... . . . .per
(* sndata da X a Y *)
::.
...:...::. . . . . ogni unitA j del livello Y
:.:. . . .
calcola la sua attivazione A=SUbfi(W[i,j]*X[i]);
j:x. . .
.
.,
.A. .
,.. .. . 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 Y
.
2.
$jj fine;
..: . . . . .
.
. . . .
...:\. .
. . . .
":j:i funzione T (A) ;
"..j:.::
.
.. .... ..se
A>O allora T:=tl altrimenti T:=-1;
... ..
..
.:...
.
f.
i n.e .
:
Come si pu notare, levoluzione della rete una continua oscillazione da X a Y (andata e ritorno), fino a che non vi sono pi
cambiamenti (questo equivale ad una oscillazione infinita in cui
da un certo punto in poi non cambia pi nulla).
Vediamo quindi se la rete ha memorizzato correttamente i dati
fornitele in fase di addestramento: proviamo a darle X=(+1 +1
+1 -1 -1 -1) e calcoliamo a mano il valore di Y, supponendolo
::::::. inizialmente nullo, cio Y=(O 0 0 0).
:.:;
::
.I:
..
':j:;
:.
.:j.;:.
. :>:
,. :"
= T( 2+0+2+2-Ot2)
= T( O-2+0-0-2-0)
= T( 0+2+0-0+2-O)
= T(-2+0-2-2-O-2)
= tl
= tl
= -1
= -1
= -1
e otteniamo X=(+1 +l +l -1 -1 -l), che identico al valore precedente, quindi inutile proseguire con altre oscillazioni, perch la
Memoria associativa distribuita 29
= -1
= -1
i.
j:j j
:..
... /
; ij
,...::::
:.
.f::
.Y[l]
. .
. .
. .
.
.
=
.
.
.
Y[2] =
. . .
Y[3] =
= -1
T(tl*O
30 Capitolo 4
= -1
= T(t6) =tl
.
T(tl*O tl*-2 t0 -l*O -1*2 -l*O)
= T( O-2+0-0-2-0)
= T(-4) = -1
T(tl*O +1*2 t0 -l*O -l*-2 -l*O)
= T( 0+2+0-0+2-O)
= T(t4) =tl
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, loutput sorprendentemente corretto. In altre parole il guasto stato soprasseduto dalla
collettivit e non ha fatto collassare la rete. Si noti che ogni singola unit non conscia del risultato globale che la rete sta
raggiungendo, ma fa i fatti suoi. Sembra quasi che vi sia una
mano invisibile che guida le unit anarchiche verso una meta
comune.
Ma proviamo ora a mettere in crisi questa rete. Cosa succede se
le dessimo un input molto diverso da quelli appresi? Proviamo
con X=(+1 +l +l -1 +l +l): questo dato a uguale distanza da
X1 e da X2 infatti differisce da entrambi per il 33% circa (due
unit diverse). ,
:.\.:..:. Andata:
2 Y[l] = T(t1*2
::..:.:.
.,,..c.
:jlj:
.:.
.
:::.
;,l j
.,.,:
: i:ij
Y[2] =
.. ... .
Y[3] =
Y[4] =
. . .
= T( 2+0+2+2+0-2)
= T( O-2+0-0+2+0)
= T( 0+2+0-O-2+0)
= T(-2+0-2-2tOt2)
Ri tomo:
.. . . . .
;ii;
X[l] = T(t1*2
'.
;.; x121 = T(tl*O
= T(t1*2
x131
.: :
,:.:.
:
= T( 2-0+2+2-Ot2)
= T( 0+2+0-0-2-O)
= T( O-2+0-0+2-0)
= T(-2-0-2-2-0-2)
In altre parole, la rete ha fatto confusione ed ha avuto una specie di allucinazione, nel senso che ha creduto di ricordare
qualcosa che non aveva mai visto.
Purtroppo questo non lunico inconveniente di questo tipo di
rete: problemi analoghi possono affiorare quando si sovraccarica una rete nel tentativo di farle apprendere troppa roba.
Esistono svariati teoremi a proposito della capacit di memoria
di questo tipo di rete [16]: il sovraccarico si manifesta quando il
numero di dati da memorizzare si avvicina al numero di unit
del livello che ne ha di meno. Teoricamente il limite massimo di
dati memorizzabili :
L = min(N,M)
dove N e M sono il numero di unit nei livelli X e Y. In sostanza, il numero di unit di una rete limita le sua capacit di
memoria. nel nostro caso, avendo N=6 e M=4, si pu notare
una certa amnesia della rete con 4 dati. Proviamo infatti ad
aggiungere alla nostra rete la memorizzazione di queste associazioni:
-d., ( X3=(-1 t1 t1 t1 -1 -l), Y3=(-1
( x4=(+1 t1 -1 -1 t1 tl), Y3=(-1
t1 t1 -1) }
t1 t1 tl) }
-2 0 +4 0
t2 0 o-4
-2 0 0 0
0 t2 -2 t2
-2 0 ot4
....
Provando a darle linput X3=(-1 +1 +l +1 -1 -1) otterremo loutput spurio Y=(-l-l +l -1). Anche in questo caso la rete ha avuto
le traveggole, nonostante il fatto che linput fornitole fosse esattamente uno di quelli appresi. Provando ora a farle
riapprendere lassociazione {X3,Y3) otteniamo un riacqu+to di
memoria con conseguente perdita di memoria degli altri dati. In
conclusione, la rete manifesta una sorta di @ihrifh cm gli menf i pir freqr4enf i e rccenf i.
Poniamoci ora unaltra domanda: supponendo di voler memorizzare nella rete una corretta quantit di associazioni, riuscir la
nostra rete a memorizzare qualsiasi combinazione di dati? Purtroppo no. Se ad esempio provassimo a memorizzare dei dati
troppo simili fra di loro, rischiamo di creare confusione. Proviamo ad addestrare la nostra rete con queste tre associazioni Ce
nessunaltra).
.
t3
-1
t1
-1
t1
-1
-1
t3
-3
t3
-3
t3
t1
-3
t3
-3
t3
-3
-1
t3
-3
t3
-3
t3
Nonostante il fatto che le associazioni memorizzate siano appena 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 estrema
somiglianza fra i da ti memorizza ti, non in termini di ugualianza
fra 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 vista della rete sono praticamente uguali. La memorizzazione di
Memoria associatiua distribuita 33
E =-C C WijXiYj
i
Il valore di E in ogni istante dellesecuzione della rete rappresenta la posizione della pallina sul foglio di gomma. A questo
punto piuttosto facile dimostrare che la nostra rete ha una
superficie denergia con crateri e senza buchi (questo il teorema della convergenza, cio quello che dimostra che le
oscillazioni della rete prima o poi terminano). La dimostrazione
si basa sul fatto che un qualsiasi cambiamento nella rete comporta una dminuzione dellenergia e che esiste un minimo (il
tra tere): Cd
* conseguenza, comunque vadano le cose, la rete ten-
34
Cnpitola 4
der a raggiungere il SLIO minimo energetico e a rimanervi. Consideriamo un qualsiasi cambiamento che avviene nella rete: sar
senzaltro dovuto al fatto che una certa unit, diciamo Xt, riceve
uno stimolo (dalle altre unita) non concorde con il suo attuale
valore, cio di diverso segno. Ad esempio, se lunita Xi vale +1 e
riceve uno stimolo c WijYj = -4, verr trasformata in -1. Calco-
::.:.: ..<
:
:.:
:./:..:..
j::::
..:.
j:i:, ;,;:;:;:i:..
..........:.:.:.,
:.,.:.:.:.:.:......
.,.
./
.: ;:j:i:j:.:
:c.. .:::: ::
....... . ......:.
.:
ilye
Simulazione
software
di una memoria
associativa
1guaggio
n questo capitolo descriviamo due programmi scritti in linPascal per la simulazione sequenziale su computer di
una memoria associa tiva neurale. La relativa versione eseguibile
per Personal Computer MS-DOS t; disponibile al pubblico altraverso le strutture divulgative di RAI-TELEVIDEO. Il primo di
questi due programmi si chiama MEM-ASS e permette di sperimentare una memoria associativa fornendo a mano i valori +1
e -1 dei livelli X e Y. Il listato 1 contiene il codice Pascal di cluesto programma.
Listato 1:
:
. ... ..
.:.
: :.
: :.:
'Y,.:,.
.
.,'.
.:,,:.
,.
: :,.
:.::;:j
:$:<I
:.'.,.
.: :
.,:.:
.:..
:>>.
. . .
. . . .
progrem mem-ass;
var X:array[l..lOO]of integer;
Y:array[l ..lOO]of integer;
W:array[l ..100,1..100]of integer;
. N,M:integer;
com:char;
i,j:integer;
*1
(*
(*
(*
(*
(*
(*
livello X *)
livello Y *)
matrice dei pesi *)
numero di unita *)
comando utente *)
indici *)
37
acquisisci-X
(*
procedure acquisisci-X;
begin
for i:=l to N do begin
write('X',i,' ? : '); readln(X[i])
end;
writeln;
end;
*)
acquisisci-Y
(*
procedure acquisisci-Y;
begin
for j :=l to W do begin
write('Y',j,' ? : '); readln(Y[j])
end;
writeln
end;
*1
- apprendi
t*
----*)
procedure apprendi:
begin
acquisisci-X;
acquisisci-Y;
for j:=l t.0 Y do
for i:=l to N do
I[i, j] :=N[i, j]+(X[i]*Y[j]);
end;
funzione di trasferimento T
t*
function T(A:integer):integer;
begin
if A>O then T:= +l else T:= -1
end;
:::.:.
.,. . .
: .:
: :>.
::
.A.I
::.
.
- emetti-output
.,.
'1: procedure emetti-output;
::'..,: :I::
for j:=l to M do writeln(Y[j]:6);
.:: . : .
./
writeln;
en,
.:.. .
t*
begin
38
CapiWo s
-*1
-*1
t*
- esegui
procedure 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;
*)
modifica
(*
*)
procedure modifica;
begin
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 do
W[i,j]:=O;
end;
(*
visualizza
---*)
procedure 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
39
::.y.: :..
:. .
write(i:2,'X 1);
I:.,. :
for j:=l to W do write(W[i,j]:3,' '); writeln;
..:..>:+.
end;
.,:.\:.:
j.
;: :
writeln;
:::::..:.: . . . .
en,
salva
t*
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 do
for i:=l to N do
writeln(f,W[i,j]:6);
close(f);
end;
*)
carica
"1
("
procedure 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 do
for 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:
.
:.j
1j:j. repeat
..:.:.<.,. . . writeln;write('Apprendi
.
. .
j:;i:;
readln(com);
.>'
:::.,.
case com of
:i::
:...:
. .
40
cfzpilolo 5
-")
:.:.,.
. ...a
....\.
...
:....
..:
'a' : apprendi;
:::.:.
::
. :. :
'e' :esegui;
:,Q).j
V :visualizza;
.:.
8 :salva;
:.
:::..::j:
'c' : carica:
::.j::
m :modifica;
j.
i)
. . .
:.:., . . . end;
.:
untii
com='f'
z$'. end.
C : > W-ASS
Numero di unita del livello X ? (l..lOO) : 6
Numero di unita del livello Y ? (l..lOO) : 4
Apprendi Esegui Visualizza Salva Carica Modifica Fine: _
41
::.
..:..,.
. . 2Y 3Y
.: .:::. . . . 1Y
:::
::::.
, : : : .1 .x . .1
.
. 1 -1
:::::.:.:
2x
-1
1
.
.
.
.
.
. -1
2..
., :. .: ..: . . 3x.
1
1
-1
,:..>::.
l-1
1
.j:.:\i..
.:A..,..:. 5x
1 1 -1
. . .
.2 . . .
2:.
.
. . -1
.
-1
1
..i. :..: . 6X
$
Apprendi
Esegui
:. .
4Y
-1
1
-1
1
-1
1
Visualizza Salva Carica Modifica Fine: _
Cu~Jitolo
caratteri punto e X maiuscola; tale file deve essere realizzato dallutente tramite un qualsiasi editor. Attenzione a, non
confondere questa matrice di pixel con la matrice dei pesi della
rete.
Lanciando il programma IMMAGINI si ottiene un men uguale
a quello del programma MEM-ASS, per cambia il tipo di elaborazione (vedi listato 2): il comando a (Apprendi) infatti non
chiede pi linserimento manuale dei valori +I e -1, ma i nomi
dei file che contengono le immagini. Il comando e (Esegui)
richiede il nome del file dellimmagine X e poi sputa fuori a
video limmagine Y associata. Gli altri comandi sono uguali a
quelli gi visti nel programma MEM-ASS.
Simulazione software di una memoria associativa
43
Listato 2:
::.::.::.
.:.:>.::.. (*
.::.:: :. .
..
./A3::.
..
/.
:::.:./;.. . . . .
.:.
:j . .
:j: .,
*)
..I .
.
..A.. . . . . . .
2 program irmnagini;
.
(* livello X *)
:.yj: ? var X:array[l..lOO]of integer;
::j.::::j::.,:
Y:array[l
..lOO]of
integer;
(* livello Y *)
. . .:
:::.. ::..::..
W:array[l
..100,1..100]of
integer;
(* matrice dei pesi *)
:::.:::
(* numero di unita *)
:::.. .. ..
N,W:integer;
;:.
com:char;
(* comandi e modalita di I/O *)
:..:. ..
:..:;.,:.
i,j,rigx,colx,rig~,col~,r,c:integer;
(* indici vari *)
,:.:.:
:.::,.
.
:. .
.'
acquisisci-X
*1
i : : t*
:.
;:. procedure
acquisisci-X;
.
.
.,.>.. . . . . .
.
nn:integer;
.:..::..:,.:: var k:char; f:text; fn:string[20];
:.:. .: .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;
.,.
::':.j;:
end
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;
::
4 4 Cqdolo 5
begin
write('nome file dell"immagine Y : ');readln(fn);
assign(f,fn); reset(
readln(f,nn);
if nn=coly then begin
readln(f,nn);
if nn=rig_y then begin
'.=1.t
lfor r:=l to rig_y do begin
for c:=l to ~012 do begin
read(f,k);write(k);
if k= .I then Y[j]:=-1
else if k=? then Y[j]:=O
else Y[j]:=l;
j:=jtl;
end;
readln(f);writeln;
end
end else writeln ('errore: il file ha ',M,' righe')
end else writeln('errore: il file ha ',nn,' colonne');
close(f);
end;
: :j (*
- apprendi
'z procedure apprendi:
:.:
:.y::.b e g i n
acquisisci-X;
: ,.
acquisisci-Y;
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 T
v:.:..\/. function T(A:integer) :integer;
$ begin
..:j .:
if A>O then T:= tl else T:= -1
.....
:
end;
'.:.::
.:.
::
- *1
:..::.::.: .
.. .
- emetti-output
t*
procedure emetti-output;
begin
j:=l; writeln;
for r:=l to rigJ do begin
for c:=l to ~012 & begin
if 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.- I
for 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;
;..:,..,.
>..:.. .
.,. .
:.:.
; ;j;
,::. :. :
.j .y./s
:.
..
:.
:..
..:::..
..j.. .
:.:,:
:'.
modifica
1
*)
procedure modifica;
hgin
. write('Quante righe nell"immagine X ? : ');
readln(rigx);
write('Quante
COlOMe
nell"immagine
X
?
:
');
readln(co1x);
.
writeln;
46 Capitolo s
- visualizza
t*
procedure 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
(*
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 do
for i:=l to N do
writeln(f,W[i,j]:6);
close(f);
end;
"1
47
'::.
+.
:::.::
::::J
.A.I
carica
t*
*)
--*)
- main
(*
begin
modifica;
repeat
writeln;write('Apprendi
readln(com);
case com of
'a' :apprendi;
'e' :esegui;
V :visualizza;
8 :salva;
C : carica;
lrn' :modifica;
l3Ild;
unti.1 cosf'
end.
48 Cqdtolo 5
8
12
8
12
. . . XXX..X...
............
. .X. . . X.X...
. . . . . Xx.....
.X.....XX...
. . . . x. .x.. . .
X . . . . . . Xx.. .
. . . x . . . . x...
X . . . . . . Xx.. *
- .XXXXXXXX..
.X.....XX...
.x........x.
. .X. . . X.X. .x
X. . . . . . . . . . X
. . . XxX.. .xX.
. . . . . .. . . . . .
8
12
8
12
. . . . . Xx.....
. . . . x..x....
.wxtxx.....
.x.....x....
. . . x. . . x....
.x.....x....
. .x. . X
. x....
.lorxxxx.. . . *
.-X.xX......
.x.....x....
. .xX.. .xXx..
.x......x...
xx.x...x....
.x.....x....
. . . . XxX.....
.xxxxxx.....
file C.X
e C.Y:
8
12
8
12
............
. .xxxxxxX. * *
. . . . XxXx.. . .
.x.......x..
..XX....X...
X...........
.X..........
X...........
X. . . . . . . . . . .
X...........
.X..........
X...........
..XX....X...
.x.......x..
. . . . XxXx.. . .
. .xcQcca.. .
Sirmrlmioiic
49
Quella che si trova di seguito Lma traccia delluso del programma IMMAGINI:
C:> IMMAGINI
Quante righe nell'immagine X
Quante colonne nell'inxnagine
Quante righe nell'immagine Y
Quante colonne nell'immagine
?
X
?
Y
: 8
? : 12
: 8
? : 12
50 Cnpifolo 5
::.: :.
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
$
file dell'imnagine X : B.X
::::..
. Nome
... ... ... .
.
.
. . . .
...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;; App rendi Esegui Visualizza Salva Carica Modifica Fine: a
.j; Nome file dell'inxmgine X : C.X
j::.;::.:
:::.
:.:
:.
,:. ... .
. ..... ... . .. . . .
.
,:...:'..' . . . .macx.. . .
:.
...,
..XX....X...
.x . . . . . . . . . .
:
x...........
.x.. . . . . . . . .
.'
..xx....x...
.: '
.: . . . . xX%x.. . .
Sirnulazionc
51
nome
file
dell'imnagine
: C.Y
. .xxYcGax.. .
.x.......x..
X...........
X...........
X. . . . . . . . . . .
X. . . . . . . . . . .
.x.......x..
. .xlmxxxx.. .
Apprendi Esegui Visualizza Salva Carica Modifica Fine:
Nome 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
.xxaxx.. . . .
.X.....X....
.x.....x....
.xmcca..
. * .
.x.....x....
.x......x...
.x.....x....
.xmowc.....
Carica
Modifica
Fine:
. . . 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:
Nome file dell'immagine
X : B1.X
. . . . . 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: s
Nome del file in cui salvare i pesi : irmagini.w
Apprendi Esegui Visualizza Salva Carica Modifica Fine: f
c:>
54 Capitolo 5
Reti back
propagation
55
Come gi visto nel capitolo 3, il teorema di Hecht-Nielsen afferma che una qualsiasi funzione F pu essere computata da una
rete neurale organizzata in tre livelli, con connessioni totali fra i
livelli senza cicli (rete non ricorrente, feed forward network).
Con unarchitettura di questo tipo vengono eliminati sia i problemi di ortogonalit(i dei dati da apprendere, sia i problemi di
capacit di memoria della rete, infatti, linserimento di uGti1 nascoste nel livello intermedio fornisce alla rete la potenza di
calcolo necessaria per svolgere qualsiasi funzione. In altri termini, il livello intermedio di unit serve alla rete per formarsi una
sua rappresentazione interna deI problema, necessaria per capire cosa sta facendo e fornire un output appropriato. In alcuni
casi pu essere conveniente adottare pi livelli intermedi anzich un solo livello di grosse dimensioni: per semplicit non
tratteremo questi casi in questa sede.
Unaltra miglioria che si pu introdurre in una rete neurale riguarda il valore delle singole unitA: anzich valori bipolari
{-l,+l}, adottiamo valori reali qualsiasi compresi in un certo intervallo, ad esempio {O..l). In questo modo, linput X e loutput
Y della rete sono insiemi di numeri reali anzich di valori binari,
con notevole vantaggio di espressivit. Lintroduzione di valori
reali implica la necessit di modificare anche la fomIa della funzionedi trasferimento T delle unit: non pi a gradino, ma a
sigmoide. Una funzione di trasferimento sperimentata con successo la seguente:
56 Cnpitob 6
Oi A
.,..
.3:
.A.
,::p
::j>::;
:c:
::I.:.
...
Ak = c wjkxi - Bk
i
. :. .
1 bias delle diverse unit possono essere diversi fra loro e dipendono dallapplicazione, cio dalla funzione che la rete deve ,saper
svolgere. In altri termini, il valore Bk dovr essere appreso alla
stessa stregua dei pesi W: questo suggerisce di considerare il bias
come il peso di una connessione fittizia verso una uniti fantasma che vale sempre 1. Supponendo di avere N unit nel livello
X di una rete, il bias sari realizzato attraverso una (N+l)-esima
unit il cui valore fisso ad 1 e le cui connessioni verso le altre
unit rappresentano lopposto del loro bias. La formula dunque
ritorna ad essere quella di prima:
N+l
Ak = CWikXi
i=l
57
Livello di output
NY unit
Livello di input
Bias
i:
%i .:
,j:j :
'I:ij
:.
: lj
::..::'
:
'.. :
:.
:.
.: ,:
,:.. : ..
:.:..:
X:array[l..NXtl]
of real;
H:array[l..NHtl]
of real;
Y:array[l..NY]
of real:
Wl:array[l..NXtl,l..NH]
of
W2:array[l..NHtl,l..NY]
. . . . .
. . . . .
A differenza del modello di rete visto per le memorie associative, questo modello privo di connessioni cicliche, infatti i
legami fra le unit sono solo in una direzione; questo implica
che lesecuzione della rete sar estremamente veloce, infatti avviene in una sola passata (per essere precisi, essendoci tre livelli
di unit, vi saranno due passaggi: uno dal livello di input a
quello nascosto e un altro al livello di output). Lalgoritmo di
::,y:..:;:, esecuzione della rete sar dunque:
procedura esegui;
:::
.
.
.,. .. .. .. . .
. .
:
:j.:;:.:
::::::. .
:j.,::.;
. .: .
.
:.>:. .
.
.P:. .
:::
:. y.
:::.
::..:>.
,. . .
:..::
::.:::.::'. :
acquisisci dato X;
azzera livelli H 0 Y;
per ogni unita k del livello W
.
calcola la sua attivazione (con bias)
. . . .
A=SUbC(Wl[i,k]*X[i]);
H[klfl(A);
fine;
per ogni unit j del livello Y
calcola la sua attivazione (con bias)
A=SUMk(W2[k, j]*H[k]);
:.
..
\. . . .. .
:::
...I..
.
Y[jl=T(A);
fine;
.A. .
visualizza dato Y;
.:'..:'.,:
..:\.. .
fine;
..
. .
. .
. .
. .
. .
..
.,.:.. .
..
funzione T(A):
:fj
T=l/(ltexp(-A));
:., .:
fine:
.:.,
59
ripeti (* epoche *)
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:
.:
61
derivata della funzione. Ricordiamo che la derivata di una funzione in un certo punto un numero che esprime quanto quella
funzione pende in quel punto: ad esempio, in riferimento alla
figura 16, la derivata nel punto A sar un numero negativo piccolo per indicare che in A la funzione decresce di poco; nel
punto B sar un numero negativo grande, infatti in B la funzione pi ripida; nel punto C la derivata nulla e in D un
numero positivo, per indicare che la funzione crescente. La
tecnica di discesa del gradiente consiste nel partire da un punto
qualsiasi e fare uno spostamento inversamente proporzionale alla derivata in quel punto. Se ad esempio si partisse da B,
essendo la derivata in B negativa, si far uno spostamento positivo, avvicinandosi a C; se invece fossimo partiti da D, essendo
la derivata positiva avremmo fatto uno spostamento allindietro,
avvicinandoci anche in questo caso a C. Ripetendo in ciclo il
processo, il punto C viene raggiunto per piccoli passi e non piu
abbandonato, infatti in C la derivata nulla, quindi lo spostamento nullo. In conclusione, la formula per trovare il peso
w&j che d errore minimo la seguente:
:.:..:..
j:/:.:
..\.I . . . . .
. .:.... . . .
: :: .
3E
AW2kj = -Eaw2kj
dove E una costante di proporzionalit chiamata fasso di apprcndinzcnfo, e =$& la derivata rispetto al peso
w&j
62 Capitolo 6
.:... /\:...:.
.: :::.:.
:::
..:j. .
.:
ripeti (* epoche *)
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
fine:
ammsso
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]);
:= W2[k,j] + (epsilon * delta * H[k]);
W2kjl
fine;
fine:
63
per
:.:
. : ,:
.
:
:,. :g
j::
: .:: :
fine:
fine:
Appenciice
3E
Sfruttiamo una nota regola materna tica che affenna che la derivata di una funzione composta calcolabile come prodotto di
due al tre deriva te (composizione delle deriva te): scomponiamo
dunque la nostra derivata considerando il valore di attivazione
Aj dellunit j del livello Y. Otteniamo:
::..:.,:
..
3E 3Aj
Aw2kj = -&w 3w2kj
Per comodit di calcolo, introduciamo una nuova grandezza
chiamata 6i, avremo dunque:
.)
aAj
j: :.
:
y.:.
AW2kj = E6 ~
aW2kj
:. ; ...
:
: : 6. =-3E
1
aAj
La prima equazione si risolve facilmente ricordando che la formula di attivazione delle unit :
,,.: :.,
:.
:;: :
.::
:.y.:i
. : ..:.
Aj = c w2kjHk
k
Ltyuazione per il delta, invece, va risolta applicando una seconda volta la regola di composizione delle derivate, stavolta
rispetto al valore delloutput Yj:
65
>:..,.:...
: :..:..
:,.::.::
j:. :
j,. :.i
.:
..
: ::.,
Yj
= ~
,+;-
Ai
;:.:...
..: . 3yi-; 3Aj
Yj (l-Yj)
AWZkj = E8jHk
Sj=(Dj-Yj)Yj(l - Yj )
.
.,: . tz = 7~lore qlmlshsi coi~si$i76ife
JE
AW1 ik = -EK m
3E 3f-fk
: .... . . . . .&=--.-:. ..:.:.. .
3k-k ihdk
:.
Il primo di questi due termini verr chiamato ewo)% sr#mitti Hk
e denotato con Err-H[k]; applichiamo ad esso la regola di composizione delle deriva te, combinata con la regola della derivata
della sommatoria:
.:
.: .:, ..
.:
&=-
c 6jw2kj
i
Hk (l-Hk)
Reti back
propagation
67
El
7
Applicazione
di una rete
back
propagation
V
edLImo in questo capitolo unapplicazione semplice e significativa: una rete che apprende la capacith di lanciare in aria un
sasso (argomento gi5 visto nel capitolo 3). 1 parametri in gioco
sono 4 (figura 17): vclocitti di lancio (Vel), angolazione di lancio
(hg), tempo di caduta (TemI e gittata (Cit = distanza fra il lanciatore e il punto di arrivo).
Tempo di
caduta
Punto di
partenza
Figura 17.
Gittala
-/
Punto di
arrivo
.:: ::.. ..
::..:.
;::: :. :
::::
::.>:,
70
Cf7pikJlo
2.9.8
..
. :
loooo
---
2.9.8
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 ) =
. . .
., >,:.
..
./.
:/.
- 200 9.8
9.8
71
Velocith
Angolazione
Fig uru 18. Topologia della m;te neurale per il lancio di un sasso.
: . ,:
:..:..;.
:,:. :. :
::.:.::.:..
:. :..;.
.::c:: :
..
.
:.:
:. ..:
:.
D2=ar1golo =s
*2
e, analogamente, dato un certo esito della rete avremo:
vdocih = YI - 100
3.14
73
74 Cq1ifolo 7
Listato 3:
ESERCIZIO SU RETI NEDRALI
MODELLO RACK PROPAGATION
PROGRAMMA SASSO
A. Mazzetti - 1991
program sasso:
const max X=51; max H=51; max Y=50; max -E=200;
type
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 *)
e p s i l o n ,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 *)
backgropagate
t*
-*1
procedure 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 begin
if 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;
75
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;
--*)
esegui
t*
procedure esegui;
var A:real;
begin
1 :
for k:=l to NH do H[k]:=O.O;
h'
for j:=l to NY do Y[jJ:=O.O;
for k:=l to NH do begin
A:=O.O;
76 cnpito~o 7
--*)
-----*)
');
77
(*
modifica
procedure modifica:
begin
write('Numero di unita' di input
--*)
(l..',max
X-1,') ? :
');readln(m);
write('Numero di unit' nascoste (l..',max H-l,') ? :
');readln(%);
Y,') 2 : ');
write('Numero di unita' di output (l..',max
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 do
Wl[i,k]:= (random(lOO)-50.0)/100.0;
for k:=l to NHtl do
for 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:
e visualizza
i*
-")
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);
'); writeln;writeln;
for k :=l to NH do write(k:2,'W
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
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
procedure 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 do
for i:=l to NXtl &
writeln(f,Wl[i,k]:7:3);
for j :=l to NY do
for k:=l to NHtl do
writeln(f,W2[k,j]:7:3);
close(f);
end;
carica
t*
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 do
readln(f,Wl[i,k]);
for j :=l to NY do
for k:=l to NHtl do
readln(f,W2[k,j]);
close(f);
end;
--")
79
,.::j
::):.
:<.:
. ...
--")
- definisci-lancio
::..,:::
+ procedure definisci-lancio;
:!:..>.
:
. ..var
.:.
. c:integer; ch:char; t:real;
'.::.:.:
..:.:x: begin
.'$.
clrscr;
(* pulisci video *)
:.....
:.:.,i:
write('Posizionare
il bersaglio coi tasti freccia, poi predere
.y:.
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):
,:.
:,.
sec.):
.,
. . .write('Tempo di caduta? (1..',Temrmax:2:0,'
);readln(t);
.:>:. ..
:.:: :,.: . . gotoxY(l,l);
for c:=l to 80 do write(' '); gotoxy(l,l);
.
. . .
.::..: .
X[P]:=t/Tem-max;
:::..::<.
: .i
..:. :,' end;
t*
begin
modifica:
repeat
writeln; write('Apprendi Esegui Carica Salva Visualizza
Modifica 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.
8 0 Cupitolo
:::j
::. . ::
Salva
0.3
RET
*********
****
****
***
***
***
***
**
**
l
!
*
#l
*:*
**
**
*
**
*
*
*
...
epoca=1
epoca=2
epoca=3
**
**
**
**
*
**
*
*
*
/i
...
epoca=100 errore=0.27663
ancora? (s/n) : s
epoca=101
errore=0.27019
...
errore=0.02103
epoca=5800
ancora? (s/n) : n
Apprendi
Applicazione
83
. . .
Tempo di caduta?
(1..20 sec.): 12
****
*****************
******
I
I
******
****
****
l
***
**
2 . 5 0
5 . 4 9 - 6 . 3 5
3X
2.02
-5.26
1 . 3 3
Modifica
Fine: v
4 . 2 8
84
Cn~itolo 7
Si noti il comando v (Visualizza) per vedere i valori delle unit dei livelli X, 1-l e Y seguiti dai valori delle matrici Wl e W2. I
comandi c (Carica) e s (Salva) caricano e salvano i pesi in
maniera identica a quella gii vista per le memorie associative. 11
comando 111 (Modifica) acquisisce il numero di unit dei tre
livelli e poi inizializza le matrici Wl e W2 con valori casuali
compresi fra +0.5 e -0.5 (per ovviare ai problemi di non apprendibilit per simmetria); seguono le inizializzazionidei valori
massimi di altezza, gittata e tempo.
Lutilizzo di questo programma patri dare una sensazione dellestrema onerosit della fase di apprendimento e dellestrema
snellezza della fase di esecuzione: per dare unidea di massima,
lesecuzione della rete, cio la fase che inizia dopo lacquisizione
dallutente del tempo di caduta e finisce quando parte il sasso,
dura una frazione impercettibile di scxondo. La fase di apprendimento, invece, avendo 200 esempi e un tasso di
apprendimento di 0.3, arriverj ad un errore inferiore a 0.03 dopo qualche migliaio di epoche; su un PC AT 286 questo pu
richiedere una ventina di ore di elaborazione (il file SASS0.W
contiene i pesi appresi in questo modo, vedi figura 20).
Si noti che la figura 20 esprime la conoscenza che In rete ha
sul problema del lancio del sasso; in altri termini, questo guazzabuglio di numeri incomprensibili lequivalente di tutte le
formule matematiche viste prima a proposito della velocit, gittata, tempo ed angolazione del lancio; appare sensazionale,
dunque, la compattezza dellinformazione contenuta in una rete
neurale. Per contro pu sgomentare il fatto che la conoscenza
contenuta in quella rete sia del tutto incomprensibile alluomo:
ad esempio, in quella trentina di numeri impressa la conosccnza relativa al fatto che per ottenere un lancio lento non bisogna
tirare lentamente ma con forza in alto. La conoscenza contenuta
in questa rete difficilmente dominabile da parte umana: se ad
esempio si scoprisse che la rete sbaglia in certi casi, avremmo
serie difficolt nellindividuare il punto derrore ed effettuare
correzioni.
Esistono alcune tecniche per indagare nel contenuto cognitivo di
una rete neurale, ma si tratta per lo pi di tentativi artigianali.
Uno dei metodi pi usati lestrazione di ~rwppe di nttivit delle
unit nascoste: si tratta di rappresentazioni grafiche che evidenziano il valore di output di una certa unit I-k al variare dei
Applicazione di una rete back propagation
85
VelocitA
Angolazione
Bias
Figura 20.
valori delle unit di input. Nel nostro caso, avendo due unit di
input, otterremo una superficie in uno spazio euclideo tridimensionale (figura 21).
Sviluppando una mappa di attivit per ogni unit nascosta otterremo una sensazione del loro ruolo nellelaborazione; nel
nostro caso, ad esempio, si pu individuare quale unit ha a che
fare con i lanci alti e quale con quelli tesi. Tuttavia questa informazione 6 poco utile dal punto di vista pratico perch non
consente alcuna manipolazione della conoscenza della rete. Cunico modo di modificare la conoscenza della rete un
riaddestramento
effettuato con un pi accurato insieme di
esempi.
86
Cczpito/o 7
Figura 21.
87
Altri modelli
di rete neurale
1
modelli di rete visti finora (memoria associativa e back propagation) sono i pi significalivima non esauriscono tulte le
possibilita. Ci proponiamo in questo capitolo di indagare altri
modelli, senza entrare troppo in dettaglio. Analizzeremo tre modelli molto differenti fra loro e capostipiti di tre interessanti
filoni di ricerca: modelli stocastici, modelli auto-organizzanti e
modelli genetici.
Modelli stocastici
Nellambito dei modelli stocastici larchitettura pi nota la cosiddetta Macchina di Bolfzmnnn [18] il cui nome manifesta
lanalogia coi sistemi termodinamici. Si pu notare infatti una
corrispondenza fra lattivazione delle unit di una rete neurale e
la posizione delle molecole di un materiale metallico; lorganizzazione a reticolo cristallino impone un certo equilibrio delle
forze interagenti fra le diverse molecole, proprio come nelle reti
neurali le connessioni fra le unita implicano una certa relazione
di buon vicinato.
89
UnitA nascoste
90
Cnpifolo
:. .:.
E:.y.
:.,./.:.::.:
,. :
,:.,:..:.
;:
p(++
1
l+C Tcrip
Ai = C WijXj
j
Temperatura
bassa
Figura 23. la futione di probabilit delle unit per diversi valori della
temperatura.
.:
:
Nella seconda fase la rete viene congelata altrettante volte lasciando libere le unit di input/output e i pesi vengono
modificati secondo una legge anti-Hebbiana:
AW, = -EXiXj
In entrambe le fasi la rete registra il comportamento delle unit
visibili dopo che sia stato raggiunto lequilibrio termico e calcola
le relative statistiche: la rete avr appreso quando le distribuzioni di probabilit coincidono approssimativamente.
92 Cnpifolo
Sono state suggerite singolari analogie fra la legge ami-Hebbiana di apprendimento e la funzione del sonno REM degli
esseri viventi [201 in cui vengono disimparate informazioni parassite.
Le macchine di Boltzmann possono essere impiegate come memorie associative in cui a fronte di un input incompleto o errato
viene fornita mediante congelamento la versione completa o
corretta pi verosimile. La presenza di unit nascoste e di meccanismi stocastici permette di superare i problemi tipici dei
modelli di Hopfield e di Kosko visti nei capitoli precedenti a
proposito delle memorie associative.
Modelli
auto-organizzanti
Passiamo ora ad un modello di rete neurale totalmente differente, noto come rete au&y,y~izzante. Lo scopo di questo tipo di
rete non pi quello di fornire un output a fronte di un certo
input, ma quello di ricevere solo alcuni input e classificarli. In
altre parole, la rete organizza in modo autonomo una struttura
che accomuna gli input simili fra loro individuando regolarit e
somiglianze. Il tipo di apprendimento di queste reti detto non
srprvisionafoperch gli esempi non contengono loutput, quindi
non vi infomlazione su cosa farsene deglinput. Lo scopo della
rete non quello di apprendere una relazione fra input e output
ma quello di osservare un certo insieme di esempi e individuare possibili categorie.
Ad esempio, si consideri il caso in cui i dati di input siano matrici di pixel che rappresentano caratteri; nel capitolo sulle
memorie associative abbiamo visto unapplicazione in cui la rete
aveva il compito di associare un carrittere minuscolo al suo corrispondente maiuscolo. Qui invece forniamo soltanto i caratteri
minuscoli alla rete e le chiediamo di classificarli; la rete potr
trovare alcune interessanti categorie come ad esempio: i caratteri
tondeggianti (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, la
rete raggruppa gli esempi simili; una volta apprese queste categorie, la rete potra essere usata per individuare la categoria di
93
Griglia 2D
94
Capitolo 8
cente. Ogni unit del livello Y riceve dunque due stimoli: uno
dal livello X e laltro dai vicini di casa:
:: .:..,
:.
.:
::.: :
Lo stimolo rwiproco fra le unit del livello Y crea un meccanismo di competizione che porta ciclicamente alla supremazia di
una singola unit. Infatti, avendo ogni unit connessioni negative con quelle limitrofe, si scatena un processo di inibizione
reciproca in cui chi inizialmente pi forte inibisce di pi gli
altri e viene inibito di meno, quindi sopravvive (ha unattivazione elevata) facendo soccombere gli altri (attivazione bassa). Per
questo motivo tale tipo di rete viene anche detto rcle competitiva
1221. Lesecuzione di questa rete avviene in questo modo: dato
un input qualsiasi X, la rete propaga verso il livello Y il segnale
facendo accendere lunit Yj che rappresenta la classe di appartenenza dellinput dato. Qualora linput sia ambiguo, cio a
met strada fra pi classi, il meccanismo di competizione fa s
che si formi una bolla di unit vincenti.
Lapprendimento di questa rete avviene in questo modo (ricordiamo che solo i pesi Wl vanno appresi, i pesi W2 sono fissi e a
cappello messicano): data una distribuzione inizialmente casuale dei pesi Wl, per ogni nuovo esempio X viene eseguita la rete
e tovata la bolla vincente; poi vengono modificati solo i pesi
delle unit interne alla bolla. Supponiamo per semplicit che la
bolla sia composta da una sola unit vincente YV, verranno
quindi modificati solo i pesi Wli,, rappresentati in figura 25.
:
:.y.
95
dimento la configurazione dei pesi Wl rappresenta una quantizzazione dello spazio degli esempi ricevuti, vale a dire una
partizione che raggruppa gli esempi simili fra loro, ove il concetto di somiglianza dipende dalla particolare distribuzione
degli esempi analizza ti.
Applicazioni di questo tipo di rete hanno avuto successo nel
campo dellanalisi del segnale vocale e nel campo della classificazione di immagini. Sono particolarmente indicate quelle
applicazioni in cui non si sappia a priori come elaborare certe
informazioni, quindi ci si aspetta che la rete scopra da sola
concetti interessanti in una popolazione di dati non strutturati
[23]. La plausibilit biologica di questo modello molto accreditata a causa della presenza di strutture auto-organizzanti nella
corteccia cerebrale [24].
96 crrpito~o 8
Modelli genetici
Dalla teoria dellevoluzione di Darwin si derivato un modello
di rete in cui lapprendimento frutto di selezione naturale in
una popolazione di individui che si riproducono [25, 261. Si
supponga di voler far apprendere ad una rete neurale un certo
insieme di esempi: anzich definire una formula di apprendimento nella forma AWij = . ... definiamo una nzufmione
geMicrz intesa come piccolo cambiamento casuale di alcuni pesi
Wij della rete o come nggiunta/rimozionedi una unitk Definiamo inoltre un criterio di riproduzione e di morte della rete: il
sistema mantiene in vita una popolazione di reti che nascono, si
riproducono e muoiono. Le reti sono ermafrodite e le figlie sono
copie delle madri leggermente modificate per mutazione genetica. Durante la vita ogni rete esegue ripetutamente gli esempi e
si riproduce pi volte. La longevit e la prolificit sono funzioni
dellerrore che la rete commette nelleseguire gli esempi: chi fa
meno errori si riproduce di pi. Esiste un limite massimo al numero di reti viventi, raggiunto il quale la popolazione non
cresce pi e il tasso di nataliti diventa uguale al tasso di mortalit.
Facendo evolvere un sistema di questo tipo si avr inizialmente
una popolazione molto varia (reti molto casuali e diverse fra
loro) che tende man mano ad un miglioramento della specie
grazie alla selezione naturale che privilegia le reti che fanno meno errori. Viene quindi raggiunta asintoticamente la situazione
in cui la popolazione composta da individui tutti perfetti e
uguali (a meno delle piccole variazioni genetiche). Un campione
di questa popolazione una rete che ha appreso gli esempi. Si
noti il fatto che lapprendimento frutto di selezione dalla casualit. 1 modelli genetici, sebbene affascinanti, non hanno
finora avuto molto successo, soprattutto per le eccessive risorse
di calcolo e di memoria richieste. Sono attuahnente in fase di
studio le potenzialit di questo metodo per la realizzazione di
reti che automodificano la propria topologia.
97
Applicazioni
e strumenti
L
e reti neurali sono una tecnologia orizzontale che trova
applicazioni dallindustria alla finanza, dalla medicina alla difesa, dalle telecomunicazioni alle assicurazioni. Ovviamente non
ha senso impiegare reti neurali dove gli attuali computer si sono
dimostrati eccellenti (calcoli, basi di da ti, word-processing...). Le
reti neurali non devono essere intese come unalternativa al
computer, bens un complemento: opportuno adottarle dove i
computer falliscono, in particolare nei problemi caratterizza ti da
informazioni incomplete, vaghe, contradditorie, distorte, imprecise, o in quei campi in cui manchi un algoritmo adeguato o
infine dove necessiti una velociti tale da richiedere parallelismo.
Quindi:
.
riconoscimento/classificazione di immagini, testi, voce, segnali, pattem;
.
sintesi di parlato;
pianificazione/ottimizzazione;
analisi finanziaria;
previsioni metereologiche;
gestione database.
Applicazioni e strutncnti 99
Un riconoscitore di caratteri manoscritti, in grado di riconoscere dal 90% al 99% di un testo, a seconda della qualit
della calligrafia.
Un autenticatore di firme, i cui casi di falso allarme ammontano finora al 4% (prestazione assai migliore rispetto
alle tecniche tradizionali).
Telecamera
Un dattilografo che trascrive sotto dettatura qualsiasi tipo di testo pronunciato in finlandese o in giapponese con
unaccuratezza compresa fra 180% e il 97% (preprocessing
con filtro passa basso, convertitore analogico-digitale, rete
auto-organizzante con 15 unit in input e 96 in output,
elaborazione in tempo reale su PC/AT con Signa1 processor TMS-32010).
Applicazioni e strumenti
101
102
Capitolo 9
Una soluzione a questo problema sono le schede hardware aggiuntive per computer: queste generalmente contengono
parecchi megabyte di memoria e diversi processori e co-processori matematici. La rete viene comunque eseguita (e addestrata)
in maniera sequenziale, infatti queste schede non contengono
una circuiteria ad hoc parallela, ma semplicemente dei processori alla Von Neumann con unarchitettura ottimizzata per il
calcolo matriciale (pipelinc). Per questo motivo queste schede
prendono il nome di acceleratori neurali. Esistono in commercio schede di tipo add-on per PC o Sun o Vax (DASH! 860,
Anza, NDS, Parallon, Sigma, Mark...) corredate di software per
la definizione e istanziazione di reti con architettura predefinita
o personalizzata. Le capacit di memoria consentono di lavorare
tranquillamente con centinaia di migliaia di unitA, milioni di
connessioni ad una velocit di esecuzione di decine di migliaia
di connessioni al secondo. Lunica forma di parallelismo il fatto che lapplicazione neurale pu girare sulla scheda
contemporaneamente ad applicazioni tradizionali operanti sulla
CPU del computer ospite; generalmente lapplicazione neurale
vista come un co-processo.
In conclusione, queste schede neurali sono una via di mezzo fra
lo strumento prototipale (caratterizzato da alta flessibilit e generalit) e lo strumento applicativo (caratterizzato da alte
prestazioni). Lunico punto debole il prezzo, che spesso supera
il valore dellintero computer ospite. Le schede neurali sono da
intendersi come strumenti di studio e sviluppo, non come prodotti per lesecuzione di applicazioni. Il loro alto costo e la
complessit hardware/software le rende improponibili per applicazioni da rilasciare su vasta scala (usando una terminologia
software, si potrebbe dire che manca la versione di delivery o
il x-un time).
Unaltra possibilit limplementazione di simulatori neurali su
macchine intrinsecamente parallele (Transputer, Array Computer, Connection Machine...). Qui vi il vantaggio di ottenere un
reale parallelismo, ma possono sopraggiungere difficolt tipicamente dovute al fatto che larchitettura di queste macchine
concepita per scopi diversi, che si scontrano con le esigenze
neurali.
La strada pi promettente, anche se la pi difficile, quella della realizzazione di circuiti ad hoc. Svariati approcci sono stati
Applicazioni e strumenti 103
Amplificatore
invertito
N Resistenza
104 Ci~;~ilolu 9
,,
..::j.
:... :
:.
,.:
1
Wij=Rj
Si noti che il peso Wij delle connessioni linverso della resistenza elettrica Rij fra gli amplificatori i e j. Loutput delle unit
assimilata alla frequenza di scarica ed governata da una funzione tipo signloide (diversa da quella vista per le reti back
propaga tion):
Si noti, in figura 27, che ogni unitA rappresentata da una coppia di anlplificatori per poter rappresentare sia eccitazioni che
inibizioni fra le unit (poich non esiste una resistenza elettrica
negativa, si applica una resistenza positiva ad un segnale invertito da un apposito amplificatore). Hopfield ha dimostrato che
un siffatto circuito manifesta le propriet tipiche delle reti neurali ed equivalente ad una rete con stati binari e attivazione
stocastica. Svariate implementazioni sono state realizzate e poste
in commercio (AT&T, Bell, Synaptics, Fujitsu...). Le realizzazioni
su silicio attuali contengono alcune centinaia di unit totahnente
connesse, per un totale di centinaia di migliaia di transistor; la
tecnologia pu essere sia digitale che analogica.
Si stanno diffondendo sul mercato anche sistenli applicativi specifici, corredati di una rete neurale gi& addestrata o comunque
predisposta per addestramenti specifici. Dagli Stati Uniti provengono sistemi per la comprensione di caratteri manoscritti;
lEuropa (Universit di Helsinki) particolarmente forte nella
realizzazione di dispositivi in grado di scrivere sotto dettatura.
Riassumendo, diverse impletl7entazioni hardware ad hoc sono
state realizzate per le reti neurali, tutte caratterizzate da due
problemi principali: il primo che un circuito ad hoc non potn
mai essere general-purpose (ad esempio, un circuito per una
memoria associativa non patri mai funzionare conle back propagation). Il secondo loggettiva difficolt nel creare un
groviglio di fili che non si tocchino (le connessioni).
Applicazioni e strmzcnfi
105
Un approccio molto promettente per risolvere questultimo problema limpiego di tecnologia ottica anzich elettronica: le
propriet della luce, infatti, calzano a pennello per le funzioni
neurali. Come noto, due fasci di luce che si incrociano non
interferiscono fra di loro, ma si attraversano senza disturbarsi;
inoltre, se diversi fasci di luce convergono in un punto, lintensit luminosa incidente la sommatoria delle intensit dei fasci;
infine, limpiego di filtri ottici pu fungere da peso sinaptico di
connessione. Pertanto, si pu ipotizzare la realizzazione di una
rete neurale in cui ogni unit sia un dispositivo ottico che riceve
alcuni fasci di luce in input opportunamente filtrati, li somma, li
elabora tramite lenti e specchi e poi li trasmette ad altri dispositivi senza preoccuparsi del fatto che i loro percorsi si incrocino.
Svariati centri di ricerca stanno lavorando su questidea, che
sembra promettere bene nonostante le difficolt tecniche (voluminosit delle apparecchiature, dispersione di energia...).
Lultima frontiera nella realizzazione di reti neurali lapproccio
biologico, in cui ogni unit effettivamente formata da cellule
opportunamente sintetizzate. L.a prospettiva di poter avere dei
bio-computer molto allettante perch potrebbe aprire nuovi
orizzonti tecnologici, ma a tuttoggi pi sogno che realt.
Bibliografia
[ 11 J.P. Changcux: Lhommc ncuronal, Parigi, 1983
[ 21
[IOI J.I? Hopticld: Ncural Nclwotks and physicat syslcms wilh cmcrgcnt
collcctivc computional abili& Pmcccdings of lhc National ACXICmy of Scicnccs 79,1982.
1111 T. Kohoncn, Associalivc mcmory: u systcm lhcorclic approach,
Springcr Vcrlag, Bcrtino, 1977.
[121 D. Parisi: Intervista sulle reti neurali, Ed. Il Mulino, Bologna, 1989
LI31 A. Mazzetti: Reti Neurali: 10 risposte a 10 doma&, Inlnnatica
Oggi N. 62, Jackson Ed. Giugno 1990
Bibliografia
107
(271
[28]
108 Bibliopfia