Reti Neurali - Frequently Asked Questions
|
Innanzitutto, quando parliamo di rete neurale, dovremmo specificare
che si tratta di rete neurale artificiale (RNA), poiché è di questo che
intendiamo parlare il più delle volte. Le reti neurali biologiche sono
estremamente più complesse nelle loro strutture elementari di qualsiasi
modello matematico usato per le RNA. Una descrizione abbastanza elementare
potrebbe essere la seguente:
Una RNA è una rete di molteplici e semplicissimi processori (unità
elementari),
ognuno dei quali possibilmente dotato di (una piccola quantità di)
memoria locale. Le unità sono connesse da un canale di comunicazione
unidirezionale ("connessioni"), che trasportano dati numerici
(invece che simbolici). Le unità operano solo sui propri dati locali e
sugli input che ricevono attraverso le connessioni.
Ciò che distingue una rete neurale dalle altre tecniche matematiche è
l'impianto strutturale.
Una RN è un strumento di elaborazione, sia esso un algoritmo o una
macchina reale, la cui struttura è stato mutuata dalla struttura e dalle
funzioni del cervello umano.
La maggior parte delle RN possiedono alcune specie di regole di
addestramento in cui i pesi delle connessioni sono adattati sulla base dei
campioni fornitigli.
Detto in altre parole, la RN "impara" dagli esempi, quasi come i
bambini che imparano a riconoscere i cani attraverso esempi di cani, ed
evidenzia alcune capacità strutturali di generalizzazione.
In genere, le RN possiedono un grande potenziale nelle operazioni in
parallelo, poiché i calcoli dei componenti sono indipendenti l'uno
dall'altro.
|
|
Principalmente, le RN possono calcolare ogni funzione calcolabile, ad
es. esse possono fare qualsiasi cosa che possa fare un normale
computer.
In particolare, possono fare qualsiasi cosa che possa essere
rappresentata come mappatura fra spazi vettoriali che siano approssimati a
precisione arbitraria attraverso RN del tipo feedforward (che
rappresentano il tipo più spesso utilizzato).
In pratica, le RN sono particolarmente utili per problemi di mappatura
che siano tolleranti di alti tassi di errore, abbiano una abbondante
disponibilità di esempi, ma a cui regole rigide e veloci non possano
essere facilmente applicate.
Le RN sono sicuramente inefficaci per problemi che sono connessi a
manipolazione di simboli e per problemi che necessitano di memoria a breve
termine.
|
|
Le RN attraggono una certa quantità di persone molto diverse fra
loro.
Studiosi dei processi elaborativi desiderano scoprire le proprietà
dell'elaborazione non-simbolica delle informazioni attraverso le RN e
qualcosa in generale sui sistemi di apprendimento.
Ingegneri di varie specialità vogliono sfruttare le capacità delle RN su
diverse aree (ad es. elaborazione dei segnali) per risolvere i propri
problemi applicativi.
Studiosi dei processi cognitivi vedono le RN come una possibile
apparecchiatura per descrivere modelli di pensiero e di coscienza
(funzioni ad alto livello del cervello).
Neurofisiologi usano le RN per descrivere ed esplorare le funzioni a medio
livello del cervello (ad es., memoria, sistema sensoriale, funzioni
motorie).
Fisici utilizzano le RN per sottoporre a modello i fenomeni nella
meccanica statistica e per un mucchio di altre finalità.
Biologi usano le RN per interpretare la sequenza dei nucleotidi.
Filosofi e altra gente possono inoltre essere interessati alle RN per una
svariata serie di altri motivi.
|
|
E' l'abbreviazione di backpropagation (retropropagazione)
dell'errore, che rappresenta attualmente il metodo di apprendimento più
ampiamente utilizzato nelle RN, benché esso presenti numerosi
svantaggi, che potrebbero essere compendiati nella frase: "Che
diavolo sta succedendo?".
Questo metodo riscuote molto successo nelle applicazioni pratiche ed è
relativamente facile da impiegare.
Funziona bene per addestramento di reti feedforward (gli archi che
congiungono i nodi sono unidirezionali, e non ci sono concatenazioni
cicliche) stratificate (i nodi sono raggruppati in strati).
La back-propagation ha bisogno di un insegnante che conosca la
risposta corretta per ogni input ("apprendimento
supervisionato") e usa la discesa di gradiente verso l'errore (come
fornito dall'insegnante) per addestrare i pesi. La funzione di attivazione
è (solitamente) una funzione sigmoidale (ad es., limitata sopra e sotto,
ma differenziabile) di una somma pesata degli input dei nodi.
L'uso di un algoritmo a discesa di gradiente per allenare i suoi pesi
rende più lento l'addestramento: ma essendo una algoritmo feedforward, è
sufficientemente rapido durante la fase di richiamo.
|
|
Attualmente, vi sono numerosi metodi si apprendimento per le RN.
Nessuno può dire esattamente quanti siano in tutto. Ogni settimana ne escono fuori
di nuovi (o quanto meno come varianti di metodi già esistenti).
Nelle righe che seguono vi è una raccolta dei metodi maggiormente
conosciuti, senza alcuna pretesa di completezza.
La principale classificazione di questi metodi si rifà alla
distinzione tra apprendimento supervisionato e non supervisionato:
|
Nell'apprendimento supervisionato, vi è un "insegnante"
che nella fase di apprendimento "dice" alla rete quanto bene
sta funzionando ("apprendimento rinforzato") o quale sarebbe
dovuto essere il comportamento corretto ("apprendimento
totalmente supervisionato").
|
|
Nell'apprendimento non supervisionato, la rete è autonoma: non
appena i dati vengono esaminati,la rete cerca alcune delle proprietà
del set di dati e impara a riferirle ai suoi output. Quali esattamente
queste proprietà siano, che la RN possa apprendere a riconoscere,
dipende dal particolare modello di rete e dal metodo di apprendimento.
Molti di questi metodi di apprendimento sono strettamente connessi a
una topologia di rete.
|
Presento qui la lista, fermandomi appena sui nomi:
APPRENDIMENTO NON SUPERVISIONATO (vale a dire senza
"insegnante")
-
Reti Feedback:
a) Additive Grossberg (AG)
b) Shunting Grossberg (SG)
c) Binary Adaptive Resonance Theory (ART1)
d) Analog Adaptive Resonance Theory (ART2, ART2a)
e) Discrete Hopfield (DH)
f) Continuous Hopfield (CH)
g) Discrete Bidirectional Associative Memory (BAM)
h) Temporal Associative Memory (TAM)
i) Adaptive Bidirectional Associative Memory (ABAM)
j)
Kohonen Self-organizing Map (SOM)
k)
Kohonen Topology-preserving Map (TPM)
-
Reti Feedforward-only:
a) Learning Matrix (LM)
b) Driver-Reinforcement Learning (DR)
c) Linear Associative Memory (LAM)
d) Optimal Linear Associative Memory (OLAM)
e) Sparse Distributed Associative Memory (SDM)
f) Fuzzy Associative Memory (FAM)
g) Counterprogation (CPN)
APPRENDIMENTO SUPERVISIONATO
-
Reti Feedback:
a) Brain-State-in-a-Box (BSB)
b) Fuzzy Cognitive Map (FCM)
c) Boltzmann Machine (BM)
d) Mean
Field Annealing (MFT)
e)
Recurrent Cascade Correlation (RCC)
f) Learning Vector Quantization (LVQ)
-
Reti Feedforward-only:
a) Perceptron
b) Adaline, Madaline
c) Backpropagation (BP)
d) Cauchy Machine (CM)
e) Adaptive Heuristic Critic (AHC)
f) Time
Delay Neural Network (TDNN)
g) Associative Reward Penalty (ARP)
h) Avalanche Matched Filter (AMF)
i)
Backpercolation (Perc)
j) Artmap
k)
Adaptive Logic Network (ALN)
l)
Cascade Correlation (CasCor)
|
|
Esistono diverse definizioni di algoritmo genetico. Una di queste
potrebbe essere la seguente:
Un AG è un programma di ottimizzazione che parte con alcune procedure
codificate, le muta stocasticamente, per far uso poi di un processo di
selezione per privilegiare i mutanti con la più elevata idoneità e
magari un processo ricombinatorio per abbinare le proprietà dei mutanti
con più successo.
Vi è un newsgroup dedicato a questo argomento, chiamato
comp.ai.genetic.
Per ulteriori approfondimenti, può essere utile consultare:
|
David Goldberg, - Genetic Algorithms in Search Optimisation and
Machine Learning, Addison-Wesley, 1989;
|
|
Lawrence Davis, - Handbook of Genetic Algorithm, Van
Nostrand Reinhold, 1991;
|
|
L.B. Booker, D.E. Goldberg and J.H. Holland, - Classifier
Systems and Genetic Algorithms, Techreport No. 8 (April 87);
|
|
Cognitive Science and Machine Intelligence Laboratory,
University of Michigan, ristampato in Artificial Intelligence,
Volume 40 (1989), pagg. 185-234
|
|
|
La logica fuzzy appartiene ad un'area di ricerca basata sul
lavoro di L.A. Zadeh. Costituisce un allontanamento dai classici
sistemi a due valori e logici, e usa variabili di sistema linguisticamente
definibili come non rigide ("largo", "caldo",
"alto") e una gamma continua di valori reali nell'intervallo [0,
1], piuttosto che decisioni e compiti basati su logica strettamente
binaria (Vero o Falso).
La logica fuzzy viene adoperata quando vi sono difficoltà a
modellare un sistema, o se questo è controllato da un operatore umano, o
laddove siano comuni ambiguità e indeterminatezza. Un tipico sistema fuzzy
comprende una base di regole, funzioni di appartenenza, e una procedura di
deduzione.
Nel newsgroup comp.ai.fuzzy si possono trovare molte discussioni su
questo argomento, che trova ospitalità anche in comp.ai.neural-nets,
specialmente quando la logica fuzzy si combina con le reti
neurali.
Ulteriori approfondimenti possono essere trovati su:
|
Klir, G.J., Folger, T.A., - Fuzzy Sets, Uncertainty, and
Information, Prentice-Hall, Englewood Cliffs, N.J., 1988.
|
|
Kosko, B., - Neural Networks and Fuzzy Systems,
Prentice Hall, Englewood Cliffs, NJ, 1992.
|
|
|