Ko računalnik sam na novo odkrije Pitagorov izrek

Prof. dr. Ivan Bratko: Sprva so nekateri dvomili, da je ekspertne sisteme možno graditi s strojnim učenjem, danes pa je to rutina.

Objavljeno
06. februar 2013 16.16
jer*Ivan Bratko
Tomaž Švagelj, Znanost
Tomaž Švagelj, Znanost

Kako stroj rešuje naloge na inteligenten način, kaj to sploh pomeni, dalje, kaj je podatkovno rudarjenje, kako se računalnik najprej uči in zatem poučuje človeka, kako v njem nastaja novo znanje, ki med drugim pomaga pri zgodnjem odkrivanju parkinsonove bolezni, kako je misleči stroj ponovno odkril Pitagorov izrek in o drugih zanimivostih govori akademik dr. Ivan Bratko, profesor na Fakulteti za računalništvo in informatiko Univerze v Ljubljani in predstojnik tamkajšnjega laboratorija za umetno inteligenco. 

Začeti morava z definicijo. Kaj je umetna inteligenca? Ali mora računalnik sintetizirati novo znanje?

Ni nujno, to je samo en, rekel bi, nekoliko zahtevnejši in sodobnejši vidik umetne inteligence, v splošnem pa je naš cilj samo, da poskušamo računalnike narediti inteligentne, in sicer tako, da jih sprogramiramo za reševanje nalog na inteligenten način. Pri vprašanju, kaj je »inteligenten način«, pa se zatakne. V uvodnem predavanju iz tega predmeta vsako leto porabim kar precej časa, da razložim, kaj to pomeni. In tudi skoraj vsaka knjiga o umetni inteligenci ima na začetku recimo pet strani o tem, kaj tovrstna inteligenca sploh je. In niti dva taka opisa nista povsem enaka, tako da čisto univerzalnega ni. Da se ugibati, v katero smer to vodi, z besedami povedati pa je zelo težko. Ponavadi rečemo, da mora biti računalnik za to, da je inteligenten, sposoben reševati probleme, in sicer logične, ne tistih, ki zahtevajo le veliko golega računanja – to ni inteligenca, saj je računalnik že itak narejen tako, da zna računati.

Imeti mora torej kognitivne sposobnosti.

Tudi te pridejo v poštev. To pomeni, da se dobro znajde v okolju, konkretneje povedano, da zna prepoznavati, recimo s kamerami, optičnimi tipali ali kakšnimi drugimi senzorji, kaj se dogaja v okolici.
To je en primer, primer inteligentnih agentov, tipično je to robot. Kar sicer ni nujno, ampak človek si najlažje predstavlja, da gre za robota. Lahko pa je samo program, ki se sporazumeva z drugimi programi, torej agent v docela abstraktnem smislu. Med temi sposobnostmi je tudi zmožnost učenja, ki je zelo pomembna.

Kako pridemo do sinteze novega znanja?

Tako, da se računalnik uči iz podatkov, potem pa zna naučeno predstaviti v obliki, razumljivi tudi človeku. Najde torej neke zakonitosti v podatkih, tako kot jih najde vsak program za data mining oziroma podatkovno rudarjenje. To je danes tako splošno znano, da je mnogim veliko bolj domače podatkovno rudarjenje kot umetna inteligenca, čeprav gre pri tem bolj ali manj samo za del strojnega učenja. Pri programih za podatkovno rudarjenje gre navadno za to, da se računalnik nauči napovedovati dogodke, recimo diagnosticirati paciente na nekem področju, ne da bi znal diagnozo dobro pojasniti.

Vaš Kardio, recimo.

Drži, ta daje kardiološke diagnoze, imamo pa že tudi takega za nevrološke, ekspertni sistem za nevrologijo. Dobili smo namreč projekt za mobilno aplikacijo, torej za tako, ki bo tekla na telefonu z zaslončkom, na katerega je možno risati. Z njo bo lahko vsak preveril, ali obstaja nevarnost, da ima parkinsonovo bolezen, na podlagi metode, ki je precej inovativna ...

... z risanjem špirale?

Da, jo poznate? Iz take risbice se da veliko izvedeti o pacientu. V aplikaciji, ki bo prek mobilnega telefona najširše dostopna, bo uporabnik narisal špiralo in nato dobil začasno diagnozo, ali da je vse v redu ali pa, da bi bilo morda vendarle dobro obiskati zdravnika.

Sodelujemo s predstojnikom laboratorija za motnje gibanja v ljubljanskem kliničnem centru, profesorjem Zvezdanom Pirtoškom. Aplikacija bo zanimiva za najširše množice, naš znanstveni izziv pa je zgraditi medicinsko relevantno teorijo, ki bo pojasnila nastanek tremorjev ali tresavice, in to različnih vrst: parkinsonske, esencialne ali kombinirane. Moji sodelavci so si izmislili zabavno ime tega sistema, Parkinscheck, kar je sestavljenka iz Parkinson in angleške besede check, torej preveritev parkinsona, v slovenščini pa to izpade kot Parkinsonček.

Od nekdaj smo zelo povezani z različnimi področji medicine: s kardiologijo, onkologijo različnih vrst raka in, v zadnjem času, z nevrologijo.

Delovali pa ste tudi v tehničnih strokah in sodelovali z jeseniško železarno in fakulteto za strojništvo. V železarni ste jim rešili problem hladilno-mazalne emulzije za pločevino.

In to spet s strojnim učenjem. V 80. letih so bili ekspertni sistemi prava uspešnica. Ena naših tez, takrat še dokaj neznana, je bila, da je najbolj učinkovito, če zajamemo človeško znanje v računalnik, ne tako, da ekspert sam pripoveduje to znanje, ampak da vzamemo samo primere rešenih nalog.

Računalnik pa se potem iz tega uči.

Res je, te konkretne primere posploši in na tej podlagi zgradi splošno teorijo. V tistem času je šlo za svež pristop, ki smo ga razvijali tudi mi, in kmalu se je pokazal kot izredno uspešen. Sprva so mnogi dvomili, ali res deluje, toda omenjena uporaba na Jesenicah je šla točno, če smem tako reči, po naši knjigi. In to gladko. Kasneje, ko smo sodelovali s strojno fakulteto, smo imeli še veliko podobnih aplikacij. Recimo pri postopkih za obdelavo z odvzemanjem materiala, denimo z brušenjem, veliko pa smo se posvečali tudi elektroeroziji. Tam se je to odlično obneslo in smo strojnike, naše partnerje, pripravili do tega, da so povsem spremenili pristop. Kadarkoli so imeli kakšno novo tehnologijo, so vzeli program za strojno učenje, ponavadi vedno istega, preizkušenega, ki so ga dobili od nas, tako da jim ni bilo treba posebej programirati, in ...

... program se je naučil. Ali se metoda uporablja še danes?

Da, ampak zdaj je to samoumevno, postalo je rutina. Na tem, dokler je bila to še novost, so zgradili cele kariere, nekatera zelo ugledna in slavna imena iz umetne inteligence pa so sprva dvomila o dejstvu, da je ekspertne sisteme možno graditi s strojnim učenjem. Matematične analize namreč kažejo, da je možnosti ogromno, preveč, da bi računalnik lahko med njimi izbral najboljšo, ampak v praksi se izkaže, da pa to kljub temu gre.

Takrat smo imeli na neki mednarodni konferenci panelno razpravo, na kateri sem to tezo predstavil, neki nemški matematik, ki je takoj začel z matematičnimi argumenti, pa je rekel, da večje neumnosti v življenju še ni slišal. Udeleženci so dvignili obrvi, češ, zdaj se bo pa zgodilo nekaj zanimivega. In res se je, imel sem namreč dobre protiargumente. Rekel sem, ja, matematično se strinjam, samo taki argumenti tu odpovedo, kar se vidi iz teh in teh primerov. Nisem govoril na pamet, imel sem nekaj dejansko za pokazati. Večino poslušalcev sem potem prepričal, njega pa, mislim, ni bilo med njimi.

Danes, ko se ljudje ukvarjajo s podatkovnim rudarjenjem, nihče več ne filozofira o vprašanju, ali to možno ali ne.

Kaj iščemo z rudarjenjem podatkov?

Rezultati tovrstnega rudarjenja so splošne zakonitosti, ne ta ali oni konkretni podatek.

S katerimi področji se vaš laboratorij največ ukvarja?

V splošnem gre za strojno učenje, le da je to precej širok pojem. Danes moraš že povedati, kaj točno delaš. En pristop je, ko se robot sočasno uči izvajati več nalog in si potem pomaga tako, da ima za eno nalogo določeno zbirko podatkov, za drugo drugo, in potem poskuša te podatke kombinirati. Drug pristop, ki se nam je zelo posrečil, se imenuje ABML, to je Argument Based Machine Learning. Z njim se učimo na primer diagnosticirati bolezni. Podatke dobimo od zdravnika, to je standardni pristop: tabela pacientov, njihovih simptomov in diagnoz. Iz tega zna potem računalnik splošno povzeti, kateri simptomi so povezani z določeno boleznijo. In se da iz tega napovedati obolenje. Zdaj pa smo naredili izboljšavo, ki je v tem, da zdravnik za nekatere paciente še dodatno razloži, kaj je mislil, da je pri tej diagnozi bistvenega oziroma kateri simptom je bil odločilen pri določitvi diagnoze. Temu rečemo argument in to so tako imenovani argumentirani primeri ali primeri, za katere imamo razlago. Učenje na tak način je veliko učinkovitejše.

Bazo znanja za diagnosticiranje tremorjev smo tudi naredili z argumentiranim strojnim učenjem. In izkazalo se je, da je računalnik sam začel spraševati zdravnika v smislu, tole mi pa ne gre skupaj, ta primer mi v primerjavi z drugimi posplošenimi primeri izpade kot nekaj nelogičnega, posebej tega mi še malo pokomentiraj itd. In se v polovici takih primerov izkaže, da gre za napako v podatkih.

Da se je zdravnik zmotil?

To ali pa je napačen kak drug podatek, morda je sestra kaj napisala narobe. Neverjetno, koliko je v tem napak. In ostale bi skrite, če inteligentni računalnik ne bi razkril neskladij, nekonsistentnosti. Zgodi se seveda, da je ta ali oni pacient res zelo poseben primer, kar pa mora potem dobiti neko ekspertovo potrditev.

Ali lahko na kratko poveste, kako robot oziroma računalnik ve, kateri predmeti so orodje, kateri pa ne?

To je čisto nova zadeva, ki me je zelo pritegnila. Izziv je velikanski, saj ta naloga res zahteva inteligentnost. Računalnik namreč sam, ko opazuje, kaj dela robot, pride na idejo, da imajo nekateri predmeti v robotovih načrtih za reševanje nalog posebne funkcije. In nekatere od njih se dajo poenotiti. Ugotovi, da igrajo v načrtih posebno vlogo in da bi bilo koristno uvesti čisto nov pojem, povezan z njo. Robot izvorno seveda ne ve, kaj je orodje. Za to ni še nikoli slišal, nihče ga ni opozoril, da kaj takega sploh obstaja, pa vendar sam pride na ideje, da določeni predmeti igrajo to vlogo, ki ji da tudi neko ime. Seveda ne more reči, da je to »orodje«, saj ne zna naravnega jezika, temveč reče, denimo, to je lastnost P, ki jo potem tudi definira. In ko pogledaš definicijo, ki jo je računalnik sestavil sam, vidiš, da je povsem smiselna, da gre za pravi odgovor na vprašanje, kaj je, vzeto zelo na splošno, orodje.

Potenciali so tu ogromni. To ne pomeni, da gre samo za orodje, saj je računalnik odkril tudi princip stabilnosti in to, da so nekateri predmeti premični, drugi pa statični. Koristno je, da to ve. Ko mora robot rešiti neko nalogo, pa mu je recimo miza v napoto, bi mu lahko prišlo na misel, da bi jo prestavil, čeprav je za kaj takega veliko prešibak. Nima smisla, da se muči z njo, zanj miza pač ni premična.

Za to smo pred tremi leti na mednarodni konferenci Future Emerging Technologies v Pragi dobili prvo nagrado. Organizirala jo je evropska komisija, tema pa so bile tehnologije prihodnosti. S humanoidnim robotom smo pokazali, da se lahko nauči pojmov stabilnosti, premičnosti in orientiranja v prostoru. Tudi scenarij je bil dokaj privlačen. Glasovali so udeleženci, novinarji in splošna publika, konkurirali pa so si dosežki iz 60 evropskih projektov, vrednih po pet do deset milijonov evrov. Prišli smo kot avtsajderji, saj to takrat ni bilo naše področje, pomen nagrade pa je bil tolikšen, kot bi bil v športu, če bi Slovenija zmagala na svetovnem prvenstvu v nogometu.

To je ena tematika, ki me zelo zanima. Druga so inteligentni poučevalni sistemi, angleško Intelligent Tutoring Systems, ITS, pri katerih računalnik sam poučuje človeka. Sistemi za poučevanje sicer obstajajo že dolgo, vendar so praviloma vnaprej sprogramirani; strokovnjak predvidi vse možne interakcije s človekom. Recimo računalnik učencu predstavi ali mu pove en odstavek snovi. Če človek česa ne razume, računalnika o tem ne more vprašati, saj stroj ne razume naravnega jezika. Odgovoriti bi sicer znal, a vprašanja ne bi razumel. Tipično gre to potem tako, da računalnik človeku zastavi nekaj vprašanj, naredi nekakšen kviz na dano temo, in potem preverja učenčeve odgovore. Ali pa mu da neko nalogo in potem spremlja, kako jo človek rešuje. Iz tega potem vidi, da učenec določenih stvari ne obvlada, in mu snov razloži. Toda za vse možne scenarije, česa vse se človek lahko ne nauči in vse to sprogramirati, je to res mučno delo: za eno uro učenja potrebuješ 500 ur programiranja!

Pri inteligentnih sistemih, kakršne načrtujemo mi, pa zna računalnik to domeno sam konceptualizirati, tako da vsega ni treba sprogramirati vnaprej. Računalnik sam razume, česa človek ne zna, potem pa ga po nekih splošnih principih popravlja. Ni treba vsakega konkretnega primera oziroma vsake razlage vnaprej posebej definirati in računalnik se lahko popolnoma prilagodi vsakemu učencu posebej. Zato je lahko izdelava takih sistemov bistveno cenejša.

Pa tudi učinkovitejši so.

Tudi, ja, jih je pa veliko težje narediti, ne po času, ampak sam pristop je veliko zahtevnejši. Biti mora res inteligenten. Kaj to pomeni? Računalnik mora razumeti, kakšno znanje ima človek v glavi in kako se to znanje odraža pri odgovorih na vprašanja ali pri reševanju problemov. To nas je v zadnjem času zelo pritegnilo, je pa nekoliko podobno robotskemu odkrivanju zakonitosti. Odkrivanje te vrste res ni od muh. Recimo, dobro se nam je zdelo, ko je naš program mimogrede, ne da bi mi to hoteli, na lepem odkril Pitagorov izrek, pa iz srednje šole vsem znano formulo sinus kvadrat plus kosinus kvadrat je enako ena. Nihče mu tega ni naročil, niti tega ne, da naj preveri, ali ta enačba drži. To je sam odkril in potem tudi uporabljal.

Inteligentnost v pravem pomenu besede!

Da, dobil je preblisk, kot se temu reče.