Scarica pdf

annuncio pubblicitario
Connessionismo e reti neurali
Il periodo che va dall’inizio degli anni ottanta ad oggi ha visto una sempre crescente
attenzione verso i sistemi di simulazione connessionisti e c’è stato un rifiorire della ricerca
nel campo delle reti neurali artificiali, non solo nell’ambito della psicologia, ma anche in
molti altri ambienti scientifici, dopo una diminuzione di interesse nei confronti di questi
sistemi, che si determinò intorno alla fine degli anni sessanta. Tutto questo portò ad
un’affermazione di quella che abbiamo denominato scienza cognitiva, e con essa i modelli
della psicologia cognitivista ed il paradigma dell’elaborazione seriale delle informazioni. A
partire dagli anni ottanta, invece, gli studi sulle reti neurali artificiali hanno mostrato come
fosse possibile un nuovo approccio allo studio della psicologia, mentre le differenze fra i
due paradigmi sono tali da risultare difficile accomunarli sotto un unico tetto.
Dal punto di vista della psicologia, i vantaggi del connessionismo nei confronti della
scienza cognitiva, così com’è stata descritta, sono parecchi e sono interpretabili da diverse
angolazioni, qui ne accenneremo solo le linee generali.
Le reti neurali artificiali sono sistemi computazionali che hanno alla base un’ispirazione
biologica, essendo il loro funzionamento ispirato a quello delle reti di neuroni reali, e si è
tentati di scorgere in esse un modello di simulazione del funzionamento cerebrale che
rispetti la struttura funzionale dello stesso, benché in maniera molto approssimata, ed in
questo senso si sviluppano una serie di ricerche che tendono a rafforzare la plausibilità
biologica di queste reti, cercando di rendere il loro funzionamento sempre più
approssimabile a quello del cervello. Allo stesso modo, certe critiche al connessionismo
provengono da chi cerca di dimostrare come non si possa in alcun modo dare plausibilità
biologica a sistemi che implementano solo in minima parte i reali processi neurobiologici1.
D’altro canto, l’interesse psicologico verso le reti neurali artificiali può partire da un’altra
prospettiva: abbiamo già visto, dalla definizione di sistema dinamico complesso, come
tanto le reti neurali naturali quanto quelle artificiali siano entrambe implementazioni di
sistemi complessi. A questo punto, risulta interessante vedere come un sistema di questo
genere si comporta alle prese con un compito da risolvere; in questo modo si sposta
l’accento da un’analogia di tipo “funzionale” ad una di tipo “formale”. Comunque sia, i
modelli connessionisti appaiono superiori, per certi aspetti che a noi sembrano
fondamentali, a quelli tradizionali e nel seguito del discorso le differenze si renderanno
evidenti.
1.1 Una prospettiva storica
L’idea che le funzioni cognitive, potessero essere studiate a partire dalle associazioni di
processi elementari del cervello non è cosa recente: l’associazionismo, così viene chiamato,
trova sostenitori già nel secolo scorso, ma solo di recente l’attenzione ai processi neurali
sottesi alle nostre funzioni superiori si è via via intensificata, accompagnandosi ai primi
tentativi di simulare tali processi. Già nel 1943, ad opera di McCulloch e Pitts, troviamo il
1
Gli stessi neuroscienziati, per rimarcare la differenza fra i neuroni reali e quelli artificiali, hanno consigliato
di chiamare questi ultimi nodi o processori, ma non neuroni e preferiscono definire le reti neurali “sistemi di
calcolo paralleli”.
primo modello di neurone artificiale e la prima idea (per quanto notevolmente diversa da
quella che presenteremo nelle prossime pagine) di rete neurale artificiale. Solo pochi anni
più tardi, con The Organisation of Behavior [1949], Donald Hebb propose di studiare il
comportamento a partire dalle associazioni fra neuroni, ipotizzando anche un meccanismo
di apprendimento per le reti di neuroni che ebbe molta influenza sullo sviluppo delle reti
connessioniste. Per la verità, le proposte di Hebb si riferivano ad un quadro teorico del tutto
differente, che aveva alla base osservazioni del comportamento umano ed animale, nel
tentativo di ricondurre tali comportamenti a modificazioni della base neurale, ma visto il
legame che stringe i meccanismi del sistema nervoso ai sistemi connessionisti, l’eco delle
ricerche di Hebb non avrebbero potuto non influenzare lo sviluppo del connessionismo. Del
resto i già citati McCulloch e Pitts posero le basi per uno sviluppo “pratico”, oltre che
teorico, delle reti neurali artificiali. I loro neuroni (vedi Fig.1.1) erano dei processori,
caratterizzati da una soglia e da un’attivazione binaria, che svolgevano una semplice
funzione logica: ricevevano dall’esterno un input binario e fornivano il valore della
rispettiva funzione come output. Da soli, quindi, oltre il calcolo di una semplice funzione
logica come AND o OR, ad esempio, non potevano compiere, ma la loro combinazione in
parallelo ed in strati successivi permetteva di affrontare problemi di una certa complessità,
AND
INP (1)
S=2
OUT
INP (2)
OR
INP (1)
S=1
OUT
INP (2)
Fig. 1.1 Due esempi di neuroni artificiali che computano funzioni differenti: nel caso AND la funzione
computata è la congiunzione (AND) ed il neuro ne “scarica” solo quando gli input sono entrambi 1,
essendo l’unico caso in cui la somma degli input eguaglia la soglia S. Nel caso OR, la funzione è la
disgiunzione non esclusiva (OR) ed il neurone scarica quando la somma degli input è uguale o
superiore a 1.
nonostante che questo genere di reti avessero un deficit che solo in seguito verrà colmato: i
valori numerici delle connessioni fra i singoli neuroni dovevano essere determinate dallo
sperimentatore.
Successivamente a questi primi tentativi, il 1962 vede la creazione del percettrone da parte
di Frank Rosenblatt: un tipo di modello neurale che aveva la capacità di riconoscere figure
e, benché la struttura di quest’ultimo, nel suo complesso, fosse diversa dalle reti di
McCulloch e Pitts, il modello di neurone da essi proposto è rimasto la base di ogni altro
modello neurale moderno, compreso quello di Rosenblatt.
Un percettrone è costituito da un unico neurone che riceve input da una serie di recettori di
luminosità (una retina artificiale) e la sua caratteristica specifica è la possibilità di variare la
forza (i valori numerici) delle connessioni fra i recettori ed il neurone (Fig.1.2). Ciò
permette al percettrone, dopo che gli siano state presentate una serie di differenti
configurazioni, di distinguerne una dalle altre. La differenza fondamentale tra il percettrone
di Rosenblatt e la rete di neuroni artificiali che abbiamo precedentemente considerato sta
nel fatto che esso “apprende” a discriminare fra varie configurazioni in maniera autonoma,
senza che lo sperimentatore intervenga sui valori da assegnare alle connessioni.
L’importante, a questo punto, era riuscire a trovare una regola di apprendimento che faccia
riconoscere correttamente le figure al percettrone sulla base delle risposte date dallo stesso,
in maniera da correlare l’errore della risposta ad un’opportuna variazione dei valori delle
connessioni.
Questa è l’essenza di una buona parte degli algoritmi di apprendimento per le reti neurali ed
in tutto questo la “regola di Hebb”, ed i suoi derivati, hanno avuto un ruolo determinante.
Il seguito di queste scoperte fu un generale interesse nei confronti dei percettroni e dei
sistemi neurali in generale, ma dopo la pubblicazione di Perceptrons ad opera di Minsky e
Papert la situazione mutò radicalmente.
Retina
artificiale
Unità di
Input
W1
Unità di
Output
W…
S
Wn
Fig. 1.2 Rappresentazione schematica di un percettrone. Alla retine sono connesse un certo numero di unità di
input. Queste sono poi connesse al neurone di output fornito di una soglia S ed il funzionamento di
quest’ultima analogo a quello dei neuroni artificiali di McCulloch e Pitts. Le connessioni hanno dei
valori, anche detti pesi, W1,…,Wn per i quali viene moltiplicato il valore di attivazione delle unità di
input. I risultati verranno poi sommati dell’unità di output che li confronterà con il valore soglia S.
Nel loro libro analizzavano le prestazioni dei percettroni e riuscirono a dimostrare che essi
non erano in grado di risolvere alcune funzioni logiche che non erano linearmente
separabili, come la disgiunzione esclusiva (Xor), e mostrarono un certo scetticismo
riguardo al futuro di tali sistemi. L’autorevolezza delle loro opinioni, unita alla prova
matematica dei limiti del percettrone, non tardarono ad influenzare il panorama scientifico
del periodo, soprattutto negli Stati Uniti, allontanando parecchi ricercatori (e fondi per la
ricerca) dai sistemi di calcolo paralleli, mentre solo pochi continuarono a studiarli e
svilupparli. La caduta di interesse fu tale che l’arco di anni compreso fra gli anni settanta ed
la prima metà degli anni ottanta viene oggi denominato “il periodo del silenzio”.
Bisogna aspettare i primi anni ottanta per riscoprire in tutta la loro forza i metodi di calcolo
connessionisti: i limiti riscontrati da Minski e Papert furono ampiamente superati da nuovi
modelli e da nuove regole di apprendimento che hanno permesso di connettere in più strati
le unità di elaborazione, i neuroni artificiali, e queste nuove reti neurali oggi esibiscono
capacità che le rendono interessanti agli occhi di parecchie discipline, non ultima la
psicologia, che non ha tardato a sferrare, attraverso esse, un nuovo colpo a quella che già si
stava configurando come una vittoria del dualismo mente-corpo e l’”analogia del
computer” ha dovuto confrontarsi con nuove istanze. Tra le altre, una nuova concezione del
computer, non più fonte di ispirazione per i modelli della psicologia, ma, semplicemente,
efficace mezzo di simulazione2. A tal proposito, non trovo migliori parole di quelle di
Parisi, nell’introduzione a PDP. Microstruttura dei processi cognitivi di D. Rumelhart e J.
McClelland [1986]:” il cognitivismo ha utilizzato il calcolatore per dare una veste moderna
al tradizionale dualismo tra mente e natura, mentre il connessionismo è un nuovo strumento
concettuale che per la prima volta pone seriamente il problema di sviluppare una scienza
della mente che non sia separata dalle scienze della natura”.
1.2 Che cos’è una rete neurale artificiale
Come è stato detto, i sistemi di elaborazione connessionisti traggono ispirazione dalla
biologia, ed in particolare dalla complessa struttura dei sistemi nervosi biologici. Le
funzioni che vengono riprodotte, però, sono una versione estremamente ridotta di ciò che
esibiscono detti sistemi ed in effetti, più che i reali meccanismi di funzionamento, ciò che
interessa maggiormente al connessionismo è la struttura “formale”, logica per così dire, del
sistema nervoso. In questo senso, una rete neurale artificiale è costituita da una serie di
neuroni, variamente connessi fra di loro in strati successivi. La versione più semplice è
costituita da un solo strato di neuroni, mentre il secondo livello di “complessità” è simile ad
un percettrone di Rosenblatt: due strati di neuroni altamente connessi fra loro ed i limiti
computazionali di questo genere di reti sono già stati considerati nel paragrafo precedente.
Gli strati di una rete neurale possono però aumentare, e possiamo trovare modelli a 3, 4 e
più strati. Oggi questo genere di struttura è il più studiato e diffuso, non essendo affetto da
quei limiti computazionali che interessano le reti a due strati.
Le unità che sono in contatto con l’ambiente esterno, e ricevono stimoli da esso, sono dette
unità di input, quelle che forniscono il risultato della computazione, anch’esse quindi in
2
Facciamo notare come Dario Floreano, in Manuale sulle reti neurali [1996], sottolinei il fatto che “di per sé
le reti neurali non richiedono un hardware dedicato: è possibile ad esempio simulare una rete neurale con un
sistema di bacinelle e canali a portata variabile collegati a un rubinetto”.
contatto con l’ambiente esterno, sono dette unità di output, mentre quelle unità che si
trovano negli strati intermedi fra questi due sono dette unità nascoste: esse, infatti, sono in
relazione solo con altre unità
L’attività delle unità è all’incirca quella svolta dai processori di McCulloch e Pitts: si
attivano (scaricano) quando la quantità totale di segnale che ricevono è superiore ad una
certa soglia, in caso contrario restano inattivi. Al momento dell’attivazione un’unità emette
un segnale che viene trasmesso alle altre unità attraverso le connessioni ed in base al valore,
o peso, associato alla connessione esso risulterà inibitorio o eccitatorio per il neurone che
lo riceve. Proprio per l’importanza fondamentale delle connessioni nel processo di
elaborazione ci si riferisce più spesso ad esse, definendole inibitorie o eccitatorie, essendo
proprio loro il filtro del segnale emesso dalle singole unità. I punti di connessione fra le
unità simulano i rispettivi punti di contatto fra neuroni biologici, le sinapsi, ed il loro ruolo
consiste proprio nel “pesare” l’intensità dei segnali trasmessi dai neuroni. Praticamente,
l’operazione eseguita da una sinapsi non è altro che il prodotto tra il valore del segnale
ricevuto ed il valore della sinapsi stessa (cioè il valore associato alla connessione). Mentre
il segnale emesso da un neurone artificiale ni , per l’x-iesimo neurone, è uguale a:
(1)
 N

ni = F  ∑ wij xi − S i 
 j

ossia ad un funzione F della somma dei prodotti fra i segnali di ingresso nj (provenienti da
altri nodi o dall’esterno) ed i rispettivi pesi wij meno il valore della soglia Si dell’unità in
questione.
Ambiente esterno
Unità di
output
Unità
nascoste
Unità di
input
Fig.1.3 Rappresentazione schematica di una rete neurale artificiale.
1.3 Sistemi neurali biologici e artificiali
Dal momento che è stata più volte sottolineata la matrice biologica delle reti neurali
artificiali, cercheremo di mettere in evidenza cosa accomuna i due sistemi e quali sono gli
elementi di differenza.
1.3.1 Il sistema nervoso
La struttura del sistema nervoso è abbastanza conosciuta (almeno per quanto riguarda
l’organizzazione anatomica e la costituzione citologica ed istologica) e consta di
innumerevoli cellule caratterizzate da prolungamenti. Alcune di esse svolgono un ruolo di
sostegno (cellule gliali), una sorta di impalcatura nella quale trovano spazio le cellule più
importanti del nostro organismo, quelle che sono responsabili di tutte le nostre funzioni
superiori: i neuroni. Il neurone, dunque, è l’unità fondamentale del sistema nervoso. Esso è
costituito dalla cellula propriamente detta e dai suoi prolungamenti (Fig.1.4):
Soma
Dendriti
Assone
Fig.1.4 Raffigurazione schematica di un neurone nella quale sono rappresentate le tre componenti principali:
dendriti, soma, ed assone.
Le sue componenti principali, come possiamo osservare nella figura, sono i dendriti, il
soma, che corrisponde al corpo cellulare del neurone, e l’assone.
Nel sistema nervoso i neuroni sono disposti in rete, ovvero sono altamente connessi fra loro
attraverso giunzioni, dette sinapsi, che mettono in contatto l’assone di una cellula con i
dendriti di un’altra. Tale costituzione reticolare è la base delle capacità esibite dai sistemi
nervosi biologici e tutto ciò è dovuto alle proprietà funzionali dei neuroni, che hanno la
possibilità di scambiarsi segnali elettrochimici l’un l’altro, causando l’ulteriore attivazione
di altri neuroni e trasferendo quindi il segnale in regioni dell’organismo (non solo cerebrali,
naturalmente) talvolta molto lontane dal sito di origine del segnale stesso. Questa capacità
del neurone è dovuta alla sua costituzione molecolare, che permette alla membrana
cellulare di mantenere una differenza di potenziale fra l’interno e l’esterno della cellula
(circa –70 mV), solo quando la ricezione di segnali da altri neuroni raggiunge una certa
soglia la membrana si depolarizza rapidamente provocando l’emissione di una scarica
(detta potenziale d’azione) lungo l’assone, trasferendo il segnale di attivazione alle altre
cellule alle quali esso è collegato per mezzo dei dendriti. All’attivazione segue un periodo
di iperpolarizzazione verso valori negativi che raggiunge i –90 mV, detto periodo
refrattario, in quanto il neurone non è in grado di ricevere altri segnali. Dopo tale periodo il
neurone torna al suo stato di riposo di –70 mV.
In questo scambio di segnali le sinapsi assumono un ruolo fondamentale, essendo esse a
determinare le caratteristiche del segnale in entrata e facendo in modo che esso si aggiunga
o si sottragga all’insieme dei segnali che giungono ad un neurone da altre cellule, per
questo motivo le sinapsi possono essere eccitatorie oppure inibitorie. Il modo in cui
vengono trasferiti i segnali, ovvero cosa succede a livello delle sinapsi in presenza di un
potenziale d’azione è materia di studio di questi anni: si sa che esse producono sostanze, i
neurotrasmettitori, che trasferendosi dal neurone pre-sinaptico a quello post-sinaptico ne
modificano il potenziale elettrico, determinando in un senso o nell’altro la sua attivazione,
ma la ricerca è ancora intensa e, in ogni caso, ai fini della nostra discussione, lo specifico di
tali meccanismi assume un valore piuttosto marginale. Quel che ci interessa è che le sinapsi
sono il mezzo attraverso il quale i neuroni comunicano e ci interessa ancor di più sapere
come esse si formano, dal momento che una importante caratteristica esibita dal sistema
nervoso è la così detta plasticità sipnaptica , ovvero il fatto dimostrato che i contatti fra i
neuroni non rimangono stabili nel corso del tempo, ma mutano frequentemente
determinando la creazione, o la rimozione, di sinapsi3. Esattamente questa caratteristica
strutturale del sistema nervoso è ritenuta l’origine delle complesse facoltà comportamentali
esibite dalle forme viventi, capaci come sono di adattarsi all’ambiente e di sfruttarne le
caratteristiche a proprio vantaggio.
Il già citato Hebb propose un processo di apprendimento che interessava proprio le sinapsi
e l’attivazione reciproca dei neuroni, formulando quella che oggi viene definita la “regola
di Hebb”, che suona più o meno così:
Se le unità A e B sono eccitate contemporaneamente, si determina un aumento della
forza della connessione che vi è tra esse.
L’importanza della regola di Hebb deriva dal fatto che fu un tentativo di mettere in
relazione macro e micro strutture dei processi cognitivi: un approccio caro al
connessionismo. Allo stato attuale della ricerca è difficile dubitare che siano proprio le
particolari caratteristiche mostrate dai neuroni a determinare i processi mnemonici e di
apprendimento, oltreché, naturalmente, tutto il resto, ma il modo esatto in cui vengono
compiuti tali processi non è ancora chiaro ed è a questo punto che interviene la psicologia,
con le sue ipotesi e le sue simulazioni.
3
Il numero di neuroni e di sinapsi in un cervello umano è impressionante. Si calcola il numero di circa 100
miliardi di neuroni per una densità, nella corteccia cerebrale, di circa 40.000/mm3 e una densità sinaptica di
circa 800 milioni per millimetro cubo con una media di 20.000 sinapsi per neurone.
1.3.2 Sistemi neurali artificiali
Le reti neurali artificiali rappresentano un’estrema semplificazione del loro corrispettivo
biologico, ma nonostante questo, alcune caratteristiche, almeno per quanto concerne la
forma logica, sono rispettate. Intanto, la forza computazionale dei sistemi neurali artificiali
sta nel collegamento in rete delle semplici unità di elaborazione e poi, tornando a
considerare la formula (1), che ci dava il segnale emesso da un neurone artificiale, si può
notare come anche il concetto della somma del segnale in entrata, grossomodo, sia
rispettato. Il neurone artificiale, infatti, scarica quando la somma degli input supera una
certa soglia, ricordandoci, però, che il segnale emesso da un’unità non è identico al suo
input netto Ai, che è uguale a:
N
Ai = ∑ wij x j ,
j
infatti, la risposta del neurone yi viene calcolata sottraendo alla somma degli input in entrata
la soglia Si del neurone e passando tale risultato per una funzione F, detta di attivazione4.
Fatto questo, in pratica, si ottiene la (1), cioè:
 N

yi = F  ∑ wij xi − S i  .
 j

Nella maggior parte dei casi i pesi wij, che corrisponderebbero alle sinapsi, possono essere
tanto positivi quanto negativi ed, in ogni caso, modificabili daurante il processo di
apprendimento e questo elemento rende una rete neurale artificiale, anche dal punto di vista
della plasticità sinaptica, analoga ad un sistema biologico.
4
Per quanto riguarda le funzioni di attivazione, bisogna dire che ne esistono di diversi tipi, le più comuni sono
la funzione introdotta da McCulloch e Pitts, detta a gradino, per via del suo andamento. In questo tipo di
funzione l’attivazione di un neurone è del tipo “tutto o niente”, infatti:
1
F (x) = 
0
per x > S
altrimenti
dove S è la soglia del neurone. Funzioni che permettono più “elasticità” nella risposta sono le tipiche funzioni
continue lineari del tipo:
F(x) = kx,
dove k è una costante. Esistono anche funzioni continue, ma non lineari, che vengono prevalentemente
utilizzate in reti composte da più di due strati. La più comune è la funzione “schiacciante”4, detta sigmoide o
logistica a causa del suo andamento che descrive una S,:
F ( x) =
1
1 + e − kx
Schematizzando quanto è stato detto, un neurone artificiale risulta costituito di due unità di
calcolo: una che somma tutti i segnali in entrata e l’altra che passa questo risultato per la
funzione di attivazione determinando il valore della stessa (Fig.1.5):
X(1)
W(1)
W(…)
SOMMA
X(…)
X(n)
FUNZIONE
Segnale
W(n)
Fig 1.5 Una rappresentazione schematica di un neurone artificiale dove X(1),…,X(n) sono i segnali in input e
W(1),…,W(n) sono i pesi sinaptici.
1.4 Apprendimento e memoria
Le peculiarità delle reti neurali che le rendono così interessanti agli occhi di scienziati di
ogni campo, compresi gli psicologi, sono parecchie e sono tutte dovute tanto alla loro
struttura quanto alla particolare caratteristica che hanno di imparare da sole, a differenza dei
sistemi seriali che necessitano di istruzioni precise per ogni passaggio del calcolo, e questo
le rende, in un certo senso, più adatte dei sistemi seriali a simulare eventi che si presentano
naturalmente in ogni sistema nervoso biologico, a partire dall’apprendimento. Quando un
bambino impara ad andare in bicicletta, ad esempio, non gli sarebbe di nessun aiuto sapere
esattamente la relazione fra l’inclinazione della bicicletta rispetto al suolo e l’ampiezza di
curvatura del manubrio. Sarà il suo stesso organismo a trovare i giusti equilibri,
apprendendo spontaneamente i movimenti adatti ed il nostro compito sarà solo quello di
assisterlo durante le sue prime esperienze, sicuri che i nostri consigli, per quanto minuziosi,
non gli saranno di grande aiuto. A partire da ciò, la differenza fra un sistema seriale ed uno
connessionista diventa importante. Supponiamo di dover costruire un robot che impari ad
andare in bicicletta: in intelligenza artificiale probabilmente, e semplificando parecchio,
data una velocità costante, verrebbe approntato un algoritmo che metterebbe in relazione
l’inclinazione del robot rispetto al suolo con opportune sterzate del manubrio, in modo da
garantire un assetto stabile al ciclista. In tutto questo, i movimenti del robot saranno regolati
da semplici funzioni logiche di tipo condizionale “se…allora…” (per un’inclinazione x
sterza il manubrio di y). Se dovessimo togliere un braccio al robot, supponendo che ne
abbia due, molto probabilmente saremo costretti a modificare l’algoritmo considerando la
nuova situazione. E se togliessimo una riga del programma cosa succederebbe?
Semplicemente, il robot non andrà mai più in bicicletta!
Passiamo ora ad una prospettiva connessionista: costruiamo il nostro robot con un adeguato
apparato sensoriale, che potrebbe anche essere simile a quello precedente (inclinazione),
ma ora, invece di approntare un algoritmo, progettiamo una rete neurale che abbia come
input la percezione dell’inclinazione e come output le modifiche del manubrio, entrambi
connessi ad un certo numero di unità nascoste. Mettendo il nostro robot sulla strada,
lasciato da solo inevitabilmente cadrà a terra, ma se lo seguiremo per un po’, reggendolo
ogni volta che stia per cadere, imparerà a stare in equilibrio, ricostruendo da solo i rapporti
esistenti fra inclinazione e sterzata, ma c’è di più: se lo priveremo di un braccio, non sarà
necessario ricostruire una nuova rete neurale, ma sarà sufficiente aiutarlo ancora un po’, in
modo che impari a sopperire alla menomazione e soprattutto, non c’è nessuna semplice riga
di programma che sia capace di immobilizzarlo. Anche se dovessimo procurargli una
lesione al “sistema nervoso”, ovvero danneggiassimo in qualche modo la sua rete neurale,
dopo una sorta di terapia riabilitativa, consistente in un nuovo training di apprendimento,
tornerebbe quasi come nuovo.
Naturalmente questo è un modo ipersemplificato di presentare il discorso intorno
all’apprendimento, ma tutte le proprietà che sono state messe in luce sono realmente esibite
dalle reti neurali artificiali (che mostrano anche qualcosa di più) e ciò le rende molto
efficaci, non solo come strumento computazionale, ma anche come mezzo simulativo per la
psicologia. Infatti, non si da il caso che una riga difettosa di un programma impedisca ad un
organismo di camminare, ad esempio, si sa invece che una lesione localizzata del sistema
nervoso possa farlo, e si sa anche che nonostante una tale lesione, a patto che non sia troppo
estesa, gli arti interessati recupereranno una certa funzionalità.
Ma come apprende una rete neurale artificiale?
Abbiamo già accennato al fatto che le connessioni sinaptiche fra le varie unità sono
modificabili ed in sostanza l’apprendimento di una rete neurale consiste nel trovare quei
pesi (valori associati alle connessioni) che permettono la risoluzione di un problema.
Prendendo a modello un tipico associatore di configurazioni5 (pattern), quindi, bisogna
trovare un modo per modificare i pesi della rete in maniera tale che presentando un pattern
di input (che può essere di vario genere, ma noi consideriamolo formato da una stringa di 1
e 0) la configurazione delle unità in output sia quella che ci attendiamo, di modo che, ad
una successiva presentazione dello stesso pattern, la rete fornisca sempre la medesima
risposta. Il percettrone di Rosenblatt riusciva a riconoscere una configurazione fra tante
altre e questo accadeva proprio perché i pesi delle connessioni fra le unità di input e quella
di output determinavano l’attivazione di quest’ultima in un solo caso, quello che aveva
imparato a riconoscere, lasciandola inattiva per il resto dei casi. Per far ciò è necessaria una
regola che agisca su tali connessioni e le modifichi adeguatamente.
1.4.1 Algoritmi di apprendimento
Uno dei primi ad aver ispirato i connessionisti in direzione di una procedura di
apprendimento da applicare alle reti neurali artificiali fu Hebb con la sua regola che
abbiamo già presentato. Hebb, abbiamo visto, la formulò in riferimento ai meccanismi di
apprendimento del sistema nervoso, ma non tardò ad essere esportata nel campo del
connessionismo, prestandosi perfettamente ad un adattamento.
Il concetto della “regola di Hebb” è che quando due unità sono attive contemporaneamente,
la loro connessione si rafforza. Questo si traduce nel fatto che quando due unità sono attive
nello stesso tempo aumenta il peso della loro connessione, quindi, aumentando in tal modo
la capacità eccitatoria dell’unità presinaptica nei confronti di quella postsinaptica,
5
Sistema che ad ogni configurazione in input ne associa una in output riconoscendo, quindi, e discriminando
le diverse configurazioni.
aumenterà parimenti la probabilità che ad ogni attivazione della prima si attivi anche la
seconda. Formalmente, la variazione del peso sinaptico wij fra le unità xj ed yi è data da
∆wij = ηyi x j
dove ηcorrisponde ad tasso arbitrario di apprendimento. Naturalmente questo avviene solo
dopo un numero sufficiente di presentazioni successive tanto della configurazione in input
quanto di quella in output, che sarebbe la risposta desiderata. In realtà, fermandoci a questo
punto, la regola di Hebb risulta piuttosto limitata sia dal lato della potenza computazionale
che da quello della plausibilità biologica, infatti, variando la forza delle connessioni in un
solo senso (l’incremento), da un lato permette esclusivamente l’apprendimento di pattern
ortogonali (in cui la somma dei prodotti dei singoli componenti è zero) e dall’altro non
tiene conto di quelle che abbiamo chiamato connessioni inibitorie, che invece sono presenti
nel sistema nervoso. Per ovviare a tali inconvenienti sono state formulate diverse varianti
della regola di Hebb, che tengono conto dell’inibizione.
La regola di apprendimento del percettrone di Rosenblatt, invece, è leggermente diversa,
ma il concetto rimane lo stesso: sia nella regola di Hebb che in quest’ultima la
modificazione sinaptica è funzione di un evento presinaptico e di una postsinaptico. C’è
solo da notare, ma non ne daremo dimostrazione, che Rosenblatt presentò il cosiddetto
teorema di convergenza del percettrone, con il quale si dimostrava che se esisteva un
vettore di pesi sinaptici capace di soddisfare la trasformazione dall’input all’output, il
percettrone lo avrebbe trovato in un numero finito di cicli di apprendimento.
Uno sviluppo ulteriore dei metodi di apprendimento si ha con la regola delta, un algoritmo
che grazie all’utilizzo di unità con funzione di attivazione continua, a differenza di quelle
del percettrone che hanno una funzione a gradino (vedi nota n.3), permette la descrizione
delle prestazioni di una rete neurale attraverso una funzione continua che misura l’errore
globale della rete, che sarebbe la differenza fra l’output reale fornito dalla rete per un
determinato pattern di input e l’output desiderato dall’istruttore. In altre parole, mentre nel
percettrone e nella regola di Hebb, ai fini dell’apprendimento, si considerano i “rapporti”
diretti fra le singole unità, nella regola delta si descrive direttamente il cambiamento
dell’errore globale in funzione del cambiamento dei pesi sinaptici ed il nome di questo
algoritmo deriva proprio dal fatto che in esso la modifica dei pesi si basa sulla differenza δ
tra la risposta desiderata e quella ottenuta dalla rete. Formalmente abbiamo
δ = ( d i − oi )
∆wij = ηδ i x j
dove d i è l’uscita desiderata dell’i-esima unità di output e oi l’uscita corrente. ηè sempre il
tasso di apprendimento ed xj l’attività presinaptica dell’i-esima unità di output. Nella regola
delta, quindi, la funzione di calcolo dell’errore descrive una superficie (dell’errore,
naturalmente) in uno spazio n-dimensionale (dove n sta per il numero di pesi sinaptici della
rete) caratterizzata da “massimi” e “minimi” in cui l’algoritmo cerca quella configurazione
di pesi che determini il minimo errore: questo è possibile perché la regola delta produce
sempre una “discesa” sulla superficie dell’errore fino a trovare il punto in cui l’errore è
minimo. Inoltre, il rinato interesse per il connessionismo si è determinato soprattutto
quando si è riusciti a trovare un metodo di apprendimento per le reti neurali multistrato,
come abbiamo visto in precedenza, ed il più usato e popolare di questi metodi è denominato
back-propagation (retropropagazione – dell’errore) oppure regola delta generalizzata.
Questo importante algoritmo, in pratica, sfrutta le stesse proprietà della regola delta, ma fa
propagare l’errore dall’ultimo strato di unità fino al primo, passando per tutti quelli
intermedi. In questo modo l’errore globale della rete viene in un certo senso suddiviso fra i
vari strati di connessioni e queste poi vengono modificate con lo stesso criterio adottato
dalla regola delta, ma strato per strato a partire dalle ultime fino alle prime. Purtroppo in
questa procedura c’è un inconveniente: la superficie dell’errore la possiamo immaginare
molto varia, caratterizzata da picchi (i massimi) e da vallate (i minimi), ed il nostro scopo è
quello di trovare la vallata più profonda e percorrerla tutta fino in fondo, laddove l’errore è
più prossimo allo zero, ma, siccome la configurazione iniziale dei pesi sinaptici è casuale,
può capitare di trovare nei pressi del nostro punto di partenza una vallata abbastanza
profonda da farci credere di avere raggiunto il minimo, ma non abbastanza da assicurarci
un errore sufficientemente basso, abbiamo trovato, cioè, un minimo locale (Fig.1.6). In
questa situazione i pesi non si modificano sostanzialmente più, ma in pratica la rete non ha
appreso nulla. Nel corso del tempo, comunque, sono stati approntati notevoli miglioramenti
all’originaria formulazione di questo algoritmo e, ad oggi, è ancora il più potente algoritmo
di apprendimento per reti neurali multistrato a nostra disposizione.
La back-propagation, nel campo della psicologia, a segnato un po’ la rinascita del
connessionismo dopo i colpi inferti da Minsky e Papert e la sua descrizione è fornita da
Rumelhart e McClelland nel già citato PDP. Microstruttra dei processi cognitivi, che è da
considerarsi un po’ come la “bibbia” del connessionismo6, avendo con forza posto
nuovamente l’attenzione sull’utilizzo delle reti neurali artificiali come metodo simulativo
per la psicologia ed avendo presentato quello che sarà, da lì in poi, il più diffuso algoritmo
di apprendimento per reti multistrato.
6
Non si fornisce alcuna notazione formale della back-propagation, così come si è evitato di dilungarsi nella
descrizione degli algoritmi di apprendimento nel loro complesso, che sono numerosi e di vario genere. In
questa sede ci limitiamo a dire che le due procedure descritte, insieme alla back-propagation e altri metodi,
sono sistemi di apprendimento supervisionato, in quanto necessitano di un “istruttore” esterno che fornisca
tanto i pattern di input quanto i rispettivi output. Esistono, però, altri metodi che permettono alle reti neurali
un apprendimento per auto-organizzazione in cui non c’è una risposta desiderata fornita da un “istruttore”
esterno, anche se, all’atto pratico, la differenza fra questi due generi di apprendimento non è ben determinata
e, in ultima analisi, la preferenza dell’uno rispetto all’altro dipende più dal modo in cui viene affrontato il
problema che non dal problema stesso.
Per una trattazione esaustiva, completa di descrizione algoritmica delle varie procedure, rimando al manuale
di Dario Floreano già nominato.
Errore
Minimo locale
0
W1
W2
Minimo ottimale
Fig.1.6 Grafico semplificato di una funzione di errore in cui sono presenti solo due pesi sinaptici W1 e W2. Il
minimo ottimale rappresenta un punto in cui l’apprendimento della rete è soddisfaciente.
Supponendo che il nostro punto di partenza fosse su valori alti di W2, cadere nel minimo locale
sarebbe molto probabile.
1.4.2 Memoria e proprietà emergenti
Quando insegnamo ad un computer a distinguere una lettera qualsiai, supponiamo una “A”,
da un’altra, una “M” ad esempio, il nostro calcolatore non farà altro che mettere la “A”, e
tutto ciò che gli serve per riconoscerla, in una delle tante “schede” della sua memoria, ed
altrettanto farà per la “M”. Le due lettere avranno quindi due posti differenti in questo
ipotetico archivio che è la memoria del computer, avranno cioè due indirizzi di memoria
differenti. Nel momento in cui si troverà di fronte ad una delle due lettere, non farà altro
che prendere le due schede e confrontare il loro contenuto con i dati di cui è in possesso e
l’esito di questo confronto deciderà la risposta del computer: se i dati sono uguali al
contenuto della scheda corrispondente alla “A”, la sua risposta sarà una “A”, altrimenti li
confronterà con quelli della “M”, e se coincideranno, la risposta sarà “M”. Ma se
dovessimo mostrare al nostro computer una “F” cosa accadrebbe? Accadrebbe che non ci
fornirebbe nessuna risposta, perché la “F” non l’aveva imparata. Affinché possa
riconoscerela, infatti, lo dovremo istruire e nella sua memoria si creerà una nuova scheda
per la “F” con un altro indirizzo, diverso dai primi due. Con questa procedura potrà
imparare tutte le lettere dell’alfabeto e nella sua memoria ci saranno ventuno indirizzi di
memoria differenti, uno per ogni lettera. Ogni volta che si troverà difronte ad una lettera, la
confronterà con tutte quelle che ha in memoria fino a trovare quella corrispondente.
Supponiamo ora di presentargli una “E” priva del trattino centrale: quale sarà la sua
risposta? Molto probabilmente nessuna, ed il motivo è che per il computer una “E” senza
trattino centrale non è “una “E” senza trattino centrale” (come sarebbe per un simbolo di tal
genere), ma un simbolo diverso da tutti quelli che ha nella sua memoria e non saprà quindi
riconoscerlo.
Sappiamo già che i nostri computer svolgono un’elaborazione seriale dei processi ed infatti,
dovendo riconoscere una lettera, confrontano una per una le schede che hanno in memoria
con i dati che ricevono dall’esterno, senza nessuna elasticità in questo senso: esiste una
relazione biunivoca fra i dati in entrata e le rispettive risposte, a meno che non si costruisca
un programma che tenga conto di queste caratteristiche, ma anche in questo caso, il nostro
computer riconoscerà la “E” senza trattino centrale come una “E” solo perché noi gli
avremo insegnato che un simbolo di quel genere è comunque una “E”. Anche la “E” senza
trattino avrà, quindi, il suo indirizzo di memoria, al pari delle altre lettere. Una conseguenza
di tutto questo, naturalmente, è che se per qualsiasi ragione dovessimo privare il computer
di una delle schede che ha in memoria, esso non potrebbe in alcun modo rispondere per la
lettera corrispondente alla scheda danneggiata o perduta.
Ciò detto, risulta difficile pensare che una persona impegnata in un compito simile a quello
del computer, sapendo che deve riconoscere delle lettere, attuerebbe una così complessa
procedura di riconoscimento ed in effetti esistono numerose ricerche in questo senso, che
mettono in evidenza come il nostro modo di riconoscere i simboli, e di ricostruirli, come
nel caso della “E” senza trattino, sia, da un lato più complesso, richiedendo ad esempio
un’adeguata informazione di contesto, e da un altro richieda una procedura sicuramente più
veloce, considerata la lentezza con la quale interagiscono i nostri neuroni (nell’ordine dei
millisecondi) rispetto alla velocità di calcolo di un moderno computer (un qualunque
Pentium II della Intel viaggia nell’ordine di circa mezzo miliardo di operazioni al secondo,
un fattore di oltre 106 più veloce). A fronte di queste considerazioni i modelli di
simulazione seriale incontrano qualche difficoltà che sono ben evidenziate nel libro di
Rumelhart e McClelland 7.
Passiamo ora ad una simulazione connessionista. Costruiamo la nostra rete neurale ed
insegnamole, con i metodi che abbiamo già conosciuto (la back-propagation, ad esempio), a
riconoscere le lettere dell’alfabeto. Le lettere non saranno più delle schede di memoria, ma
delle particolari configurazioni dei pesi sinaptici. Alcune lettere attiveranno alcune unità ed
altre magari no, ma quello che produce dopo avere imparato non è altro che un pattern di
connettività, ovvero una matrice formata da quei pesi sinaptici che riescono a fornire le
risposte giuste per ogni presentazione e naturalmente, se volessimo che la nostra rete impari
a riconoscere un nuovo simbolo, la dovremmo istruire in questo senso, in modo che
modifichi le sue connessioni in maniera adeguata, anche se, purtroppo, si presenterebbe una
difficoltà, infatti dovremmo ripresentare nuovamente alla rete tutte le lettere aggiungendo
quella nuova. Un difficoltà che la allontana da quanto ci mostrano i sistemi intelligenti
naturali, che non richiedono di ricominciare sempre daccapo per imparare cose nuove. Non
7
Un esempio è il vincolo dei 100 passi per un programma seriale: il compito che un uomo svolge in un
secondo o meno deve implicare un programma di 100 passi o meno. Un vincolo che hai ricercatori di
intelligenza artificiale forse interessa poco, ma deve interessare gli psicologi.
dimentichiamo comunque che si tratta di una simulazione, e da questo punto di vista sono
più i pregi che i difetti.
Sottoponendo la nostra rete neurale alle stesse prove cui abbiamo sottoposto il precedente
programma seriale, noteremmo notevoli differenze di funzionamento: non basterebbe
eliminare un’unità per non fare funzionare correttamente la rete ed in oltre, e questo è di
estremo interesse, quando le presenteremo la “E” senza trattino, molto probabilmente
riceveremo come risposta una “E”. Tutto ciò è possibile perché, per dirla con Rumelhart e
McClelland nel citato volume, quello che “differenzia i nostri modelli da quelli ispirati
dalla metafora del computer [è] il vincolo che tutte le conoscenze sono nelle connessioni.
Noi siamo abituati a concepire le conoscenze, in base ai calcolatori convenzionali
programmabili, come immagazzinate nello stato di certe unità del sistema. Noi postuliamo
per i nostri modelli che nello stato di certe unità del sistema possano verificarsi solo degli
immagazzinamenti a brevissimo termine; la memoria a lungo termine ha luogo nelle
connessioni tra unità”.
La cosa interessante delle reti neurali, ma naturalmente tutto dipende dal tipo struttura della
rete, è che non codificano in maniera separata le informazioni che devono ricordare, ma ne
disperdono le caratteristiche in microtratti, ognuno dei quali attiverà alcune specifiche
unità. Solo il concorso di tutte le unità che codificano i microtratti relativi ad una specifica
informazione porterà alla ricostruzione della stessa, mettendo la rete in grado di fornire la
risposta esatta: in questo caso si dice che la rappresentazione è distribuita (Tav.1). Se
torniamo per un attimo a quanto dicemmo nell’introduzione sulle rappresentazioni ci
rendiamo conto di quanto sia differente il paradigma connessionista da quello proprio delle
scienze cognitive: in un modello connessionista non c’è un simbolo che sta per un altro
simbolo, ma la rappresentazione è dispersa in quelle che vengono chiamate componenti
principali, il simbolo viene scomposto nei suoi tratti peculiari, comuni anche ad altri
simboli.
Ecco perché il danneggiamento parziale di una rete neurale non porta ad una inefficienza
generale del sistema, a differenza di quanto accadrebbe in un sistema ad elaborazione
seriale. Privare la rete di un certo numero di unità o di connessioni determina la perdita di
alcuni microtratti che non pregiudicano in maniera determinante le prestazioni generali
della rete stessa: potrà accadere, in relazione all’entità del danno, che verranno persi uno o
più simboli che il sistema sapeva riconoscere, oppure che le risposte presentino un errore
maggiore, ma solo un danno molto esteso pregiudica definitivamente il funzionamento del
sistema. Proprio questa proprietà ha suggerito a molti ricercatori l’idea di utilizzare il
danneggiamento di reti neurali artificiali per simulare patologie neurologiche derivanti da
danni cerebrali, come hanno fatto Hinton e Shallice in un importante articolo apparso su
Psychological Review [1991] dal significativo titolo Lesioning an Attrattor Network:
Investigatios of Aquired Dyslexia in cui descrivono un esperimento nel quale veniva
danneggiata una rete di associazione semantica (parole-input, significati-output). Le lesioni
determinavano comportamenti della rete molto simili a quelli riscontrabili in individui che
avevano acquisito la dislessia profonda in seguito a danni cerebrali.
Anche la possibilità, molto probabile peraltro, che la nostra rete riconosca una “E” senza
trattino centrale come una “E” a tutti gli effetti deriva dal fatto che le rappresentazioni sono
distribuite, infatti, una “E” senza trattino produrrebbe un’attivazione delle unità molto
simile a quella di una “E”, o comunque, più simili alla”E” o alla “F”, ad esempio, che non
ad una “M” o una “A”. In ogni caso, produrrebbe comunque una risposta, che è già
qualcosa in confronto al silenzio che un sistema seriale ci darebbe nelle stesse condizioni.
Su questo filone sono stati compiuti numerosi esperimenti che vanno ben oltre il semplice
riconoscimento di lettere. Basti pensare ai risultati raggiunti da Rumelhart e coll. nel
“lontano” 1982, pubblicati su Psychological Review con l’articolo An Interactiv Activation
Model of Context Effects in Letter Perception in cui mettono in evidenza come una rete
neurali, al pari di una persona, ha più difficoltà a riconoscere una lettera incompleta quando
questa si trova all’interno di una non-parola, piuttosto che quando contribuisca a formare
una parola dotata di significato.
Questa proprietà di ricostruzione delle rappresentazioni, oltre ad essere molto simile a
prestazioni umane, la possiamo considerare come una proprietà emergente da una più
generale, quale quella di generalizzare, ovvero, riuscire a collocare all’interno di un
insieme di appartenenza generico delle rappresentazioni particolari, che non sono mai state
presentate prima alla rete, solo sulla base degli esempi forniti durante il ciclo di
apprendimento.
Una capacità, tra l’altro, molto apprezzata anche al di là della ricerca psicologica: reti
neurali artificiali sono state progettate, ad esempio, per esaminare i segnali sonar sui
sommergibili, caratterizzati da notevole rumore di fondo, affinché distinguessero fra scogli,
mine, balene e quant’altro può trovarsi in fondo al mare, oppure per la valutazione di rischi
nella concessione di prestiti da parte di istituti di credito.
Tav.1 La rappresentazione distribuita
Supponendo di dover costruire un sistema che debba riconoscere i tre simboli in
basso, un sistema di elaborazione seriale dovrebbe archiviarli in tre indirizzi di
memoria differenti, al pari di quella che è una codifica locale per una rete neurale.
Utilizzando l’impostazione grafica di Floreano nel suo manuale, vediamo che la
fila di unità al di sopra dei simboli rappresenta una codifica locale: un’unità per
ogni simbolo, ognuno dei quali provoca l’attivazione di un’unica unità (cerchietto
nero). All’estremità inferiore troviamo invece una codifica distribuita. Notiamo
come quest’ultima richieda un numero inferiore di unità per la codifica dello stesso
numero di simboli. Questo accade perché la rete distingue autonomamente i
simboli in base alle caratteristiche che presentano, i loro componenti principali
quindi: nel primo caso la figura presenta degli spigoli ma non è chiusa, nel secondo
caso è sia spigolosa che chiusa e nel terzo caso è chiusa ma non spigolosa.
1.5 Conclusione
In questo capitolo si è cercato di mettere in risalto quali sono le caratteristiche principali dei
sistemi connessionisti e come funzionano. Sia dai confronti con i sistemi ad elaborazione,
seriale, sia tenendo a mente quanto è stato detto nell’introduzione, risulta evidente la
diversità intrinseca dei due approcci. La mente disegnata dal connessionismo non è un
elaboratore di simboli che cataloga e distingue, ma una cosa molto più prossima a quello
che sembra essere il reale funzionamento del cervello: un sistema dinamico e capace di
modificarsi massicciamente in funzione dei suoi rapporti con l’ambiente. Un sistema in cui
l’adattamento non è un punto di partenza con il quale giustificare la costruzione di modelli
che, in verità, hanno poco di naturale, ma la regola sulla quale si plasmano tutte le
caratteristiche dei sistemi intelligenti di natura biologica. Questo aspetto, che forse sembra
ancora un po’ oscuro, sarà debitamente chiarito nel prossimo capitolo, in cui vedremo come
si possono sviluppare organismi artificiali che si riproducono e migliorano grazie ad una
forma di selezione naturale.
Riguardo alla critiche, naturalmente, il connessionismo non poteva certo esserne indenne,
ed infatti sono giunte, e giungono, da più parti e delle specie più diverse8, anche se c’è ne
una che merita una breve digressione: qualcuno ha sostenuto, a partire dallo schema dei
livelli di analisi di Marr, che i modelli connessionisti si pongono al livello
dell’implementazione, mentre il livello proprio delle descrizioni psicologiche è quello
computazionale, quindi essi sarebbero irrilevanti per la ricerca psicologica.
Naturalmente noi dissentiamo con una tale critica, ritenendo che le simulazioni con reti
neurali artificiali, sempre rispettando l’impostazione dall’alto in basso di Marr, si pongano
al livello algoritmico, in quanto cercano di dimostrare che le proprietà di un sistema che
possono sembrare frutto di complesse elaborazioni simboliche è possibile riprodurle ad un
livello più basso, microstrutturale quindi, a patto di collocare in una nuova prospettiva il
significato di input e di output e sfruttando processi di trasformazione differenti da quelli
del cognitivismo. Nel nostro caso i processi distribuiti in parallelo. Come hanno ben detto i
soliti Runelhart e McClelland: “la prospettiva fondamentale [del connessionismo] è che
molti dei costrutti delle descrizioni a livello macro come schemi, prototipi, regole,
produzioni, e così via, possono essere visti come emergenti dalle interazioni tra le
microstrutture dei modelli distribuiti”.
In conclusione facciamo notare che alcuni autori tendono a far rientrare il connessionismo
nell’alveo delle scienze cognitive, ma, anche alla luce di quanto abbiamo detto fin qui, una
tale operazione sembra poco percorribile. Nell’introduzione è stata presentata una nozione
“forte” di scienza cognitiva, nella quale è ravvisabile una matrice cognitivista piuttosto
diretta ed identificabile soprattutto nel persistere della separazione fra mente e corpo e
nell’analogia del computer che si è conservata sostanzialmente immutata. Altrettanto non è
possibile dire nei riguardi del connessionismo, che si pone invece come un diretto
antagonista di tutto ciò che il cognitivismo significa nelle sue istanze più intime e solo una
nozione molto “debole” di scienza cognitiva potrebbe accomunarli entrambi. E a questo
proposito non basta l’ipotesi di Posner, avanzata in Foundation of cognitive science [1989],
secondo cui tanto la scienza cognitiva quanto il connessionismo si fondano su un modello
computazionale della mente, perché abbiamo visto che non si tratta della stessa logica
computazionale e nemmeno, in ultima analisi, della stessa “mente”.
8
Per una più ampia e completa trattazione rimando a P. Quinlan, Connessionismo e psicologia [1991] e PDP.
Microstrutture dei processi cognitivi [1986] di Rumelhart e McClelland
Scarica