Home > Doc > Reti Neurali su .... > Fuzzyficazione dell' Input

Reti neurali su Personal Computer e Fuzzy Logic: Fuzzy Logic e La teoria del Ragionamento sfumato

Fuzzyficazione dell' Input

Il ragionamento cosiddetto sfumato dei sistemi fuzzy è dovuto al fatto che un ipotesi non è mai completamente vera nè completamente falsa ma ha un suo "grado di verità che inciderà sulla forza con cui verrà eseguita la regola e quindi applicata la conseguenza. Il grado di verità dell’ ipotesi è in realtà il grado di appartenenza del valore di input a quel determinato range (es:calda) e ciò è dovuto al fatto che questi ranges non sono nettamente separati ma si sovrappongono con funzioni di appartenenza normalmente di tipo triangolare/trapezoidale, per cui un valore di una variabile di input potrebbe appartenere a due ranges con due differenti gradi di credibilità(fig.2).

Il valore 25 gradi della temperatura appartiene alla classe tiepida con un degree of membership (grado di appartenenza) pari a 0.8 e alla classe fredda con un grado di appartenenza uguale 0.4. Come vedete, definendo delle classi triangolari o trapezoidali (le più usate) si hanno dei gradi di appartenenza che diminuiscono verso gli estremi delle classi costruendo così un inizio di quello che è un ragionamento sfumato.

Quello che rappresenta la fig.2 è la operazione che viene comunemente definita "FUZZIFICAZIONE DELL INPUT" , cioè trasformazione del dato preciso in dato tipo fuzzy:

dato preciso temp=25 gradi centigradi

dato fuzzy temp =tiepida con credibilità 0.8

temp = fredda con credibilità 0.4

Per realizzare matematicamente il processo di fuzzyficazione bisogna effettuare alcuni semplici calcoli sulle funzioni triangolari/trapezoidali . Il primo passo da fare nel processo di fuzzyficazione è uno scanning dei valori estremi di ogni classe per cui quando si ha che

limite_inf_class < x < limite_sup_class

allora x appartiene alla classe e bisogna calcolare il grado di appartenenza. Bisogna definire uno "slope" cioè una pendenza , sui lati dei triangoli o dei trapezi che definiscono le classi, che sia fisso per ogni classe e che ci consenta di calcolare il grado di appartenenza di un input x alla classe y. A questo punto bisogna vedere se il valore x cade nella parte bassa della classe (pendenza positiva) o nella parte alta(pendenza negativa): per far questo è sufficiente verificare se

x> oppure x < di (lim_sup-lim_inf)/2

che rappresenta il centro della classe. Nel primo caso si effettuerà il calcolo con lo slope positivo e nel secondo con lo slope negativo(fig.3):

1) gda = (x-lim_inf)*slope (se gda>max allora gda=max)

2) gda= (lim_sup-x)*slope (se gda >max allora gda=max)

(gda=grado di appartenenza o "degree of membership")

Bisogna precisare che questo è solamente un possibile approccio alla soluzione del problema di fuzzyficazione, infatti è possibile implementare funzioni di qualunque tipo per definire il grado di appartenenza di un input ad una classe; si tratta solamente di calcolare il valore di una funzione in un particolare punto definito dal valore dell’ input.

Personalmente ho sviluppato interfacce fuzzy per reti neurali error_back_propagation con funzioni circolari (seno ,coseno ecc) ma ciò che va tenuto presente è che, normalmente, il range dei valori di appartenenza o "degree of membership" deve essere normalizzato tra il valore 0 e il valore1. Ciò previene evidenti problemi tra variabili del sistema che hanno range di valori completamente differenti e sarebbe comunque auspicabile una soluzione che preveda la normalizzazione delle variabili di input su scala 0-1.

Rimanendo comunque nelle classiche funzioni trapezoidali/triangolari si possono effettuare moltissime varianti. Ad esempio si puo fare in modo che la pendenza (slope) dei triangoli sia differenziabile per ogni classe e all’ interno di ogni classe quella di salita da quella di discesa. Si può anche effettuare il calcolo di fuzzyficazione in modo differente senza calcolare il centro della classe (fig.4). Risulta evidente che quanto più complesse sono le forme delle funzioni scelte per definire le classi, tanto maggiore è la quantità di informazione che deve essere memorizzata per definire una classe e la quantità di calcoli da effettuare per ottenere un valore di "membership degree". Ad esempio la semplice scelta di differenziare le pendenze dei lati dei triangoli o dei trapezi obbliga a memorizzare tale informazione per ogni classe presente.

 

Luca Marchese

Successivo: Valutazione delle Regole

Sommario: Indice