Come precedentemente accennato, esiste la possibilità di definire sia input che output della rete in formato fuzzy. Questo significa che la rete accetta dati in input in formato fuzzy ed effettua una defuzzyficazione, sulla base delle classi definite dall’ utente, per presentare agli input effettivi dei valori numerici. Si può scegliere anche la fuzzyficazione degli output che prevede la operazione inversa: i valori numerici in uscita vengono trasformati in formato fuzzy, secondo le classi definite dall’ utente, per ogni output. Defuzzyficazione in ingresso e fuzzyficazione in uscita sono indipendenti, cioè possono essere selezionati separatamente. Il formato di rappresentazione dei dati fuzzy è il seguente:
input /output n
0 classe 0
.34 degree of membership
$ separatore di classe
1 classe 1
.56 degree of membership
& separatore di input/output(nuovo input/output)
1 classe 1
.45 degree of membership
$ separatore di classe
2 classe 2
.20 degree of membership
& separatore di input/output
Come vedremo è possibile collegare reti neurali con queste interfacce con programmi "fuzzy reasoning engine" generati da Fuzzkern che utilizzano, naturalmente, le stesse convenzioni di input / output. La fuzzyficazione avviene attraverso funzioni "circolari" con uso di funzioni seno e coseno, anziché le classiche triangolari/trapezoidali, e per questo motivo sono state chiamate "bubble".
Le classi circolari scendono verso gli estremi in modo non lineare(fig.6). La defuzzyficazione avviene attraverso la regola del "center of gravity" semplificata che abbiamo visto nel capitolo dedicato al ragionamento sfumato.
Luca Marchese
Successivo: Test sul potere di generalizzazione
Sommario: Indice