Home > Doc > Reti Neurali su .... > Fuzzkern: Definizione delle regole di un reasoning Engine

Reti neurali su Personal Computer e Fuzzy Logic: Neurfuzz 1.0

Fuzzkern: Definizione delle regole di un reasoning Engine

Fuzzkern permette la costruzione di programmi che effettuano la scansione ed esecuzione di regole tipo "if (x is in class a) then y is in class b". Tutto ciò ha senso solamente se, in input, esistono dati in formato fuzzy e se, in output, esiste qualcosa in grado di capire dati in formato fuzzy. Questi programmi(generati da Fuzzkern) devono infatti essere interfacciati con reti neuronali create con Neuronx utilizzando la defuzzyficazione degli input e la fuzzyficazione degli output. Il programma chiede in sequenza le regole che devono essere inserite nel rules_base ed esiste la possibilità di inserire degli operatori di tipo and tra una regola e la successiva:

if ((x1is in class a)&&(x2 is in class c)) then y1 is in class e

Una limitazione durante la stesura delle regole è che, un eventuale gruppo di regole linkate con operazione "and" deve essere inserito prima di regole libere che condividano la stessa conseguenza. Questo è dovuto al fatto che il calcolo della forza della regola (e quindi il degree of membership nella conseguenza), nel caso di regole and_linkate, viene effettuato tramite una operazione di fuzzy_and ( scelta del valore più basso), mentre nel caso di due regole non vincolate da "and" si effettua una operazione di fuzzy_or(scelta del valore più elevato): il bug consiste nella mancanza di una traccia che permetta un feedback di verifica sul and_link flag delle regole. In una successiva versione questo problema potrebbe essere corretto, ma per il momento la presenza di regole and_linkate dopo regole libere che esprimano la stessa conseguenza può alterare il calcolo della "strenght of the rule".

(*) SIMULATED ANNEALING: significa ricottura simulata e si ispira al processo di ricottura dei vetri di spin ("spin glasses"). Un vetro di spin è un metallo contenente delle impurità di un altro metallo in percentuali molto basse ed ha caratteristiche magnetiche particolari. Un metallo puro può essere ferromagnetico (ferro) o non ferromagnetico(cromo). I metalli ferromagnetici hanno tutti gli atomi con lo stesso momento magnetico o spin (vettori con stessa direzione e stesso verso). Un metallo non ferromagnetico ha tutti gli atomi adiacenti con spin in posizione di equilibrio(stessa direzione ma verso differente). Portando un metallo al di sopra di una certa temperatura critica, gli spin degli atomi assumono direzioni e versi casuali(un metallo ferromagnetico perde le sue proprietà magnetiche); il raffreddamento del metallo al di sotto della temperatura critica porta tutti gli spin verso una posizione di equilibrio(minima energia) ferromagnetico o non. Nei vetri di spin il raffreddamento congela, invece, gli spin in uno stato caotico, pertanto, a bassa temperatura, non esiste uno stato di minima energia, ma molti minimi relativi. Un raffreddamento lento permette di raggiungere un minimo ottimale(più vicino alla energia minima assoluta).

(**) MACCHINA DI BOLTZMANN: Si tratta di una rete neurale derivata dalla rete di Hopfield che, attraverso opportune formule di apprendimento, converge verso uno stato di equilibrio compatibile con i vincoli del problema. Può essere una memoria associativa ma è impiegata, in particolare, per la risoluzione di problemi di ottimizzazione, in cui la fase di apprendimento si basa sulla dimostrazione(di Hopfield) che, alla rete è associata una funzione "energia" da minimizzare rispettando i vincoli del problema(ottimizzazione). La Macchina di Boltzmann è sostanzialmente una rete di Hopfield in cui i neuroni adottano una legge di attivazione di tipo probabilistico: se da uno stato S(t) la rete evolve verso uno stato S(t+1) allora, questo nuovo stato viene sicuramente accettato se la energia della rete è diminuita (o è rimasta invariata), altrimenti viene accettato, ma solo con una certa probabilità che, aumenta al diminuire della temperatura(figg.10/11).

Questo sistema consente il raggiungimento di una soluzione molto vicina all’ottimo assoluto nei problemi di ottimizzazione, secondo la teoria precedentemente esposta. La nostra rete non è una memoria associativa ma una rete multistrato "feed-forward"(propagazione del segnale da input verso output attraverso gli strati intermedi), utilizzata principalmente per estrazione di funzioni matematiche non conosciute da esempi input/output(si può comunque utilizzare anche per problemi di classificazione e ottimizzazione). Questa rete utilizza un algoritmo di apprendimento basato sulla retropropagazione degli errori e non sulla evoluzione verso stati energetici bassi. La applicazione del Simulated Annealing su questa rete è stata realizzata in via sperimentale con risultati soddisfacenti nella soluzione di diversi problemi; la filosofia di trasporto di questa teoria su questo tipo di rete (non potendosi basare su stati energetici) è stata quella di fornire i neuroni di una legge di attivazione a sigmoide variabile in funzione della temperatura: i neuroni si attivano (a parità di segnali di ingresso) maggiormente alle basse temperature(questo comporta anche una differente attività di modifica dei pesi delle connessioni sinaptiche da parte dell’ algoritmo di error_back_propagation alle diverse temperature).

 

Luca Marchese

Successivo: Analisi del codice generato

Sommario: Indice