Bodo stroji pričeli razmišljati kot ljudje?

    Mišljenje je zapleten proces in stroji, ki nam pomagajo k boljšemu razumevanju te zapletenosti, nosijo ime inteligentna orodja. Ljudje smo spontano razvili zapletene metode interakcije s kompleksnim svetom in ravno te metode moramo sedaj uporabiti pri izdelavi inteligentnih strojev. Vse kaže, da bo razvoj mislečih strojev zahteval nove pristope v programskem in strojnem smislu. Povsem mogoče je, da bodo temeljili na nanotehnologiji.

    Sposobnosti današnjih računalnikov še vedno bistveno zaostajajo za človeško inteligenco, vendar moramo upoštevati, da “naravni proces računanja” oziroma kar “naravno računanje”, kot ga bomo v nadaljevanju imenovali, še zdaleč ni doseglo svoje zgornje meje razvoja. Dosedanji prijemi skupaj s prihajajočimi idejami obljubljajo zelo pomemben napredek v naslednjih nekaj letih. Vizija “naravnega računanja” kot novega pojma, ki ga predstavlja članek, temelji na razumevanju delovanja človeškega mišljenja in osnovnih bioloških principov delovanja celice.

    Uveljavljeni pristopi na področju umetne inteligence

    Na področju umetne inteligence danes uporabljajo več pristopov, s katerimi poskušajo modelirati procese naravnega razmišljanja. Ta vključujejo: [1] – semantična omrežja, [2] – Bayesova omrežja, [3] – celularne avtomate, [4] – nevronska omrežja (kot najpomembnejša), [5] – ekspertne sisteme, poleg tega pa se v programiranju pogosto uporablja še [6] – proces naravnega izračunavanja, ki programerjem omogoča generiranje kode, za reševanje čedalje bolj kompleksnih problemov.

    Osnovna načela zgoraj naštetih že uveljavljenih pristopov k umetni inteligenci, so tudi temelj za proces naravnega izračunavanja.

    Najprej se osredotočimo na ekspertne sisteme. To so računalniški sistemi, ki rešujejo določene probleme in so t.i. eksperti na nekem področju. Od njih torej zahtevamo sposobnosti sklepanja in presoje ter zmožnost obdelovanja nepopolnih podatkov. Sestavljeni so iz baze podatkov, mehanizma sklepanja in uporabniškega vmesnika. Ekspertni sistemi izražajo logiko človeškega mišljenja z drevesastimi strukturami, kar je za manjše sisteme popolnoma zadovoljivo. Ko dvigujemo kompleksnost strukture, pa ta pristop doseže svoje meje. Asociacije, abstrakcije in negotovosti so morda najpomembnejše lastnosti človeškega talenta za zapletenost – le teh pa z ekspertnimi sistemi ne moremo ustrezno simulirati.

    Nevronska omrežja predstavljajo osnovo procesa naravnega izračunavanja. V resnici nevronska omrežja simulirajo osnovne funkcije možganov oziroma nevronov in medsebojnih povezav med njimi. Vhodni signali so ponavadi povezani v to omrežje in se nato širijo po njem. Kako se širijo lahko kontroliramo z utežmi (ali v žargonu ponderji) povezav med vozlišči. Uteži lahko avtomatično nastavljamo s pomočjo posebnih procedur. Pri nalogah, kot je npr. prepoznavanje obrazov, ki jih je težko reševati zgolj z logičnimi metodami, se pokaže prava moč nevronskih omrežij. Izjemno kompleksne naloge zahtevajo prepletanje velike količine zapletenih pojmov, ki avtomatično nastajajo, kakor se to dogaja v naših možganih. To bi bilo ekvivalentno ponovitvi evolucije naših možganov iz prej neinteligene snovi.

    Semantična omrežja in (semantična) Bayesova omrežja imajo določene podobnosti z nevronskimi omrežji. Prav tako namreč uporabljajo verjetnostno logiko. Vendar so tukaj vozlišča (in v določenih primerih povezave) povezane s posameznim semantičnim izrazom. Slabost v primerjavi z nevronskim omrežjem je, da moramo omrežno strukturo ustvariti ročno, vendar pa jo lahko kasneje preverjamo glede na njeno verodostojnost in po možnosti uvedemo popravke.

    Programski jeziki in celularni avtomati

    Najbolj običajen način kreiranja umetne inteligence je, da preprosto napišemo računalniški program s programskim jezikom kot sta npr. C++ ali Java. Tipični primeri so iskalniki po besedilu, razni filtri, ki iz slik izločajo določene objekte in podobno. Glavna naloga pri pisanju programov je izluščiti najpametnejše algoritme in jih nato na najboljši možni način združiti. Programerji to počnejo ročno, tako da je od njih odvisno ali bo program deloval (optimalno) oziroma inteligentno. Primer inteligentnega procesa je prav gotovo, če nek algoritem v sliki ali v računalniškem čipu najde (točno definirano) napako, ali pa če računalniški program premaga svetovnega šahovskega prvaka.

    Skorajda nemogoče pa je napisati program z določeno stopnjo kompleksnosti brez napak in tako tudi ni mogoče natančno napovedati kakšno operacijo bo tak program v določenem koraku izvedel. Ravno zato je potrebno programe očistiti napak, testirati njihov učinek in to ponavljati v nedogled. Če bi morali programerji pisati programe v strojnem jeziku, bi zelo malo programov dočakalo svoj izid. Današnji moderni programski jeziki omogočajo programerjem, da pišejo kodo na višji stopnji – čedalje bolj na stopnji kot razmišljajo in čedalje manj na stopnji na kateri procesor dejansko deluje. Posledično so moderni programski jeziki orodje, ki reflektira človeško mišljenje in zato določajo proces naravnega izračunavanja.

    Če človek lahko naravno uči računalnik izvajanja določenih operacij, ga brez pomislekov lahko imenujemo naravno razmišljajoči stroj. Tudi če pogledamo v zgodovino programskih jezikov, vidimo, da so se ti razvijali ravno v smer naravnega razmišljanja. Objektno orientirani in drugi moderni programski jeziki v resnici uporabljajo mnoge naravne pojme, kot so razredi in dedovanje.

    Nazadnje omenimo še pojem celularnega avtomata. Ideja celularnega stroja je povsem naravna: sosednji delci vplivajo eden na drugega. Običajno uporabimo veliko število t.i. celic razporejenih v pravilno geometrijsko obliko. Ponavadi imajo celice tudi nepovezana območja, ki so pod vplivom svoje okolice. Celularni avtomati se tako lahko obnašajo kot primitivna omrežja z izjemno kompleksnim dogajanjem znotraj njih. V načelu lahko z njimi izvedemo katerokoli izračunavanje.

    Fraktalni stroji in SSS omrežja

    Če združimo zgoraj omenjene metode ali vsaj nekatere njihove dele v enotno tehnologijo, lahko na ta način združimo tudi njihove posamezne močne plati. V novem sistemu je povsem mogoče njihovo skupno moč uporabiti za izdelavo zelo močnega stroja. Tovrsten primer je »samo-organizirano, semantično, samo-podobno omrežje«, na kratko SSS omrežje. SSS omrežja so hierarhična, vsebujejo znanje o objektih, njihovih lastnostih in njihovih medsebojnih povezavah. Vsebujejo tudi informacijo, kako reagirati, ko so določeni objekti postavljeni v realni svet. Z »realnim svetom« imamo v mislih spreminjajoč se vhodni signal, ki vpliva na naše omrežje. Vhodni signal je lahko slika, tekst ali kakršna koli druga oblika kompleksne strukture.

    Vozlišča in povezave nosijo semantični pomen (podobno kot pri semantičnih omrežjih) in proceduralne dodatke, ki jih imenujemo Janusi (Janus je bil bog z dvema obrazoma). Nekatere povezave predstavljajo logiko ekspertnih sistemov (AND, OR, in druge bolj kompleksne funkcije). Povezave in vozlišča lahko nosijo uteži, ki jih lahko avtomatično učimo (podobno kot pri nevronskih omrežjih). Povezane so lahko z drugimi povezavami, med njimi pa lahko vpeljemo tudi odvisnosti (podobno kot pri Bayesovih omrežjih.)

    Najbolj nenavadna lastnost SSS omrežij je kombinacija hierarhične strukture in velikega števila proceduralnih priponk. To določa obliko celularnih avtomatov: aktivnost Janusa je odvisna od vznemirjenosti pripetega vozlišča, čigar stanje pa je odvisno od števila stanj sosednjih vozlišč, od Janusov in od povezav. V SSS omrežjih vozlišča in povezave sooblikujejo »podomrežja«. Če ta podomrežja obravnavamo kot vozlišča s povezanimi stanji, končamo pri hierarhičnem celularnem avtomatu s (samo)podobnostmi v njem, kar imenujmo »fraktalni stroj«.

    Ko tako omrežje reagira na kompleksne vhodne signale, pride v igro dedovanje (kot ga razumemo z vidika modernih programskih jezikov): vhodne signale nasledijo Janusi iz vozlišč ali povezav, kamor pač ti najbolje sodijo. To dedovanje lahko pojmujemo kot aktivnost proceduralnih dodatkov. Nekateri Janusi predstavljajo klasifikacijo procesov, ki primerjajo razrede in vhodne signale med seboj, medtem ko drugi Janusi delujejo kot omrežje ali pa grupirajo vhodne objekte (jih segmentirajo). Janus transformira začeten nestrukturiran signal v hiearhično urejeno omrežje. Struktura vhodnega omrežja postaja vse bolj podobna SSS omrežju. Vhodna slika je tako npr. na začetku sestavljena samo iz pikslov. Med samim delovanjem procedure se počasi oblikuje hiearhična omrežna slika, v kateri so prepoznane oblike hiš, sosednjih objektov, ulic – kar navsezadnje pripelje do prepoznavanja mesta. Lastnosti so prirejene objektom in relacijam. V SSS omrežjih so te strukture izražene kot ene od več potencialno možnih.

    Slika samoorganizirajočega, semantičnega, samopodobnega (SSS) omrežja . Takšna omrežja vsebujejo znanje o objektih, njihovih lastnostih, medsebojnih relacijah, tako kakor tudi znanje o procesiranju in ravnanju z razredi objektov in relacij, kadar naletijo na kompleksne vnose. Hierarhična struktura objektov vsebuje omrežja manjših objektov, ki imajo vgrajene algoritme in so prikazani kot Janusi (glave z dvema obrazoma). SSS omrežja uporabljajo aktivne Januse za strukturiranje in klasificiranje sestavljenih vnosov in za razvrščanje razvijajočih se objektov in njihovih medsebojnih relacij. Janusi se aktivirajo, kadar se prirejeni objekti in relacije vzbudijo preko določenega praga. Posamezne operacije so odvisne od lokalne strukture omrežja. Delovanje v omrežju in strukturiranje vnosov spreminja informacijo v znanje in – vsaj v določeni meri – predstavlja avtomatizirano »razumevanje«.

    Izračunanje na mah

    Za trenutek poglejmo na žive organizme kot na vrsto inteligentnih »računalnikov«, ki se avtomatsko odzivajo na spremembe v svojem okolju tako, da zaganjajo nekakšne »programe«. Očitno je, da so naši možgani zmožni početi prav to. V času naših življenj se naučimo ogromne količine različnih obnašanj in strategij, ki jim ustrezajo razredi situacij. Samo če pripišemo vsaki situaciji nek razred (če jo klasificiramo), se bomo začeli (»v afektu« oziroma »na mah«) odzivati s strategijo, ki najbolj ustreza situaciji. Ostale strategije tačas spijo, so neaktivne. Pomembno je videti, da so poleg strategij za akcijo, tudi različne metode določanja razreda okoliščin v katerih smo se znašli, same prav takšne strategije, ki so ponavadi tudi podložne enakemu razvrščanju. Na primer s pomočjo klasificiranja se je naš duh sposoben koncentrirati na določene vidike reči, ki mu je bila predočena in je podložna nadaljnjemu (še) podrobnejšemu razvrščanju.

    Nekaj zelo podobnega je res za preproste žive organizme in tudi za celične sisteme. Na DNK kodo bi lahko gledali, kot da vsak segment DNK predstavlja program, ki predstavlja strategijo. V tem smislu geni (relevantni del DNK molekule) predstavljajo posamezne programe.

    Branje in prevajanje genetske kode v beljakovine pomeni v računalniškem jeziku aktiviranje posameznih programov. Proteini predstavljajo izraženi gen in dejansko opravljajo določene naloge. Podobno kot pri »obnašanju na mah«, opisanem zgoraj, v določenem trenutku ostane večina strategij (v tem primeru genov) neuporabljenih. Posamezni geni se izrazijo le, če okoliščine v katerih se znajde celica, aktivacijo zahtevajo. To je razvrščevalni proces, ki sproži delovanje na podoben način, kot smo to videli pri vedenju na mah.

    Pri prepisu genetske kode v izgradnjo proteina je potrebno veliko število korakov. V procesu izdelave ciljnega proteina gre lahko narobe mnogo reči. Na primer če manjkajo molekule in proteini potrebni za nadaljnje korake, ciljnega proteina celica ne more pravilno zgraditi. Tu nedvomno opazimo inteligentno obnašanje, saj nepravilno zgrajeno končni protein celica zavrže. Graditev proteina, od genetskega načrta do končnega izdelka, lahko torej obravnavamo kot klasifikacijski proces. Vendar ne le to. Ker je tudi nekaj ostalih proteinov vpletenih v proizvodnjo izbranega obravnavanega proteina, sistem predstavlja kompleksno omrežje. Stanje gena (ali njegove aktivacije) je odvisno od stanja (aktivacije) drugih genov.

    Generično ali fraktalno izračunavanje

    Proteini v celici so del procesov, imenovanih prehodi. Zanimivo je, da je ponavadi po nekaj proteinov del prehoda in da je ena vrsta proteinov lahko del več prehodov. To je ekvivalentno računalniškemu podprogramu, ki je lahko sestavni del več različnih programov. To velja za enostavne podprograme, kot je na primer ukaz »kopiraj«. Ta ukaz lahko uporabimo na celi vrsti objektov, na slikah, besedilih ali kar celih dokumentih. V splošnem pa podprogram ne more uporabljati več različnih programov.

    Če isti protein ne bi mogli uporabiti pri več prehodih, potem bi morali imeti svojo množico beljakovin za vsak prehod in naš genetski kod bi bil za velikostni razred večji. Enako velja za računalniške programe. Če bi ne bilo podprogramov, bi jih morali vedno znova izpisati v osnovni programski kodi. Dolžino programov tako z uporabo podprogramov zelo skrajšamo. Raznolikost programov izvira iz raznolikosti kombiniranja podprogramov v programe. Sumimo, da je evolucija šla isto pot. Da so geni generični, torej da je več genov pravzaprav kombinacija drugih genov. Kako bi se lahko drugače tako kratka DNK koda izrazila v tako kompleksnem pojavu, kot je človeško bitje? Odgovor je generično procesiranje.

    Tudi za računalniške programe velja enako. V preteklosti so bili programi formulirani tako, da so izpolnjevali neko vnaprej znano nalogo. V prihodnosti bi utegnili biti formulirani na generični način. Tako bodo njihove komponente lahko uporabne tudi v drugih programih. Če bi bili (pod)programi formulirani na ta način, da bi jih bilo mogoče kombinirati z drugimi programi, potem bi lahko zapletene naloge obvladali s kombinacijami obstoječih – in ne s pisanjem novih programov. Bogastvo možnosti novega programa je rezultat bogastva vseh možnih kombinacij.

    Mislimo in verjamemo, da bo v prihodnosti ta lastnost bistvena za obvladovanje zapletenih računskih nalog. Prihodnji iskalniki bodo morda analizirali tako slike kot besedila, dokumente in vse druge vrste datotek. Če je naloga preprosta in je obe analizi mogoče narediti neodvisno, potem je problem rešljiv na konvencionalni način. Če se posamezni deli teksta nanašajo na posamezne dele slike, kot je to običajno, potem postane skupna analiza obeh (slikovne in tekstovne komponente) nujna. Sodelovanje je precej lažje, če imajo programi podobno strukturo, kakor je lažje tudi sodelovanje med ljudmi ki govorijo isti jezik. Poenostavitev vmesnikov naredi vso razliko. Če ljudje govorijo isti jezik, prevajalcev ne potrebujejo.

    Enostavni ukaz »kopiraj« v operacijskem sistemu računalnika, je uporaben v več hierarhijah. Znak, besedo, sliko, besedilo, dokument ali mapo – vse te je mogoče kopirati. V živi celici je generična struktura prav tako prisotna na več nivojih. Proteini sestavljajo posamezne prehode, prav tako so del celotnega funkcioniranja organizma. V naših možganih je koncept podobnosti uporabljan praktično povsod in na vseh nivojih. Podobni se nam lahko zdita dve sliki, dve besedi sta lahko sinonima, dve besedili imata lahko podoben pomen. Tak sistem, ki na več področjih generično uporablja nek koncept, imenujemo »fraktalni« ali »samopodobni« sistem.

    Pričakujejo, da bo kmalu mogoče izluščiti pomen iz zapletenih vhodnih podatkovnih oblik, ne glede na obliko v katero je zavita vsebina. Računalniki bodo sicer »razumeli« večpredstavne dokumente na dokaj preprost način, toda že dovolj, da bodo koristen pomočnik človeku.

    Priredba članka: “Will machines start to think like humans? – Artificial versus natural Intelligence”; Europhysics News (2002) Vol. 33 No. 2. (priredila: Marjan Grilj in Tomaž Kristan)

    Deli