Newsgroup: it.scienza.informatica
Titolo: GA

Ho bisogno di una informazione da un'anima pia..
Sto lavorando con gli algoritmi genetici.
Ciascun "gene" fornisce un valore float, di cui mi interessa solo il segno.
Ciascun gene opera su una stringa di lunghezza prefissata che rappresenta i
dati in ingresso al problema.
La quaestio e' il modo in cui calcolare quel float. Effettuando un prodotto
scalare tra il gene e la stringa in ingresso ottengo una separazione lineare
dello spazio degli ingressi, e per il tipo di problema che ho non va bene.
Se uso una matrice A da moltiplicare per la stringa, e il risultato da
moltiplicare ancora scalarmente per un altro vettore V (che fa parte
anch'esso del "gene") ottengo una trasformazione affine (o qualcosa del
genere, non ricordo) che molto probabilmente neanche va bene.
A me servirebbe un metodo di calcolo (semplice: escludendo quindi la
codifica nel gene di un algoritmo) che mi permettesse di realizzare una
sorta di "riconoscitore di pattern", ossia una funzione che sia in grado di
riconoscere sezioni dello spazio in ingresso non separate linearmente, ma
eventualmente anche piu' complesse.
Sto pensando di utilizzare una BPNN a 4 strati, come elemento di calcolo del
gene, ma poi la mole di calcoli e' troppo lunga (purtroppo non posso usare
le BPNN per questo problema perche' non conosco a priori quali sono i
pattern da riconoscere: il sistema deve trovare da solo se ci sono e quali
sono i pattern da segnalare).
C'e' una funzione che possa fare al caso mio?
Grazie,
--
Marco Fabiani
"...singorina, mi dica, cosa deve avere un uomo per andare a letto con lei?
Si esprima pure in Euro."

 sono i pattern da segnalare).
Allora ci sono le reti SOM (o reti di Kohonen), che perň non ti danno molte
informazioni sulla semantica dei gruppi riconosciuti.
In ogni caso, allora dovresti codificare ogni peso della rete con un
float->gene. Non so perchč, ma avevo capito che tu volevi usare 1 solo float
per memorizzare tutta la rete, pesi e struttura compresi.
Meglio ancora: sei sicuro che non esistano strade differenti, magari facendo
una analisi preliminare piů dettagliata sui dati in ingresso, usando
euristiche, o calcoli preliminari piů sofisticati? Ad esempio, puň darsi che
le reti neurali non siano per niente necessarie perchč nel 99% dei casi
l'input cade in una determinata categoria, oppure che il terzo carattere
della stringa in input dia l'informazione che cerchi, mentre gli altri sono
solo "affinamenti", o che la somma dei bytes della stringa diviso per il
numero di classi dia come resto il numero della classe cui appartiene, o...
(c'č un limite alla fantasia?)
Spero di aver centrato almeno 1 punto del problema.
Ciao
--
Alessandro Monti

euristiche, o calcoli preliminari piů sofisticati?
Posso farlo (anzi, gia' lo faccio). In particolare, sapendo dove e' stato
effettivamente trovato il petrolio, posso valutare tutti gli spettri che
avevo a priori per cercare delle somiglianze. E comunque, di fronte a un
nuovo spettro, posso valutare quello (o quelli) meno "distanti" per vedere
cosa era successo.
Volevo pero' trovare qualcosa di piu' "automatico", e che in qualche modo
potesse trovare relazioni diverse da quelle che trovo in questo modo.
Quello di cui ho bisogno e' una funzione da Rn X Rm in B (0 o 1, visto che
mi serve solo il segno) sufficientemente complessa da poter, ad esempio,
discriminare tra regioni dello spazio di ingressi (Rn) non linearmente
separate, ma contemporaneamente sufficientemente semplice da poter essere
calcolata in breve tempo e non farmi fondere il PC.. :)


 calcolata in breve tempo e non farmi fondere il PC.. :)
Allora le NN fanno certamente al caso tuo. Però non con i miracoli :-)
Una analisi per cluster farebbe ugualmente al caso tuo, anche se
probabilmente con tempi di calcolo più lunghi. Le NN lo fanno
"automaticamente", ma soprattutto senza la necessità di diventare esperti in
statistica, ed in realtà è questo l'unico loro vero vantaggio (almeno IMO).
In definitiva... non saprei cosa dirti. Sono sicuramente favorevole
all'applicazione di una analisi basata sulle reti neurali, ma sono anche
scettico sui possibili benefici che ne otterrai. A mio avviso, le NN non
aggiungono niente dal punto di vista della "capacità di elaborazione" di un
SW, mentre invece danno dei vantaggi nel fatto che non spostano il dominio
del problema dal campo di applicazione verso la matematica, come invece
fanno altri strumenti (analisi per cluster, vicinanza di vettori e altri
metodi statistici/informatici).
La scelta, sempre a mio avviso, deve essere fatta sulla base di questa
considerazione, e non in base alla qualità del risultato che si desidera
ottenere.
Spero di aver dato il mio piccolo contributo...
Ciao
--
Alessandro Monti

loro particolare definizione di "distanza".
Secondo il training set che gli fornisco. E' che in questo caso non ho un
training set :)
La nn a me serviva per avere un agente di calcolo sufficientemente
complesso. Anche sin(tg x) + cos (exp (x)) potrebbe andarmi bene, se potesse
discernere tra zone non linearmente separabili.
Marco


 automaticamente trova (se ci sono) le associazioni.
Qui andiamo malino. Personalmente non conosco i classificatori di Holland,
ma se non puoi fare un apprendimento supervisionato, non posso aiutarti.
Posso perņ consigliarti di comprare un libro:
- Masters Timothy: Practical neural network recipes in C++. Academic Press
Inc., 1993
che, a dispetto del titolo, č tutt'altro che un libro in cui si parla di
codice.
E' semplice, č molto orientato verso l'implementazione pratica di NN, ed č
piuttosto completo. Io mi ci sono trovato bene, dato che spiega con molto
dettaglio tutte le scelte progettuali da compiere, con pro e contro,
nell'implementazione di una NN.
Tra l'altro, contiene anche del codice, ma io ne ho saltato completamente la
lettura e l'ho trovato lo stesso un ottimo libro. Anzi, proprio il codice č
quello che viene criticato nel NG americano dedicato alle NN.
Vedi tu...
Ciao
--
Alessandro Monti

 nell'implementazione di una NN.
Grazie. Sai se si trova facilmente in Italia (meglio se Feltrinelli, ce l'ho
vicina..)?
E gia' che ci sono: ho messo il guardafuori 5, dov'e' che si scarica la
patch per il "Re:"?


 patch per il "Re:"?
Io l'avevo trovata su astalavista, ma per la nuova versione non l'ho ancora
vista. Se la trovi tu, fammi un fischio.
Ciao
--
Alessandro Monti