Home Su

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")
  1. 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)
  2. 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
  1. 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)
  2. 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)
Cosa sono gli algoritmi genetici ?
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.
 
Questa pagina è stata realizzata da Vittorio Villasmunta

Ultimo aggiornamento: 29/11/14