I sistemi di inferenza fuzzy
Transcript of I sistemi di inferenza fuzzy
04/12/2008
1
I sistemi di inferenza fuzzy
G. Castellano 1
Sistema di inferenza fuzzy
• Un sistema di inferenza fuzzy realizza un mapping di I/O mediante l’inferenza di regole linguistiche (fuzzy) del tipo IF-THEN:
– Le variabili di input e di output sono variabili linguistiche, poiché assumono valori linguistici che sono espressi matematicamente mediante insiemi fuzzy
2
04/12/2008
2
Esempio di sistema fuzzy:definizione delle variabili di input
• I valori linguistici (etichette) Verde, Giallo e Rosso sono descrizioni vaghe di tipi di colore– Possiamo esprimerli mediante insiemi fuzzy
• la funzione di membership sarà definita sul dominio delle lunghezze d’onda dello spettro del visibile (colore)
• l'occhio umano percepisce i colori Verde, Giallo e Rosso se illuminato da luce monocromatica di lunghezza d'onda che varia da circa 0.50 μm a circa 0.70 μm – da circa 0.50 a circa 0.56 μm (Verde)
– da circa 0.56 a circa 0.60 μm (Giallo)
– da circa 0.60 a circa 0.70 μm (Rosso)
G. Castellano 3
Esempio di sistema fuzzy:definizione delle variabili di output
• I valori linguistici (etichette) Acerbo, Quasi-
maturo e Maturo sono descrizioni vaghe del grado di maturazione di un frutto
– Possiamo esprimerli mediante insiemi fuzzy
• le funzioni di membership saranno definite sul dominio “percentuale di maturazione”
G. Castellano 4
04/12/2008
3
Esempio di sistema fuzzy:inferenza delle regole
• Dato un input (colore di un frutto), il modello definito dalle tre regole fuzzy
può essere usato per derivare l’output corrispondente, ovvero il grado di maturazione, mediante un processo di inferenza (implicazione)
G. Castellano 5
Inferenza di regole fuzzy
• Dato un fuzzy set di input, denotato con A’, e un insieme di N regole fuzzy, il processo di inferenza prevede i seguenti passi
– per ogni regola fuzzy si effettua l’inferenza, ottenendo un fuzzy set di output
– Gli N fuzzy set di output sono combinati insieme (operatore di aggregazione) per derivare l’output finale
G. Castellano 6
04/12/2008
4
Inferenza di una regola fuzzy Generalized Modus Ponens (GMP)
PremessaPremessa IF (z is A) THEN (v is B)
FattoFatto z is A’
Conseguenza v is B’
il fuzzy set B’ è ottenuto mediante composizione
7
( )BAAB →= o''
Operatore di
composizione
Implicazione fuzzy
B
VZ
'B
A 'A
α
Implicazione fuzzy
• Dati gli insiemi fuzzy– A definito sul dominio Z
– B definito sul dominio V
l’operatore di implicazione fuzzy A�Bproduce un insieme fuzzy bidimensionale definito in Z×V con funzione di membership:
dove τ è un operatore T-norm
8
( ) ( ) ( )( )vzvz BABA µµτµ ,, =→
04/12/2008
5
Implicazione fuzzyEsempio
• Consideriamo come esempio la regola R3
che corrisponde all’implicazione ROSSO����MATURO
• In base alla definizione dell’implicazione fuzzy, considerando il minimo come operatore T-norm, si ha:
G. Castellano 9
Implicazione fuzzyEsempio
G. Castellano 10
ROSSO MATURO
�
04/12/2008
6
Composizione di insiemi fuzzy
• Dati gli insiemi fuzzy– A definito sul dominio Z– C definito sul dominio Z×V
la loro composizione è un insieme fuzzy bidimensionale definito in Z×V, avente come funzione di membership:
dove τ è un operatore T-norm.
11
[ ]( ) ( ) ( )( )( )vzzsupvz
VZ
CAVv
CA
CA
,,,
1,0:
µµτµ
µ
∈=
→×
o
o
Risultato dell’inferenza fuzzy
( ) ( ) ( )( )( )vzzsupv BAAZz
B ,,'' →∈
= µµτµ
12
B
YX
'B
A 'A
α
( ) ( ) ( )( )( )( )vzzups BAAZz
µµτµτ ,,'∈
=
( ) ( )( )[ ] ( )
=∈
vzzsup BAAZz
µµµττ ,,'
( )[ ] ( )
= ∩∈
vzsup BAAZz
µµτ ,'
( )( )vBµατ ,=
( )BAAB →= o''
04/12/2008
7
Inferenza di una regola fuzzyEsempio
• Dato un valore di input z0, calcoliamo l’output corrispondente mediante inferenza della regola R3
• Il valore di input può essere – un valore fuzzy: es. un insieme fuzzy “ROSSO SCURO” con una
propria funzione di membership– un valore crisp z0 (valore della frequenza del colore) che avrà un
certo grado di appartenenza all’insieme fuzzy ROSSO: μRosso(z0).
• Applicando l’operatore di composizione tra μRosso(z0) e μ3(z0,v), si ottiene il risultato dell’inferenza della regola R3per z0
G. Castellano 13
Inferenza di una regola fuzzyEsempio
• Q3 è un insieme fuzzy ottenuto dall’inferenza della regola R3 in corrispondenza dell’input z0.
G. Castellano 14
�
�
04/12/2008
8
Inferenza delle regole fuzzyEsempio
• Applicando lo stesso procedimento di inferenza per le regole R1 e R2 otteniamo:– Un output (fuzzy) Q1 fornito dalla regola R1 in
corrispondenza del particolare input z0
– Un output (fuzzy) Q2 fornito dalla regola R2 in corrispondenza del particolare input z0
G. Castellano 15
Aggregazione
• Per ottenere l’output finale, si aggregano gli output fuzzy forniti dalle singole regole in corrispondenza dello stesso input
• Per l’aggregazione si utilizza l’operatore di unione tra insiemi fuzzy
• Ricordiamo che l’unione si ottiene mediante operatore s-norm• Considerando il massimo come operatore s-norm si ha
• L’output finale è un insieme fuzzy
G. Castellano 16
U3
1
3210
=
=∪∪=j
jQQQQQ
0
04/12/2008
9
Inferenza delle regole fuzzyEsempio
• Processo di inferenza delle regole in corrispondenza dell’input z0
G. Castellano 17
Insieme fuzzy di output
0
Defuzzificazione
• Una volta ottenuto l’output fuzzy dal processo di inferenza, in molti casi può essere necessario derivare un output crisp
– Nel nostro esempio potremmo voler conoscere la percentuale di maturazione (valore crisp) corrispondente all’input z0
• L’ultimo passo è quindi quello di “defuzzificare” l’output fuzzy per ottenere un output crisp
G. Castellano 18
04/12/2008
10
Defuzzificazione
• Per defuzzificazione si intende la trasformazione di un insieme fuzzy in un valore crisp
• Esistono diversi metodi per la defuzzificazione
19
( )
( )∫∫
=
VQ
VQ
dvv
vdvvv
0
0
0µ
µ∑∈
=Ww
Wwv 1
0
V
0Q
Centro di gravitàMedia dei max
{ }Wvwmin0 =
Minimo dei max
( )0QCoreW =
Defuzzificazione
• Nel nostro esempio, applicando il metodo del centro di gravità all’insieme di output Q0
(discretizzato in K valori), si ottiene:
G. Castellano 20
0
0
v0
Q0
= 65.1
04/12/2008
11
Defuzzificazione in FuzzyJ
• Metodi di defuzzificazione disponibili nella libreria FuzzyJ:– maximumDefuzzify
• Restituisce la media dei soli valori massimi dell’insieme fuzzy.
• Questa operazione può portare ad un valore crisp finale non corretto;
– centerOfAreaDefuzzify
• restituisce un numero in virgola mobile che rappresenta il centro dell’area del FuzzySet
– weightedAverageDefuzzify
• calcola la media pesata di tutti i valori x che costituiscono il FuzzySet utilizzando come pesi i rispettivi valori di membership
– momentDefuzzify
• l’insieme è diviso in diverse forme sezionandolo verticalmente in ogni punto utilizzato per la creazione del FuzzySet.
• Per ogni suddivisione (rettangolare, triangolare, ..) viene calcolato il centro di gravità e in seguito vengono utilizzati questi punti per calcolare il primo momento di tutta l’area
G. Castellano 21
Sistema di inferenza fuzzy
Fuzzificazione
Inferenza di regole
Defuzzificazione
G. Castellano 22
inputinput
crispcrisp
outputoutput
crispcrispimplicazione aggregazione
04/12/2008
12
Regole fuzzy con più premesse
• Sinora abbiamo considerato regole fuzzy con una sola premessa
• In generale, è possibile definire regole fuzzy con più premesse– Nel nostro esempio, possiamo aggiungere una
variabile fuzzy che descriva la consistenza della frutta, con valori linguistici che descrivono la frutta come: dura, mediamente soffice, soffice.
G. Castellano 23
G. Castellano 24
IF (il colore è verde ) OR (la consistenza è dura ) THEN la frutta è acerba
IF (il colore è giallo) OR (la consistenza è media) THEN la frutta è quasi matura
IF (il colore è rosso) OR (la consistenza è soffice) THEN la frutta è matura
Input 1
Colore(z0)
Input 2
Consistenza(c0)Output
Grado di
Maturazione(v0)
04/12/2008
13
Regole fuzzy con più premesse
• In generale, un sistema fuzzy utilizza M regole IF-THEN, ciascuna con N antecedenti (tanti quante sono le variabili di input) e uno o più conseguenti (tanti quante sono le variabili di output) – Solitamente si ha un solo conseguente
• Con N variabili di input (z1, z2, …, zN) e una variabile di output v, si hanno regole del tipo:
G. Castellano 25
Regole fuzzy con più premesse
• Le premesse di una regola possono essere legate tra loro – mediante OR (esempio precedente)
• Operatore T-conorm (massimo)
– mediante AND• Operatore T-norm (minimo o o prodotto)
– λi è detto livello di attivazione (strength level) o grado di matching della i-esima regola.
G. Castellano 26
04/12/2008
14
Inferenza di regole fuzzy (Mamdani)
27
•implicazione: minimo
• aggregazione: massimo
( ) ( ) ( )1122
1111 BisvTHENAiszANDAiszIF:R
( ) ( ) ( )2222
2112 BisvTHENAiszANDAiszIF:R
1R
2R
11A
12A
21A
22A
01z
02z
1Z
1Z
2Z
2Z
2BV
1B
minmin0B
02B
01B
• Antecedente: Prodotto cartesiano di fuzzy set• Conseguente: Fuzzy Set
V
V
Inferenza di regole fuzzy (Larsen)
28
•implicazione: prodotto
• aggregazione: massimo
( ) ( ) ( )1122
1111 BiszTHENAiszANDAiszIF:R
( ) ( ) ( )2222
2112 BisvTHENAiszANDAiszIF:R
1R
2R
11A
12A
21A
22A
01z
02z
1Z
1Z
2Z
2Z
2BV
V
1B
minmin
V
0B
02B
01B
– Antecedente: Prodotto cartesiano di fuzzy set- Conseguente: Fuzzy Set
04/12/2008
15
Inferenza di regole fuzzy (modello di Takagi-Sugeno)
29
( ) ( ) ( ) 12111211122
1111 , czbzazzfisvTHENAiszANDAiszIF:R ++=
( ) ( ) ( ) 22212212222
2112 , czbzazzfisvTHENAiszANDAiszIF:R ++=
TT--normnorm
1R
2R
11A
12A
2
1A2
2A
01z
02z
1Z
1Z
2Z
2Z
( ) ( )21
02
0122
02
01110 ,,
αααα
+
+=
zzfzzfv
( ) ( )( )02011 1
211
, zzAA
µµτα =
( ) ( )( )02012 2
221
, zzAA
µµτα =
•Antecedente: Prodotto cartesiano di fuzzy set•Conseguente: Combinazione lineare dei valori di input (crisp)
Inferenza di regole fuzzy (modello fuzzy semplificato)
30
( ) ( ) 1122
1111 bisvTHENAiszANDAiszIF:R
( ) ( ) 2222
2112 bisvTHENAiszANDAiszIF:R
TT--normnorm
1R
2R
1
1A1
2A
2
1A2
2A
01z
02z
2Z
2Z
1Z
1Z
21
22110
αααα
+
+=
bbv
( ) ( )( )02011 1
211
, zzAA
µµτα =
( ) ( )( )02012 2
221
, zzAA
µµτα =
– Antecedente: Prodotto cartesiano di fuzzy set- Conseguente: Valore crisp
Modello di Takagi-Sugenodi ordine zero
Modello di Mamdanicon conseguenti singleton
04/12/2008
16
Confronto di modelli fuzzy
31
modello fuzzy interpretabileCosto
computazionale
Mamdani
Si:conseguentifacilmenteinterpretabili
Elevato: costosa implementazione del defuzzifier
Takagi-Sugeno
No: conseguentidifficilmenteinterpretabili
Basso: non occorre defuzzifier
Semplificato
Si:conseguentifacilmenteinterpretabili
Basso: non occorre defuzzifier
Definizione di regole fuzzy
• Per definire un insieme di regole fuzzy, occorre stabilire– Il numero di regole– i valori fuzzy da associare alle variabili di input– i valori fuzzy da associare alle variabili di output– le associazioni di input-output in ogni regola
• Come già detto per le variabili fuzzy, la definizione delle regole fuzzy non è univoca e può essere effettuata – Manualmente
• in base alla conoscenza dell’esperto del dominio– Problema: soggettività nella definizione
– Automaticamente• In base ai dati empirici relativi al dominio
– Si applicano algoritmi di apprendimento delle reti neurali � Modelli Neuro-Fuzzy
32
04/12/2008
17
Regole fuzzy in FuzzyJ
• FuzzyRule è la classe del toolkit FuzzyJ che gestisce le regole, ma consente solo l’utilizzo di regole semplici con antecedenti e conclusioni fuzzy
• Sfruttando, invece, le capacità della shell Jesse l’integrazione offerta dalla libreria FuzzyJ è possibile definire anche regole più complesse che combinano valori crisp e fuzzy.
G. Castellano 33
Regole fuzzy in FuzzyJ
• Per creare correttamente una regola fuzzy sono necessari tre passi:– creare le variabili fuzzy per i concetti da utilizzare;
– creare un’istanza di una FuzzyRule;
– aggiungere alla regola dei FuzzyValue come antecedenti e conseguenti
G. Castellano 34
04/12/2008
18
Regole fuzzy in FuzzyJ
• Esempio di creazione di una regola fuzzy :IF (temperature is Hot) THEN (pressure is Low or Medium)
G. Castellano 35
...
FuzzyRule rule1 = new FuzzyRule();
FuzzyValue antecedentFval = new FuzzyValue(temp, "hot");
FuzzyValue conclusionFval = new FuzzyValue(pressure,
"low or medium");
rule1.addAntecedent(antecedentFval);
rule1.addConclusion(conclusionFval);
Inferenza di regole fuzzy in FuzzyJ
• Per effettuare l’inferenza di una regola, occorre definire un valore fuzzy di input e utilizzare il metodo execute
– Esempio di input: “temperature is very medium”
G. Castellano 36
...
FuzzyValue inputFval = new FuzzyValue(temp, "very medium");
rule1.addInput(inputFval);
// execute the rule using default rule executor
// MamdaniMinMaxMinRuleExecutor
FuzzyValueVector fvv = rule1.execute();
04/12/2008
19
Inferenza di regole fuzzy in FuzzyJ
• Ogni regola ha associato un FuzzyRuleExecutor per l’inferenza della regola stessa
• L’executor può essere di tre tipi:– MamdaniMinMaxMinRuleExecutor
• Inferenza di Mamdani con la composizione MaxMin;
– LarsenProductMaxMinRuleExecutor
• Inferenza Larsen Product con la composizione MaxMin;
– TsukamotoRuleExecutor• inferenza Larsen Product definita da Tsukamoto.
G. Castellano 37
...
// execute the rule using default rule executor --
// MamdaniMinMaxMinRuleExecutor
FuzzyValueVector fvv = rule1.execute();
// execute again with a different rule executor --
// LarsenProductMaxMinRuleExecutor
fvv = rule1.execute(new LarsenProductMaxMinRuleExecutor());
Inferenza di regole fuzzy in FuzzyJ
• Per verificare che ci sia una corrispondenza (matching), anche parziale, tra l’input e gli antecedenti della regola, può essere utilizzato il metodo testRuleMatching() della classe FuzzyRule che restituisce un valore booleano– se questo valore è false allora l’esecuzione della regola
restituisce un valore fuzzy vuoto– se questo valore true significa che c’è una corrispondenza, e il
grado di matching è maggiore di un valore soglia (di default 0.0)• il valore soglia può essere modificato utilizzando il metodo setMatchThreshold()
G. Castellano 38
if (rule1.testRuleMatching())
{
FuzzyValueVector fvv = rule1.execute();
...
}
04/12/2008
20
Inferenza di regole fuzzy in FuzzyJ
• È possibile utilizzare il metodo plotFuzzyValues()della classe FuzzyRule per visualizzare graficamente: – gli antecedenti di una regola– I conseguenti di una regola– il valore fuzzy di input– il valore fuzzy risultante dall’inferenza
G. Castellano 39
...
// show the results using the plotting methods for FuzzyValues
FuzzyValue fvals[] = new FuzzyValue[2];
fvals[0] = antecedentFval;
fvals[1] = inputFval;
System.out.println(FuzzyValue.plotFuzzyValues("*+", 0, 50, fvals));
System.out.println(fval2.plotFuzzyValue("*", 0, 10));
System.out.println(fvv.fuzzyValueAt(0).plotFuzzyValue("*", 0, 10));
Fuzzy Value: temperature
Linguistic Value: hot (*), very medium (+)
1.00 +++++++++++ ****************
0.95
0.90 *
0.85
0.80 + + *
0.75
0.70 *
0.65 + +
0.60 *
0.55
0.50 + + *
0.45
0.40 *
0.35 + +
0.30 *
0.25 + +
0.20 *
0.15 + +
0.10 + * +
0.05 + +
0.00+++++++******************* +++++++++++++++++
|----|----|----|----|----|----|----|----|----|----|
0.00 10.00 20.00 30.00 40.00 50.00
G. Castellano 40
Plot di:- Valore fuzzy relativo all’antecedente- Valore fuzzy relativo all’input
04/12/2008
21
Fuzzy Value: pressure
Linguistic Value: low or medium (*)
1.00************ ***
0.95 * * *
0.90 * * *
0.85 *
0.80 * *
0.75 *
0.70 *
0.65 * *
0.60
0.55 * * *
0.50
0.45 *
0.40 * *
0.35
0.30
0.25 *
0.20
0.15 *
0.10 *
0.05 *
0.00 **************
|----|----|----|----|----|----|----|----|----|----|
0.00 2.00 4.00 6.00 8.00 10.00
G. Castellano 41
Plot del valore fuzzyrelativo al conseguente
Fuzzy Value: pressure
Linguistic Value: ??? (*)
1.00
0.95
0.90
0.85
0.80
0.75
0.70
0.65
0.60
0.55
0.50
0.45
0.40*********************************
0.35
0.30
0.25 *
0.20
0.15 *
0.10 *
0.05 *
0.00 **************
|----|----|----|----|----|----|----|----|----|----|
0.00 2.00 4.00 6.00 8.00 10.00
G. Castellano 42
Plot del risultato dell’inferenzamediante MamdaniMinMaxMinRuleExecutor
04/12/2008
22
Fuzzy Value: pressure
Linguistic Value: ??? (*)
1.00
0.95
0.90
0.85
0.80
0.75
0.70
0.65
0.60
0.55
0.50
0.45
0.40************ *
0.35 *** *** ***
0.30 * * *
0.25 * * *
0.20 * * *
0.15 ** *
0.10 *
0.05 **
0.00 ***************
|----|----|----|----|----|----|----|----|----|----|
0.00 2.00 4.00 6.00 8.00 10.00
G. Castellano 43
Plot del risultato dell’inferenzamediante LarsenProductMaxMinRuleExecutor
Aggregazione di regole fuzzy in FuzzyJ
• In presenza di più regole fuzzy, è necessario combinare il risultato dell’inferenza di ciascuna in modo da ottenere un unico risultato
• A tal fine, è possibile utilizzare l’operatore FuzzyUnion che restituisce un unico output (insieme fuzzy)– Questo output fuzzy può essere poi defuzzificato
per ottenere un output finale crisp
G. Castellano 44