Hägus loogika ja selle kasutamine tehisintellektisüsteemides
 
 

Sissejuhatus: mis on hägus loogika?

Hägus loogika (fuzzy logic) on võrdlemisi uus, kuid vägagi võimas tehnoloogia. Lihtsaima definitsiooni kohaselt on tegu hariliku (Boole’i) loogika laiendusega, mis lubab kõikvõimalikel objektidel omandada ka vahepealseid väärtusi lisaks tavapärastele nagu jah/ei, tõene/väär, must/valge jne. Hägusa loogika abil on mõisteid nagu “päris soe” ja “üsna külm” võimalik matemaatiliselt formuleerida ja arvutite abil töödelda. Sel kombel saab rakendada arvutite programmeerimisel rohkem inimesesarnast mõtlemist.

Hägus loogika on leidnud rakendust kõige erinevamatel aladel, näidetena võib tuua hüdroelektrijaamade tammiväravate kontrolli, kaamera suunamise spordivõistluste teleülekannetel, autode programmjuhtimise, busside sõiduplaanide planeerimise, dokumentide arhiveerimise, käekirjatuvastuse, vähi diagnoosimise, kohtumenetluste simuleerimise, tuumareaktorite turvasüsteemid jne, erinevaid kommertsprodukte, mis otseselt hägusat loogikat kasutavad, on üle kahe tuhande.

Kuigi hägus loogika loodi algselt USAs, algas selle tehnoloogia kiire areng Jaapanis, olles nüüdseks uue ringiga taas Ameerikasse ja Euroopasse jõudnud. Hägusa loogika rakendamine Jaapanis areneb endiselt ülikiirelt, selles valdkonnas väljaantavate patentide arv kasvab eksponentsiaalselt. Enamik neist on seotud suhteliselt lihtsate rakendustega, mis kasutavad hägusat kontrollsüsteemi.

“Hägus” on saanud võtmesõnaks ka turunduses, elektroonilised artiklid ilma hägusate komponentideta ei müü. Hägusa loogika populaarsuse äärmusliku näitena võib tuua selle, et on olemas isegi tualettpaber, millele on trükitud “Hägus loogika”. Jaapanis eraldatakse hägusa teadmuse alastele uuringutele tohutuid summasid, peamine osa hägusa loogika praktilistest rakendustest ongi ellu viidud seal. Euroopas ja USAs üritatakse Jaapanis tehtud tohututele edusammudele järele jõuda, näiteks katsetab kosmoseagentuur NASA hägusa loogika rakendamist keeruliste põkkumismanöövrite puhul.

Hägusa loogika rajas aastal 1965 Lotfi A. Zadeh, Kalifornia Ülikooli arvutiteaduse professor, esialgse eesmärgiga modelleerida loomulikus keeles esinevaid ebakindlaid väljendusviise. Zadeh’ sõnul ei tuleks hägusa loogika teooriat vaadelda mitte “üksiku teooriana”, vaid me peaks vaatlema “hägustamist” (fuzzification) metoodikana, mille abil saab suvalise diskreetse teooria üldistada pidevaks. Viimasel ajal ongi uurijad esitlenud teooriaid nagu “hägus analüüs” või “hägusad diferentsiaalvõrrandid”.

Kui inimesed esmakordselt kuulevad terminit “hägus loogika”, tekib neil vahel küsimus, miks peaks keegi tahtma loogikat hägustada, kas mõisted “hägus” ja “loogika” ei moodusta iseenesest vastuolu. Hägusaid hulki ja hägusat loogikat tuleb vaadelda eelkõige ebakindluse väljendamise matemaatilise teooriana. Tegu on siiski matemaatilise formalismiga ning väidete tõeväärtused jäävad endiselt täpseteks arvudeks. Tuleb meeles pidada, et hägus loogika on eelkõige hägususe loogika, mitte ei muutu ta ise hägusaks.
 
 

Hägus hulgateooria

Hägusa loogika arendajate peamine argument on see, et tavalise loogika formalismid ei sobi mitteformaalsete argumentide modelleerimiseks. Selleks ongi siis loodud süsteem, mis võimaldab tavapärast loogikat muuta (“hägustada”), nii et selle reeglid rakenduksid ka mitteformaalsetele argumentidele. Seda tehakse kahes põhilises etapis:

Esiteks tuuakse vaadeldavasse mõistete süsteemi sisse hägusad predikaadid, tulemuseks on mingit laadi mitmevalentne loogika.

Teiseks tõlgendatakse metalingvistilisi predikaate “tõene” ja “väär” endid kui ebaselgeid või hägusaid.

Järgnevalt vaatleme, kuidas see tegelikkuses toimuma hakkab.
 
 

Operatsioonid hägusatel hulkadel

Hägusate süsteemide peamine mõiste on hägus (alam)hulk. Klassikalisest matemaatikast oleme me kõik tuttavad tavalise, kindlaltpiiritletud hulga mõistega, vaatleme kõigepealt ühte näidet sellisest hulgast.

Olgu meil universaalhulgaks X kõigi reaalarvude hulk lõigul [0, 10]. Defineerime hulga X alamhulga A, kui kõigi reaalarvude hulga 5 ja 8 vahel.

A = [5,8]

Vaatleme nüüd hulka A tema karakteristliku funktsiooni, s.t sellise funktsiooni abil, mis seab igale hulga X elemendile vastavusse kas arvu 1 või arvu 0, vastavalt sellele, kas see element kuulub hulka A või ei. Selle funktsiooni graafiku saame esitada nii, nagu näidatud joonisel 1:

Joonis 1

Nüüd võime öelda, et elemendid, millele vastab arv 1, on hulga A elemendid, need, millele vastab arv 0, ei ole hulga A elemendid. Selline lähenemine on piisav enamiku rakenduste jaoks, kuid leidub situatsioone, kus tal puudub vajalik paindlikkus. Vaatleme näiteks järgmist näidet:

Olgu meil vaja kirjeldada noorte inimeste hulka. Formaalselt võiks seda siis kirja panna nii:

B = {noored inimesed}

Vanuse lugemine algab üldjuhul nullist, sellega on meil vaadeldava hulga alampiir võimalik kergesti paika panna. Ülemist piiri on märksa raskem defineerida. Oletame algul, et see võiks olla 20 aastat. Siis saame hulga B kirjutada nii:

B = [0, 20]

Ja tekibki meil probleem – miks on inimene oma kahekümne esimesel sünnipäeval veel noor ja järgmisel päeval enam ei ole noor? Ükskõik, kuhu me seda ülemist piiri ka ei paigutaks, tekib meil ikka sama probleem. Kõige loomulikum viis hulga B konstrueerimiseks oleks loobuda teravast piirist “noore” ja “mittenoore” vahel. See tähendab, et meil ei ole vaja teha teravalt eristatud otsustust, kas vaadeldav isik kuulub noorte inimeste hulka või ei.

Nagu eelnevalt mainitud, vajame me hägusaid hulki selleks, et muuta arvuteid veidi arukamaks, selleks on vaja ülalkirjeldatud ideed formaliseerida. Esialgses näites seadsime universaalhulga kõigile elementidele vastavusse kas arvu 1 või arvu 0. Otsene viis selle kontseptsiooni üldistamiseks on lubada ka teisi väärtusi nulli ja ühe vahel, tegelikult siis kõiki reaalarve lõigust [0, 1]. Selliste arvude interpretatsioon võrreldes eelmise näitega on märksa keerulisem. See, et elemendile vastab arv 1, tähendab endiselt elemendi kuuluvust hulka B, ning arv 0 tähendab elemendi mittekuulumist sinna. Kõik ülejäänud väärtused tähendavad astmelist kuuluvust hulka B. Teeme taas hulga karakteristliku funktsiooni joonise (joonis 2):

Joonis 2

Sel juhul on 25-aastane inimene noor tõeväärtusega 0,5.

Olles nüüd kindlaks teinud, mis üks hägus hulk on, vaatleme seda, mida nende hulkadega on võimalik teha, s.t operatsioone hägusatel hulkadel. Sarnaselt selgepiiriliste hulkadega, saame me ka hägusate hulkade jaoks defineerida ühisosa, ühendi ja täiendi. Oma esimeses töös hägusate hulkade kohta soovitas L. A. Zadeh kahe hägusa hulga ühisosa võtmiseks miinimumi ja ühendi jaoks maksimumi operatsiooni. Kerge on näha, et ka tavaliste hulkade vastavad definitsioonid mahuvad selle definitsiooni alla.

Vaatame selgituseks jälle mõningaid näiteid. Olgu A hägus vahemik viie ja kaheksa vahel ning olgu B hägus arv nelja ümbruses, joonistel 3 ja 4 on näidatud vastavate karakteristlike funktsioonide graafikud.

Joonis 3 Joonis 4

Joonis 5 näitab nüüd nende kahe hägusa hulga ühendit (sinine joon):

Joonis 5

Ja joonisel 6 on hulkade A ja B ühisosa:


 
 

Joonis 6

Ja lõpuks hulga A täiend (joonis 7):

Joonis 7

Vaatleme selguse mõttes veel üht konkreetset elulist näidet: Olgu mingi inimese A jaoks lause “A on noor” tõeväärtus 0,38 ja lause “A on pikk” tõeväärtus 0,25. Siis lause “A on pikk või noor” tõeväärtuseks on 0,38, lause “A on pikk ja noor” tõeväärtuseks 0,25 ja lause “A ei ole noor” tõeväärtuseks 0,62.

Üldiselt kehtivad hägusa loogika teooria puhul järgmised omadused:

(Zadeh ja Bellman 1976).
 
 
Kuidas saada hägusate hulkade karakteristlikke funktsioone?

Kogu senivaadeldud süsteem võib ju olla väga kena, kuid on vaja ka mingit üldist metoodikat, mille alusel kõikvõimalike hägusate hulkade jaoks vastavaid karakteristlikke funktsioone leida. Selle jaoks on olemas mitmeid võimalusi, peamiselt jaotatakse need järgmiselt:

Hägusa loogika rakendamine

Hägusad ekspertsüsteemid

Täiesti otseselt kasutatakse hägusat loogikat vähestes rakendustes, peamiselt baseerub sellel hägusate ekspertsüsteemide aluseks olev loogikasüsteem.

Hägus ekspertsüsteem on ekspertsüsteem, mis kasutab andmete manipuleerimisel Boole’i loogika asemel hägusast loogikast tuntud funktsioone ja reegleid. Hägusa ekspertsüsteemi reeglid on tavaliselt sellisel kujul:

“Kui x on kõrge ja y on madal, siis z on keskmine”,

kus x ja y on sisendparameetrid (teadaolevate andmete jaoks kasutatavad nimed) ning z on väljundparameeter, “kõrge”, “madal” ja “keskmine” on aga vastavad hägusad hulgad. Reegli eeldus (antetsedent) kirjeldab, millise tasemeni reegel kehtib ning järeldus (suktsedent) omistab vastava hägusa karakteristliku funktsiooni väärtuse igale väljundparameetrile. Enamik hägusates ekspertsüsteemides kasutatavaid vahendeid kasutab rohkem kui üht järeldust reegli kohta. Ekspertsüsteemi reeglite kogum moodustab tema teadmiste baasi.

Meetodi, kuidas hägusad ekspertsüsteemid sisendandmeid töötlevad, võib üldjuhul jagada neljaks peamiseks sammuks:

Hägusa loogika teooria tähtsaimaks rakenduseks on hägusad kontrollsüsteemid. Sellised süsteemid töötavad võrreldes tavapäraste kontrollsüsteemidega erinevalt, kasutades süsteemi kirjeldamiseks diferentsiaalvõrrandite asemel ekspertteadmisi. Selliseid teadmisi on võimalik väljendada väga loomulikul viisil, kasutades keelelisi muutujaid, mida kirjeldavad hägusad hulgad.

Et kõiges senikirjeldatus nüüd paremat selgust saada, vaatleme üht pikemat näidet.
 
 

Näide – tagurpidi pendel

Ülesanne on tasakaalustada püstine varras platvormil, mis võib liikuda kahes suunas, vasakule ja paremale. Kõigepealt tuleb platvormi jaoks (subjektiivselt) defineerida mõisted nagu suur kiirus, väike kiirus jne. Seda tehakse defineerides vastavad karakteristlikud funktsioonid nende hägusate hulkade jaoks.

Nende funktsioonide graafikud on näha jooniselt 9.

Joonis 9

Sama teeme platvormi ja pendli vahelise nurga ning pendli nurkkiiruse jaoks (joonised 10 ja 11).

Joonis 10

Joonis 11

Nüüd anname ette reeglid, millest lähtudes süsteem peab käituma:

Vaatleme näiteks juhtumit, kus varras on püstises asendis (nurk on null) ja ta ei liigu (nurkkiirus on null). Ilmselt on tegemist soovitud situatsiooniga ning meil polegi vaja midagi teha (kiirus seatakse nulliks). Teisel juhtumil on varras samuti püstises asendis, kuid liigub aeglaselt positiivses suunas. Loomulikult tuleks meil see liikumine kompenseerida, liigutades platvormi aeglaselt samas suunas. Seega oleme loonud kaks reeglit, mida saaks formaliseerida nii:

Kui nurk on null ja nurkkiirus on null, siis peab kiirus olema null.

Kui nurk on null ja nurkkiirus on pos. väike, siis peab kiirus olema pos. väike.

Sellised reeglid saame kokku võtta järgmise tabelina:
  TD VALIGN=CENTER WIDTH="13%">PS
Kiirus Nurk
NS NV N PV PS
Nurkkiirus NS     NS    
NV     NV N  
N NS NV N PV PS
PV   N PV    
PS        

Järgmiseks vaatame, kuidas need reeglid sobivad nurga ja nurkkiiruse konkreetsete väärtuste jaoks. Vaatleme situatsiooni, kus on antud nurga täpne väärtus (joonis12).

Joonis 12

Ja nurkkiiruse täpne väärtus (joonis 13)

Joonis13

Kasutame nüüd reeglit

kui nurk on null ja nurkkiirus on null, siis peab kiirus olema null”

eelmistel joonistel toodud näidetele. Uurime, kuidas saada tulemust (joonis 14)

Joonis 14

Siin on meil keeleline muutuja “nurk”, millesse me asetame hägusa hulga “null” ja tegeliku nurga. Märkame, et tegelik väärtus kuulub sellesse hulka tasemeni 0,75 (joonis 15).

Joonis 15

Analoogiliselt saame keelelise muutuja “nurkkiirus”, kus me kasutame sedasama hägusat hulka “null” ja tegelikku nurkkiirust (joonis 16).

Joonis 16

Ja leiame analoogiliselt, et ta vastab hägusale hulgale “null” tasemeni 0,4 (joonis 17).

Joonis 17

Kuna ülaltoodud reeglis olid tingimused ühendatud konjunktsiooniga, siis tuleb meil leida min(0,75, 0,4) = 0,4 ja lõigata muutuja “kiirus” hägusat hulka “null” just sellelt kõrguselt (joonis 18).

Joonis 18

Tegelikult tuleb välja, et ainult neli meie reeglitest annavad antud juhul sellise mõistliku tulemuse, toome nad siin ka ära.

Reegel: Kui nurk on null ja nurkkiirus on null, siis peab kiirus olema null (joonis 19).

Joonis 19

Reegel: Kui nurk on null ja nurkkiirus on neg. väike, siis peab kiirus olema neg. väike (joonis 20).

Joonis 20

Reegel: Kui nurk on pos. väike ja nurkkiirus on null, siis peab kiirus olema pos. väike (joonis 21).

Joonis 21

Reegel: Kui nurk on pos. väike ja nurkkiirus on neg. väike, siis peab kiirus olema null (joonis 22).

Joonis 22

Kõik need neli tulemust kokkuvõetuna annavad joonisel 23 näidatud pildi:

Joonis 23

Senine tulemus on hägus hulk (kiirus), lõpliku väljundi jaoks on meil vaja valida välja üks konkreetne väärtus. Nagu eelnevalt mainitud, on selle jaoks olemas palju heuristilisi meetodeid, üks võimalus on võtta saadud hulga massikese (joonis 24).

Joonis 24

Kogu siiani vaadeldud protseduuri kokku nimetatakse Mamdani kontrolleriks. Demonstratsiooni, kuidas sellise pendli juhtimine tegelikult võiks välja näha, saab vaadata aadressilt http://www.aptronix.com/fuzzynet/java/pend/pendjava.htm, kus on realiseeritud vastav Java applet.
 
 

Hägusa loogika rakendamisest tegelikus elus

Kõigepealt tuleks meil vaadelda hägusate kontrollsüsteemide sobilikkust üldistes terminites. Hägusa kontrolli rakendamine on soovitatav:

Hägusa kontrolli rakendamine pole nii mõttekas, kui: Internetist võib leida terve hulga kommenteeritud näiteid, kuidas hägusat loogikat ühes või teises vallas rakendatud on, mõningaid viiteid:

Kokkuvõtteks

Kolmekümne aastaga, mis hägusa loogika mõiste loomisest möödunud, on see süsteem hõivanud kindla koha praktiliselt igat laadi valdkondades, leides praegugi järjest uusi ja uusi rakendusi. Hägus loogika toob kaasa uut laadi mõtteviisi, mis võimaldab modelleerida keerukaid süsteeme, kasutades kõrgema taseme abstraktsioone lähtudes meie teadmistest ja kogemustest. Tegelikult võib praktiliselt igas rakenduses leida mingi kriteeriumi, mida hägusa loogika rakendamine positiivselt mõjutaks, olgu see siis käideldavus, lihtsus, madalam hind või suurem tootlikkus.
 
 

Kasutatud kirjandus

Raymond Turner, Logics for Artificial Intelligence, Ellis Horwood, 1984.

Susan Haack, Philosophy of Logics, Cambridge UP, 1978

Stuart C. Shapiro, Encyclopedia of Artificial Intelligence, John Wiley & Sons, Inc., 1992.

Peter Bauer, Stephan Nouak, Roman Winkler, A brief course in Fuzzy Logic and Fuzzy Control, http://www.flll.uni-linz.ac.at/fuzzy/fuzzy.html

Fuzzy Logic and Fuzzy Expert Systems FAQ, http://www.cs.cmu.edu/Groups/AI/html/faqs/ai/fuzzy/part1/faq.html