Sistem expert cu logică fuzzy

Așa cum spune și numele, un sistem expert cu logică fuzzy este un sistem expert cu logică fuzzy.

Necesitatea reprezintă gradul la care evidențele considerate susțin valoarea de adevăr a unei propoziții sau a unei date; posibilitatea reprezintă extinderea la care evidența considerată nu respinge o dată, necesitatea fiindu-i 0 și posibilitatea 1. Când din ce în ce mai multe date sunt considerate necesitatea datei tinde să crească monoton, întotdeauna subiect al restricției cum că necesitatea unei date trebuie să fie egală cu sau mai mică decât posibilitatea ei; cum din ce în ce mai multe evidențe respingătoare sunt considerate, posibilitatea unei date tinde să descrească monoton.

În sisteme care pot stoca două valori de adevăr, acestea fiind posibilitata si necesitatea, o dată despre care nu cunoaștem nimic are necesitatea 0 și posibilitaea 1. O dată despre care se știe că este falsă complet are atât necesitatea cât și posibilitatea egale cu 0. O dată despre care se știe că este adevărată complet are atât necesitatea cât și posibilitatea egale cu 1.

În sisteme care funcționează pe baza stocării unei singure valori de adevăr, aceasta fiind necesitatea, nu se poate distinge între data despre care nu se știe nimic și o dată despre care se știe că este falsă, din moment ce ambele au necesitatea 0. În astfel de sisteme, o dată este considerată falsă până când sunt găsite evidențe susținătoare.

În sistemele bazate pe necesitate este posibil calculul posibilității unei date din evidențele respingătoare; dacă posibilitatea calculată este mai mică decât necesitatea existentă, necesitatea trebuie redusă ca să se supună restricției că necesitatea este mai mică sau egală cu posibilitatea. Totuși, evidențele susținătoare considerate in blocuri de reguli executate secvențial ar putea crește necesitatea redusă. Este de preferat ca mai întâi să se execute blocuri de reguli care să ducă la concluzii preliminarii, care în cele din urmă pot fi ambigue sau contradictorii. Apoi sunt tratate contradicțiile considerând evidențele respingătoare în blocuri executate mai târziu în procesul de raționament.

Rezolvarea Contradicțiilor: Posibilitate și Necesitate

modificare

Valorile de adevăr pot reprezenta posibilitatea, adică extinderea la care o valoare de adevăr reprezintă extinderea pentru care datele nu refuză o propoziție. Indicăm că necesitatea unei propoziții A prin Nec(A), iar posibilitatea ei prin Pos(A). Aici, vom considera dinamicele unui proces de raționament in mai mulți pași. Într-un astfel de proces, deseori stabilim mai întâi concluzii preliminarii plauzibile care sunt suportate de datele relevante. Dacă aceste concluzii se exclud mutual, atunci excludem concluziile preliminarii care sunt respinse de datele adiționale sau de datele existente la care s-a intrat mai in detaliu. In primă fază considerăm extinderea la care datele suportă o concluzie, aceasta fiind necesitatea; in a doua fază, considerăm dacă oricare data respinge o propoziție, aceasta fiind posibilitatea, și orice schimbare în posibilitatea unei propoziții ar putea avea loc si pe necesitatea acesteia.

Din moment ce acceptăm definiția posibilității și a necesității dată de Dubois și Prade (1988), nu acceptăm ca toate axiomele ce sunt folosite pentru dezvoltarea teoriei posibilității convenționale să fie adevărate pentru raționamentele fuzzy cu sisteme bazate pe reguli. În particular, nu acceptăm axioma care spune că propozițiile implicate sunt imbricate, (A => B => C...), nici utilizarea logicii min-max la combinarea lui NOT A cu A. Această ultimă obiecție este validă în mod special din moment ce o familie logică fuzzy a fost construită care se supune acestor legi fundamentale. Din moment ce este bine cunoscut că logica min-max nu se supune legii mijlocului exclus (A and NOT A = 0), utilizarea ei în combinarea lui A cu NOT A pentru a produce min(a, 1-A) nu este validă. Din aceste motive, tratarea posibilității și a necesității au scos la iveală diferențe substanțiale față de teoria convențională. Lăsând considerațiile teoretice deoparte, această teorie are un mare avantaj: funcționează.

Definiția posibilității și a necesității

modificare

Dubois și Prade definesc posibilitatea și necesitatea astfel:

 Necesitatea unei propoziții (Nec) reprezintă extinderea la care datele își suportă valoarea de adevăr.
 Posibilitatea unei propoziții (Pos) reprezintă extinderea la care datele nu își resping valoarea de adevăr.

Termenul necesitate este analog cu credibilitate în Dempster-Shafer theory, iar termenul posibilitate este analog cu plauzabilitate. Atât posbilitatea cât și necesitatea reprezintă valori de adevăr exprimate prin 0 sau 1. Spre exemplu, să presupunem că avem doar această informație despre propoziția A: necesitatea sa curentă este 0.3, iar posibilitatea ei este 1.0; necesitatea propoziției P care o suportă pe A este 0.4, și necesitatea propoziției Q care respinge A este 0.2. Nec(A), necesitatea pentru care A este adevarată, este atunci max(0.3, 0.4) = 0.4. Din moment ce Q respinge A, extinderea pentru care Q nu respinge A este NOT Nec(Q), sau 0.8. Atunci, considerând aceste date, Nec(A) = 0.4, Pos(A) = 0.8. Dacă limbajul de raționament fuzzy ne permite, am putea specifica valoarea de adevăr a unei propoziții prin cele două valori, posibilitatea si necesitatea. Oricum, puține limbaje pentru raționament fuzzy permit la ora actuală stocarea a mai multor valori de adevăr, în general necesitatea. Dar din moment ce calculăm posibilitatea unei propoziții din necesitățile datelor ce resping, putem lucra cu aspectul cel mai important într-un sistem bazat pe necesități.

Posibilitatea și necesitatea potrivite pentru raționamentul fuzzy bazat pe reguli în mai mulți pași

modificare

Vom dezvolta formule pentru posibilitate si necesitate potrivite pentru sisteme complexe de raționament fuzzy bazate pe reguli cu înlănțuire în avans în mai mulți pași. Cele urmărite corespund cu cele menționate de Anderson, cum că sistemele bazate pe reguli oferă o modalitate foarte avantajoasa de a emula raționamentul uman. La al i-lea pas de raționament, indicăm Nec(A) prin Nec(A)i, și Pos(A) prin Pos(A)i. Dacă o relație este întotdeauna adevărată, atunci i-ul poate fi omis

Tipuri de date și valorile lor de adevăr

modificare

În primul rând, să considerăm modul în care sistemul nostru utilizează valorile de adevăr. Majoritatea sistemelor de adevăr mențion doar o singură valoare de adevăr, necesitatea; dacă trebuie să avem grijă atât de necesitate cât și de posibilitate, atunci fiecare valoare de adevăr constă în aceste două valori. Să considerăm acum diferitele tipuri de date pe care le-am putea avea. Avem date scalare sau cu o singură valoare; aici intră numerele întregi, numerele în virgulă mobilă și șiruri de caractere; iar pentru fiecare dintre acestea este atașată o valoare. Există de asemenea și mulțimi fuzzy discrete, ale căror membrii sunt cuvinte; iar pentru fiecare membru o valoare este atașată. Dacă aceste cuvinte descriu numere, atunci sunt termeni lingvistici, și mulțimea fuzzy părinte a acestora este o variabilă lingvistică; pentru fiecare termen lingvistic este atașată o funcție de apartenență care mapează tot sau doar o parte din linia reală pe valorile de adevăr pentru termenul lingvistic corespondent. În acest punct, putem observa ca sistemele care mențin atât posibilitatea cât și necesitatea ar putea avea o problemă; funcția de apartenență ar trebui să returneze două valori, atât posibilitatea cât și necesitatea. De fapt, nu cunoaștem astfel de funcții. Necesitatea este returnată, iar posibilitatea este presupusă a fi una. Avem de asemenea numere fuzzy cu funcții de apartenență atașate similare cu funcțiile de apartenență pentru termenii lingvistici. Să considerăm acum inițializarea valorilor datelor cu valori de adevăr. În limbaje precum C, există doi pași în crearea unei date. În primul pas este declarat un șablon care informează compilatorul ce tip de data poate pretinde. În C, de exemplu, o astfel de declarare de date poate fi:

flt x[20];

Această declarație spune compilatorului să pretindă un vector x de 20 de numere in virgulă mobilă, iar calculatorul va aloca memorie suficientă în care să încapă vectorul. O declarare mai complexă avem pentru o structură. O astfel de structură poate fi in C:

struct Date
{
day int;
month int;
year int;
};

Această declarație informează compilatorul ce să pretindă in structura Date, dar nu alocă memorie încă. FLOPS utilizează declarații de date în mod similar, dar nu identic. O declarare tipică FLOPS a unui element Region ar putea fi:

declare Region
rnum int
Area flt
Size fzset (Small Medium Large)
Xbar flt
Xpos fzset (Left Center Right)
Ybar flt
Ypos fzset (Low Center High);

Această declarație nu alocă memorie pentru o instanță a lui Region. Memoria este alocată pentru o instanță de către comanda FLOPS make:

make Region;

Inițializarea datelor și valori de adevăr

modificare

Când comanda se execută, locații de memorie sunt asignate pentru valori și valori de adevăr pentru toate atributele. Din moment ce nici o valoare nu este specificată, numerele sunt inițializate cu 0 și șirurile de caractere sunt vide. Dacă valoarea de adevăr a unui integer, float sau string este inițial necunoscută, atunci necesitatea este 0 și posibilitatea 1. Similar, necesitatea (gradul de apartenență) unui membru al unei mulțimi fuzzy este inițial setat la 0. Posibilitățile sunt explicite (pentru sistemele cu valori de adevăr duale) sau implicite (pentru sistemele bazate pe necesitate) initializate cu 1. In orice caz, comanda make poate specifica valori si valori de adevăr. De exemplu,

make Region rnum = 1;

va asigna valoarea 1 pentru instanța rnum a lui Region. Dacă o valoare este specificată într-o comandă make dar nu este specificată o valoare de adevăr, atunci necesitatea va fi setată la 1. Dacă dorim, putem specifica o valoare de adevăr diferită, ca în:

make Region Area = 25 Area.cf = 800;

Desigur, cum în FLOPS valorile de adevăr se află între 0 și 1000, în exemplul dat necesitatea lui Area este de fapt 0.8 pe o scară de la 0 la 1. Funcțiile de apartenență parametrizate pentru numere fuzzy sunt specificate când numerele fuzzy sunt create. Funcțiile de apartenență parametrizate pentru termenii lingivstici sunt create de comanda memf.

Modificările valorilor de adevăr în timpul unui proces de raționament fuzzy

modificare

Presupunem ca A este o propoziție; Nec(A)0 și Pos(A)0 sunt inițial valori de adevăr. Presupunem că, drept progrese raționale,

 
 
 

De observat este că adăugând evidențe susținătoare poate afecta necesitatea, dar nu și posibilitatea; adăugând evidențe respingătoare poate afecta posibilitatea, și poate afecta de asemenea și necesitatea. Aproape orice problemă de raționament care nu este banală cere mai mulți pași de raționament. Indicăm pasul de raționament prin indicele i, unde i este inițial 0. Pentru raționamentul în mai mulți pași, când parcurgem de la al i-lea pas de raționament până la al (i+1)-lea, presupunem:

 

Ecuația reiese din faptul că adăugând evidențe susținătoare poate afecta necesitatea și nu posibilitatea, și adăugând evidențe respingătoare nu poate crește niciodată posibilitățile. În loc sa presupunem acestea, putem presupune următoarele:

 

Alegerea între cele două devine importantă când condiderăm respingerea evidențelor. Dacă alegem a doua variantă, astfel ca necesitățile să nu scadă niciodată, devine imposibil de admis că am fi comis o greșeală. Acest lucru este foarte important mai ales când se vor rezolvate contradicțiile prin excluderea concluziilor preliminarii incorecte. La sfârșitul pasului al i-lea am determinat Nec(A)i. Considerăm efectul propoziției P asupra lui Nec(A)i, care suportă valoarea de adevăr a lui A și a propoziției Q, care tinde să o respingă. Indicăm efectul propoziției P singură asupra lui Nec(A)i prin Necp(A)i+1 și presupunem

 

Cu câteva propoziții susținătoare Pj devine:

 

Efectul lui Q, care o respinge pe A, este mai complex. Notăm efectul lui Q singură asupra necesității lui A prin NecQ(A)i+1 și asupra posibilității lui A prin PosQ(A)i+1. Q tinde să reducă posibilitatea lui A. Presupunem

 

Dacă avem mai multe propoziții respingătoare Qk, atunci ecuația devine:

 

Și apoi obținem

 

Din moment ce  , se reduce la

 

Apoi obținem

 

Formularea regulilor pentru posibilitate și necesitate

modificare

Dacă   și regulile cu NOT Q in antecedent nu se vor executa. Pe de altă parte, regulile cu Q in antecedent nu se vor executa dacă  . Regulile bazate pe cea anterioara pot fi rescrise, cu antetul "regula <nume regula> bloc <nume bloc>",

rule support block k
IF (A AND P1 AND P2)
THEN Nec(A) = (Nec(A) OR Nec(P1) OR Nec(P2))

rule refute block k+1
IF (A AND (Q1 OR Q2))
THEN Nec(A) = Nec(A) AND NOT (Q1 OR Q2),
Pos(A) = (Pos(A) AND NOT (Q1 OR Q2));

Ecutațiile de mai sus nu pot fi executate concurent; regulile din blocul k trebuie executate înainte de cele din blocul k+1. Dacă Nec(Q1) și Nec(Q2) sunt amândouă = 0, atunci nu vor fi executate; nu este nici o problemă în legătură cu aceasta, din moment ce nu există date respingătoare Nec(A) și Pos(A) rămân neschimbate. Într-un sistem bazat pe valori de adevar non-duale (adică una singură), nu putem stoca Pos(A) și a doua clauză nu trebuie scrisă.

Rezolvarea contradicțiilor utilizând posibilitatea într-un sistem bazat pe necesitate

modificare

Un exemplu de utilizare a posibilității într-un sistem bazat pe necesitate pentru rezolvarea contradicțiilor este dat de programul echo.par. În acest program, dorim să determinăm semnificația anatomică a regiunilor într-o ecocardiogramă (imaginile inimii). Pentru a face acest lucru, prima oară trebuie să fuzzyficăm datele de intrare; apoi să determinăm clasificarea preliminară utilizând date respingătoare și posibilități calculate.

Datele de intrare: Ambiguități folositoare

modificare

Datele de intrare critice reprezintă valori numerice a unei arii, x- și y- central al fiecărei regiuni imagine. Din moment ce imaginea nu este bine conturată, valorile nu sunt precise și sunt reprezentate prin numere fuzzy. Aceste valori sunt fuzzyficate în trei mulțimi fuzzy; size (TINY SMALL MEDIUM LARGE HUGE), xpos (FAR-LEFT LEFT CENTER RIGHT FAR-RIGHT), and ypos (VERY-HIGH HIGH MIDDLE LOW VERY-LOW). De obicei vor fi mai mulți membrii ai unei mulțimi care vor avea valori de adevăr non-zero; din moment ce membrii nu se exclud mutual, ambiguitățile sunt presente. Astfel de ambiguități sunt un lucru foarte bun; propagă robustețe în procesul de raționament. În plus, avem un atribut de tip string numit "border", care are valoarea "YES" dacă o regiune atinge marginea imaginii, și va avea valoarea "NU" dacă regiunea nu atinge marginea.

Datele de ieșire: Contradicții

modificare

Datele de ieșire (clasificările de regiuni), sunt reprezentate de clasa de mulțimi fuzzy {ARTIFACT LUNG LA (atriul drept) LV (ventricolul stâng) LA + LV (atriul drept unit cu ventricolul stâng) LA + LV + RA + RV (toate cele patru camere unite)}. Acești membrii se exclud mutual; dacă doi sau mai mulți membrii au valori de adevăr non-zero, avem o contradicție care va trebui rezolvată.

Atingând clasificările preliminarii utilizând evidențe susținătoare și necesități

modificare

Regulile de determinare a clasificărilor preliminarii utilizează date și necesități. Un exemplu ar fi:

IF (in Region area is LARGE AND xpos is RIGHT AND ypos is MIDDLE AND border = "No")
THEN in 1 class is LV;

În programul echo.par regulile de clasificare preliminarii sunt create automat dintr-o bază de date cu definițiile clasificărilor.; acest lucru permite modificare definițiilor clasificărilor fără a rescrie programul. Totusi regulile devin mai greu de accesat; comanda prule trebuie folosită pentru a le accesa). Din moment ce regulile clasificării ca LV și LA + LV (și RV și RA + RV) au antecedenți identici, putem fi siguri ca vor apărea clasificări preliminarii contradictorii. Să presupunem că există mai multe reguli a căror consecință este "class is LV". Din moment ce raționamentul standard este monotonic, procedura de agregare va stoca cel mai mare număr de valori de adevăr existente drept gradul de apartenență al LV în clasa de mulțimi fuzzy.

Rezolvarea contradicțiilor utilizând evidențe respingătoare și posibilități

modificare

Vom considera regulile pentru rezolvarea contradicției când o regiune a fost clasificată atât ca LV cât și ca LA + LV. În acest caz, dacă o altă regiune a fost clasificată ca LA, putem fi siguri de clasificarea LA + LV că este greșită și că LV este corectă; dacă în acel cadru nici o altă regiune nu a fost clasificată drept LA, atunci suntem siguri de clasificarea LV că este greșită și că avem clasificarea LA + LV corectă. Datele respingătoare pentru LA + LV reprezintă prezența unei regiuni LA; datele respingătoare pentru LV reprezintă absența unei regiuni LA. Regulile antecendente vor citi:

rule (goal Refute LA+LV)
IF (in Region frame = <FR> AND class is LA)
(in Region frame = <FR> AND class is LA + LV)
THEN ...
rule (goal Refute LV)
IF (in Region frame = <FR> AND NOT class is LA)
(in Region frame = <FR> AND class is LV)
THEN ...

Trebuie gândit acum cum se va formula consecința. Antecendentul este o propoziție complexă, să zicem Q, care respinge propoziția; antecedentul va asigna o (posibil) o nouă valoare (valori) de adevăr acelei propoziții. Într-un sistem bazat pe necesități, noua valoare de adevăr va fi necesitatea propoziției. Obținerea noii valori de adevăr necesită utilizarea unui complement al valorii de adevăr a antecedentului. Trebuie acum sa folosim raționament non-monotonic; iar acest lucru poate fi făcut prin stocarea valorilor de adevăr direct. În FLOPS, valoarea de adevăr a antecedentului combinată și regula este disponibilă ca o variabilă furnizată de sistem, <pconf>. Din moment ce valoarea de adevăr a regulei este 1.0 (1000 în FLOPS), valoarea de adevăr a lui   pentru o anumită instanță a regulei este dată de:

 

Regulile mai sus scrise devin:

rule (goal Refute LA + LV)
IF (in Region frame = <FR> AND class is LA)
(in Region frame = <FR> AND class is LA + LV)
THEN class.LA + LV = (min(class.LA + LV, (1 - <pconf>)); ...
rule (goal Refute LV)
IF (in Region frame = <FR> AND NOT class is LA)
(in Region frame = <FR> AND class is LV)
THEN class.LV = (min(class.LV, (1 - <pconf>))); ...

Valoarea de adevăr a antecedentului reprezintă cât de siguri suntem una din următoarele clasificări: LV sau LAV + LV ar trebui respinse; complementul său reprezintă posibilitatea clasificărilor LV sau LAV + LV.

Bibliografie

modificare