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:
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:
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.
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:
Kiirus | Nurk | |||||
NS | NV | N | PV | PS | ||
Nurkkiirus | NS | NS | ||||
NV | NV | N | ||||
N | NS | NV | N | PV | PS | |
PV | N | PV | ||||